AnimeGAN基于2018年CVPR论文CartoonGAN基础上对其进行了一些改进,主要消除了过度风格化以及颜色伪影区域的问题。对于具体原理可以参见作者知乎文章。AnimeGANv2是作者在AnimeGAN的基础上添加了total variation loss
的新模型。
安装PaddleGAN
之后运行如下代码即生成风格化后的图像output_dir/anime.png
,其中PATH_OF_IMAGE
为你需要转换的图像路径。
from ppgan.apps import AnimeGANPredictor
predictor = AnimeGANPredictor()
predictor.run(PATH_OF_IMAGE)
或者在终端中运行如下命令,也可获得相同结果:
python applications/tools/animeganv2.py --input_image ${PATH_OF_IMAGE}
我们下载作者提供的训练数据,训练数据可以从这里下载。 下载后解压到data目录下:
wget https://github.com/TachibanaYoshino/AnimeGAN/releases/download/dataset-1/dataset.zip
cd PaddleGAN
unzip YOUR_DATASET_DIR/dataset.zip -d data/animedataset
解压完成后数据分布如下所示:
animedataset
├── Hayao
│ ├── smooth
│ └── style
├── Paprika
│ ├── smooth
│ └── style
├── Shinkai
│ ├── smooth
│ └── style
├── SummerWar
│ ├── smooth
│ └── style
├── test
│ ├── HR_photo
│ ├── label_map
│ ├── real
│ ├── test_photo
│ └── test_photo256
├── train_photo
└── val
示例以训练Hayao风格的数据为例。
- 为了保证模型具备生成原图的效果,需要预热模型:
python tools/main.py --config-file configs/animeganv2_pretrain.yaml
- 预热模型完成后,训练风格迁移模型:
注意: 必须先修改在
configs/animeganv2.yaml
中的pretrain_ckpt
参数,确保指向正确的 预热模型权重路径 设置batch size=4
,learning rate=0.0002
,在一个 GTX2060S GPU上训练30个epoch即可获得较好的效果,其他超参数请参考configs/animeganv2.yaml
。
python tools/main.py --config-file configs/animeganv2.yaml
- 改变目标图像的风格
修改
configs/animeganv2.yaml
中的style
参数即可改变风格(目前可选择Hayao,Paprika,Shinkai,SummerWar
)。如果您想使用自己的数据集,可以在配置文件中修改数据集为您自己的数据集。
注意: 修改目标风格后,必须计算目标风格数据集的像素均值,并修改configs/animeganv2.yaml
中的transform_anime->Add->value
参数。
如下例子展示了如何获得Hayao
风格图像的像素均值:
python tools/animegan_picmean.py --dataset data/animedataset/Hayao/style
image_num: 1792
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1792/1792 [00:04<00:00, 444.95it/s]
RGB mean diff
[-4.4346957 -8.665916 13.100612 ]
测试模型:
python tools/main.py --config-file configs/animeganv2.yaml --evaluate-only --load ${PATH_OF_WEIGHT}
原始图像 | 风格化后图像 |
---|---|