Fang, Hui, and M. Zhang. “Creatism: A deep-learning photographer capable of creating professional work.” (2017).
这篇论文借助有限的无标定数据,用深度网络在虚拟自然环境中完成“取景-调色-打光”的摄影过程。所涉及的理论并不复杂,但给出的过程详细,对解决实际问题很有启发。
这里可以看到一些好的结果。
#概述
问题
本文的起点非常简单,绝对算得上“平价数据”:
- 15000张500px.com上的风景类专业摄影作品,不含有任何标定。用于训练。
- AVA美感图像数据库1,包含250K图像,带有美感评分。
- Google自己的街景数据库,集中在几大国家公园。作为测试。
希望能实现一个自动系统:从街景中生成具有专业水平的摄影作品。
##一个不好使的点子
我们很自然地想到,用AVA直接训练一个“图像-评分”的回归网络:好看的照片评分高,不好看的评分低。之后在街景数据库中采样,输出评分高的结果。
还真不行。
- 美感包含着许多方面。需要指数级别的训练样本。
- 即使构造出这样的网络,其梯度可能也毫无意义。
- 在样本不足的情况下,很可能学出跑偏的判别标准。e.g.饱和度越高越好!
- 网络可能复杂得无法优化。
##本文的做法
本文的思路非常朴素:让算法像人一样分步骤处理拍照问题。
- 取景:实现一个【构图】评分网络,对各种可能取景进行采样,选择评分最高的一个截图。
- 调色:实现一个【饱和度/HDR】评分网络,遍历饱和度/HDR操作的强度,选择评分最高的施加到输入图像上。
- 打光:实现一个“图像-图像”的【局部提亮】网络。
- 选片:实现一个【整体效果】评分网络,从经过处理的候选图像中,选择较好的输出。
评分包括:1分(随手乱拍),2分(老百姓拍的正常照片),3分(颇有品味票友),4分最高(专家级)。
当然,这种做法只单独考察了美感的三个方面,不过胜在可行性强。
实现
构图评分网络
从500px数据集中,随机从原图裁剪,按照如下参数产生等量的两批数据作为样本的输入:
- 宽度为原图90%100%,长宽比为0.52
- 宽度为原图50%~90%,长宽比同上
将裁剪结果占原图比例作为样本的标定值。
使用的Inception v32作为回归网络。输出结果记为 Φ c r o p \Phi_{crop} Φcrop。
需要特别说明的是,构图对摄影作品的影响是决定性的。第一步选了一个乌漆墨黑的地方,后面无论怎么调也救回不来了。所以在取景步骤中,要结合整体效果的得分来进行。
饱和度评分网络
对于500px数据集的每一个样本,生成如下两类样本作为样本的输入:
- 1张原图
- 6张扰动,随机调整图像饱和度为原图0%~80%
将样本与原图的平均像素值之差作为样本的标定值。0%对应1,大于等于6%对应0,中间线性插值。
使用的Inception v32作为回归网络。输出结果记为 Φ 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 v32作为回归网络。输出结果记为 Φ H D R \Phi_{HDR} ΦHDR。
整体效果评分网络
使用AVA数据库进行训练。
将一部分AVA图像给专业摄影师评分,可以将AVA评分通过一个线性映射,归一化的本文的1到4分体系中。
网络采用Inception v32。输出结果记为 Φ