看机器学习如何驾驭光影:一键为照片增光添彩的“人像光效”

文 / Yun-Ta Tsai 和 Rohit Pandey,Google Research 软件工程师

职业的人像摄影师能够通过专用设备(例如外置闪光灯与反光板)和专业知识,捕捉恰到好处的光照效果,从而拍摄出令人赞不决口的照片。为了让用户更好地排出专业的人像外观,我们最近发布了**人像光效 (Portrait Light)**,这是专为 Pixel 相机和 Google 相册应用推出的一项新的摄影后期功能,可为人像添加模拟的定向光源,在方向与强度两方面补充原始照片的光效。

image

使用和不使用人像光效的图片示例:注意人像光效如何勾勒出脸部轮廓,增加维度细节、立体感和视觉效果

在 Pixel 4、Pixel 4a、Pixel 4a (5G) 和 Pixel 5 上的 Pixel 相机中,人像光效会自动对默认模式下的图片和包含人的夜景照片(无论只有一人还是一小群人时)应用摄影后期功能。在 人像模式 照片中,人像光效配合已有的浅景深特效,提供更丰富的光影,可带来如在摄影棚一般的效果。由于对光影的喜好因人而异,因此Pixel 用户在人像模式下可根据自己的喜好,在 Google 相册中手动重新定位和调整所应用光线的亮度。对于在 Pixel 2 或后续型号上运行 Google 相册的用户,这种补光功能也可用于许多先前拍摄的人像照片。

Pixel 用户可以在拍摄后根据自己的喜好在 Google 照片中调整人像的光效

今天,我们来介绍一下人像光效背后的技术。

受人像摄影师使用的外置光源的启发,人像光效构建了一个在场景中可被重新定位的光源模型,并根据初始光影方向与强度自动进行对照片光影的补充。我们利用全新的机器学习模型来实现这一点,每项模型都使用在 Light Stage 计算照明系统中捕获的照片数据集进行训练。这些模型支持以下两种新算法:

  1. 自动定向光补 (Automatic directional light placement):对于给定的人像,该算法将合成的定向光放置于场景中,与摄影师在现实世界中补充外置光源的方式一致。
  2. 拍摄后合成补光 (Synthetic post-capture relighting):对于给定的照明方向和人像,以看起来真实且自然的方式添加合成光。

这些创新使人像光效能够随时为移动设备上的每个人像增加吸引人的光效。

自动光源补充

摄影师通常依靠感知线索决定如何使用外置光源增强环境光照。他们评估落在脸上的光照强度和方向,并调整拍摄对象的头部姿势以补充光线。为了引导人像光效自动放置光源,我们开发了这两种感知信号的等效计算。

首先,我们训练了一种全新的机器学习模型,根据输入的人像估算场景的高动态范围全向光照轮廓。这种新的光照估算模型将人脸视为光探头,推断所有方向的场景中所有光源的方向、相对强度和颜色。我们还使用 MediaPipe Face Mesh 估算人像拍摄对象的头部姿势。

根据输入人像估算高动态范围全向光照轮廓:每个图片右侧的三个球体,即漫反射(顶部)、哑光银(中间)和镜面(底部)使用估算的照明进行渲染,每个球体都反映环境照明的颜色、强度和方向

通过这些线索,我们可以确定合成光照的源方向。在摄影棚人像摄影中,仰视场景时,主外置光源或主光位于视线上方约 30° 处,与照相机轴偏离 30° 至 60°。我们遵循这个经典人像外观准则,增强场景中任何预先存在的光照方向,同时力求达到平衡、巧妙的主光与补光光照比(约 2:1)。

由数据驱动的人像补光

根据所需的光照方向和人像,我们接下来训练了一个新的机器学习模型,以便将定向光源的照明添加到原始照片中。训练模型需要提供数百万对带有和不带额外光线的人像。在正常情况下拍摄此类数据集将是不可能的,因为它需要近乎完美地匹配在不同光照条件下拍摄的人像。

