【平价数据】Creatism:Google的自动风光摄影师

【平价数据】Creatism:Google的自动风光摄影师

Fang, Hui, and M. Zhang. “Creatism: A deep-learning photographer capable of creating professional work.” (2017).

这篇论文借助有限的无标定数据,用深度网络在虚拟自然环境中完成“取景-调色-打光”的摄影过程。所涉及的理论并不复杂,但给出的过程详细,对解决实际问题很有启发
这里可以看到一些好的结果。

概述

问题

本文的起点非常简单,绝对算得上“平价数据”:

  • 15000张500px.com上的风景类专业摄影作品,不含有任何标定。用于训练。- AVA美感图像数据库[1](#fn1),包含250K图像,带有美感评分。- Google自己的街景数据库,集中在几大国家公园。作为测试。 希望能实现一个自动系统:从街景中生成具有专业水平的摄影作品。

一个不好使的点子
我们很自然地想到,用AVA直接训练一个“图像-评分”的回归网络:好看的照片评分高,不好看的评分低。之后在街景数据库中采样,输出评分高的结果。

还真不行。

  • 美感包含着许多方面。需要指数级别的训练样本。- 即使构造出这样的网络,其梯度可能也毫无意义。- 在样本不足的情况下,很可能学出跑偏的判别标准。e.g.饱和度越高越好!- 网络可能复杂得无法优化。 ##本文的做法 这里写图片描述
  • 取景:实现一个【构图】评分网络,对各种可能取景进行采样,选择评分最高的一个截图。- 调色:实现一个【饱和度/HDR】评分网络,遍历饱和度/HDR操作的强度,选择评分最高的施加到输入图像上。- 打光:实现一个“图像-图像”的【局部提亮】网络。- 选片:实现一个【整体效果】评分网络,从经过处理的候选图像中,选择较好的输出。 评分包括:1分(随手乱拍),2分(老百姓拍的正常照片),3分(颇有品味票友),4分最高(专家级)。

当然,这种做法只单独考察了美感的三个方面,不过胜在可行性强。

实现

构图评分网络

从500px数据集中,随机从原图裁剪,按照如下参数产生等量的两批数据作为样本的输入:

  • 宽度为原图90%100%,长宽比为0.52- 宽度为原图50%~90%,长宽比同上 将裁剪结果占原图比例作为样本的标定值。

使用的Inception v3[2](#fn2)作为回归网络。输出结果记为

     Φ



      c


      r


      o


      p





   \Phi_{crop}


Φcrop​。

需要特别说明的是,构图对摄影作品的影响是决定性的。第一步选了一个乌漆墨黑的地方,后面无论怎么调也救回不来了。所以在取景步骤中,要结合整体效果的得分来进行。

饱和度评分网络

对于500px数据集的每一个样本,生成如下两类样本作为样本的输入:

  • 1张原图- 6张扰动,随机调整图像饱和度为原图0%~80% 将样本与原图的平均像素值之差作为样本的标定值。0%对应1,大于等于6%对应0,中间线性插值。

使用的Inception v3[2](#fn2)作为回归网络。输出结果记为

     Φ



      s


      a


      t


      u


      r


      a


      t


      i


      o


      n





   \Phi_{saturation}


Φsaturation​。

HDR评分网络
对于500px数据集的每一个样本,生成如下两类样本作为样本的输入:

  • 6张欠HDR样本,分布为(-max, -0.5max)- 3张过HDR样本,分布为(0.5max, 0.5max) 将样本与原图的平均像素值之差作为样本的标定值。0%对应1,大于等于20%对应0,中间线性插值。

使用的Inception v3[2](#fn2)作为回归网络。输出结果记为

     Φ



      H


      D


      R





   \Phi_{HDR}


ΦHDR​。

整体效果评分网络

使用AVA数据库进行训练。

将一部分AVA图像给专业摄影师评分,可以将AVA评分通过一个线性映射,归一化的本文的1到4分体系中。

网络采用Inception v3[2](#fn2)。输出结果记为

     Φ



      g


      l


      o


      b


      a


      l





   \Phi_{global}


Φglobal​。

等等,你不是刚说,不能直接训一个评分网络吗?

此处评分网络在本文中只作为最后的补充步骤使用,所以其缺陷并不致命。

局部提亮网络

受限于样本数量和问题的复杂性,我们不去直接训练一个给图片打光的网络,而是将GAN中的Generator作为图像的refiner,和Discriminator一起训练。

为了更进一步约束问题,我们假设:图像的打光由

    8


    ×


    8



   8\times 8


8×8的mask决定

于是,有了如下的网络结构: 其中M为500px数据库中的原始图片。

M’为原始图片经过如下随机扰动之后的结果:
这里写图片描述

M’'为经过Generator修正后的结果。

多模型
GAN以训练困难著称。本文不去等待GAN收敛,而是采用了多模型的策略。

  • 使用37套随机初始化参数,分别训练2000K步- 对于每套参数,每隔100K步保留一个snapshot- 在测试集上,保留最优的50个模型- 人工剔除下次瑕疵较大的,保留30个模型(此处未详述) ### 联合升采样

Apply mask这步,使用了joint bilateral upsamling方法[3](#fn3)。简单来说,就是在对mask升采样的同时,参考原始图像(左)的信息,使得大尺寸mask(中)和原图细节更为匹配。

这里写图片描述

使用

各步骤如下进行

  • 取景
    • 在街景的每一处位置,选取6个方向,视野90°生成原始照片

              P
      
      
              0
      
      
      
      
            P_0
      
      
         P0​</li><li>从
      
      
      
      
      
              P
      
      
              0
      
      
      
      
            P_0
      
      
         P0​中截取生成
      
      
      
      
      
              P
      
      
              1
      
      
      
      
            P_1
      
      
         P1​,令
      
      
      
      
             c
      
      
             =
      
      
             {
      
      
             0
      
      
             ,
      
      
             0.5
      
      
             ,
      
      
             1
      
      
             }
      
      
      
            c=\{ 0,0.5,1 \}
      
      
         c={<!-- -->0,0.5,1}计算该截图的复合得分:<br> 
      
      
      
      
      
               Φ
      
      
      
                c
      
      
                r
      
      
                o
      
      
                p
      
      
      
               ′
      
      
      
              =
      
      
              c
      
      
              ×
      
      
      
               Φ
      
      
      
                c
      
      
                r
      
      
                o
      
      
                p
      
      
      
      
              +
      
      
              (
      
      
              1
      
      
              −
      
      
              c
      
      
              )
      
      
              ×
      
      
      
               Φ
      
      
      
                g
      
      
                l
      
      
                o
      
      
                b
      
      
                a
      
      
                l
      
      
      
      
      
             \Phi_{crop}'=c\times \Phi_{crop}+(1-c)\times \Phi_{global}
      
      
          Φcrop′​=c×Φcrop​+(1−c)×Φglobal​</li><li>保留所有
      
      
      
      
      
              P
      
      
              1
      
      
      
      
            P_1
      
      
         P1​中,
      
      
      
      
      
              Φ
      
      
      
               c
      
      
               r
      
      
               o
      
      
               p
      
      
      
              ′
      
      
      
      
            \Phi_{crop}'
      
      
         Φcrop′​得分最高的3个。</li><li>遍历HDR强度,选择
      
      
      
      
      
              Φ
      
      
      
               H
      
      
               D
      
      
               R
      
      
      
      
      
            \Phi_{HDR}
      
      
         ΦHDR​最高的取值,生成
      
      
      
      
             P
      
      
             2
      
      
      
            P2
      
      
         P2</li><li>遍历饱和度,选择
      
      
      
      
      
              Φ
      
      
      
               s
      
      
               a
      
      
               t
      
      
               u
      
      
               r
      
      
               a
      
      
               t
      
      
               i
      
      
               o
      
      
               n
      
      
      
      
      
            \Phi_{saturation}
      
      
         Φsaturation​最高的取值,生成
      
      
      
      
             P
      
      
             3
      
      
      
            P3
      
      
         P3</li><li>用所有局部提亮模型,从
      
      
      
      
      
              P
      
      
              3
      
      
      
      
            P_3
      
      
         P3​生成
      
      
      
      
      
              P
      
      
              4
      
      
      
      
            P_4
      
      
         P4​</li><li>所有模型结果中,保留
      
      
      
      
      
              Φ
      
      
      
               g
      
      
               l
      
      
               o
      
      
               b
      
      
               a
      
      
               l
      
      
      
      
      
            \Phi_{global}
      
      
         Φglobal​最大的一个</li><li>在一个
      
      
      
      
      
              P
      
      
              0
      
      
      
      
            P_0
      
      
         P0​的所有结果中,保留
      
      
      
      
      
              Φ
      
      
      
               g
      
      
               l
      
      
               o
      
      
               b
      
      
               a
      
      
               l
      
      
      
      
      
            \Phi_{global}
      
      
         Φglobal​的一个</li><li>在所有地点的所有结果中,按照
      
      
      
      
      
              Φ
      
      
      
               g
      
      
               l
      
      
               o
      
      
               b
      
      
               a
      
      
               l
      
      
      
      
      
            \Phi_{global}
      
      
         Φglobal​排序,获得最终结果</li>
      

      结果与启发
      经过上述处理,在街景数据库中获取了173张评分超过2.9的照片。这些照片经过6位专业摄影师大人,有41.4%获得了超过3.0的得分。

      本文的效果并不特别惊艳,也有很多手工挑选的痕迹。和时下许多“end-to-end”系统比起来,很有图像处理年代精打细作的风范。这种思路虽然讲起来炫酷程度不足,但在解决实际问题时,往往比复杂的、高端的系统开发周期更短,更加鲁棒,值得我们借鉴。

      毕竟,连Google都这么搞了,咱们还有啥不好意思的呢。

      1. Murray, N., Marchesotti, L., and Perronnin, F. (2012). Ava: A large-scale database for aesthetic visual analysis. In 2012 IEEE Conference on Computer Vision and Pattern Recognition, pages 2408–2415. ↩︎ 1. Szegedy, C., Vanhoucke, V., Ioffe, S., Shlens, J., and Wojna, Z. (2015). Rethinking the inception architecture for computer vision. CoRR, abs/1512.00567 ↩︎ ↩︎ ↩︎ ↩︎ 1. Kopf, J., Cohen, M. F., Lischinski, D., and Uyttendaele, M. (2007). Joint bilateral upsampling. ACM Transactions on Graphics (Proceedings of SIGGRAPH 2007), 26(3):to appear. ↩︎
  • posted @ 2020-12-28 10:14  刘桓湚  阅读(150)  评论(0)    收藏  举报