U-GAT-IT:训练你自己的二次元小姐姐
2019/8/21 Update: 已经有人部署到网站 selife2anime.com
UGATIT是一个由韩国NCSOFT公司开源的非监督GAN网络,这个GAN网络使用了新的改进的注意力模块能更好的关注几何和整体变化;以及使用新的AdaLIN (Adaptive Layer-Instance Normalization) 函数从数据集中学习参数,来灵活控制对材质和形状的修改(个人理解为更精细的生成?)。GitHub上开源了其TensorFlow版和PyTorch版。
使用恰当的数据集,可以训练妹子->二次元 or 二次元->妹子的模型,8说了,准备数据集,开冲!
下面是训练的详细过程,
TLDR:https://github.com/taki0112/UGATIT/issues/5#issuecomment-520109460
Step 1: 准备数据集
针对论文5.2节 Dataset,我对上面的数据集做了如下改动:
我编写了一个python脚本来预处理真人数据集,取数据集中女性3500张(数据集标注有误,结果仍有一部分男性),3400张作为训练集,100张作为验证集。同样二次元图也取了大小最大(相对认为是分辨率比较高,比较清晰的)的3500张。
在这里共享出来:
链接: https://pan.baidu.com/s/1AdxtU2fA1ossnmgJlaAPjQ 提取码: jjg6
这个数据集是根据标签属性挑选的,有一些错误并且自拍数据集如果角度和距离和二次元集更符合的话效果会更好(可以通过人工挑选来让数据集更好)
Step 2: 开始训练
数据集解压后放到项目根目录下dataset目录下,安装好项目依赖后运行python main.py --dataset selfie2anime
来开始训练。在8G显存的GTX 1080上是没法训练完整模型的,于是我按照项目说明加上了--light=True参数来训练轻量模型。训练过程中你可以使用TensorBorad来监听logs目录下的子目录内文件来查看loss情况。
训练~15小时后手动挑选的一些还行的结果:
因为到了工作日,上班的时候时不时需要训练其他的模型,所以等完整的100个epoch*10000个iteration跑完之后看看最终验证集结果。如果你有什么问题或者好的想法的话,欢迎评论和我交流~