参与:肖清、思

随手拍张照片,顺势转换为宫崎骏、新海诚等日漫大师的手绘风格作品,这个专学天生动漫图像的 GAN,实测很好用。

机器之心根据真实店铺照片天生的效果图,一度以为,这便是某个日漫番剧的截图。

只管最近 2019 年的图灵奖颁给了打算机图形学、颁给了皮克斯 3D 动画,但很多人可能认为二维动漫更故意思一些。
像宫崎骏、新海诚这些大师手绘下的动漫,才有了灵魂,张张都能成为壁纸,而全体日漫也以二维为核心。

宫崎骏动画的新垣结衣见过没这个开源动漫生成器让照片秒变日漫

如果有模型能将真实画面转化为日漫风格的手绘画面,那一定非常炫酷。
最近机器之心创造确实有这些模型,从 CartoonGAN 到 AnimeGAN 都能天生非常故意思的图像。

这里有一个 TensorFlow 新项目,它实现了 AnimeGAN,并供应了预演习模型。
也便是说,我们下载后可以直接试试天生效果。
作为日漫风格的爱好者,我们很快就试用了一下新项目。

项目地址:https://github.com/TachibanaYoshino/AnimeGAN

虽然原项目给出的最佳示例很多都是街景,但我们创造各种场景也都还行,如下是我们试用的原图与天生效果。
看看第一张樱花道天生效果,忽然有一种《千与千寻》的觉得。

如果只针对人物,转换效果也是非常不错的。
我们考试测验将新垣结衣的照片输入 AnimeGAN 模型,然后就有如下这种神奇的画风,觉得直接用到动漫里也没什么问题了。

在原 GitHub 项目中,作者还给了非常多的示例,上面只是机器之心试用的结果,你也可以来用一用。

AnimeGAN

全体项目实现的是论文「AnimeGAN: a novel lightweight GAN for photo animation」中所提方法,作者在论文等分别将 AnimeGAN 与 CartoonGAN、ComixGAN 进行比拟。

从图中可以看到,AnimeGAN 在细节方面的表现要优于以上两种方法,色彩相对而言更加自然,涂抹感也没有那么强烈。
最明显的是第二行的效果图,利用 AnimeGAN 天生的漫画更加靠近宫崎骏的画风。

方法简介

对付这个项目的 AnimeGAN,如下所示为 AnimeGAN 所采取的天生器网络与判别器网络。
看起来模型整体是比较常规地一个卷积神经网络,但它会采取实例归一化以及新型的 LReLU 激活函数。

除了架构细节上的更新外,作者还提出了以下三个新的丢失函数:

灰度风格(grayscale style)loss灰度对抗(grayscale adversarial)loss色彩重构(color reconstruction)loss

这些丢失函数能够让天生图片的风格更加靠近于真实的漫画风格。

下表比较了 ACartoonGAN 与 AnimeGAN 的模型大小与推理速率。
可以明显看出,AnimeGAN 是个相对轻量级的 GAN,具有更少的参数量以及更快的推理速率。

总体来说,新提出来的 AnimeGAN 是一种轻量级的天生对抗模型,它采取了较少的模型参数,以及引入格拉姆矩阵(Gram matrix)来加强照片的风格。
研究者的方法须要采取一系列真实图片与一系列动漫图片做演习,且这些图片并不须要成对匹配,这就表明演习数据非常随意马虎得到。

项目实测

我们在 Ubuntu 18.04 下对本项目进行了测试,干系依赖环境如下:

python 3.6.8tensorflow-gpu 1.8opencvtqdmnumpyglobargparse

这些依赖项可以说都是 CV 中常用的扩展库,我们就不用费尽心思去办理各种依赖环境冲突的问题了,这里给个好评。

以下是本项目的演习及测试详细流程。
我们首先将 AnimeGAN 项目克隆到本地,在 Jupyter notebook 中输入:

!gitclonehttps://github.com/TachibanaYoshino/AnimeGAN

将事情目录切换到 AnimeGAN:

importosos.chdir('AnimeGAN')print(os.getcwd())

接下来下载项目作者供应的预演习模型,利用 vim download_staffs.sh 创建一个 Shell 文件,输入如下命令:

URL=https://github.com/TachibanaYoshino/AnimeGAN/releases/download/Haoyao-style_V1.0/Haoyao-style.zipZIP_FILE=./checkpoint/Haoyao-style.zipTARGET_DIR=./checkpoint/saved_modelmkdir-p./checkpointwget-N$URL-O$ZIP_FILEmkdir-p$TARGET_DIRunzip$ZIP_FILE-d$TARGET_DIRrm$ZIP_FILEDatesetURL=https://github.com/TachibanaYoshino/AnimeGAN/releases/download/dataset-1/dataset.zipZIP_FILE=./dataset.zipTARGET_DIR=./datasetrm-rfdatasetwget-N$DatesetURL-O$ZIP_FILEunzip$ZIP_FILE-d$TARGET_DIRrm$ZIP_FILEVGG_FILE=./vgg19_weight/vgg19.npywget--load-cookies/tmp/cookies.txt"https://docs.google.com/uc?export=download&confirm=$(wget--quiet--save-cookies/tmp/cookies.txt--keep-session-cookies--no-check-certificate'https://docs.google.com/uc?export=download&id=1U5HCRpZWAbDVLipNoF8t0ZHpwCRX7kdF'-O-|sed-rn's/.confirm=([0-9A-Za-z_]+)./\1\n/p')&id=1U5HCRpZWAbDVLipNoF8t0ZHpwCRX7kdF"-O$VGG_FILE&&rm-rf/tmp/cookies.txt

保存退却撤退出,以上命令会将预演习的模型、vgg19 权重以及演习数据集下载并保存到其对应目录下。
在 notebook 中运行:

!bashdownload_staffs.sh

至此即完成所有准备事情,运行如下代码就可以对模型进行演习了:

!pythonmain.py--phasetrain--datasetHayao--epoch101--init_epoch1

AnimeGAN 的演习过程如下图所示:

当进行测试时,我们须要将用于测试的图片保存到 dataset/test/real 目录下,并运行如下代码:

!pythontest.py--checkpoint_dircheckpoint/saved_model--test_dirdataset/test/real--style_nameH

当看到以上输出解释程序已经成功运行完成,天生结果保存在 results 文件夹下。
可以看到,在 P100 GPU 上天生一幅图片须要大约 2.3 秒旁边。