目录

(一)从图片中抽取并对齐人脸:

(二)找到对齐人脸图片的latent表达:

(三)从对齐的人脸头像提取特征码并生成StyleGAN头像:

(四)用别人的特征码修饰你的照片特征码,并生成混合后的StyleGAN头像:


在github.com 上有若干开源项目提供了源代码,我选用的开源项目是:pbaylies/stylegan-encoder,对应的网址是:https://github.com/pbaylies/stylegan-encoder

他们把解决办法称之为“stochastic clipping”(随机剪裁),其基本原理大致是:
特征码(特征向量)中每个数值通常处于一个有限的空间内,论文指出通常分布在[-1.0, 1.0]这个变动区间内,因此可以从某个特征向量开始(甚至于从全零向量开始),

  1. 先把超出[-1.0, 1.0]范围的数值剪裁到[-1.0, 1.0]区间,
  2. 然后以这个特征向量为基准值(平均值),在[-1.0, 1.0]这个变动区间内,按正态分布的规律随机取得新向量,
  3. 计算新向量通过GAN生成的新图片与原图片之间的损失函数,然后用梯度下降的方法寻找使损失函数最小的最优解。

论文指出,他们可以使损失函数降低到0,这样就找到了真实人脸对应的“相当精确”的特征码。

在这个开源项目里,作者把变动区间调整为[-2.0, 2.0]。有读者指出更好的变动区间是 [-0.25, 1.5],在这个区间内能够取得更优的质量。

这个开源项目实现的效果如下图所示(左一为源图;中间是基于预训练ResNet从源图“反向”生成dlatents,然后再用这个dlatents生成的“假脸”图片;右一是经随机剪裁方法最终找到的人脸dlatens,并用这个人脸dlatents生成的极为接近源图的“假脸”)

下面介绍具体执行步骤:

在工作目录下,新建.\raw_images目录,并把需要提取特征码的真实人脸图片copy到这个目录下。

使用时,可以按一下步骤操作:

(一)从图片中抽取并对齐人脸:

python align_images.py raw_images/ aligned_images/

(二)生成对齐人脸图片的生成的图片和latent表达:

python encode_images.py aligned_images/ generated_images/ latent_representations/

(三)从对齐的人脸头像提取特征码并生成StyleGAN头像:

python encode_images.py aligned_images/ generated_images/ latent_representations/ --iterations 300 --use_mssim_loss 300

(四)用别人的特征码修饰你的照片特征码,并生成混合后的StyleGAN头像:

python mixed_image.py

注意:这里的mixed_image.py是https://blog.csdn.net/weixin_41943311/article/details/103348865下的复制的代码的我自己起的文件名


这个StyleGAN Encoder的核心代码结构如下图所示:

其中一些具体的修改步骤参考:https://blog.csdn.net/weixin_41943311/article/details/103030194

如果你有网关可以在goole等连接,那么上述步骤可以省略

备注:

(2.1)预训练的resnet50模型,用于从源图生成优化迭代的初始dlatents,
对应于karras2019stylegan-ffhq-1024x1024.pkl的反向模型finetuned_resnet.h5

(2.2)预训练的StyleGAN模型,用于从dlatents生成“假”的人脸图片
           预训练的StyleGAN人脸生成模型karras2019stylegan-ffhq-1024x1024.pkl

(2.3)预训练的VGG16模型,用于从图片提取features
用于评估图片相似性的vgg16_zhang_perceptual.pkl

  1. Pre-trained VGG16 network is used for transforming a reference image and generated image into high-level features space

反算潜码并重生成人脸这步主要使用encode-image.py

流程大概是:

  1. 使用反投影模型(RestNet50)将原始图片反投影出一个初始latent_code.
  2. 用生成器模型(pkl文件)根据初始latent_code生成一张图片.
  3. 使用vgg16对比生成图和原图的差距作为loss,反向传播优化latent_code.
  4. 用生成器模型根据新的latent_code生成一张图片.

第3,4步默认迭代100次,可以用--iterations参数进行更改.


参考:https://blog.csdn.net/weixin_41943311

原文链接:https://blog.csdn.net/DLW__/article/details/104161387

