虽然双镜头手机已普及,带来的人像模式、多倍变焦也成了不少智能手机的“标配”,但仍然有厂商依然坚持用单镜头。
比如以软件著称的 Google,从 Pixel 手机初代到今天 Pixel 3 / 3 XL,两年时间里(初代 Pixel 于 2016 年发表),仍坚持采用单镜头。
有意思的是,Pixel 不但是 DxOMark 榜单前段班常客,夜景表现长期力压各旗舰,且还带来了比双镜头出品更优秀的人像模式。
这些都要归功于软件算法和 AI 神经网络。Google 在 Google AI Blog 分析了 Pixel 3“人像模式”(Portrait Mode)的算法原理。实际上,他们在这套算法下了不少工夫。
Google 的算法原理
如果你对 Google 相机算法很陌生,不妨先来了解一下 Pixel 2 的人像算法原理。
去年,Google 透过 AI(神经网络)算法,让 Pixel 2 / 2 XL 在仅一颗镜头的硬件条件下,拍出与双镜头手机媲美的人像背景虚化照片。
(Source:Google)
去年 Google 公布的这组对比图,我们能快速区分出左边的 HDR+ 和右边 Portrait Mode“人像模式”照片在背景虚化的不同。
正如所见,“人像模式”下,人像后的背景被软件虚化处理,与正常 HDR+ 对比看去视觉冲击更强,同时也避免背景干扰拍摄主体的视觉。
拍摄一张 HDR+ 照片
根据 Google 去年 AI Blog 的介绍,Pixel 2 相机会先拍摄一组 HDR+ 照片,再多帧合成,提升最终成片的动态范围、细节保留、高光表现。
下面这组 HDR+ 的对比图,能看到此功能开启前后的区别(注意右上角远景曝光及地板线条细节)。
▲ 左:HDR+ 之前;右:HDR+ 之后。(Source:Google)
分割远近景
如果你想拍一张“人像模式”照片,那么得到一张 HDR+ 成片后,相机会使用 TensorFlow 的 AI 神经网络将人物画素点、物体画素点、远近物画素点筛选出来。
Google AI Blog 的对比图能看到更直觉的展示效果:
左边是 HDR+ 拍摄原图,右边黑色部分是 AI 辨识出来的背景部分,白色部分是辨识出来的主体人物外框(包括人物五官细节及外框内的物体)。
有意思的是,从最终成片能看到,桌上的饼干在 AI 辨识是属于“非人”部分,但最终这部分没有虚化。这是因系统除了将主体和背景辨识出来,还辨识出主体周围物体,因此 AI 最终没有将人物下方的物体虚化。因为这部分虽然不属于对焦主体,属于近景,但这效果还不是最完美。
得到深度最佳化图并合成最终成片
虽然去年 Pixel 2 和今年 Pixel 3 系列都没有双镜头,但 Google 似乎一直不是硬件取胜的公司,他们更擅长用软件和算法解决问题。
(Source:Google)
尽管没有硬件双镜头,但 Pixel 相机都配备 PDAF 双核相位对焦技术,Google 便可透过画素点划分,将一颗镜头“一分为二”:
镜头手边拍摄到的画面会和右侧画面约 1 毫米的不同视觉间距,如果是垂直拍摄,镜头则是分为上下两部分排列。
拍摄后,系统会并排两侧镜头拍到的画素。通过 Google 自家 Jump Assembler 演算法得出立体演算的深度最佳化图,利用双向求解器将深度图转变成高分辨率。
▲ 图 1、2 为上半部、下半部相机拍摄,图 3 动图为前面两图区别。(Source:Google)
上图左是透过 PDAF 拍摄并演算得到的深度图,白色部分越深,代表与镜头距离越近;右边是决定画素模糊程度,黑色部分为“不需模糊”范围,红色部分为“需模糊范围”,透过红色深浅,系统会自动判断背景虚化的力度。
▲ 最终效果图。(Source:Google)
最后系统会将第 2 步骤分割出的背景图和第 3 步骤得出的深度图合并。在 AI 物体判别下,系统能估算出近景的饼乾和瓷盘到对焦(人物)主体的距离并虚化。最终得到比步骤 2 的初级处理更全面和自然的人像照片。
对比步骤 2 和步骤 3 最终效果图,你能看到近景饼干也适当虚化了。透过软件演算法,我们能将虚化范围“捏造”成任何形状。
Google 怎样训练神经网络的?
了解了 Pixel 2 的人像模式原理,那么 Pixel 3 的最佳化就不难理解了。
透过软件算法,相机系统可大致估算出对焦主体和背景的距离,并虚化远景。但手持拍摄时,手机难免出现轻微振动,因而影响到最终虚化效果。正是如此,之前有不少用户在 Pixel 2 系列遇到景深辨识错误的问题。
(Source:Google)
根据 Google AI Blog 介绍,基于神经网络学习的特徴,Pixel 3 上 Google 透过增加 AI 系统的辨识帮助和训练 AI 神经网络的算法,修复“人像模式”的辨识误差问题。
例如,透过画素点数量判断物体与镜头的远近距离,得出给 AI 更精准的距离判断结果;或透过焦点内外的清晰情况,提供 AI 散焦。
(Source:Google)
“Franken Phone”是 Google 用于训练 TensorFlow 编写的神经网络系统的装置,这套装置由 5 台 Pixel 3 和 Wi-Fi 组成。
测试时,Google 会用 Franken Phone 的 5 台手机在不同角度同时拍摄,最终得出一张由多角度、立体算法合成的动态深度图。进而达到模拟拍摄动态、在复杂场景训练神经网络精准辨识出人物(近景)和背景(远景)的目的。
▲ 左图为 Google Franken Phone。(Source:Google)
当然,如果读者对 Google 这套算法感兴趣,也可以亲自研究。Google AI Blog 表示,使用 Google Camera App 6.1 版本的“人像模式”拍摄后,透过 Google Photos 能检视照片的深度图了。
或者,也可透过第三方软件撷取深度图,看看 AI 神经网络最佳化辨识的方式。
(本文由 爱范儿 授权转载;首图来源:Google)