阅读笔记:Outline Colorization through Tandem Adversarial Networks

人工智能课的final project想做个黑白线稿自动上色的模型,找资料的时候发现了这篇paper。

第一眼看过去文章标题什么的没啥特别的,除了Tandem这个词,查了一下:

tandem <adj.> 串联的

大概是在说网络的结构吧,然而当看到作者:

Kevin Frans, Henry M. Gunn High School, Palo Alto, CA

等一下,High School???作者是高中生??于是去查了一下这位,然后…

HnGAUS.md.png

OpenAI实习,已经发了三篇paper,MIT读大一,啥玩意儿还是车万人…对不起,打扰了,这就是强者吗…

好了回到正题,来看看这位高中生的想法——

Idea

读罢,作者的想法并不复杂,将一个大的生成任务拆成两部分:

  • 用outline生成color scheme
  • 用color scheme和outline生成final image

解释两个概念:

  • outline:待上色的黑白线稿
  • color scheme:个人理解为上色的指导信息,用outline生成

作者通过这个结构(他称之为Tandem Structure)来实现:
HnGiHf.md.png

其中color prediction network和shading network是两个生成器(记为G1、G2),分别负责生成color scheme和final image。两个生成器的具体结构都是基于UNet+残差结构实现,区别在于color prediction输入channel为1(因为是灰度),shading输入channel为4(RGB+轮廓灰度)。最后输出channel都为3。

鉴别器D使用普通的CNN实现,损失函数用了L2距离。

这样构成了一个GAN,先训练一下D让它有基本的鉴别能力,然后用outline生成color scheme,再用color scheme和outline生成fake image,通过D计算fake image和real image的损失,计算梯度反向传播更新G1、G2的参数,完成一轮迭代。

困难

The second network, which predicts colors from outlines, has a harder job. Directly mapping from outlines to their processed color schemes leads to poor results. To combat this, we adjust the second network’s output. Rather than directly predicting every pixel’s color, we split the image into a grid of 16px by 16px blocks.

作者提到,由outline学习输出color scheme比较困难,直接生成color scheme的结果比较糟糕。给出的解决方案是降低生成color scheme的精细度(降采样的感觉,不直接生成分辨率较高的scheme),从而生成分辨率低、粗糙的scheme,让G1学习生成特征(不同位置的色块)而非细节,降低训练难度。随后G2的训练中直接使用低分辨度的scheme作为输入即可,如果要测试G2的生成能力,直接将原始图片随机遮挡+模糊而来的color scheme降采样到和低分辨度scheme相同后再输入即可。

技巧

作者对原始图片随机添加了白色矩形作为噪声,然后进行模糊处理得到color scheme,作者认为这种随机遮挡起到了正则化的作用,类似于dropout层的作用(作者设计的网络中并不包含传统的dropout层),加强生成模型的泛化能力。