Colorization论文学习笔记

Colorization论文学习笔记

整理一下colorization方面的几篇论文,方便自己理理思路。


Image Colorization: A Survey and Dataset

results and paper


这是一篇关于colorization方面的综述


Contributions
1.全面回顾了上色技术
2.引入了一个新的benchmark dataset Natural-Color Dataset(NCD)
3.对现有的上色技术进行了系统的评估
4.对上色网络进行了分类
5.总结了着色工作的要点

着色网络分类
plain networks(a simple straightforward architecture with stacked convolutional layers)
User-guided networks(require input from the user)
Domain-Specific Colorization(The aim of these networks is to colorize images from different modalities such as infrared, or different domains such as radar)
Text-based Colorization
Diverse Colorization(generate different colorized images, usually achieved by GANs or VAE)
Multi-path networks(follow different parts to learn features at different levels or different paths)
Exemplar-based Colorization(utilize the colors of example images provided along with input grayscale images)

Dataset
COCO-stuff(Common objects) over 172 categories including 80 things, 91 stuff, and 1 unlabeled class
PASCAL VOC dataset
CIFAR dataset
ImageNet ILSVRC2012(high resolution training images)
Palette-and-Text dataset(textual phrases with their corresponding five-color palettes)
因为现有的用于colorization的数据大都是用于其他检测、分类任务的数据集,作者觉得在这些数据集上进行评估不一定合适。比如这些数据集里有衣服、车,它们被上色成任何颜色都是合理的,所以提供了一个新的数据集NCD(Natural-Color Dataset)用于验证,这个数据集里的图像在自然界里有自己的属性颜色(背景均为白底)。(但是这样的话就相当于排除背景对于图像颜色的效果影响,不将其纳入评估?)
根据NCD上各种技术的输出效果,作者指出colorization的效果还有待进一步提升。

评估和比较
作者建议:Instead of comparing YUV, only the predicted color should be compared.
用到的指标:PSNR、SSIM、PCQI、UIQM
subjective evaluation
几种常见指标的含义
PSNR:基于对应像素点的误差
SSIM从亮度、对比度、结构三方面度量图像的相似性

PSNR SSIM
常用图像评估指标

作者观察到的colorization的趋势:
1.GAN-based methods deliver diverse colorization visually compared to CNN-based methods
2. the existing models generally deliver a sub-optimal result for complex scenes having a large number of objects with small sizes
3. deep models with higher complexity have little improvement in terms of numbers
4. the diversity of networks in image colorization as compared to other image restoration is significant
5. a future direction for image colorization is unsupervised learning
6. many recent advancements and techniques such as attention mechanism, and loss functions can be incorporated for performance


Colorful Image Colorization

项目地址

colorization的很多方法,要么依赖于用户交互,要么易产生不饱和的色彩结果。作者提出一种方法能自动生成鲜明、真实的上色结果。

简介

作者的目的不在于还原物体的真实颜色,而是产生一种合理的、可解释的结果,比如一个苹果,可以上色为一个红苹果,也可以上色成一个青苹果。这样就可以基于大量统计数据建立灰度图的语义、纹理到色彩的一种联系来达到这样一个目的。
早前的大多工作将colorization处理为一个预测问题,作者将灰度图的上色问题处理为一个分类问题,并用class-rebalancing来增加结果的多样性。

论文方法

网络结构
网络结构如上图所示,学习一个灰度图到色彩的mapping。作者采用的是Lab色彩空间,将L作为输入,去映射对应的ab值。

Objective Function

给定一个输入 X ∈ R H × W × 1 X\in R^{H\times W\times1} XRH×W×1,学习 Y ^ = F ( X ) \hat{Y}= F\left ( X \right ) Y^=F(X), Y ∈ R H × W ×   2 Y\in R^{H\times W\times\ 2} YRH×W× 2 ,常用的方式是L2 loss
L 2 ( Y ^ , Y ) = 1 2 ∥ Y h , w − Y ^ h , w ∥ 2 2 L_{2}\left ( \hat{Y},Y \right )=\frac{1}{2}\left \| Y_{h,w}-\hat{Y}_{h,w} \right \|_{2}^{2} L2(Y^,Y)=21Yh,wY^h,w22
但是作者指出L2 loss在用于着色问题时不够鲁棒(多义,多模性),并且指出采用该loss可能是导致之前的一些colorization的方法着色效果不够饱和的原因。L2 loss是最小化模型结果和ground truth之间的欧式距离,当一个物体可以上多种颜色,最小化loss的方案是取可选颜色集合的均值,这就会使得上色效果呈现grayish。并且当可选颜色集合不是一个凸集,对颜色取平均得到的结果将位于该集合以外。而作者将着色问题处理为分类任务,设计了新的损失函数,利用权重对色彩类别进行平衡,再进行类别概率到点的估计。
作者将统计得到的ab输出空间,按10的步长划分为了Q个区块(Q=313)。如下图(a)所示。

