姓名:白国乐
学号:17021210898
专业:信号与信息处理
转载自:http://developers.googleblog.cn/2017/11/pixel-2-pixel-2-xl.html,有删节
【嵌牛导读】人像模式是全新的 Pixel 2 和 Pixel 2 XL 智能手机的一个重要功能,它让任何人都可以拍摄出看上去非常专业的浅景深照片。此功能帮助这两款手机赢得了 DxO 的最高手机相机排名,而且适用于前置摄像头和后置摄像头,尽管两款手机均未配备双摄像头(通常需要两个摄像头才能实现此效果)。
【嵌牛鼻子】人工智能、人像模式
【嵌牛提问】什么是浅景深照片?
【嵌牛正文】配备大尺寸镜头的单反 (SLR) 相机具有浅景深功能,也就是说,与相机有一定距离的物体是清晰的,而在“合焦平面”前面或后面的物体是模糊的。浅景深是将观看者的注意力吸引到照片主体或抑制杂乱背景的好方法。浅景深为使用单反相机拍摄的人像赋予了特有的美感。浅景深照片中的模糊程度取决于深度;物体离合焦平面越远,显示就越模糊。模糊程度还取决于镜头开度的大小。光圈为 f/2.0 的 50mm 镜头的开度以直径表示为 50mm/2 = 25mm。使用这样的镜头,即使离合焦平面只有几英寸的物体也将模糊成像。关于景深,另一个值得了解的参数是模糊光点呈现的形状。此形状称为散景,它取决于镜头光圈的物理结构。散景是圆形的?还是六边形的(因为某些镜头内的光圈是由六片金属薄片组成的)?摄影师们仍在不知疲倦地争论是什么构成了好散景或坏散景。合成浅景深图像与单反相机不同,手机摄像头的光圈小且固定,生成的照片中的一切差不多都是清晰的。但是,如果我们知道了摄像头与场景中各个点的距离,就可以用模糊点替换照片中的各个像素。这种模糊利用了像素的颜色及其相邻像素,其中模糊程度取决于该场景点与合焦平面的距离。我们还能控制模糊的形状,也就是散景。手机如何估计与场景中每个点的距离?最常用的方法是将两个摄像头互相靠近放置,即所谓的双摄像头手机。然后,我们在右摄像头图像中为左摄像头图像中的每个点查找匹配点。对于在两个图像中找到匹配的位置,通过三角测量过程给出该场景特征的深度。这种搜索匹配特征的方式称为立体算法,它和我们的双眼几乎是一样的原理。这个算法的更简单版本被一些单摄像头智能手机应用使用,包括将图像分成两个层 - 属于前景(通常是人)的像素和属于背景的像素。这种划分有时称为语义分割,它可以使背景模糊,但它没有深度的概念,所以无法给出模糊程度。此外,如果人的前面有一个离摄像头非常近的物体,它也不会被模糊掉,尽管真实的相机会将其虚化。不管使用立体匹配还是分割,以人工方式将属于背景的像素模糊化都称为合成浅景深或合成背景散焦。合成散焦与单反相机提供的光学模糊不同,但对大多数人来说看起来很相似。Pixel 2 人像模式的原理Google Pixel 2 在其后置和前置摄像头中都提供了人像模式。对于前置(自拍)摄像头,仅使用分割。对于后置摄像头,则同时使用立体匹配和分割。但等一下,Pixel 2 只有一个后置摄像头,如何实现立体匹配?我们来一步一步地看一下这个过程。
第 1 步:生成一张 HDR+ 图像。人像模式起始于一张一切都很清晰的照片。为此,我们使用 Google 的计算摄影技术HDR+来改善所拍摄照片的质量,此技术在所有最近的 Nexus/Pixel 手机上都有实现。它的原理是捕捉一系列曝光不足的图像以避免强光,调整和平衡这些帧以减少阴影中的噪声,并以保留局部对比度同时合理降低全局对比度的方式增强阴影。即使在弱光条件下,结果也会是一张具有高动态范围、低噪声和清晰细节的照片。
通过调整和平衡多个帧来减少噪声的理念已在天文摄影中应用了几十年。Google 的实现有一点不同,因为我们处理的照片帧是通过手持相机拍摄的,如果摄影师不稳或者场景中的物体在运动,我们需要小心以避免产生重影。下面是使用 HDR+ 捕捉的高动态范围场景的示例。
Pixel 2未启用(左)和启用(右)HDR+ 所拍摄的照片。注意 HDR+ 是如何避免天空和庭院中出现强光,同时又保留拱廊天花板暗处细节的。拍摄者:Marc Levoy
第 2 步: 基于机器学习的前景背景分割。从 HDR+ 照片开始,我们接下来将决定哪些像素属于前景(通常是人),哪些像素属于背景。这是一个很棘手的问题,因为与电影工业中的色度键控(也称为绿幕)不同,我们无法假定背景是绿色的(或者蓝色,或者任何其他颜色)。因此,我们改为应用机器学习。
具体来说,我们训练了一个用TensorFlow编写的神经网络,它负责检查照片,并估算哪些像素属于人,哪些不属于。我们使用的特定网络是具有跳跃连接的卷积神经网络(CNN)。“卷积”是指学到的网络组件以过滤器形式存在(每个像素周围的相邻像素的加权总和),所以,可以将网络认为是对图像的过滤,然后对过滤后的图像再过滤,等等。“跳跃连接”允许信息从可以推理出低级特征(颜色和边缘)的网络早期阶段轻易流向可以推理出高级特征(面部和身体部分)的网络后期阶段。当您不仅需要确定照片中是否有人,还需要准确识别哪些像素属于人时,将这些阶段结合起来就变得十分重要。我们的 CNN 基于几乎 100 万张人物照片(人物随身戴着帽子、太阳镜以及拿着冰淇淋蛋卷)进行训练。用于生成遮罩的推理在使用TensorFlow Mobile的手机上运行。以下是一个示例:
左图是 HDR+ 流程生成的照片,右图是平滑后的神经网络输出。网络将遮罩的白色部分认为是前景,将黑色部分认为是背景。拍摄者:Sam Kweskin
遮罩的优良度如何?不太差;我们的神经网络将女人的头发和茶杯识别为前景的一部分,因此,可以使它们保持清晰。如果我们根据此遮罩来模糊照片,将得到以下图像:
使用遮罩生成的合成浅景深图像。
关于这个结果,有几点需要注意。首先,模糊程度是一致的,尽管背景包含了不同深度的物体。其次,单反相机还会虚化盘子上的点心(以及盘子本身),因为它离相机很近。我们的神经网络知道点心不是女人的一部分(注意,它在遮罩图像中是黑色的),但由于在女人下方,也不太可能是背景的一部分。我们明确检测到这种情况,让这些像素保持相对清晰。遗憾地是,这种解决方案并不总是正确的,在这种情况下,我们应该让这些像素更模糊。
第 3 步:从双像素到深度图为了改进此结果,了解场景中每个点的深度会有所帮助。我们可以使用立体算法计算深度。Pixel 2 未配备双摄像头,但它拥有名为相位检测自动对焦 (PDAF) 像素的技术,这种技术有时也称为双像素自动对焦(DPAF)。读起来很绕口,但理念非常简单。想象一下,将手机后置摄像头的(微型)镜头分成两半,通过镜头左侧看到的视野和通过镜头右侧看到的视野会略有不同。这两个视角相差不到 1mm(大致为镜头的直径),但差异足以计算立体视觉并生成深度图。摄像头的光学原理相当于将图像传感器芯片上的每个像素分割成两个更小的并列像素,并分别从芯片读取,如下所示:
在 Pixel 2 的后置摄像头上,每个像素的右侧通过镜头的左侧观测,每个像素的左侧通过镜头的右侧观测。制图人:Markus Kohlpaintner,已获得转载许可。
如图所示,在一张快照中,PDAF 像素通过镜头的左侧和右侧提供视图。或者,如果您竖着拿住手机,则是镜头的上下两部分。下图是通过镜头的上半部分和下半部分获取的示例场景的图像。这些图像是单色的,因为我们在立体算法中只使用Bayer 颜色过滤器传感器的绿色像素,不使用红色或蓝色像素。区分两个图像有困难?或许右侧(下方)的动画 gif 会有所帮助。仔细看,差异确实非常小!
通过 Pixel 2 镜头的上半部分和下半部分获得的测试场景的视图。在右侧的动画 gif中,注意女人几乎不动,因为相机的焦点在她身上,而背景则上下移动。她前面的物体(如果我们能看到)在背景向上移动时将向下移动(反之亦然)。
PDAF 技术可在许多相机中找到(包括单反相机),有助于在相机录制视频时更快地对焦。在我们的应用中,此技术用于计算深度图。 具体来说,我们使用左侧和右侧图像(或上部和下部图像)作为立体算法的输入,类似于 Google 的Jump系统全景拼接器(名为Jump Assembler)中使用的图像。此算法首先执行子像素精确平铺式调整来生成低分辨率深度图,然后使用双边解算器对其进行内插计算来生成高分辨率深度图。这与 Google 以前在镜头模糊功能中使用的技术相似。
还有一个细节:由于 Pixel 2 摄像头捕捉的左侧和右侧视图非常接近,我们获得的深度信息是不准确的,尤其是在图像噪声很高的低光照条件下。为了减少此噪声并提高深度准确度,我们捕捉一系列左侧和右侧图像,然后调整并平衡它们,再应用我们的立体算法。当然,我们在此步骤中需要多加小心,以避免错误匹配,就像 HDR+ 处理一样,否则深度图中将会产生重影(这是另一篇博文的主题)。下面的左图是使用我们的立体算法对上述示例生成的深度图。
左图:使用立体算法从前面的镜头上半部分和下半部分图像计算出的深度图。越亮表示离相机越近。
右图:我们应用于原图每个像素的模糊程度的可视化。黑色表示完全不模糊,红色表示合焦平面(女人的面部)后面的场景特征,红色越亮,模糊程度越高,蓝色表示合焦平面前面的特征(点心)。
第 4 步:拼合处理,生成最终图像最后一步是,将我们在第 2 步中计算的分割遮罩与在第 3 步中计算的深度图组合以确定为第 1 步的 HDR+ 照片中的每个像素设置多大的模糊程度。 我们组合深度与遮罩的方式属于秘密,不过,我们的大致思路是希望我们认为属于人的场景特征(遮罩的白色部分)保持清晰,我们认为属于背景的特征(遮罩的黑色部分)按照它们与合焦平面距离的远近相应地模糊化,与合焦平面的距离获取自深度图。上面的红色图像是每个像素模糊程度的可视化。
实际上,应用模糊从概念上看是最简单的部分;每个像素都被一个颜色相同但大小不同的半透明盘子替代。如果我们按照深度顺序合成这些盘子,就像我们稍早前介绍的平衡一样,将得到与真实光学模糊非常接近的结果。 以合成方式进行散焦的一个好处是,由于我们使用软件,可以得到一个完美的盘形散景,无需拿着数磅重的玻璃相机镜头到处走动。 有趣的是,在软件中,没有特别的原因让我们忠于现实;我们可以将散景形状设置成想要的任何形状。对于我们的示例场景,下面是最终的人像模式输出。如果将此结果与第 2 步中最右侧的结果进行比较,您会发现,点心现在稍微模糊,与单反相机实现的效果大致相同。
最终的合成浅景深图像,通过组合我们的 HDR+照片、分割遮罩和深度图生成。点击可以查看全分辨率图像。
使用人像模式的方式Pixel 2 上的人像模式可以在 4 秒内启动,完全自动(与先前设备上的“镜头模糊”模式相反,此模式要求对手机进行特殊的上下移动),稳定性高,足以让非专家用户使用。这是一个示例相册,其中包括一些困难的情形,比如人的头发卷曲以及手中拿着花束,等等。下面的列表列出了我们可以在全新的 Pixel 2 上使用人像模式的几种方式。
微距拍摄如果您正在使用人像模式并将相机对准小型物体而不是人(比如一朵花或一种食物),那么我们的神经网络无法找到面部,将不会生成有用的分割遮罩。换句话说,我们流程的第 2 步不适用。幸运的是,我们仍可以从 PDAF 数据生成深度图(第 3 步),因此,仅根据深度图就能计算浅景深图像。由于镜头左右两侧之间的基线非常小,这仅适用于距离大致在一米以内的物体。但是对于此类场景,可以生成非常美的照片。您可以将这种模式称为合成微距模式。下面是对一个微距大小的物体进行直接和人像模式拍摄的示例,这里是一个包含更多微距拍摄照片的相册,其中包括更困难的情形,比如后面有细铁丝网的饮水器。小心不要靠得过近,Pixel 2 无法清晰地聚焦到距离摄像头 10cm 以内的物体。
未启用人像模式(左)和启用人像模式(右)的微距照片。这里没有人,因此,背景像素单纯使用深度图确定。拍摄者:Marc Levoy
自拍摄像头Pixel 2 的前置摄像头(自拍)和后置摄像头都支持人像模式。这颗前置摄像头的像素是 800 万,而不是 1200 万。它没有 PDAF 像素,也就是说,它的像素不会分成左右两部分。在这种情况下,我们流程的第 3 步不适用,但如果我们可以找到面部,仍可以使用我们的神经网络(第 2 步)生成分割遮罩。这样一来,我们仍能生成一张浅景深图像,不过,由于不知道物体的距离,我们无法通过深度设置不同的模糊程度。尽管如此,效果看起来仍非常好,尤其对于背景杂乱的自拍照而言更是如此,在这种情况下,模糊有助于抑制杂乱。下面是使用 Pixel 2 的自拍摄像头直接拍摄和在人像模式下拍摄的自拍照示例。
未启用人像模式(左)和启用人像模式(右)的自拍照。前置摄像头缺少 PDAF 像素,因此,背景像素只能使用机器学习确定。拍摄者:Marc Levoy
如何充分利用人像模式Pixel 2 生成的人像取决于基础 HDR+ 图像、分割遮罩和深度图;这些输入中的问题可能会导致结果出现伪影。例如,如果一个特征在 HDR+ 图像中过度曝光(曝光成白色),那么左右图像中不可能提供有用的信息,进而导致深度图出现错误。分割会出现什么错误?它是一个已经接受接近 100 万张图像训练的神经网络,但我们打赌它一定没学习过人亲吻鳄鱼的照片,因此,它可能会从遮罩中忽略鳄鱼,导致鳄鱼被模糊掉。深度图呢?我们的立体算法在没有纹理的特征(例如空白墙壁)上可能会失败,因为没有特征可以让立体算法计算;它在重复纹理(例如格子衬衫)或者水平和竖直线条上也可能会失败,因为立体算法可能会匹配图像的错误部分,导致三角剖分生成错误的深度。不过,任何复杂技术都包含折中做法,下面是生成出色人像模式照片的一些提示:
站得离被摄主体足够近,让他们的头部(或者头部和肩部)填充相框。
如果您希望合影中的每个人都清晰,请确保这些人到摄像头的距离相等。
如果需要更好的模糊效果,请在您的主体与背景之间留出一定距离。
移除黑色的太阳镜、松软的帽子、巨大的围巾和鳄鱼。
对于微距拍摄,通过点按的方式进行聚焦,确保您要拍摄的物体保持清晰。
顺便说一下,在人像模式下,您会注意到摄像头放大了一点(后置摄像头为 1.5 倍焦距,自拍摄像头为 1.2 倍焦距)。 这是有意为之,因为更窄的视野会让您站得靠后一点,这反过来会减少透视变形,进而生成更好的人像。是时候(永远)抛弃单反相机了吗?在我们 5 年前加入 Google 时,手机照片的像素数还没有追上单反相机的像素数,不过,足以满足大多数人的需求了。即使在较大的家用计算机屏幕上,您也无法看清使用手机拍摄的照片中的各个像素。尽管如此,手机摄像头在以下四个方面仍无法匹敌单反相机:
明亮场景下的动态范围(过度曝光的天空)
弱光下的信噪比 (SNR)(有噪声的照片,缺少细节)
缩放(对于自拍照片)
浅景深
Google 的 HDR+ 和竞争对手的类似技术在第 1 个和第 2 个方面取得了巨大进步。事实上,在光线不好的环境中,我们通常不用单反相机拍摄,因为我们可以从手机获得一张更好的照片,不用进行费时费力的多重曝光和后期处理。对于缩放,一些智能手机上添加的不太大的长焦镜头(一般为 2 倍焦距)有所帮助,但要想拍摄河床上的灰熊,没有什么可以替代一只 400mm 镜头(这种镜头也是一个更为安全的工具!)。对于浅景深,合成散焦与真实的光学散焦不同,但视觉效果非常接近,足以实现相同的目标,也就是将您的注意力集中到主体上。配备大传感器和大镜头的单反相机(或者它们的可更换镜头无反光镜相机 (MIL) 近亲)会消失吗?这种说法存在疑问,不过,它们在市场中仅会占很小的份额。我们两个在旅行时都会携带一部大相机和一台 Pixel 2。旅行开始时,我们会忠实地使用单反相机,但到了最后,它大多数时间都会待在行李箱中。欢迎来到软件定义相机和计算摄影的新世界!