1.论文概要
论文题目:Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification
论文作者:Satoshi Iizuka, Edgar Simo-Serra, and Hiroshi Ishikawa
原文连接:http://hi.cs.waseda.ac.jp/~iizuka/projects/colorization/data/colorization_sig2016.pdf
2.论文内容
2.1摘要
本文基于CNN提出了一种联合局部特征和全局先验信息的灰度图自动着色技术。基于CNN,本文提出了一种综合考虑全局先验信息和局部特征信息的融合特征层来给图片着色。整个框架以端到端的形式训练,而且与一般CNN不同,该框架可以处理任意分辨率的图片。此外,本文使用现有的大规模图片分类数据集来训练模型,将分类标签加入其中,更有效地学习到更具判别性的全局先验信息。与时下最优的算法相比,无论是用户研究还是在一百多年以前的老照片上做的实验,本文算法都取得了显著的提升。
2.2引入
对于传统的上色算法来讲,无论是用户涂色或者图片分割的形式,都需要进行用户交互。但这篇论文里,作者提出了一种完全自动的基于数据驱动的灰度图上色方法,即从整张图片获得全局先验信息和从局部patch中获得局部图片特征联合自动上色。全局先验信息从整张图片的角度提供信息,如图片是室内拍的还是室外拍的,是白天拍的还是晚上拍的等等。局部信息则提供了纹理或者物体信息。综合这两种特征,无论是给什么图片上色,都不需要用户交互。
本文训练网络时使用了图片类别信息,不过这个步骤对于着色来讲并不是必需的。本文使用的色彩空间为CIE Lab颜色空间,通过网络模型来预测图片的色彩信号a和b,最后结合灰度图本身的L信息,进行最终着色。使用Lab颜色空间,不需要进行L通道的计算,这样一来既节省计算资源,又能让预测更准确。整个方法不需要预处理或者后处理。
本算法网络模型包含4个主要部分:低阶特征网络,中阶特征网络,全局特征网络和着色网络。首先,一组共享的低阶特征通过低阶特征网络计算出来。通过使用这些低阶特征,中阶特征网络和高阶特征网络分别进行特征提取,然后再通过融合层进行融合。融合后的特征作为着色网络的输入,最终输出图片的色彩信号。此外,网络还有一个副产品就是预测图片的类别信息。整个网络可以处理任意分辨率的图片。
由于图片的全局先验信息和局部特征是分开计算的,这使得本方法可以将一张图片的全局先验信息和另一张图片的局部特征进行融合,来改变一张图片的风格。例如,如果我们将一张黄昏时候拍摄的照片的全局先验特征和一个晴朗的沙滩风光的局部特征进行融合,我们就会得到一个晴朗的沙滩的黄昏时候的照片风光。除此之外,一张照片也可以被处理成它是在另外一个不同的季节拍摄的效果。这些反映了模型的灵活性。
验证算法时,作者请用户来观看照片,并判断照片是不是自然拍摄的。本算法处理的照片有92.6%被用户认为是“自然的”,而另外一些算法则大概只有70%的概率。对于一些20世纪初期拍摄的黑白照片,本算法也显示了令人信服的效果。
总之,本文贡献有以下几点:
无需用户交互;
端到端的协同网络;
加入图片标签增强性能;
图片风格转换技术;
通过用户研究和百年以上的老照片验证算法。
2.3网络结构
本文网络结构如图所示,除了着色层的输出层使用Sigmoid激活函数以外,其他层激活函数均使用ReLU激活函数。
2.3.1共享低阶特征
6层的CNN获得图片低阶特征信息,卷积滤波器组是共享的,输送特征至全局特征网络和中阶特征网络。这一点和双胞胎网络相似,但是本模型里只有这一个子部分是共享的。本文没有使用max-pooling来降低feature map的尺度,而是通过增加卷积步长来实现这个效果。不是每个像素连续计算卷积,而是每隔一个像素计算一次卷积。通过padding来使得输出层尺寸是输入层的一半。这样可以替换掉max-pooling层,并且维持很好的性能。本文只使用了33的卷积核,使用11的padding来确保输出尺寸是输入尺寸的一半或者和输入尺寸相等。
2.3.2全局特征
最终的全局特征是一个256维的向量。由于全局特征网络中全连接层的存在,全局特征网络的低阶特征网络部分需要将输入图片的尺寸变换为224*224大小。不过这个不影响整个方法。
2.3.3中阶特征
中阶特征紧接着低阶特征层的输出。由于低阶特征到中阶特征是全卷积的,所以输入是h*w的图片时,输出是h/8 * w/8 * 256的特征。
2.3.4
为了将全局特征的256维向量和和局部特征的h/8 * w/8 * 256进行融合,我们使用以下公式:
其中,
2.3.5着色层
特征一旦融合完成,它们会继续被卷积层和上采样层处理。上采样使用最近邻插值法,输出会变成输入的2倍。当最终结果是输入尺寸hw的一半时停止卷积和上采样操作。这部分的卷积层激活函数为Sigmoid函数,这令最后的输出为2个0到1之间的数,这2个数分别作为La*b颜色空间的a和b的值。而L即为灰度值,这是已知的。所以,最后将h/2 * w/2 *2的特征上采样为h * w * 2后与初始灰度图h * w * 1合并,即为彩色图像。整个网络使用MSE(Mean Square Error)准则进行训练,通过BP算法更新网络权值。
2.3.6考虑类别进行着色
只用彩色图片训练效果尚可,但是会出现明显的错误,因为模型难以学习到正确的上下文,比如照片是室内还是室外等。由于网络结构处理不了上下文问题,作者使用图片的类别信息来协同训练模型。类别标签可以用来指导图片的全局特征模型的训练。本文引入了一个包含2个全连接层的小型网络来实现这个功能。包含256个节点的隐含层,和相应数量的类别输出层,本文为205类。这个小型网络的输入是全局特征网络的倒数第二层输出。同样的,使用MSE损失函数来训练模型:
3实验效果
3.1照片着色效果
3.2与最优算法的对比实验
3.3有全局信息(α≠0)和没全局信息时的对比(α=0),可以看出全局信息很关键
3.4风格转换实验
3.5对一百年前的老照片的处理
3.6不同颜色空间做出来的最后效果
3.7作者给出了典型的错误
3.8自己试验
作者在个人主页给出了在线demo,大家可以去试一下:http://hi.cs.waseda.ac.jp:8082/
我试了一些老照片,感觉有风景的都着色的比较好,纯人物的话效果不是很好。个人猜想,可能是树、草、云之类的东西纹理比较单一,容易被识别出来,建筑、室内装饰之类的变化比较大,相对而言训练数据不够丰富。下面是一些测试结果: