Colorful Image Colorization这篇论文使用深度学习来解决灰度图像彩色化的问题。图像彩色化的目标是为灰度图像中的每一个像素都分配合理的颜色,而在此之前的方法中主要有两个局限性,一是依赖于显著的用户交互,二是会导致不饱和的颜色。该论文中提出了一种全自动的方法,可以为灰度图像生成生动的色彩,使用深度学习网络框架预测灰度图像的颜色概率分布而无需用户干预,在训练时加入类别重新平衡的方法来解决颜色不饱和的问题。下图是最终该方法的测试结果,可以看到有比较好的上色效果。
一、网络设计
作者认为图像彩色化是一个多模态的问题,彩色化的目标不一定是要恢复图像的真实颜色而是产生合理的颜色即可。因此,可以为灰度图像与其彩色版本的场景语义建立模型进行训练,使用该模型对灰度图像进行预测,产生合理的颜色结果。
如下图所示是论文中提出的方法使用的网络模型,该模型工作在Lab色彩空间下。训练时输入一张图像,将图像的L通道的值作为输入,其ab通道的值作为监控信号。该网络模型包含8个卷积块,每一个卷积块中都包含2-3个重复的卷积层和ReLU层。最后输出颜色分布概率,使用多项式交叉熵损失函数衡量预测值与真实值之间的差距,从而调整模型的参数。模型训练好后,输入一张灰度图像,经过模型的预测,会得到图像颜色的分布概率,使用退火均值技术将分布概率转化为ab通道的值,再加上L通道的值,最终得到一张彩色的图像。
二、具体实现
1.损失函数
深度学习就是寻找输入与输出之间的函数映射关系,作者使用了如上图所示的架构训练CNN,找到了灰度图像输入映射到颜色分布概率的目标函数。
论文中的网络模型工作在Lab色彩空间中,以前的方法中使用了欧几里德损失
L
2
(
Y
^
,
Y
)
=
1
2
∑
h
,
w
∥
Y
h
,
w
−
Y
^
h
,
w
∥
2
2
\mathrm{L}_{2}(\widehat{\mathbf{Y}}, \mathbf{Y})=\frac{1}{2} \sum_{h, w}\left\|\mathbf{Y}_{h, w}-\widehat{\mathbf{Y}}_{h, w}\right\|_{2}^{2}
L2(Y
,Y)=21h,w∑
Yh,w−Y
h,w
22
来描述预测颜色值
Y
^
\widehat{\mathbf{Y}}
Y
与真实颜色值
Y
\mathbf{Y}
Y之间的距离。然而在彩色化问题中存在多模态的性质,也就是说一个对象有可能取到多个不同的值,此时欧几里德损失是这多个值的均值,而这种平均效应会导致预测结果趋向于不饱和。
图像彩色化是一个多模态的问题,因此作者在论文中提出将该问题作为多项分类问题来处理。如下图所示,在Lab颜色空间中将像素的ab通道值以10为间隔,量化为313个类别。
为了比较预测的颜色分布概率与真实值,作者使用soft-encoding将真实颜色值
Y
\mathbf{Y}
Y转化为向量
Z
\mathbf{Z}
Z,具体方法是在输出空间的313个类中使用k-近邻算法找到真实颜色值
Y
\mathbf{Y}
Y的5个最近邻,使用
δ
=
5
\delta =5
δ=5作为高斯核,根据这5个点与真实颜色值之间的距离按比例加权得到向量
Z
\mathbf{Z}
Z。最后使用多项式交叉熵损失函数
L
c
l
(
Z
^
,
Z
)
=
−
∑
h
,
w
v
(
Z
h
,
w
)
∑
q
Z
h
,
w
,
q
log
(
Z
^
h
,
w
,
q
)
\mathrm{L}_{c l}(\widehat{\mathbf{Z}}, \mathbf{Z})=-\sum_{h, w} v\left(\mathbf{Z}_{h, w}\right) \sum_{q} \mathbf{Z}_{h, w, q} \log \left(\widehat{\mathbf{Z}}_{h, w, q}\right)
Lcl(Z
,Z)=−h,w∑v(Zh,w)q∑Zh,w,qlog(Z
h,w,q)
来衡量二者之间的距离,从而调整模型的参数。其中函数
v
v
v基于颜色稀有性来设置的,用于平衡损失。
2.类别重新平衡
自然图像中ab值的分布强烈地偏向于较低的值,即不饱和的值。下图是从image net中130万数据集中统计的ab取值分布,可以看到以(0,0)点为中心,像素数目是在减少的,分布非常不平衡。在自然图像中,处于不饱和的像素数目比饱和的像素数目要高几个数量级,这就会造成训练时的类别不平衡的问题。如果不考虑这个条件,模型就会倾向于输出不饱和的结果。
因此,作者提出使用基于像素颜色稀缺性的方法来调整训练时的损失,来解决类别不平衡的问题。
函数
v
v
v即用于用于平衡损失的函数:
v
(
Z
h
,
w
)
=
w
q
∗
,
where
q
∗
=
arg
max
q
Z
h
,
w
,
q
v\left(\mathbf{Z}_{h, w}\right)=\mathbf{w}_{q^{*}}, \text { where } q^{*}=\arg \max _{q} \mathbf{Z}_{h, w, q}
v(Zh,w)=wq∗, where q∗=argqmaxZh,w,q
w
∝
(
(
1
−
λ
)
p
~
+
λ
Q
)
−
1
,
E
[
w
]
=
∑
q
p
~
q
w
q
=
1
\mathbf{w} \propto\left((1-\lambda) \widetilde{\mathbf{p}}+\frac{\lambda}{Q}\right)^{-1}, \quad \mathbb{E}[\mathbf{w}]=\sum_{q} \widetilde{\mathbf{p}}_{q} \mathbf{w}_{q}=1
w∝((1−λ)p
+Qλ)−1,E[w]=q∑p
qwq=1
下图是加入类别重新平衡与不加入的结果对比,可以明显感受到加入类别平衡产生的结果更加生动,颜色更趋向于饱和。
3.类概率到点估计
模型的预测结果是一个预测颜色概率发分布
Z
^
\widehat{\mathbf{Z}}
Z
,需要将概率分布转化为ab颜色空间中的点估计
Y
^
\widehat{\mathbf{Y}}
Y
。
如果对概率发分布
Z
^
\widehat{\mathbf{Z}}
Z
取平均值,会产生不饱和的结果,如下图最左列图片所示;如果直接选择概率分布中最大的概率区间所表示的颜色,会产生颜色不一致的结果,如下图最右列图片所示。
为了平衡二者之间的最佳效果,作者提出了一种退火均值技术,重新调整sotfmax分布中参数T的值,并取结果的均值来进行插值,得到最终预测的ab值。下图所示不同的T取值产生的图片效果各有不同,作者发现取T=0.38时效果最佳。
H
(
Z
h
,
w
)
=
E
[
f
T
(
Z
h
,
w
)
]
,
f
T
(
z
)
=
exp
(
log
(
z
)
/
T
)
∑
q
exp
(
log
(
z
q
)
/
T
)
\mathcal{H}\left(\mathbf{Z}_{h, w}\right)=\mathbb{E}\left[f_{T}\left(\mathbf{Z}_{h, w}\right)\right], \quad f_{T}(\mathbf{z})=\frac{\exp (\log (\mathbf{z}) / T)}{\sum_{q} \exp \left(\log \left(\mathbf{z}_{q}\right) / T\right)}
H(Zh,w)=E[fT(Zh,w)],fT(z)=∑qexp(log(zq)/T)exp(log(z)/T)