赞
踩
Generative Face Completion
CVPR 2017
https://arxiv.org/abs/1704.05838
Code: https://github.com/Yijunmaverick/GenerativeFaceCompletion
首先来直观的认识一下人脸修复是什么? 输入一个有缺失的人脸图像,得到完整的人脸图像
本文算法训练流程图如下:
主要由三个模块构成:Generator,Discriminator,Parsing network
3.1. Generator
这里的 Generator 被设计为一个 autoencoder,输入不完整的图像,输出修复后的图像。这里我们使用了 VGG19的前半部分网络结构,外加2个卷积层,一个池化层,一个全链接层。decoder 和 encoder 是对称的,使用了 unpooling 层 用于放大特征图尺寸
3.2. Discriminator
这里使用了两个 Discriminator,一个 local Discriminator, 一个 global Discriminator
local Discriminator 是针对 缺失图像区域的
global Discriminator 是针对整个图像区域的
3.3. Semantic Regularization
这里的 Parsing network 主要用于进一步完善缺失区域的生成图像的真实性。
不同损失函数下修复的结果:
有无 Parsing network 的对比:
修复结果:
Model limitations
在这项工作中我们提出了一个深度生成网络来进行人脸补全。该网络是基于GAN的,使用一个自编码器作为生成器,两个对抗损失函数(局部和全局)和一个语义正则项作为鉴别器。该模型可以针对丢失的关键部分从随机噪声中成功合成语义上有效且视觉上和谐的内容。实验结果充分展示了补全结果的高质量感官体验,以及模型能灵活处理各种各样掩模特征(比如,不同位置,大小,形状)的能力。
GitHub代码实现:
关于人脸补全的CVPR17论文的Matcaffe实现
每组图片从左向右依次是:原始人脸,带掩模的输入,补完后的结果
软件环境配置:
我们使用caffev2.5.48版本。更多安装细节请参见Caffe官网。
最基本的是,你需要在Makefile.config文件中修改MATLAB_DIR,然后运行如下命令才能成功编译:
训练阶段:
就像在DCGAN中那样对数据进行预处理。唯一的区别在于我们剪切下来的人脸图像大小为128*128。请在crop_celebA.lua文件中的第10处进行修改。对于CelebA数据集我们使用了标准的训练集&测试集分割方式。
在./matlab/FaceCompletion_training/GFC_caffeinit.m文件中修改训练数据路径。
下载我们的人脸解析模型Model_parsing并将其放置在./matlab/FaceCompletion_training/model/目录下。
我们提供了一个仅用重构损失训练得到的初始模型,对于接下来GAN的训练这可以作为一个很好的参数起点。请将其下载到./matlab/FaceCompletion_training/model/目录下。
通过运行./matlab/FaceCompletion_training/demo_GFC_training.m就可以训练了。
测试阶段:
下载我们的人脸补完模型Model_G到./matlab/FaceCompletion_testing/model/目录下。
运行./matlab/FaceCompletion_testing/demo_face128.m开始对人脸进行补全。测试图像来自于CelebA的测试集。
GitHub项目:https://github.com/Yijunmaverick/GenerativeFaceCompletion论文地址:https://arxiv.org/pdf/1704.05838.pdf
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。