要对输入 X X X学习一个到颜色概率分布的映射, Z ^ = G ( X ) \hat{Z}=G\left(X\right) Z^=G(X), Z ^ ∈ [ 0 , 1 ] H × W × Q \hat{Z}\in \left[0,1\right]^{H \times W \times Q} Z^[0,1]H×W×Q (注意维度)。
为了比较 Z ^ \hat{Z} Z^和ground truth,要把groud truth编码到Z的空间去。容易想到的方式是对 Z h , w Z_{h,w} Zh,w采用one-hot的方式编码,但作者采取的是一种soft-encoding策略。找出对应 Y h , w Y_{h,w} Yh,w在输出空间上最邻近的5个小色区,并对其进行高斯加权,得到编码。作者发现这种编码手段能够让网络更快地学习到输出空间上各部分之间的关系。这个我是这样理解的,如果对 Z h , w Z_{h,w} Zh,w的编码采用one-hot的形式,那么一个 Z h , w Z_{h,w} Zh,w向量上就只有一个非零数值,只有这一个信息可用,这种形式也体现不出来类别和类别之间有什么关联。但是如果采用软编码的策略,一个 Z h , w Z_{h,w} Zh,w向量上就有五个可以用到的信息点,并且这种编码方式能够体现类别间的关系。
由于作者的训练代码是caffe框架,所以参考的是github上的复现代码。
复现代码链接

def get_soft_encoding(image_ab, nn_finder, nb_q):
    h, w = image_ab.shape[:2]
    a = np.ravel(image_ab[:, :, 0])
    b = np.ravel(image_ab[:, :, 1])
    ab = np.vstack((a, b)).T
    # Get the distance to and the idx of the nearest neighbors
    dist_neighb, idx_neigh = nn_finder.kneighbors(ab)
    # Smooth the weights with a gaussian kernel
    sigma_neighbor = 5
    wts = np.exp(-dist_neighb ** 2 / (2 * sigma_neighbor ** 2))
    wts = wts / np.sum(wts, axis=1)[:, np.newaxis]
    # format the tar get
    y = np.zeros((ab.shape[0], nb_q))
    idx_pts = np.arange(ab.shape[0])[:, np.newaxis]
    y[idx_pts, idx_neigh] = wts
    y = y.reshape(h, w, nb_q)
    return y

用交叉熵作为损失函数:
L c l ( Z ^ , Z ) = − ∑ h , w v ( Z h , w ) ∑ h , w Z h , w , q l o g ( Z ^ h , w , q ) L_{cl}\left(\hat{Z},Z\right)=- \sum_{h,w}^{}v\left ( Z_{h,w} \right )\sum_{h,w}^{}Z_{h,w,q} log\left(\hat{Z}_{h,w,q} \right ) Lcl(Z^,Z)=h,wv(Zh,w)h,wZh,w,qlog(Z^h,w,q)
v是用于平衡的权重系数。

这里插几句论文之外的话,下午回顾到这里的时候就在想为什么分类问题通常用交叉熵作损失函数,不用最小二乘。其实我之前想得都很简单,就觉得最小二乘是在尽量靠近空间中的一条线,并且感觉它反应的是一种拟合的平均效应,没有突出对分类错误的惩罚,对于分类问题不合适。而对于交叉熵 L ( p , q ) = − ∑ h , w n p ( x i ) l o g ( q ( x i ) ) L(p,q)= -\sum_{h,w}^{n}p\left(x_{i}\right)log(q(x_{i})) L(p,q)=h,wnp(xi)log(q(xi))p表示真实的样本分布,q表示预测的样本分布。我是这样想的,要使得L的值尽可能小,那么q(xi)大的时候,log(q(xi))值的绝对值很小,p(xi)在此时可以稍微取大,对Loss的值影响不大,而q(xi)小的时候,其对数值的绝对值很大,此时要让loss尽可能小,p(xi)就应该取尽可能的小,这样来看p(xi)和q(xi)的分布越同步,loss就更容易取得更小的值,而分布越同步就越可能是同一类别。但是今天看了一些讲解,感觉这些理解都太流于表面了,有点toy thinking的感觉。姑且不整理这些了。大概来说使用最小二乘作为损失函数,在假设误差服从正态分布的前提下和极大似然估计在本质上相同。
另外,之前看了一点吴恩达的课程,里面提到使用sigmoid作为激活函数的时候使用最小二乘,由于此时的非凸性,使用梯度下降时可能陷入局部最优解,但是今天看有网友指出,在高维空间loss大多数情况下都不是凸函数。

