Google 是如何把 Pixel 5 上的人像光效做出来的?传媒
这一两年来,计算摄影这个词我们听到太多次了。
提到计算摄影,自然而然的就会让人想到 Google 的 Pxiel 系列手机,这个系列可以说是开创了计算摄影的先河,它为我们揭示了计算摄影的威力和魅力所在。
也正是因为计算摄影带来的威力如此惊人,这两年逐渐回过味的手机厂商们才终于一股脑扎了进去。而 Google 这时候已经在玩更多的花活了。
「人像光效」的最初是随着今年十月份 Google 发布 Pixel 4a&Pixel 5 上,这一代 Pixel 独占的功能。但是在前几天,Google 对相机和相册应用进行了一次更新,将这个功能下放给了 Pixel 2 之后的用户。
受到肖像摄影师使用的摄影灯启发,「人像光效」能够对光源进行重新定位和建模,然后将新的光源添加到照片的场景中去。并且还能够识别初始照明的方向和强度,然后对照明情况自动进行补充。
这样强悍的计算摄影功能自然离不开神经网络的机器学习能力,通过手机人像光效模式所拍摄的照片作为数据库进行训练之后,「人像光效」的后期能力启用了两种新的算法:
自动添加合成光源:对于给定的人像照片,算法进行合成添加往外光源,并且将于现实中摄影师的打光照明相一致。 合成后重新照明:对于给定的照明方向和人像照片,以最自然方式添加合成光。首先说第一个问题,就是确定光源位置和添加。在现实中,摄影师通常采用经验和感性的方式,通过观察光线落在被拍摄者脸上的强度和位置,然后去确定如何去打光。但是对于 AI 来说,如何确定已有光源的方向位置是并不容易。
为此,Google 采用了一种全新的机器训练模型——全方向照明轮廓。这种全新的照明计算模型可以将人脸当做光线探测器,从而推断出来自所有照射的光源方向、相对强度和颜色,而且还能通过另一种面部算法来估计照片中头部的姿势。
虽然听起来很高大上,但是实际训练模型的呈现效果还是挺可爱的,它会把人的脑袋看做三个圆圆的银色球形物体,顶部的球「质地」是最粗糙的,用来模拟光线的漫反射。中间的球也是磨砂的,它用来模拟较为聚集的光源。而最底下的球则是镜面「材质」,用来模拟较为光滑的镜面反光。
另外每个球体都能根据自身发的特点反映环境照明的颜色,强度和方向性。
这样,Google 就能得到后期合成光源的方向应该在哪里,比如经典的人像光源是位于视线上方 30°,与摄像机轴成 30° 至 60° 之间,Google 也遵循了这一经典规则。
在学会了给人像添加光源的方向之后,那接下来要做的就是如何让添加的光源变得更加自然。
前一个问题有点像「独孤九剑」的剑谱,学会了之后就会做固定的一些题目了。而解决后一个问题则需要让「独孤九剑」尽可能多的实战,将不同的实际情况融会贯通,再学会破解世间万般武学。
为了解决这个问题,Google 又研发了另一个新的训练模型,用来确定自定向光源添加到原始的照片中。正常情况下是无法用已有的数据训练这个模型的,因为无法面对近乎无穷的光线照射情况,并且还要与人脸完美的匹配起来。
为此 Google 打造了一个很特殊的用于训练机器学习的装置——一个球形的「笼子」。在这个装置里面具有 64 个具有不同视角的摄像机和 331 个可单独编程的 LED 光源。
如果你去过杜比影院,在杜比影院的映前秀中有一个环节是声音在一个半球型的穹顶中移动来模拟真实中近乎无限的方向。Google 这个装置其实也是类似的原理。
通过不停地改变照射的方向和强度并模拟复杂的光源,然后可以得到人的头发、皮肤、衣服反射光的数据,从而获得在复杂光源下的照明应该是怎样的。
Google 一共请了 70 位不同的人,用不同的脸型、发型、肤色、衣服、配件等特质训练这个模型。这样确保能够最大限度让合成的光源与现实相匹配。
此外,Google 并非直接通过神经网络模输出最后的图像,而是让神经网络模型输出一个较低分辨率的商图像。