实现制作动漫版的你---动漫风格迁移网络AnimeGANv2

AI依然火

最近居家太无聊了,无意见逛到了AI社区,发现最近AI算法热度还是很高,什么AI绘画,还有什么AI作诗,写歌。可以说,人工智能领域在一步步挑战人类的高度,从循规蹈矩的简单工作,到高难度的智慧挑战,现在已经在挑战人类最后防线—思想,创作!不过我还是觉得人工智能的路还很遥远!

今天我想分享的这个算法其实已经不是新算法了,去年就已经出来了,只是最近发现比较有趣,可以记录一下!

动漫风格化

其实现在好多相机或者软件都有一种功能叫做动漫风格化,就是将普通的照片图片变成动漫的那种二维风格,看着像画笔画出来的动漫场景。


但是很多软件对于图片动漫化的处理效果很垃圾,或者疏忽了一些细节,特别是对于人脸的处理,动漫化过后可能都认不出自己了,因为特征被过度美化或者漏了。

AnimeGANv2网络

AnimeGANv2就是可以实现动漫风格迁移学习的网络,AnimeGANv2之前有很多其他的实现生成动漫风格的网络,像CartoonGAN,CycleGAN,ComboGAN,AnimeGANv1等等,这些都是可以将普通图片转换成动漫风格的网络算法,但是其实各有千秋,转化的最终风格也是各不相同。AnimeGANv2是AnimeGANv1的升级版,据说是在网络损失计算训练数据上面做了改进,网络方面的改动好像是采用了VGG19,但是具体操作不太懂(可以参考第一代论文《AnimeGAN: a novel lightweight GAN for photo animation》)。然后就是训练数据的扩大,新增了宫崎骏新海诚金敏这三位日漫大佬的作品,这样的好处不用多说,生成的动漫图片会更加多元化,而且更加接近真正的动漫。

我们先来看看AnimeGANv2官方提供的测试图片的转换效果:
他们提供的亚洲人图片好像都是韩国的明星,比如IU,孔刘的图片:
实现制作动漫版的你---动漫风格迁移网络AnimeGANv2_第1张图片
实现制作动漫版的你---动漫风格迁移网络AnimeGANv2_第2张图片
威尔史密斯:
实现制作动漫版的你---动漫风格迁移网络AnimeGANv2_第3张图片
其实上面的图片转换没有大问题,基本保留了人物原有的特点,可以看出原型人物的大致特征,但是孔刘这张图片其实不太像,这里其实可以看出算法有个问题,这个我在后面转化许多身边男性朋友的照片时也体现了出来,这个后面总结的时候再说。

模型使用

怎么用这个网络模型呢,说实话用网上的那些软件也可以做出动漫风格的图片,但是我感觉没这个效果好,而且这个是离线的,更加能保护自己的隐私(虽然大数据时代没有隐私!!),总之,我们是可以通过代码直接用已经训练好的模型的,而且我们还可以训练自己的模型,我们有时间可以自己制作训练集,把什么国漫的一些代表作也拿去训练,没准可以让模型更加强大呢,对吧!

官方提供了两个版本的源码,另外一种太麻烦了,我用的是这种pytorch版本的:https://github.com/bryandlee/animegan2-pytorch

将源码下载下来之后操作其实就很简单了,和前面我用YOLO5的那个流程是一样的,因为现在的预训练模型使用流程都是大同小异的一套,就是为了方便大家的使用。安装依赖包的流程就是和我的这篇文章一样的流程,我们直接进入使用的步骤。

这里有三个文件夹需要重点说明一下:

首先是/weights文件夹,这个文件夹里面有四个权重参数,我们只需要用两个,一个是AnimeGANv1,一个是AnimeGANv2的参数,两个我们都可以试试,AnimeGANv2的效果明显要比AnimeGANv1要好,因为前面也说了AnimeGANv2是AnimeGANv1的升级版,当然,也可以试试其他两个模型的参数,反正AnimeGANv2的效果是我觉得最好的,我们的主角是它:
实现制作动漫版的你---动漫风格迁移网络AnimeGANv2_第4张图片
然后是/sample/inputs文件夹,这个文件夹里面装的就是我们需要转换的原型图片,最后就是模型的输出文件,我们可以创建一个/results/文件夹,这个文件夹就是装模型转化成的动漫风格的图片的。

有了这些文件夹过后,我们就可以在命令行输入一行命令运行即可运行(test.py文件就是我们的预测函数,input_dir和output_dir就填自己的路径,device是选择CPU和GPU的,如果没装GPU的化就默认CPU,就可以不用填这个参数):

python test.py --checkpoint ./weights/face_paint_512_v2.pt --input_dir [image_folder_path] --output_dir [image_folder_path] --device [cpu/cuda]

我们来看看模型的效果,我就拿一张自己的一张丑照转化后的样子作为预测结果展示:
实现制作动漫版的你---动漫风格迁移网络AnimeGANv2_第5张图片
这张照片我自己看着很奇怪,我也拿了身边朋友的照片做实验,都发现了一些共同的问题,这其实也包括前面孔刘那张照片的问题,我个人浅薄地评论这个算法有两个很明显的不足:
1.男性的图片转化成为动漫风格的图片过后有点“娘”了,不知道有没有和我感觉一样的,这其实也是我觉得孔刘那张动漫不太像他的原因,主要的原因我觉得就是动漫化后的肤色太过于白皙细腻了,所以导致某些男性特征被掩盖,而原本肤色相对偏黑的同学应该影响会小一点,转换后会非常帅气!

2.单眼皮变双眼皮,我转换了许多人像图片进行尝试,发现单眼皮的同学在经过动漫化后都变成了大双眼皮,虽然双眼皮看着是显得眼大好看,但是少了那一味真实,容易让人认不出自己。其实我感觉这是训练数据的问题,可能训练数据采集的动漫人物角色都是双眼皮吧,所以模型没有学到单眼皮的识别类型。

写在最后

这个网络还是挺好玩的,而且可塑性很高,我们可以通过自己制作训练数据来实现更加广泛的动漫画风。本人才疏学浅,如果有错误或者理解不到位的地方请指正!

你可能感兴趣的:(深度学习,图像处理,Python,人工智能,python,开发语言)