标签:
最近在arxiv上逛逛,看到一篇关于colorization的paper觉得挺有意思的:
Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification - sig - 2016
先看看效果,从Fig1可以看出,该论文能够很好地从gray image还原到color image,效果不错。
motivation:
对于纹理区域,如天空,草地,树叶,街道,墙,海面等这些,
如何利用全局和局部的信息,使得网络可以充分学习到并区分到?
如何利用context的信息来区分不同场景下的图像,如indoor,outdoor?
所有该paper的核心研究内容是:如何充分利用global,local,semantic context信息,来更好地训练网络模型:
1 user-intervention-free的方式,即不需要用户的干涉,例如graphcut需要用户的操作,而它是不需要的;
2 end-to-end的网络,能够同时学习到图像的global和local的features;
3 利用图像的类别信息,如indoor,outdoor,来引导网络学习图像的semantic context信息,
使得网络可以区分不同场景下的图像,同时提高performance;
4 基于global信息,不同图像之间可以transfer sytle;
5 模型不仅适用于现在设备拍到的图像,还适用于几十年前,甚至一个世纪之前拍到的图像。
下面就直接说下该paper的网络是如何做的以上的几点。
看图,废话少说。
网络framework如Fig2所示,网络参数如Tab1所示。
整个framework由4个sub-network构成:
1 low-level feature network,简称LNet
2 mid-level feature network,简称MNet
3 global-level feature network,简称GNet
4 colorization network,简称CNet
下面分开将下这4个sub-network。
LNet: 底层的卷积层构成,其为两个网络,只是网络的权重是共享的。
为什么需要两个网络,笔者猜测,后面的GNet和CNet应该是不同的网络,需要加以区分,而且论文的重点是CNet,GNet只是辅助的。
为什么另一个需要固定大小(如224*224),而另一个不需要?
笔者认为,GNet是分类网络,类型AlexNet一样,分类效果不错,而且为了学习到semantic context,需要用到fc层(全连接层)
而CNet的目的在于可以处理任意输入大小的图像,是一个全卷积网络(FCN)。
其实笔者认为可以将GNet改成FCN的,套用SPPNet的RoI Pooling即可,即对应的roi prop为整个输入图像
MNet:这个有点牵强了,毕竟只是2个conv而已,这里论文作者只是为了清晰表达出网络,才这么说的吧。
GNet:由几个conv和fc构成,其作用是:
后接一个cls layer,对固定大小的输入图像进行分类
为什么可以这样做?
这是因为论文作者用到了具有类别标签的Places Sence Dataset(共2448872张,205种类别)
当然如果你的数据集没有这个类别标签,以上的framework,只需去掉这个cls layer,同样适用于你的数据集
后接fusion layer,使得CNet可以融合global的features
笔者认为这个fusion layer是framework的关键点之一,将不同网络的特征融合到一起,学习到不同的特征
Fig3
CNet:一个反卷积网络,类似auto-encoder的后半部分网络,从feature maps还原到target image。
这里的target image不是彩色图像(如rgb),而且彩色空间里的CIE L*a*b*的a*b*。
这是该paper的巧妙之处。(事实上,paper里也做了RGB和YUV的对比实验)
学习a*b*,而不用学习L*(灰度图本身就是L*),这样不仅降低了网络的学习难度,而且不需要改变原来的L*。
就是不断的上采样,使得最后的输出和target image的大小一致。
(目前反卷积网络目前还是很火的)
当然target image不一定需要和原图大小一致,可以低于原图的分辨率,这不会影响到网络的performance的。
到目前,整个framework清晰明了,那么怎么定义它的目标函数,以及如何训练?
Fig4
显然目标函数由2个损失函数构成,一个CNet的预测和目标图像之间的欧式距离,一个GNet分类的cross-entropy loss,用alpha变量来控制不同网络的权重。
笔者认为,cls layer在这里不仅起到学习global features,semantic context这些信息,而且在一定程度上减缓了梯度回传的梯度弥漫的问题,使得这么大的网络更容易学。
为了使得网络可以加快收敛或者能够收敛起来,paper里提及可以用目前比较火的batch normalization,以及AdaDelta optimizer来优化网络。
显然该网络非常大,训练起来还是有难度的,至少要求数据集巨大,你的显卡也是杠杠的。
paper里提及训练该网络,需要3周,骚年颤抖吧。
一旦网络训练完毕,测试起来就相当方便了。
那么怎么做到不同图像的style的transfer?
由于LNet是是两个网络构成,一个对应原图输入,一个对应固定大小的输入,
当这两个输入对应于不同的输入图像时,固定大小的输入图像的style就会嫁接到原图输入上。
这是由于GNet学习的是固定大小输入图像的global feature和semantic context导致的。
当然这两张图像至少要做语义上是相同的或者相似的,即它们的类别标签是一样或者相似的,这样的style transfer才比较有意义。
到目前为止,该网络是不需要用户互动的,可以说是user-intervention-free。
另外普遍认为深度模型的泛化能力还是比较牛逼的,以及几十年前的灰度图和目前的灰度图没多大区别,
该网络当然能够在几十年前的灰度图上表现出色。
由于灰度图到彩色图是不可逆的,所以灰度图对应的彩色图可能是多种情况的,所以paper里的网络不能够处理好这种情况,如下图所示:
嗯,看到这里,恭喜你,因为笔者已经不知道说啥好了。
Let there be Color!: Automatic Image Colorization with Simultaneous Classification - sig - 2016
标签:
原文地址:http://blog.csdn.net/zimenglan_sysu/article/details/51320208