取而代之的是,我们通过使用 Light Stage 计算照明系统拍摄 70 个不同的人来生成训练数据。这种球形照明装置包括 64 个视角不同的照相机和 331 个可单独编程的 LED 光源。我们拍摄了每种光线照射下的每个个体(one-light-at-a-time,OLAT),这将生成其反射场或球形环境的离散部分所照亮的外观。反射场编码拍摄对象的皮肤、头发和衣服的独特颜色和反光属性,即每种材料的光泽或暗淡程度。由于光的叠加原理,这些 OLAT 图片可以线性叠加在一起,以渲染出逼真的拍摄对象图片,就像被摄者出现在任何基于图片的照明环境中一样,并正确地表示像次表面散射这样的复杂光传输现象。

我们使用 Light Stage 拍摄了不同脸型、性别、肤色、发型和着装/配饰的许多人。对于每个人,我们在不同的各种光照环境中生成合成人像,包括添加和不添加定向光的图片,从而渲染出数百万对图片。此数据集提升了模型在不同光照环境下的性能。

使用 360° 计算照明装置 Google Light Stage 一次点亮一盏灯,对个体进行拍照

左图:来自个人拍摄的反射场的示例图片,在 Light Stage 中的外观为一次点亮一盏灯的照明下的外观;右图:这些图片可以叠加在一起,在任何新颖的光照环境中形成拍摄对象的外观

通过商图片学习保留细节的补光

我们不是尝试直接预测输出补光图片,而是训练补光模型以输出低分辨率商图片 (Quotient Image),即每像素乘数,在上采样时可应用于原始输入图片,在添加额外光源的情况下生成所需的输出图片。此技术计算效率高,并且只促进低频光照变化,而不影响高频图片细节,高频图片细节直接从输入端传输以保持图片质量。

通过几何估算监督补光

当摄影师在场景中添加额外的光源时,光源相对于拍摄对象的面部几何形状的方向将决定面部每个部分的亮度。为了对光源从相对无光表面反射的光学行为建模,我们首先训练一个机器学习模型,以根据输入的照片估算表面法线,然后应用兰伯特定律计算所需照明方向的“光可见性图”。我们将这个光可见性图作为商图片预测器的输入,以确保使用基于物理学的洞见对模型进行训练。

我们的补光网络流水线。根据输入人像,我们估算每个像素的表面法线,然后将其用于计算光可见性图。对模型进行训练以生成低分辨率商图片,在上采样并作为乘数应用于原始图片时,会产生在场景中综合添加额外光源的原始人像

我们优化了整个流水线,使其在移动设备上以交互式帧速率运行,并且模型的总大小不到 10 MB。以下是几个人像光效的实际运行示例。

人像光效演示效果

充分利用人像光效

您可以在 Pixel 相机中尝试使用人像光效,然后根据自己的喜好在 Google 照片中调整光的位置和亮度。对于使用 双重曝光控制 的用户,可以在拍摄后应用人像光效,以获得更大的创作灵活性,在光影之间找到适当的平衡。在 Google 照片库的现有图片上,针对面部曝光不足之处尝试使用人像光效,让您的拍摄对象光彩照人。它特别适合处理单人直面相机摆姿势的图片。

我们正在依托机器学习开启移动相机的创意摄影后期光照控制之旅,而人像光效是这一旅程的第一步。

致谢

人像光效是 Google Research、Google Daydream、Pixel 和 Google 照片团队合作的结晶。主要贡献者包括:Yun-Ta Tsai、Rohit Pandey、Sean Fanello、Chloe LeGendre、Michael Milne、Ryan Geiss、Sam Hasinoff、Dillon Sharlet、Christoph Rhemann、Peter Denny、Kaiwen Guo、Philip Davidson、Jonathan Taylor、Mingsong Dou、Pavel Pidlypenskyi、Peter Lincoln、Jay Busch、Matt Whalen、Jason Dourgarian、Geoff Harvey、Cynthia Herrera、Sergio Orts Escolano、Paul Debevec、Jonathan Barron、Sofien Bouaziz、Clement Ng、Rachit Gupta、Jesse Evans、Ryan Campbell、Sonya Mollinger、Emily To、Yichang Shih、Jana Ehmann、Wan-Chun Alex Ma、Christina Tong、Tim Smith、Tim Ruddick、Bill Strathearn、Jose Lima、Chia-Kai Liang、David Salesin、Shahram Izadi、Navin Sarma、Nisha Masharani、Zachary Senzer。

原文:Portrait Light: Enhancing Portrait Lighting with Machine Learning
中文:谷歌开发者公众号