继前阵子Google研究团队公开提升夜拍模式质量背后的技术后,最近又发布了在相机的人像(Portrait)模式中,预测场景中物体深度的成果,Google推出的智能手机Pixel,相机内置人像模式,通过将背景经过模糊处理,将拍摄对象保持清晰,来创造出专业级的照片,去年,Google团队曾公开如何在单一相机,通过相位对焦(Phase-Detection Autofocus),或是称为Dual Pixel自动对焦的传统立体视觉算法计算景深,今年,Google研究团队改用机器学习,在Pixel 3手机上,改善景深的预测来提升人像模式照片的质量。
过去处理人像模式的照片是通过神经网络,来决定每个pixel和人像、背景的关系,通过相位对焦产生带有深度信息的分割掩码,再根据深度信息进行模糊处理,这样的方法比较接近专业相机的作法。相位对焦就是在同个场景,拍摄两张角度些微不同的照片,人像在两张照片中看起来是静止的,而受到视差(parallax)的影响,背景会呈现水平移动,而通过视差就能预测物体的深度。
不过,Google指出,相位对焦的挑战在于背景平移的值太小,要准确地计算有难度,再加上传统的立体视觉技术会遇到孔径(Aperture)的问题,也就是说,当通过小的孔径来观察图像时,因为只观察物体的局部,无法明确识别出直线平移的方向和距离值,这两项因素都会导致深度评价输出错误的结果。
为了解决这种可能的错误,首先,Google通过是视差来校正误差,举例来说,与接近焦点平面的点相比,远离焦点平面的点,在照片中看起来便没有那么尖锐,可作为判断失焦(defocus)的参考依据,接着人类因为知道物体在现实生活中大略的大小,即便是在平面的图像中,人也能分别出图像中物体的远近,Google称之为语义的参考依据。
要将这两项参考依据手动设计成算法非常困难,但是通过机器学习技术就能办到,Google在Tensor中创建了一套卷积式神经网络,将相位对焦像素作为输入数据,让该神经网络学习预测深度,这项改良过的神经网络,正是改善Pixel 3人像模式照片拍摄质量的关键。
为了训练该神经网络,Google需要大量的相位对焦图像和对应的高品质深度特征图(Depth Maps),由于要使该神经网络预测深度的结果,能够应用在智能手机上,Google也需要加入类似用户会拍摄的照片,作为训练样本,为了收集这些训练数据,Google将5支pixel 3手机绑在一起,打造了一支外型怪异的设备Frankenphone,让5支手机同时拍摄,将误差值控制在2毫秒内,通过该设备拍摄的照片,能够利用运动的结构和多视角的立体视觉,计算出准确的深度。
Google指出,该设备拍摄的图像非常适合训练该神经网络,因为从5个视角拍摄,确保了多个方向的视差问题,也避免了孔径问题,且照片中的每个点几乎都在另一张照片出现,大多数的点都有参考值可以找出对应关系,此外,同步拍摄还能确保动态场景的深度。
最后为了缩短人像照片处理的时间,需要系统能够快速预测深度,因此Google用轻量级的设备端机器学习平台TensorFlow Lite,和pixel 3的GPU来快速计算景深,产生高品质的人像模式照片。