这是一篇比较老的论文了,是加里福利亚大学Richard Zhang发表在ECCV 2016上的文章,论文的工作是灰度图的自动着色,但是是属于自监督学习pretext task的一篇代表任务工作,而且论文的效果确实比较好,贴一个后面的web应用
论文github地址:https://github.com/richzhang/colorization
一、自监督介绍
有监督 无监督 自监督 的区别
一句话总结,传统的深度学习需要大量的人工标注数据,自监督学习通过pretext task(前置任务)学习数据内部分布,生成伪标签来训练模型,打破了标签数据的局限,更接近人工智能的本质。
自监督学习一般有三大常见的前置任务,分别是
图像旋转
图像拼图(图像补全)
图像上色
其实他们都是预测任务,比如预测图像旋转的角度,预测图像分块后每一块的相对位置,还有这篇文章的预测图像的颜色,本质是学习图像的语义特征。
为什么这么说,就是站在人类认知的角度,我们为什么看到一张参天大树的图像,可以判断它是直立的?因为我们知道天空和地面的上下位置关系,树的常见状态我们也知道,所以我们能不假思索地判断出来。预测图片拼图和上色也是一样,我们学习到了图像的语义特征信息。而自监督学习可以不需要人为的标签标注,也是充分学习了图像的内部数据的结果。
二、论文导读
三、idea分析
论文目的:给灰度图像上色
创新点:由于图像的颜色具有多模态性质,即一张图像的颜色可以有多种可能,因此文章不是重建图像颜色,而是预测图像颜色。
(用灰度图中物体的纹理、语义等信息作为线索,来预测可能的上色,最后的上色结果只要真实即可。这不仅降低了上色的难度,而且也符合人们的认知)
idea:颜色预测是一个多模的问题,一个物体本来就可以上不同的颜色。对这种多模性建模,为各个像素预测一个颜色的分布,这可以鼓励探索颜色的多样性,而不仅仅局限在某一种颜色中。
前向encoder+ 反向decoder+ab概率分布预测的网络结构
前人工作:前人的目标只是优化预测结果和真实图片(ground truth)间的欧氏距离(即MSE)(L2范式),这种损失函数会把所有的颜色求平均(因为颜色具有多模态),从而导致颜色饱和度不高,色彩不丰富。
本文的思路可概括为3点:设计损失函数 + 加权平滑像素损失 + 概率分布转点估计。
四、Lab颜色空间
文章的上色思路就是:我们有三个颜色通道 L L L a a a b b b,输入 L L L 通道,模型来预测 a b ab ab 的通道。通过 a b ab ab 通道的概率值,转化为 a b ab ab 的色道值,最终达到上色的效果,是一种量化颜色空间的方式。
关于lab颜色通道,它是颜色空间的其中一种。颜色空间一般有:RGB空间、CIE XYZ颜色空间、Lab颜色空间以及HSV颜色空间等等。
Lab颜色空间:
Lab颜色模型基于人对颜色的感觉,其数值描述正常视力的人能够看到的所有颜色。因为 Lab描述的是颜色的显示方式,而不是设备(如显示器、桌面打印机或数码相机)生成颜色所需的特定色料的数量,所以Lab被视为与设备无关的颜色模型。Lab色彩模型是由亮度(L)和有关色彩的a、b三个要素组成,L表示亮度,a表示从洋红色至绿色的范围,b表示从黄色至蓝色的范围。L的值域由0到100,L=50时,就相当于50%的黑色;a和b的值域都是由+127至-128,其中当a=+127时颜色为红色,当a渐渐过渡到-128时变成绿色;同样原理,当b=+127是黄色,b=-128是蓝色,所有的颜色就以这三个值交互变化所组成,其空间如图所示。
五、模型结构
一共8层卷积,每层卷积块由许多小conv2d块和relu组成,5和6两层用到了空洞卷积。
基本模型还是比较简单的,输入图片的 L L L 通道,使用一个CNN预测对应的 a b a b ab 通道取值的概率分布,最后转化为RGB图像结果。
整个模型 F \mathcal{F} F最终包含两个部分:用于预测所有像素颜色分布的卷积神经网络 G \mathcal{G} G,和用于产生最终预测图像的退火平均操作 H \mathcal{H} H。虽然整个系统不能严格意义的端到端训练,但是可以注意到 H \mathcal{H} H是对每个像素单独作用的,只有一个参数,可以作为CNN的前向转播的一部分实现。
六、量化,权重,解码
传统的损失函数:给定输入的 L L L 通道 X ∈ R H × W × 1 X \in \mathbb{R}^{H \times W \times 1} X∈RH×W×1,现在的目标是学习一个到相应 a b a b ab 通道 Y ∈ R H × W × 2 Y \in \mathbb{R}^{H \times W \times 2} Y∈RH×W×2的映射 Y ^ = F ( X ) \hat{Y}=\mathcal{F}(X) Y^=F(X),使用预测结果和真实图像间的 L 2 L_{2} L2 损失:
L 2 ( Y ^ , Y ) = 1 2 ∑ h , w ∥ Y h , w − Y ^ h , w ∥ 2 2 L_{2}(\hat{Y}, Y)=\frac{1}{2} \sum_{h, w}\left\|Y_{h, w}-\hat{Y}_{h, w}\right\|_{2}^{2} L