您的位置:首页 > 其它

一篇关于如何用深度学习完成自动上色(Automatic Image Colorization)的论文浅析

2017-12-19 23:29 127 查看
论文标题是《Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification

Paper:http://hi.cs.waseda.ac.jp/~iizuka/projects/colorization/data/colorization_sig2016.pdf

GitHub Code: https://github.com/satoshiiizuka/siggraph2016_colorization

论文题目包含了这个网络的主要特点:

1. 端到端

2. 上色过程结合了全局(图像的语义信息)和局部特征

3. 整个过程自动完成上色,不需要预处理和后处理

4. 在上色的过程能同时完成分类的任务

前言:

end to end:

端到端指的是输入是原始数据,输出是最后的结果,非端到端的输入端不是直接的原始数据,而是在原始数据中提取的特征。

端到端的好处:通过缩减人工预处理和后续处理,尽可能使模型从原始输入到最终输出,给模型更多可以根据数据自动调节的空间,增加模型的整体契合度。在目标检测领域,yolo就是典型的端到端网络,You Only Look Once的意思就是端到端。

色彩空间:

Lab和RGB一样也是色彩空间的一种。L 代表亮度,而 a 和 b 代表颜色光谱绿-红和蓝-黄。正如下图所示,Lab 编码的图片有一个灰度层,而颜色层由三个减少为两个。这意味着我们可以在最终的预测中使用原来的灰度图片,同时只需要预测两个通道。



从实验上来说,人类眼睛里大约 94% 的细胞是用来探测亮度的,只有剩下 6% 是用来感应颜色的。正如你在上图中所看到的,灰度图比颜色图看起来清楚多了,这也是我们需要在神经网络输出中保留灰度图的另一个原因。

作者尝试了三种图像空间RGB、YUV、Lab,最后Lab效果相对较好,因此采用了它。



网络结构:



整个网络的架构由两个大部分组成:第一部分是由低级特征提取网络、中级特征提取网络、融合层和上色网络组成;第二部分由低级特征提取网络、全局特征提取网络组成。其中低级特征提取网络共享卷积核的权重,图中两个低级特征提取网络的紫色tensor厚度是相同的,但宽和高却不一定相同。

其实关于低级、中级、全局特征提取网络的区分是很模糊的,只能通过网络的深度来做一个大概的判断。一般卷积网络随着深度增加,提取的特征维度就会越来越高,一般认为:边和角—>纹理—>全局特征。

网络的输入是灰度图,第一部分网络的输入是原图像大小的灰度图,第二部分网络的输入是reszie(就是结构图中第二部分网络输入的Scaling操作)成224*224后的灰度图。第一部分只包含了卷积,所以对输入图像的大小没有限制。而第一部分包含了全链接,因此对输入图像的大小有限制。

神经网络的预测过程就像这样:我们有一张灰度图的输入,我们希望以此来预测两个色彩图层,Lab 中的 a 和 b,它们一起构成了色相(Chrominance)。再将预测图层经过上采样成原图的大小,最终和输入的灰度图层 L (Luminance)一起组合成 Lab 图片。

第一部分

网络结构的第一部分其实是一个生成模型,它已经具备上色的功能了,但是因为没有结合全局特征,所以效果不好。如下图所示,中间列是仅有第一部分网络时的输出结果,右边列是添加第二部分网络(全局特征)后的输出结果,明显看到中间列采用了非室内的色系,但是右边列显示良好,这就是加入全局特征的好处。网络在上色时,先根据图像内容的得到语境信息,然后再决定采用哪种“配色方案”,最后根据不同的纹理进行上色。



上色网络做了低级特征提取网络的反操作,不断通过上采样将tensor长宽还原。

第二部分

网络的第二部分是一个标准的卷积网络,全局特征提取层的输出是一个1x1x256的张量,通过融合层将语义信息加入第一部分网络。在全局特征后面添加两个全连接,第二部分网络就成了一个cifar*分类网络,具有了分类功能。当然正因为这个原因,全局特征提取网络的输出具有图像的语境信息。

网络的损失函数:



损失函数的前半部分是一个典型的无监督网络的损失函数:Xtrue - Xpre的MSE,后半部分就是分类部分的损失。前半部分损失的反向传播影响整个网络的权重,分类损失则只影响第二部分网络,并不影响上色网络和中级特征提取网络的权重。通过设置超参数阿尔法为0,就可仅使用上色部分损失。

总体来说,网络结构有两个亮点:

融合层

伴生的分类功能和风格迁移

融合层

融合层的公式:



从公式来看:全局特征提取层的输出是一个1x1x256的张量,将这个张量看成一个火柴,将(H/8)x(W/8)根火柴堆叠成一个立方体,大小为(H/8)x(W/8)x 256。将每一根火柴和其纵向对应的中级网络输出拼成一个大小为1 x 1 x(256+256)的张量,将这个张量和融合层纵向对应的输出(大小为1 x 1 x 256)做一个全连接,因此这样的全连接总共有(H/8)x(W/8)个。

其实简单的说,是对融合层做了一个1x1的卷积。

风格迁移

此外,这个网络还有另一个副产品—风格迁移




通过将第二部分网络的输入换成想要迁移的风格的灰度图,这里要求与被风格迁移的图片是相同的类型。下图通过麦田来对油菜花上色,使得输入图片就像更替了季节。



网络其他细节:

网络的输入是多分辨率的。

网络中没有池化层,通过步长为2*2的卷积代替池化。

除了输出层的激活函数是sigmod,其他层的激活函数都使用了Relu。

网络中的上采样都采用了基于最近邻算法的reszie。

对模型来说训练集是十分重要的,如果训练集的图片种类较少,那么泛化能力必然不好。

所有的上色模型都是没法解决诸如给一件毛衣上色的问题的,因为毛衣颜色 - 是不确定的,模型不能通过一张灰度图就判断它的颜色,不像天空、树木,有固定的色系,就像下图一样。



结论

大部分深度学习相关论文都很少见到理论推导,虽然反向传播有严格的数学基础,但是关于模型本身的结构为什么能达到目标,基本是通过试验结果来证明的,这种基于经验的模式需要我们对不同的“积木”有深刻认识。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