stylegan-encoder代码执行步骤和解释相关推荐

  1. 快速修复 Log4j2 远程代码执行漏洞步骤

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/weixin_48990070/ article/details/121861553 目录 漏洞说明 修复步骤 下载源码zip包 ...

  2. android自定义的生命周期,android 自定义控件之ViewGroup生命周期执行步骤(示例代码)...

    前言 了解ViewGroup的生命周期的执行步骤对于自己自定义ViewGroup的时候十分重要,清楚了整个流程才能对ViewGroup有更深的理解.本文从个人的总结,来阐述一下执行的顺序. 执行说明 ...

  3. 【实战】轻轻松松使用StyleGAN(六):StyleGAN Encoder找到真实人脸对应的特征码,核心源代码+中文注释

    在上一篇文章中,我们用了四种方法来寻找真实人脸对应的特征码,都没有成功,内容请参考: https://blog.csdn.net/weixin_41943311/article/details/102 ...

  4. apache solr远程代码执行漏洞(cve-2019-0193)

    简介 Apache Solr是一个企业级搜索平台,用Java编写且开源,基于Apache Lucene项目. 主要功能包括: full-text search 全文搜索 hit highlightin ...

  5. XXE漏洞利用技巧(XML注入):从XML到远程代码执行

    目录 什么是XXE 基本利用 Blind OOB XXE 场景1 - 端口扫描 场景2 - 通过DTD窃取文件 场景3 - 远程代码执行 场景4 - 钓鱼 场景4 - HTTP 内网主机探测 场景5  ...

  6. python编程代码执行漏洞_代码执行漏洞 - 安全先师的个人空间 - OSCHINA - 中文开源技术交流社区...

    0x00 前言 最近发现的一个新站,不妨试试手. 0x01 基础信息 漏洞点:tp5 method 代码执行,payload如下 POST /?s=captcha_method=__construct ...

  7. 达芬奇调色软件被曝两个远程代码执行缺陷

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 Blackmagci Software 公司最近修复了非常热门的达芬奇调色 (DaVinci Resolve) 软件中的两个漏洞,它们可导致攻击 ...

  8. log4j2远程代码执行漏洞学习总结

    log4j2远程代码执行漏洞学习总结 背景 近期log4j2的漏洞闹得沸沸扬扬,在工作之余也是找了一些资料看一下相关的内容,到现在网上的总结已经很全了,B站上有各种漏洞复现,各大博客类网站关于JNDI ...

  9. 浅谈PHP代码执行的大致流程(opcode)

        说到这个代码执行流程啊,咱也不说太多,先给大家分享一张图片:     怎么样?有点了解了么.说实话,单看这个,我本人是有点懵的,不过,不要怕.咱们来慢慢地看下.     首先,在网上找的信息说 ...

最新文章

  1. Docker部署配置相关使用总结
  2. JDK 8的启发性Javadoc
  3. Java中的硬件事务性内存,或者为什么同步将再次变得很棒
  4. 10 个十分难得的 javascript 开发经验
  5. 软件工程复习提纲——第一章
  6. 查看Python函数含义的快速,准确方法unique
  7. 为什么函数lamda显示权限不足_一个简单的Vue按钮级权限方案
  8. 如何进行大数据可视化分析
  9. en55032最新标准下载_欧盟新EMC标准EN55032强制实施
  10. 怎么将PDF文件在线转换成JPG图片
  11. android 简述jni调用过程,Android JNI 开发
  12. 淘宝以图搜图接口,图片搜索商品接入指南
  13. python使用win32*模块模拟人工操作——城通网盘下载器(零)
  14. Mac用VirtualBox虚拟机安装win10教程
  15. Android截屏截图方法所有方法汇总(包括Activity、View、ScrollView、ListView、RecycleView、WebView截屏截图)
  16. Linux如何删除用户
  17. 怎样查找计算机死机日志,死机和日志错误
  18. 概率论与统计的基础知识(概率空间、最基本的分布、数字特征)
  19. 设置MyEclipse的编辑器和控制台为护眼色
  20. 计算机基础知识填空题和选择题,计算机基础知识题库选择题(参考).doc

热门文章

  1. 华为云TaurusDB性能挑战赛-java赛题mvn编译时报错:不支持multi-catch
  2. MySQL基础(二)数据库、表的创建及操作
  3. HDU-1285-确定比赛名次
  4. 编译安装Mysql5.6.36
  5. 基于Spring Cloud及K8S构建微服务应用
  6. 生活在信息世界,人人都该懂得大数据概念
  7. iOS-最全的App上架教程
  8. spring mvc controller json数据
  9. 信息学奥赛一本通(1307:【例1.3】高精度乘法)
  10. 信息学奥赛一本通(1005:地球人口承载力估计)