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

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

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

 [[320014]]

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

尽管最近 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 中输入:

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

 å®«å´ŽéªåŠ¨ç”»é‡Œçš„新垣结衣见过没?这个开源动漫生成器让你的照片秒变手绘日漫

将工作目录切换到 AnimeGAN:

  1. import os 
  2.  
  3. os.chdir('AnimeGAN'
  4.  
  5. print(os.getcwd()) 

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

  1. URL=https://github.com/TachibanaYoshino/AnimeGAN/releases/download/Haoyao-style_V1.0/Haoyao-style.zip 
  2.  
  3. ZIP_FILE=./checkpoint/Haoyao-style.zip 
  4.  
  5. TARGET_DIR=./checkpoint/saved_model 
  6.  
  7. mkdir -p ./checkpoint 
  8.  
  9. wget -N $URL -O $ZIP_FILE 
  10.  
  11. mkdir -p $TARGET_DIR 
  12.  
  13. unzip $ZIP_FILE -d $TARGET_DIR 
  14.  
  15. rm $ZIP_FILE 
  16.  
  17. DatesetURL=https://github.com/TachibanaYoshino/AnimeGAN/releases/download/dataset-1/dataset.zip 
  18.  
  19. ZIP_FILE=./dataset.zip 
  20.  
  21. TARGET_DIR=./dataset 
  22.  
  23. rm -rf dataset 
  24.  
  25. wget -N $DatesetURL -O $ZIP_FILE 
  26.  
  27. unzip $ZIP_FILE -d $TARGET_DIR 
  28.  
  29. rm $ZIP_FILE 
  30.  
  31. VGG_FILE=./vgg19_weight/vgg19.npy 
  32.  
  33. 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_]+).*/1n/p')&id=1U5HCRpZWAbDVLipNoF8t0ZHpwCRX7kdF" -O $VGG_FILE && rm -rf /tmp/cookies.txt 

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

  1. !bash download_staffs.sh 

 å®«å´ŽéªåŠ¨ç”»é‡Œçš„新垣结衣见过没?这个开源动漫生成器让你的照片秒变手绘日漫

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

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

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

 å®«å´ŽéªåŠ¨ç”»é‡Œçš„新垣结衣见过没?这个开源动漫生成器让你的照片秒变手绘日漫

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

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

 å®«å´ŽéªåŠ¨ç”»é‡Œçš„新垣结衣见过没?这个开源动漫生成器让你的照片秒变手绘日漫

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

 

责任编辑:张燕妮 来源: 机器之心
相关推荐

2021-09-13 10:14:28

代码开发命令

2023-08-18 14:11:00

艺术模型

2021-07-23 11:24:54

Create Inc开源G代码生成器

2021-06-06 16:31:57

PythonPython 3.7 编程语言

2009-07-01 17:30:14

样式生成器Visual Stud

2009-07-03 09:29:24

KeelKit

2019-05-21 14:08:40

豆瓣Python图书

2020-05-25 16:18:33

SpringBoot代码生成器

2017-09-06 09:26:03

Python生成器协程

2019-12-27 10:00:34

开源技术 软件

2021-03-29 10:37:35

开源技术 开发

2023-05-04 16:24:10

人工智能图像生成器

2023-02-07 16:11:41

2012-09-21 10:54:21

开源Linux防火墙

2009-08-28 10:40:18

开源Linux防火墙生成器Linux操作系统

2020-10-10 09:19:58

JavaScript开发技术

2017-12-03 21:47:07

开源工具JavaScript

2022-07-25 10:27:36

背景生成器工具前端

2020-04-30 21:40:14

C#特性编程语言

2022-03-10 10:48:30

PolyCoder自动代码生成器语言
点赞
收藏

51CTO技术栈公众号