将照片变成动漫——cartoonGAN论文解析

把现实中拍的照片,变成动漫的画风,这就是cartoonGAN做到的事情。

这篇论文的全名叫做:《CartoonGAN: Generative Adversarial Networks for Photo Cartoonization》

cartoonGAN主要做了以下几点创新:

1、提出了一个基于GAN的方法,使用不配对的训练集,将现实世界的照片转为卡通图片。

2、提出了两个loss,在生成器中使用了语义分割loss,在判别器中使用了边缘提升对抗loss。

3、提出了一种初始化权重方法。

 

接下来让我们详细看看吧:

一、网络结构

上方的是生成器,先降采样再上采样。

下方的是判别器,作者在这使用了简单的patch-level的判别器,网络比较浅,因为动漫和真实照片的风格差异主要在局部特征。

 

二、损失函数

总损失函数如下:

对抗损失Ladv: 

本来GAN的对抗损失没什么好说的,无非就是生成器G努力生成逼真的图像,判别器D努力判断图像是真的还是假的,但是作者发现卡通图片的清晰边缘是一个很重要的特征,当生成器生成的图没有清晰的边缘但是有正确的形状的时候,判别器容易也把它分成真图。这样就会导致生成的图不像卡通风格。

因此定义数据Sdata(p)为真实照片photo,Sdata(c)为卡通图片cartoon,作者在这里自己生成了数据Sdata(e),去掉了Sdata(c)中清晰的边界。具体做法:1、使用标准的canny边缘检测器检测边缘像素  2、膨胀边缘区域  3、在膨胀的边缘区域使用高斯平滑。效果如下图:

因此Ladv如下:

也就是说判别器不仅要分清c和p,也要分清c和e。

 

内容损失Lcon:

其次是需要保持生成的图的语义信息。因此作者使用了预训练好的VGG,并在特征上对生成的图和原图施加了一个l1loss:

这里作者特别说明了他们使用l1loss跟其他人都使用l2不太一样,是因为卡通画跟真实照片差别太大。

 

三、初始化方式

因为GAN比较难训练,要是随机初始化权重的话,优化器很容易陷在局部最优里。作者为了解决这个问题,作者预训练了生成器,只使用Lcon。在对比实验中作者证明了这种方式是有效的。下图为预训练中10个epoch的生成结果:

 

四、实验部分

实验部分就不细说了,放几张图:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章