【实战】(字节跳动、日本东京大学)学习使用白盒表示+GAN来创作卡通图片:Learning to Cartoonize Using White-Box Cartoon Representations

要说亚洲动漫制作的王者,当然是我们一衣带水的邻邦——日本。

2020年字节跳动和日本东京大学联合发表了一篇《Learning to Cartoonize Using White-Box Cartoon Representations》(学习使用白盒表示+GAN来创作卡通图片),基于卡通图片的绘画技法和图像特点,可以将真实的人物或风景图片转化为卡通图片,效果很出色,在这篇文章里我们介绍一下这个项目。

论文地址:https://github.com/SystemErrorWang/White-box-Cartoonization/blob/master/paper/06791.pdf

Github项目:https://github.com/SystemErrorWang/White-box-Cartoonization

(一)架构简介

论文的摘要中是这样说的:

这篇论文提出了一种图像卡通化的方法。通过观察卡通绘画行为和咨询艺术家,我们建议从图像中分别识别出三种白盒表示:(1)包含卡通图像光滑表面的外观表示;(2)在赛璐珞风格工作流中描述稀疏色块和扁平化全局内容的结构表示;以及(3)反映卡通图像中高频纹理、轮廓和细节的纹理表示。生成性对抗网络(GAN)框架用来学习提取图像表示和卡通化图像。该方法的学习目标分别基于每个提取的表示(特征),使得框架具有可控性和可调整性。

【实战】(字节跳动、日本东京大学)学习使用白盒表示+GAN来创作卡通图片:Learning to Cartoonize Using White-Box Cartoon Representations_第1张图片

上图中展示的是本项目的图像卡通化框架。将图像分解为外观表示、结构表示和纹理表示,并引入三个独立的模块来提取相应的表示。GAN框架由生成器G和两个判别器Ds和Dt组成,其中Ds用于判别从模型输出和卡通中提取的外观表示,Dt用于判别从输出和卡通中提取的纹理表示。预训练的VGG网络用于提取高级特征,并在提取的结构表示和输出之间,以及在输入图片和输出之间对全局内容施加空间约束。每个组件的权重可以在loss函数中进行调整,这允许用户控制输出样式并使模型适应不同的用例。

本项目所使用的GAN的生成器和判别器架构如下图所示,其中生成器网络类似于U-Net,而判别器网络来自于PatchGAN:

【实战】(字节跳动、日本东京大学)学习使用白盒表示+GAN来创作卡通图片:Learning to Cartoonize Using White-Box Cartoon Representations_第2张图片

生成器网络使用步长为2的卷积层进行下采样,使用双线性插值层进行上采样,以避免棋盘伪影(Checkerboard Artifacts)。该网络仅由三种层组成:卷积层、泄漏ReLU(LReLU)层和双线性层,这使得它可以很容易地嵌入移动电话等边缘设备中。

判别器网络最后一层是卷积层,输出特征图中的每个像素对应于输入图像中的一个面片(Patch),面片大小等于感知场,用于判断面片属于卡通图像(Cartoon Images)还是生成图像。PatchGAN增强了对细节的辨别能力,加快了训练速度。在每个卷积层(最后一层除外)之后放置谱归一化(Spectral Normalization),以对网络实施Lipschitz约束并稳定训练。

(二)上手试用

(2.1)必备环境(Windows 10,NVIDIA Geforce RTX 2080Ti)

cuda                    10.0.0
cudnn                  7.6.5
python                 3.7.4
tensorflow           1.14.0
tensorflow-gpu:   1.14.0(官网建议:1.12.0或者1.13.0)
scikit-image         0.14.5

(2.2)从 Github 下载源代码,解压缩,进入工作目录:

https://github.com/SystemErrorWang/White-box-Cartoonization

(2.3)把待卡通化处理的图片放到 ./test_code/test_images 目录下

(2.4)在 ./test_code 目录下运行:

python cartoonize.py

(2.5)生成的图片放在 ./test_code/cartoonized_images 目录下。

(三)使用效果

(3.1)论文中给出的例子

(3.2)实测效果

真实图片                                                                  卡通效果

【实战】(字节跳动、日本东京大学)学习使用白盒表示+GAN来创作卡通图片:Learning to Cartoonize Using White-Box Cartoon Representations_第3张图片 

【实战】(字节跳动、日本东京大学)学习使用白盒表示+GAN来创作卡通图片:Learning to Cartoonize Using White-Box Cartoon Representations_第4张图片  【实战】(字节跳动、日本东京大学)学习使用白盒表示+GAN来创作卡通图片:Learning to Cartoonize Using White-Box Cartoon Representations_第5张图片

【实战】(字节跳动、日本东京大学)学习使用白盒表示+GAN来创作卡通图片:Learning to Cartoonize Using White-Box Cartoon Representations_第6张图片  【实战】(字节跳动、日本东京大学)学习使用白盒表示+GAN来创作卡通图片:Learning to Cartoonize Using White-Box Cartoon Representations_第7张图片

【实战】(字节跳动、日本东京大学)学习使用白盒表示+GAN来创作卡通图片:Learning to Cartoonize Using White-Box Cartoon Representations_第8张图片  【实战】(字节跳动、日本东京大学)学习使用白盒表示+GAN来创作卡通图片:Learning to Cartoonize Using White-Box Cartoon Representations_第9张图片

这样,我们即使不掌握绘画技术,也可以通过手机拍照+PS修图+AI技术,创作出一些个性化的卡通作品,这是不是也挺有意思呢?

(完)

 

 

 

你可能感兴趣的:(深度学习,tensorflow)