图片风格转移Let there be Color!: Joint

作者: 水球喵 | 来源:发表于2017-06-18 17:44 被阅读0次
    这就是论文的目的,将一张黑白图片着色为一张彩色图片

    再看这篇文章前,最好是对神经网络有了初步的了解。文章第三部分,很大篇幅在介绍神经网络的一些基础知识。演示demo

    在这篇论文中,他把上述过程描述为:使用现有大量图片数据来训练我们提出的模型,目的是使用 CIE lab颜色空间来预测灰度图像的chrominance(任意一种颜色与亮度相同的一个指定的参考色之间的差异)。 理解一下这个过程,就是我们在L(亮度)相同的点上来预测目标a*b*的值,使得目标a*b*的值与参考a*b*值之间的差异最小,得到我们的模型。训练得到的模型输出是每个点的a*b*值,这个a*b*值图与原来的灰度图L相结合,得到最终的彩色图。


    我的理解,一个神经网络很重要的是他的目标函数(损失函数),也就是说,我们想让这个网络达到什么样的效果。这篇论文的目标函数是——将目标图片缩放到网络的输出图片的大小,并计算输出和目标之间的MSE,使得MSE最小。

    I,K为两张图片  m,n为图片长宽  (i,j)像素的lab值

    接下来,讲一下文章的核心部分,他的网络模型。

    网络模型图

    3.1 神经网络

    公式(1) 公式2

    不要被原论文中的公式吓坏了,尤其是(2),完全是(1)的扩展,理解(1)就好了。我们解释下模型图,下面一溜是普通的CNN,只不过这个CNN的前层没用Pooling层。上面的一溜其实是FCN,全连接网络,做语义分割用。

    3.2 全局和局部信息结合

    为什么要讲这两种信息结合呢?

    用全局信息作为一种先验信息存在,来判别这张图片是室内还是室外,局部信息根据这个场景,就不会把家具之类的东西染成天空或者草地的颜色,而是会把他染成棕色。

    3.2.1 共享低维特征

    网络中的前六层卷积(紫的)是公共的,里面的参数是完全一样的,值得说明的是,这六层网络用Stride=2代替了Pooling层,这样可以增加每层的空间信息。替代详细解释

    3.2.2全局图像特征

    4层卷积层+3层全连接=256-dimensional vector

    3.2.3中层特征

    2个卷积层->H / 8 × W / 8 × 256的小长方体

    3.2.4融合前两层特征

    如何融合呢?

    很简单,我们可以把全局的特征看为1×1×256的小长方条,把他叠成H / 8 × W / 8形成一个跟中层特征一样大小的长方体,把这两个长方体串联到一起,形成一个H / 8 × W / 8×521的长方体。【跟论文中一个意思,论文中就像是拿一根串,把两个串起来】

    粉色的线表示u,v   局部和全局描述在这个地方串联

    3.3分类染色

    使用交叉熵和MSE来训练这个分类网络

    前面那一项MSE,就是我最先提到的目标函数,为什么还要加上交叉熵呢?交叉熵函数这里还需要再了解下

    左边紫色横向的线表示分类网络的输入,右侧竖向的线是输出类别可能性【分类】

    4.实验和讨论

    进行了以下实验,具体,我们可以看论文中的图片

    1.训练时,我们使用一个小的脚本去掉了灰度图和颜色变化较小的图片。

    2.显示了下自己的染色结果

    3.对比了其他人的染色结果

    4.让人民对染色结果进行评判

    5.副产品-学习到一张图片的风格->应用于新的图片

    6.对老照片的染色

    7.网络的分类结果也不错

    8.使用CIElab空间效果好

    9.计算时间满足realtime

    论文的限制-对于一个人穿的衣服颜色,没有一个好的办法去限定,比如:下面的例子说明了错误

    帐篷的颜色无法给出严格的限定

    相关文章

      网友评论

        本文标题:图片风格转移Let there be Color!: Joint

        本文链接:https://www.haomeiwen.com/subject/qrbbqxtx.html