自监督学习(七)Colorful Image Colorization

Introduction

本文的主要工作是提出一种图像自动上色的方法,不是采用回归的方法,而是通过量化颜色空间,将上色问题转化为了分类问题。另外,由于上色过程中输入的灰度图,为了准确预测图像的颜色,网络必然要学习到图像的语义特征,比如海面一般都是偏蓝色,不会是紫色等。因此,也可以将该方法应用到自监督学习中。实际上,有很多关于自监督学习的论文都用到了关于图像上色的方法。论文发表在ECCV2016上,作者不仅开源了代码,而且还搭建了论文的主页,包括代码、会议上的演讲和poster等,都放了出来,可以说是非常良心了。论文主页

作者在这里没有使用RGB波段进行上色,而是首先将图像转化为CIE lab空间,关于lab颜色空间网上有很多介绍,可以参考这一篇博客:颜色空间:RGB、CIE XYZ、Lab和HSV颜色空间。 简单来说,Lab颜色空间也有三个波段,分别为L,a,b波段,L波段表示图像的亮度,取值范围为0到100,颜色越大表示颜色越亮。ab波段的值域都是从-128到+128,颜色分布如下图所示:
自监督学习(七)Colorful Image Colorization
该方法就是输入L波段的图像,预测图像的ab波段,从而得到上色后的图像,网络采用编码解码结构,没有太大的改动,主要的创新点为将上色问题转化为分类问题,并结合类别均衡的方法,得到了很好的上色效果。
自监督学习(七)Colorful Image Colorization

Method

Objective Function

关于上色问题,一个很容易想到的损失函数就是L2损失函数,也就是直接预测ab通道的值,计算真值与预测值的均方误差。但是,这个方法的问题在于图像的上色没有一个确定的最优解,真值也只是提供了一种参考。而且直接使用L2损失函数得到的结果精度不会很高,很有可能会得到一个ab通道的均值。
因此,作者在这里将图像上色转换为了一个分类问题,而且使用软编码的方式保证上色的多样性,使用类别均衡化保证颜色的丰富度,具体的步骤如下:

  1. 对颜色空间进行量化。因为要预测的是两个波段,所以直接分类是不可行的,因此需要对预测空间进行编码。作者在这里采用的是一个比较直接的编码方式,直接将ab波段以10为间隔进行划分,划分成313个类别。下面的图表示了量化的结果
    自监督学习(七)Colorful Image Colorization
    作者使用ZZ表示量化的标签,既然对颜色空间做了量化,那么其实就可以利用类似查表的方法得到标签,但是作者在这里使用了软编码的方式设置标签,可以使得上色的选择更加多样。所谓软编码方法是指图像中某个位置(h,w)(h,w)的不是由这一位置的ab通道值YY单独确定,而是选取周围5个相邻的值,并且根据他们距离Y的距离进行高斯加权。我的理解是这样原先的分类问题会变成一个多类的分类问题,每一个点有5个软标签,好处是可以增加学习结果的多样性。 如果理解有误的话,欢迎各位指出来。
    最终网络的损失函数如下;
    自监督学习(七)Colorful Image Colorization
    其中, vv表示加权系数,可以平衡不同类别的数量。后面会介绍

Class rebalancing

在实际中,ab波段的值并不是均匀分布的,存在着相当的不平衡,下图是作者统计的ImageNet数据及上图像的ab波段值的数量分布
自监督学习(七)Colorful Image Colorization
可以看出,大致以(0,0)为中心,像素点的数量是慢慢减少的,分布非常不均衡,这就会造成训练时的类别不均衡的问题。因此,作者在这里提出了一种类别均衡的方法:
自监督学习(七)Colorful Image Colorization
作者的思路首先是对于数量较少的类别,给与较大的平衡系数vv, 在上式中,p~\widetilde p表示上图中画出来的分布,类别的数量越多,p~\widetilde p越大,ww越小,反之p~\widetilde p越小,ww越大。 同时由于标签是软编码,因此作者选取了标签值最大的类别作为权重选取的参考。λ\lambda为超参数,这里取0.5。另外,作者还对图中反应的p~\widetilde p的分布进行了高斯平滑,系数为σ=5\sigma=5

Class Probabilities to Point Estimates

由于上述学习任务的标签是通过编码得到的,所以最后为了得到颜色ab,就需要把预测值映射回原来的空间。但是由于ab波段的数值为连续空间,经过编码之后必然会损失精度,所以这里作者没有直接用差值的方式映射回去,因为可能会出现颜色空间分布不均匀的问题。作者先对预测值做了如下变换,再进行映射:
自监督学习(七)Colorful Image Colorization
实际上,这里可以理解为一种滤波或者平滑操作,经过这样的变换,可以有效避免颜色在空间上不连续的问题。其中,T=0.38T=0.38

experiments

实验主要分为两部分,第一部分是对上色效果的验证,第二部分是作为自监督模型应用到pascal voc07上的效果。

Evaluating colorization quality

首先前面我们说过,图像时上色是没有固定的解的,真值也只是提供一种参考,所以上色质量的评价也是一项复杂的工作。在这篇文章中,作者采用的验证方法是将算法上色的图像和原图打乱顺序,然后人工挑选初上色图和原图,作者在文中说该方法可以在32%的上骗过人的眼睛,比其他的上色方法都好。下面是部分的上色结果,Regress表示的是直接使用L2损失函数进行上色,Classification表示论文中的方法,Classification w/ rebal表示论文中的方法但是不使用类别均衡
自监督学习(七)Colorful Image Colorization

Cross-Channel Encoding as Self-Supervised Feature Learning

该方法采用的网络结构可以看做是cross-channel encoding,因为输入图像和输出结果的通道数不同。作者从两个方面验证了该方法作为自监督学习的性能:1)固定卷积层,依次抽取出不同层级的特征,训练线性分类器,比较其在ImageNet上的分类性能;2)作为预训练模型微调,验证其在Pascal VOC07的分类检测和分割任务上的性能。
下图展示了在ImageNet上的效果:
自监督学习(七)Colorful Image Colorization
分类效果总体上处于中上的水平,明显优于gaussian初始化网络参数的方法。

最后是在Pascal VOC数据集上的效果:
自监督学习(七)Colorful Image Colorization
可以看出,在这三个任务上,该方法都取得了不错的效果,均优于其他的自监督学习方法,明显优于随机初始化方法。这也可以说明,图像上色任务可以学习到图像的语义特征,而且优于通常输入的是单通道图像,可以有效避免网络过多地关注颜色信息,从而一定程度了降低了过拟合的程度。

Conclusion

本文主要对图像的上色问题进行了研究,将图像的上色问题转化为分类问题,通过颜色空间的量化和类别的均衡,保证了上色结果的多样性。另外,作者还验证了其作为自监督方法的性能,在Pascal VOC 的分类检测和分割任务上均取得了不错的成绩。
在自监督学习任务中,随机丢弃图像的颜色或者让网络对图像进行部分上色是非常有帮助的,无论我们的自监督模型有没有显式地图像上色任务,我们都可以在数据増广阶段随机将图像转化为灰度图或其他色域的图像。