机器之心报道
本文经机器之心(微信公众号:almosthuman2014)
授权转载,禁止二次转载。
参与:魔王、张倩、Jamin
之前开源的「人脸变卡通」项目往往可以提供很多鬼畜素材,要么嘴歪眼斜,要么脸型扭曲,甚至让你的五官看上去是随便放到脸盘里的,完全不像阳间该有的画风……但小视科技最近开源的一个项目似乎改变了这种印象,不仅可以生成逼真的卡通头像,还能利用微信小程序做成动图表情包,普通人也可以零门槛上手。
卡通图像往往有清晰的边缘,平滑的色块和经过简化的纹理,与其他艺术风格有很大区别。使用传统图像处理技术生成的卡通图无法自适应地处理复杂的光照和纹理,效果较差;基于风格迁移的方法无法对细节进行准确地勾勒。
数据获取难度大。绘制风格精美且统一的卡通画耗时较多、成本较高,且转换后的卡通画和原照片的脸型及五官形状有差异,因此不构成像素级的成对数据,难以采用基于成对数据的图像翻译(Paired Image Translation)方法。
照片卡通化后容易丢失身份信息。基于非成对数据的图像翻译(Unpaired Image Translation)方法中的循环一致性损失(Cycle Loss)无法对输入输出的 id 进行有效约束。
python 3.6
pytorch 1.4
tensorflow-gpu 1.14
face-alignment
dlib
git clone https://github.com/minivision-ailab/photo2cartoon.git
cd ./photo2cartoon
https://drive.google.com/open?id=1eDNGZT3jszHLXQ9XGIUPtcu72HdBmHuX
https://pan.baidu.com/s/1DxWWBAoaBpsei_rynZUZzw 提取码:z2nm
人像卡通化预训练模型:photo2cartoon_weights.pt,存放在 models 路径下。
头像分割模型:seg_model_384.pb,存放在 utils 路径下。
人脸识别预训练模型:model_mobilefacenet.pth,存放在 models 路径下。(From: InsightFace_Pytorch)
卡通画开源数据:cartoon_data,包含 trainB 和 testB。
python test.py --photo_path ./images/photo_test.jpg --save_path ./images/cartoon_result.png
检测人脸及关键点。
根据关键点旋转校正人脸。
将关键点边界框按固定的比例扩张并裁剪出人脸区域。
使用人像分割模型将背景置白。
python data_process.py --data_path YourPhotoFolderPath --save_path YourSaveFolderPath
├── dataset
└── photo2cartoon
├── trainA
├── xxx.jpg
├── yyy.png
└── ...
├── trainB
├── zzz.jpg
├── www.png
└── ...
├── testA
├── aaa.jpg
├── bbb.png
└── ...
└── testB
├── ccc.jpg
├── ddd.png
└── ...
python train.py --dataset photo2cartoon
python train.py --dataset photo2cartoon --pretrained_weights models/photo2cartoon_weights.pt
— 完 —