您的位置:首页 > 理论基础 > 计算机网络

[机器学习实战] 深度学习为黑白图像着彩色

2017-09-16 13:28 543 查看
深度学习增强了视觉和语言处理等“认知”任务,连谷歌都转向了基于神经网络的语言翻译,如此火爆的原因或许是它不需要掌握各个领域的特定知识就能取得想要的结果。当然,海量GPUs并行计算硬件加上设计良好的框架如TensorFlow,也加速了AI革命崛起。本文将讨论另一个“认知”任务:利用深度学习使黑白图像变为彩色

本文基于最近的一篇文章:

https://arxiv.org/pdf/1603.08511.pdf这里写链接内容

假设你已经对神经网络损失函数有所了解……

目标任务

用一张黑白照片,制作出它的彩色版本。直觉上,这个想法相当简单。根据照片的内容,知道它的颜色应该是什么。比如,树叶一般是绿色的,天空是蓝色的,云朵是白色的等等。我们需要做的就是使计算机能实现它。

以前的工作和存在的问题

过去主要利用了深度学习,他们用回归来预测每一个像素的颜色,然而结果却不尽如人意,色彩平淡枯燥。



Figure 1.0 Results of a regression based model. Left: Input to the model. Right: Output of the model

以前的作品使用均方误差(Mean Squared Error ,MSE)作为训练模型的损失函数,作者指出,MSE将尝试“平均”出颜色,以获得最小的平均误差,这将导致平淡的外观。于是作者改变思路,将图片着色变为分类问题。

模型的输入输出

作者使用了LAB色彩空间模式(最常见的使RGB)。在LAB方案中,L通道记录了光强值,另外两个通道则记录了一组对抗色,绿-红 和 蓝-黄。关于LAB你可以在这里了解更多。

使用LAB颜色空间的一个很有利的原因是它能使光强值保持分离。好处是黑白图片可以被当作L通道,这样模型在预测时就不必学习如何保持光强。(使用RGB则必须)。这样,模型只需学习怎样将图像彩色化,从而专注于关键步骤。

模型输出的AB通道值,可以被直接应用到黑白图像是上得到彩色图片。

该模型是一个相当标准的卷积神经网络,作者并没有用池化层,取而代之的是使用上/下采样层。

颜色量化

通过上面简短的介绍,作者采用了分类模型取代回归模型。因此,类型的数量需要做修正,作者选取了313个AB对作为分类可能数量。虽然看起来这有点少,但也可以使用一些方法来确保能出现更多颜色。(文末有介绍)

损失函数

作者使用的损失函数是标准的交叉熵(Cross Entropy)。Z 是像素的真实类型,Z^ 是模型的输出。



Equation 1.0 Standard Cross Entropy

作者还指出,颜色值在分类中会出现不均衡,使用交叉熵作为损失函数在分类不均衡上不能很好地发挥作用,通常具有较少示例的类具有更高的权重。而不饱和色 灰色和浅蓝色 想比其他会更加丰富广泛,因为它们常常出现在背景色中。所以作者提出了一种权重方案。



Equation 1.1 Weighing scheme

作者从ImageNet数据库中计算〜p,即类的分布。Q 则是类型数量(313),λ 取 0.5 效果不错。需要注意的是,作者对〜p进行了平滑处理,在这里我将跳过,感兴趣可以阅读原作。

所以考虑权重后,我们的损失函数最终如下:



Equation 1.3 Loss function after weighing scheme

v( ) 只是每个类的权重值,h 和 w 分别是图像的高度和宽度。

根据类型预测颜色

直接用313个色彩分类会使图象很粗糙,只有少数能与真实色彩相匹配。

作者为了从预测模型中得到更多样化的色彩范围,又加了一步后续处理。



Equation 2.0 Calculating color from class probabilities

H 是一个函数,Z 是模型的输出,T 是一个超参数(hyper-parameter),作者实验了如下一些不同的值。



Figure 1.0 Effect of different values of T

这是很巧妙地一步,原因是模型的输出是一组概率值,相比只取最大概率所对应的颜色值(就像做图片分类一样),上述函数试图利用 模型输出一组概率值 的全部信息来计算颜色,因此效果更好。

训练框架

训练这样一个神经网络分为两部分。首先 训练数据正向传播通过模型,计算输出得到预测结果。然后计算 H 的的倒数来计算损失(loss)。

结果

实验结果图片是非常鲜艳的,在大多数情况下与现实相差无几。但也要注意有时与真实环境会有偏差,但语义(semantically correct)上仍是正确的(模型能为目标赋予正确的颜色)。



Figure 2.0 Comparison between different colouring frameworks

Colouring Legacy Black & White Photos



Figure 2.1 Colouring photos that were originally taken in Black & White

结论

在本文中,我们讨论了一种使用修改版的损失函数对图像进行着色的新方法。 我们讨论了如何通过超参数来控制 vibrancy,以及为什么 类型的重新平衡( class rebalancing) 在自然图像着色方面起着重要的作用。

译自:https://hackernoon.com/colorising-black-white-photos-using-deep-learning-4da22a05f531

github:https://github.com/richzhang/colorization
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