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

宫崎骏动画里的新垣结衣见过没?这个开源动漫生成器让你的照片秒变手绘日漫
2020年03月26日 12:34 机器之心

机器之心报道

参与:肖清、思

随手拍张照片,顺势转换为宫崎骏、新海诚等日漫大师的手绘风格作品,这个专门生成动漫图像的 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.8

tensorflow-gpu 1.8

opencv

tqdm

numpy

glob

argparse

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

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

!git clone https://github.com/TachibanaYoshino/AnimeGAN

将工作目录切换到 AnimeGAN:

import os

os.chdir('AnimeGAN')

print(os.getcwd())

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

URL=https://github.com/TachibanaYoshino/AnimeGAN/releases/download/Haoyao-style_V1.0/Haoyao-style.zip

ZIP_FILE=./checkpoint/Haoyao-style.zip

TARGET_DIR=./checkpoint/saved_model

mkdir -p ./checkpoint

wget -N $URL -O $ZIP_FILE

mkdir -p $TARGET_DIR

unzip $ZIP_FILE -d $TARGET_DIR

rm $ZIP_FILE

DatesetURL=https://github.com/TachibanaYoshino/AnimeGAN/releases/download/dataset-1/dataset.zip

ZIP_FILE=./dataset.zip

TARGET_DIR=./dataset

rm -rf dataset

wget -N $DatesetURL -O $ZIP_FILE

unzip $ZIP_FILE -d $TARGET_DIR

rm $ZIP_FILE

VGG_FILE=./vgg19_weight/vgg19.npy

wget --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 中运行:

!bash download_staffs.sh

至此即完成所有准备工作,运行如下代码就可以对模型进行训练了:

!python main.py --phase train --dataset Hayao --epoch 101 --init_epoch 1

AnimeGAN 的训练过程如下图所示:

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

!python test.py --checkpoint_dir checkpoint/saved_model --test_dir dataset/test/real --style_name H

当看到以上输出说明程序已经成功运行完成,生成结果保存在 results 文件夹下。可以看到,在 P100 GPU 上生成一幅图片需要大约 2.3 秒左右。

开源dataset
新浪科技公众号
新浪科技公众号

“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

创事记

科学探索

科学大家

苹果汇

众测

专题

官方微博

新浪科技 新浪数码 新浪手机 科学探索 苹果汇 新浪众测

公众号

新浪科技

新浪科技为你带来最新鲜的科技资讯

苹果汇

苹果汇为你带来最新鲜的苹果产品新闻

新浪众测

新酷产品第一时间免费试玩

新浪探索

提供最新的科学家新闻,精彩的震撼图片