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

本文介绍了一种名为Creatism的深度学习系统,该系统模仿人类摄影师的步骤,通过构图、饱和度调整和局部提亮来创建专业级别的风光照片。使用无标定的风景照片数据集进行训练,并在Google街景数据上测试,实现了从街景到专业摄影作品的转换。尽管这种方法不依赖复杂的端到端系统,但它在资源有限的情况下表现出较高的效果和实用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。输出结果记为 Φ

### 下载 Popper.min.js 文件的方法 对于希望获取 `popper.min.js` 的开发者来说,可以通过多种方式来实现这一目标。通常情况下,推荐通过官方渠道或可靠的分发网络 (CDN) 来获得最新的稳定版文件。 #### 使用 CDN 获取 Popper.min.js 最简单的方式之一是从流行的 CDN 中加载所需的 JavaScript 库。这不仅简化了集成过程,还可能提高性能,因为许多用户已经缓存了来自这些服务提供商的内容。例如: ```html <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2/dist/umd/popper.min.js"></script> ``` 这种方式不需要手动下载文件到本地服务器;只需将上述 `<script>` 标签添加至 HTML 文档中的适当位置即可立即使用 Popper 功能[^1]。 #### 从 npm 或 yarn 安装 如果项目采用模块化构建工具链,则可以直接利用包管理器如 npm 或 Yarn 进行安装。命令如下所示: ```bash npm install @popperjs/core # 或者 yarn add @popperjs/core ``` 之后可以根据具体需求引入特定功能模块,而不是整个库,从而减少打包后的体积并优化加载速度[^2]。 #### 访问 GitHub 发布页面下载压缩包 另一种方法是访问 Popper.js 的 [GitHub Releases](https://github.com/popperjs/popper-core/releases) 页面,在这里可以选择不同版本的 tarball 或 zip 归档进行下载解压操作。这种方法适合那些偏好离线工作环境或是想要定制编译选项的人群[^3]。 #### 手动克隆仓库 最后一种较为少见但也可行的办法便是直接克隆完整的 Git 存储库副本。这样可以获得开发分支以及历史记录等更多信息,适用于贡献代码或者深入学习内部机制的情况。 ```bash git clone https://github.com/popperjs/popper-core.git cd popper-core ``` 完成以上任一途径后便能成功取得所需版本的 Popper.min.js 文件,并将其应用于个人项目之中[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值