困了。。。。不写了 。。。。。


醒来还是觉得继续写完。

Class rebalancing

由上图的ab值的分布可以看出,ab值的分布倾向于low value。作者指出这是因为云朵、沙漠、路面等常作为背景出现在图片中,导致不饱和的色彩出现频率远高于饱和色彩的频率,如果忽视这个为,那loss就会被不饱和的色彩值主导。因此作者引入权重系数来平衡,
v ( Z h , w ) = w q ∗ , q ∗ = a r g   m a x q Z h , w , q v\left(Z_{h,w}\right)=w_{q^*},q^*=arg\,max_{q}^{}Z_{h,w,q} v(Zh,w)=wq,q=argmaxqZh,w,q
w ∝ ( ( 1 − λ ) p ~ + λ Q ) − 1 , E [ w ] = ∑ q p ~ q w q = 1 w\propto \left(\left( 1-\lambda \right )\tilde{p} +\frac{\lambda}{Q}\right )^{-1},E\left [ w \right ]=\sum_{q}\tilde{p}_{q}w_{q}=1 w((1λ)p~+Qλ)1,E[w]=qp~qwq=1
其中 p ~ \tilde{p} p~是进行高斯平滑后的ab空间上的经验分布,以 1 Q \frac{1}{Q} Q1为正则项,用 λ \lambda λ来调节两者之间的关系,在作者的实验中取 λ = 1 / 2 \lambda=1/2 λ=1/2 σ = 5 \sigma=5 σ=5效果较好。

Class Probabilities to Point Estimates

由概率到点的估计,通常有两种做法,一种是根据预测分布对颜色值取平均,另一种是直接取预测出可能值最大的颜色。这两种做法都存在一定的问题,第一种可能导致颜色出现不饱和,第二种可能导致图像的色彩在空间上不连续。为了在这两者之间找到平衡,作者引入了参数T,通过模拟退火,选择T=0.38.
H ( Z h , w ) = E [ f T ( Z h , w ) ] , f T ( z ) = e x p ( l o g ( z ) / T ) ∑ q e x p ( l o g ( z q ) / T ) H(Z_{h,w})=E\left[f_{T}(Z_{h,w})\right],f_{T}(z)=\frac{exp(log(z)/T)}{\sum_{q}exp\left(log(z_{q}\right)/T)} H(Zh,w)=E[fT(Zh,w)],fT(z)=qexp(log(zq)/T)exp(log(z)/T)

实验结果

评估


Ours(full): 完整的方法,有classification loss,class rebalancing
Ours(class):classification loss,但是没有class rebalancing
Ours(L2):使用L2 loss
Ours(L2,ft):trained with L2 regression loss, fine-tund from full classification
with rebalancing network

用了三种评价指标, Perceptual realism (AMT),Semantic interpretability (VGG classification),Raw Accurancy(AuC)。
Perceptual realism(AMT):作者设计的主观测试实验,将真实图像和上色图像放在一起,由人来判别图片是真实的是还是上色结果。作者发现模型的上色图像获胜频率高于真实图像,作者认为这可能是由于真实图像中存在白平衡较差,或者一些不寻常的颜色,而作者的模型是基于大量统计数据,去产生一种可解释的结果 produces a more prototypical appearance.

Semantic interpretability (VGG classification):使用VGG来对图像进行分类。与灰度图相比,彩色合成的分类正确率有所提升。

AuC:计算预测的像素点颜色和groundtruth的L2距离在阈值范围内的百分比,阈值取0到150,计算累积的面积。
作者发现L2 net从分类网络进行微调,能获得与分类网络相当的效果,但是从头开始训练效果就欠佳。
作者留意到,具有感知意义的区域往往具有较高的ab值,因此作者引入了一种平衡了类别的AUC值,通过对像素按颜色类别概率重新加权来计算AuC。具体怎样得来的不知道,我理解的是出现概率高的权值小。

Cross-Channel Encoding as Self-Supervised Feature Learning

作者评估了上色是如何作为representation的一种pretext task。主要就是评估了上色网络的泛化性能,网络的权重固定,然后再将其训练为用于classification, detection, and segmentation的网络,来检验这个上色网络特征学习的能力。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值