基于GAN的图像合成使用分段遮罩
Barbershop于2021年6月发布,基于styleGAN开发,能实现两张人像的发型、发色转移,优点是换发质量高,并且不限参考图片,任何两张正面人像都可以进行换发操作,缺点是处理一张图片速度很慢,大约10-30分钟左右(具体分机器),还有就是处理侧脸发型效果会翻车。
GitHub地址(需翻墙):
https://github.com/ZPdesu/Barbershop
前期准备
百度网盘:https://pan.baidu.com/s/1f_SblAG0z05CCMq9VdUYAQ?pwd=xsg4
外网实在太慢,我把整个项目的代码,以及辅助模型全部保存到了百度网盘里,此版本为2021.12.27发布的,776MB大小,请先下载;另外此代码中有部分细节改动,是为了解决官网下载的代码直接跑会有各种未知报错(环境、版本、冲突等),此代码在下方云服务器上调试可完全跑通。
服务器租赁
这个项目需要搭建环境有python3.7、pytorch1.8.1、cuda11.1、cuDNN8.0.5、Anaconda等等,如果你的目的是为了跑通这个项目,不值当霍霍自己的笔记本,我建议直接花1元钱,租一个集成好各种环境的GPU服务器,能让你省下不少和环境问题纠缠的时间。
矩池云官网:矩池云 - 专注于人工智能领域的云服务商
首先注册一个矩池云账号,然后选一台GPU服务器 NVIDIA GeForce RTX 2080(没有的话可以选择其他1元的服务器,0.5元的带不动)
选择系统镜像:pytorch1.8.1
用你的Xshell和FTP远程连上就可以使用了
如果没有这两个远程工具的可以下载
百度网盘:https://pan.baidu.com/s/1lK5slEaKi5VaQgFR_KcRmQ?pwd=qsha
导入项目
1. 连接FTP,将压缩包 Barbershop.zip上传至/home/下
2. 连接Xshell,运行以下命令解压项目
cd /home # 项目目录
unzip Barbershop.zip # 解压缩
rm -f /home/Barbershop.zip # 删除压缩包
安装依赖
cd Barbershop # 项目目录
conda env create -f environment/environment.yml # 导入项目所需环境
source activate Barbershop # 切换项目环境
运行项目
1. 将目标人脸图片上传至/home/Barbershop/unprocessed/下
2. 执行预处理图片命令,因为输入图片尺寸大小不一,所以需要裁剪成标准尺寸,裁剪结果在/home/Barbershop/input/face/下
source activate Barbershop # 切换项目环境
cd /home/Barbershop # 项目目录
python align_face.py # 预处理/unprocessed目录内的照片
3. 执行图像合成命令,第一个参数为目标人脸图片,第二个参数为参考发型图片,第三个参数为参考颜色图像,第四个参数填realistic或fidelity(未知,没感觉出区别)
python main.py --im_path1 200.png --im_path2 56.png --im_path3 56.png --sign realistic --smooth 5 # 图像合成
4. 第一次运行项目时会下载模型,耗时30分钟左右,第二次运行时就不会下载了。
5. 运行结果在/home/Barbershop/output/下,我用的是NVIDIA GeForce RTX 2080 1元每小时 共耗时8分钟
目标人脸(左),融合人脸(中),参考人脸(右)
6. 到此项目就算跑通了,建议此时保存环境,下次调试可以直接读档,不需要重新部署。
另外,将参考人脸图片提前训练、保存,整体项目速度可以优化至5分钟左右,还有人建议用MobileStyleGan代替Stylegan2会节省时间,这个我没试过,目前速度慢是个大问题,欢迎大家集思广益。