你看我还有机会吗?这么GAN让我秃然荒了!
点击上方“AI搞事情”关注我们
Github: https://github.com/Azmarie/Hairstyle-Transfer
Blog: https://medium.com/swlh/hairstyle-transfer-semantic-editing-gan-latent-code-b3a6ccf91e82
Papers:A Style-Based Generator Architecture for Generative Adversarial Networks
Interpreting the Latent Space of GANs for Semantic Face Editing
语义编辑
首先说说什么是语义编辑,所谓语义编辑是指在保留所有其他信息的同时编辑图像中的目标属性,在这里我们的目标属性就是头发。通过语义编辑改变目标属性的各种属性值:比如:发型、颜色、发际线高低、面部毛发等。下面为具体的语义编辑步骤:
隐式向量
隐式向量必须能够很好的表示输入图像,一种方式就是优化特征空间对图像高级语义信息的表达能力。
将预训练残差网络的输出初始化StyleGAN的隐式向量,通过生成器生成图像(initial guess),将输入图像和生成图像分别经过预训练模型提取的特征做
损失,通过梯度下降,将特征向量间损失最小化并更新隐式向量(红色箭头)
这样,利用StyleGAN_Encoder便生成了输入图像的隐式向量,同时,生成器可以生成一个StyleGAN版本的逼真人脸图像。
编辑边界
在编辑属性之前,需要在潜在隐式向量空间中找到能够区分二进制属性的特定边界,其中每一个属性都会对应一个分割边界。那么,如何能够在StyleGAN生成的多维潜在空间中找到一个属性分割边界呢?
传统线性分类器就可以通过超平面将二值属性值进行划分,通过对每个属性训练独立的线性SVM,使来自同一侧的所有样本都具有相同的属性。那么,要在潜在空间中找到秃头的边界,只需要以StyleGAN生成的隐式向量作为输入,隐式向量生成的图片是否秃顶作为输出,训练训练一个SVM二分类器。
因此,对于每个输入图像,首先在StyleGAN潜在空间中特定属性的分割超平面,然后沿着特定方向移动,便可以对该属性进行语义编辑。
搞事情
数据集
CelebA:名人数据集,共10,177个名人身份的202,599张人脸图片,每张图片都做好了特征标记,包含人脸bbox标注框、5个人脸特征点坐标以及40个属性标记,CelebA由香港中文大学开放提供,广泛用于人脸相关的计算机视觉训练任务,可用于人脸属性标识训练、人脸检测训练以及landmark标记等。
FFHQ数据集:由NVIDIA最初作为生成对抗网络(GAN)的基准创建的高质量的人脸图像数据集。
下载Hairstyle-Transfer
https://github.com/Azmarie/Hairstyle-Transfer
下载stylegan-encoder
git clone https://github.com/Azmarie/stylegan-encoder.git
cd stylegan-encoder
mkdir aligned_images raw_images
下载resnet预训练模型
https://drive.google.com/uc?id=1aT59NFy9-bNyXjDuZOTMl0qX0jmZc6Zb
下载VGG预训练模型
https://drive.google.com/uc?id=15IYd9qY9wNd1SSeI4LxPjRBBJxiOzvhW
styleGAN人脸生成模型提前下载
CelebCA数据训练针对黄种人较少
代码里指定的Google网盘
https://drive.google.com/uc?id=1opTWG1jYlyS9TXAuqVyVR68kQWhOhA99百度网盘:https://pan.baidu.com/s/1ujItgpnHSw14Fw8I3Ai7Jw
提取码:ossw有人用FFHQ人脸数据筛选了一些黄种人脸进行训练的人脸模型(1024x1204)
百度网盘:https://pan.baidu.com/s/18cpaM6wJg4ozmwlFNY21kw
提取码:fx23
生成隐式向量
notebook:StyleGAN_Encoder.ipynb
准备人脸数据
使用dlib人脸检测和对齐
python align_images.py raw_images/ aligned_images/ --output_size=1024
编码人脸到StyleGAN隐式空间
python encode_images.py --optimizer=lbfgs --face_mask=False --iterations=50 --use_lpips_loss=0 --use_discriminator_loss=0 --output_video=True aligned_images/ generated_images/ latent_representations/
保存隐式向量为output_vectors.npy
构造属性分类数据
notebook:Get_attribute_score_pairs.ipynb
生成隐式向量和属性分数,为训练SVM构造训练数据stylegan-dlatents.npy 和 9_score.npy 文件
python run_metrics.py
注意将代码中的模型路径修改为本地模型地址。
属性边界与编辑
Train_Boundaries_+_Face_Editing_with_Interface_GAN.ipynb
下载interfacegan并将模型karras2019stylegan-ffhq-1024x1024.pkl放到models/pretrain
git clone https://github.com/genforce/interfacegan.git
训练发际线属性边界(classifier对应索引为9)获得boundary.npy
编辑发际线bangs的属性
latent_direction = 'bangs' #### Pick one of ['age', 'eyeglasses', 'gender', 'pose', 'smile']
morph_strength = 3 # Controls how strongly we push the face into a certain latent direction (try 1-5)
nr_interpolation_steps = 48 # The amount of intermediate steps/frames to render along the interpolation path!rm -r results/bangs
!python edit.py \-m stylegan_ffhq \-b boundaries/stylegan_ffhq_bangs_boundary.npy \-s Wp \-i '/content/output_vectors.npy' \-o results/bangs \--start_distance -3.0 \--end_distance 3.0 \--steps=48
效果一览
年轻的小李子也禁不住发际线的上扬
有魅力的诺叔????
一起去爬山啊!!!
发际线一长,气质就上来了,有木有????
项目的一些其他属性编辑效果
姿势变换
性别变换
带上眼镜
InterFaceGAN演示视频
最后,再推荐一个有意思的人脸生成网站:http://www.seeprettyface.com
往期推荐
》》python
利用python分析了下乘风破浪的姐姐
创意赛第二季又来了,PaddleHub人脸关键点检测实现猫脸人嘴特效
【推荐】一下令人惊艳的的网站,绝对会让你爱上历史
python获取原图GPS位置信息,轻松得到你的活动轨迹
Scrapy爬取姓名大全,看看那个名字最受父母青睐
Windows10下的AlphaPose配置,人体摔倒姿态识别
》》论文
目标又多又密?多轮迭代的方式进行密集目标检测
DeepHSV:号称可以商用的计算机笔迹鉴别算法
CVPR 2019笔迹识别论文:逆鉴别网络+八路Attention
PolarMask:单阶段实例分割框架,FCOS进阶!
真正意义的Anchor-Free,FCOS目标检测算法了解一下
你看我还有机会吗?这么GAN让我秃然荒了!相关推荐
- 35岁老码农:老板,你看我还有机会吗?
35岁的老张是一名老程序员,写了10几年的代码!突然有一天,老板把老张叫到办公室说:"老张啊,这些年你为公司付出了很多,我个人对你非常认可,不过今年公司业务不太好,利润大不如前.养不起这么多 ...
- 推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
总结了2021年新出的,请点击: 推荐几篇近期必看的视觉综述,含GAN.Transformer.人脸超分辨.遥感等 查看详情.
- 程序员张东升,您看我还有机会吗?
以下文章来源于编程技术宇宙 ,作者轩辕之风 张东升是一家互联网公司的程序员,一直以来都勤勤恳恳老实工作. 可最近一段时间,老板接了几个项目回来,不但开启了996的工作模式,更要命的是频频更改需求,弄得 ...
- 美团真的让人无语!背调了一个多星期,跟我说背调不通过!问原因,HR说没办法透露,但可以看其它美团机会...
背调是许多打工人都会遇到的事情,也是入职一家新公司时常见的步骤,但看似常见的背调中也出现了许多奇葩事. 一个网友发帖吐槽美团背调:背调一个多星期后跟自己说不通过,问原因时,美团hr说没办法透露,但不影 ...
- 做VC投资,你看我还有机会吗?-常垒季度专栏
从这个季度起,常垒资本公众号将推出一个新的专栏内容,每个季度会推出一篇. 主要内容分为两个部分: 第一部分是对过去一个季度我们发现的有趣的投资数据和图表解读. 第二部分是对过去一个季度投资感悟的总结: ...
- 一文看懂「生成对抗网络 - GAN」基本原理+10种典型算法+13种应用
生成对抗网络 – Generative Adversarial Networks | GAN 文章目录 GAN的设计初衷 生成对抗网络 GAN 的基本原理 GAN的优缺点 10大典型的GAN算法 GA ...
- 中小公司拥抱数字化:你看我还有机会么?
还是在疫情期间时,一次我去买杯咖啡,店员据门而守,引导用户下App订而非进入室内.那一刻我竟然略有些不解: "为什么不能用小程序呢?直接扫码下单即可,下App多麻烦啊".最终换了一 ...
- dnf时装预览怎么打开_您看我还有机会吗?被阉割的DNF时装市场系统
在DNF100级更新之后,韩服同步更新了时装市场系统. 但这一系统在国服却惨遭阉割,并没有跟随100级版本的脚步一并实装到国服. 先让我们回顾一下,这个时装市场是怎么一回事. [入场条件] *在西海 ...
- ArrayList和LinkedList如何实现的?我看你还有机会!
前言 说真的,在 Java 使用最多的集合类中,List 绝对占有一席之地的,它和 Map 一样适用于很多场景,非常方便我们的日常开发,毕竟存储一个列表的需求随处可见.尽管如此,还是有很多同学没有弄明 ...
最新文章
- docker history 查看docker镜像构建过程 还原dockerfile 查看启动参数
- win7禁用其他软件只启用自定义软件的方法
- java学习(105):字符串indexof,spilt,substring方法
- html section 布局,section标签的用法
- c#鼠标点击TextBox控件后清空默认字体-完美解决方案
- 编程入门先学什么python-编程零基础应当如何开始学习 Python?
- jquery类操作和className的区别
- 阿里云 人脸识别 测试
- Contest2609 - 高级语言程序实践--第8次作业--计信A2107-2113
- 二元回归方程matlab,matlab 多元非线性回归方程问题
- python获取所有上市公司的加权净资产收益率
- airpods链接mac弹窗_AirPods怎么连接Mac AirPods连接Mac教程
- 如何在vscode上调试php,如何用vscode进行单步调试
- 理解AMQP协议和RabbitMQ的性能和可靠平衡
- 安利几款win10小工具
- sklearn:sklearn.preprocessing.StandardScaler函数的fit_transform、transform、inverse_transform简介、使用方法之详细攻略
- 深度学习 100 题(转)
- tkinter窗口预加载
- Hadoop集群的配置
- 超级仓库管理系统---(1)概述