这篇论文是Intel公司在SIGGRAPH 2018发表的论文,主要讲的是用深度学习来进行半色调(Halftoning)和逆半色调(Inverse Halfoning)。
原文链接:https://dl.acm.org/citation.cfm?id=3201377
1. 论文贡献
直接借用论文中作者的话:
- 提出了一种基于深度学习的Descreening(去网)方法。模型分为两阶段:第一阶段先生成粗糙的重构图像和一些特征,然后第二阶段将第一阶段得到的粗糙图像和特征进行融合,最终得到精细的图像结果;
- 提出用边缘信息作为条件生成对抗网络及其目标函数的指导;
- 介绍了一种基于Rescreening的图像编辑应用,并阐述了它的实用性;
- 为了合成规律的半色调纹理,提出了局部空间可变(locally space-variant)卷积神经网络。
2. 论文动机
emmmm,关于动机(motivation)作者并没有讨论太多,主要就是因为以前印刷技术的限制,老报纸、杂志上面的图片都是半色调图像,会有很明显的半色调纹理。经过半色调印刷,图像的质量会大大降低,而且因为时间久远,想要从胶卷中恢复图像也不现实,所以作者认为有必要有为以前的老照片带去一丝生机。这里我个人感觉也没啥有特色的地方。emmmm,关于动机(motivation)作者并没有讨论太多,主要就是因为以前印刷技术的限制,老报纸、杂志上面的图片都是半色调图像,会有很明显的半色调纹理。经过半色调印刷,图像的质量会大大降低,而且因为时间久远,想要从胶卷中恢复图像也不现实,所以作者认为有必要有为以前的老照片带去一丝生机。这里我个人感觉也没啥有特色的地方。
3. 论文模型(Descreening)
Descreening模型的整个流程框架如下图所示。整个模型按照功能可以分为两个阶段:第一阶段有3个子网络CoarseNet,ObjectNet和EdgeNet,该阶段主要就是根据输入的半色调图片 先生成一个粗略的结果 和一些辅助特征 (语义图), (边缘图)。第一阶段得到的 已经基本去掉了半色调图片中的那些,但是细节特征不好。第二阶段做的事就是利用条件GAN将第一阶段得到的语义信息和边缘信息融合到 中去,最终生成细节丰富的结果 。整个流程走下来还是挺简单的,下面来看看这两个阶段的实现细节。
第一阶段 包含3个子网络:CoarseNet、ObjectNet和EdgeNet:
CoarseNet
CoarseNet的任务是低频图像的重构,恢复出图像的颜色,色调、形状等全局特征。网络就是一个U-Net,具体参数如下表所示,其中
代表卷积层,
代表BatchNorm,
代表LeakyReLU
,
代表ELU
。
CoarseNet的Loss函数由两部分组成, 表示Ground Truth: 其中 用来衡量输出图像 和原图 的差别: 这里使用 损失而不用 损失是因为 相比 能生成模糊程度更低的图像。 但是如果只用 损失,最后恢复的图像中仍会有半色调纹理,受风格迁移网络的启发,这里引入全局级别的纹理损失 (论文选择的是VGG16): 其中 表示VGG16中第 层feature map的Gram Matrix。 可以指导网络生成和 具有相似纹理结构的 ,从而去除半色调纹理。
ObjectNet
ObjectNet的任务是从CoarseNet生成的低频图像中获取语义信息,这将会为之后的特征融合阶段提供非常重要的先验信息。语义+大感受野的方式能够很好的重构图像细节特征。 论文直接用的现成的预训练好的场景分割网络(Zhou et al. 2017b),并将原来的150个语义标签融合为25类。最后ObjectNet为
的每个像素输出一个25维的one-hot向量。这25类语义标签如下表所示。
EdgeNet
边缘和轮廓则是图像合成另一个很重要的约束。论文使用Canny算子得到的二值图像作为Ground Truth训练EdgeNet(输入是半色调图像)。网络参数如下:
由于Canny生成的是二值图像,EdgeNet的损失函数是输出
和真值
的交叉熵:
其中
为图像中像素的总数。
第二阶段
也包括3个子网络:DetailsNet、Discriminator-1、Discriminator-2:
DetailsNet
半色调图像
经过第一阶段
得到3个输出
,将它们4个concat到一起得到DetailsNet的输入:
DetailsNet的任务是通过CNN将特征融合到
上,并去除残留的半色调纹理,获得细节特征良好的结果
:
其中
是残差表示,这个是借鉴了ResNet。
然后使用GAN框架来训练
。
就是GAN中的生成器,判别器有两个:一个用来监督整张图像,另一个用来监督图像的局部区域(直接应用PatchGAN的结构[Isola et al. 2017])。生成器和判别器的网络参数如下表所示。
DetailsNet的损失函数由4部分组成:3个内容损失,1个对抗损失:
关于
,论文中说是用
喂到EdgeNet中得到的,但是EdgeNet是根据Halftone图片训练得到的,这显然不会得到正常的边缘,不知道是论文作者写错了还是什么,我认为
就是直接对
进行Canny边缘检测得到的结果。
是局部区域匹配损失,patch大小为
,使用局部损失的目的是为了产生更真实的纹理。
是GAN的对抗损失,论文中不是用的原始生成对抗网络的交叉熵损失函数,而是用的Least Squares GAN的损失,即
损失。
在DetailsNet的训练过程中,对于生成器
,除了输入融合特征
,还加上了一个小的随机噪声
(这样更有利于GAN训练),即
。对于判别器Discriminator-1,它的训练目标是区分Ground Truth的残差
和生成的残差
。对于判别器Discriminator-2,是一个条件生成对抗网络,输入条件有2个,原始半色调图片
和语义标签图
,训练目标是判断生成的细节是否符合给定的半色调图片和语义标签图。Discriminator-2训练的patch大小为
。
模型训练
Descreening这部分模型训练使用的是Places-365数据集,总共包括2,168,461张图片,训练图片为1,803,460。将图片缩放到
,并在CMYK颜色空间下对图片进行Halftone预处理。为了保证Halftone方式的多样性,作者为每张图片随机选择dot shapes, screen angle, screen resolutions,而且也考虑了基于dithering的Halftone方式(但是在后续实验中并没有看到相关的实验数据),最终得到了12,624,220个训练图像对
。
训练过程中,每个epoch从整个训练集中随机选择500,000张图片进行训练。为了鲁棒性,进行了数据集增强:随机crop,旋转,缩放,水平\竖直翻转,增加小的高斯噪声。使用ADAM优化器最小化损失函数,初始学习率为0.0001,每个epoch学习率下降为原来的0.9。
由于难以一次性训练这么多网络,所以整个训练过程也是分阶段的。ObjectNet和EdgeNet是提前预训练好的,在此基础上,陆续加入其它子网络进行训练。前5个epoch训练CoarseNet,然后将CoarseNet,DetailsNet,EdgeNet加在一起训练。10个epoch后,激活Discriminator-2来对DetailsNet进行微调,此时其它网络的参数不参与训练。
4. 论文模型(Rescreening)
前面Descreening模型是进行逆半色调,即将半色调图片还原成灰度图。论文还提出了Rescreening,给定一张参考Halftone图像,该模型能够将输图片按照参考图像的Halftone方式进行半色调,这个工作目前做的人比较少,我想这篇论文被SIGGRAPH接收这一点应该起很大作用。现在首先来看看整个RescreenNet模型。
Rescreening模型 以 、 及其Descreening结果 为输入,合成 的一张新的半色调图片 : 网络参数如下表所示:
RescreenNet也是可以分为两个阶段,在第一阶段,Style Encoder从
中提取出一个描述半色调风格的全局特征向量
(32维),然后第二阶段利用条件生成对抗网络,以
和
为输入,生成新的半色调图像
。但是直接用卷积没有办法生成position-dependent的性质(比如半色调图片上有规则的图案),所以作者又为图像中每个位置
对16取模,并编码成16维的one-hot特征向量。最后第二阶段的输入是一个67通道(32+16×2+3)的张量。
RescreenNet的损失函数由
损失和全局特征匹配损失
两部分组成。判别器Discriminator-3同样是基于patch的,patch大小为
。