之前,我一直使用入门级的单反相机录制视频,每次调光特别费劲。上午、下午、晚上,光都不一样,调整不好整个画面不是暗就是亮要不就是颜色不对。前两天,我买了一个小米11pro,录制视频时候完全不用做什么设置,效果就还不错。
我还发现:现在的手机有很多神奇的拍照功能。比如:超级夜景模式:能在夜晚拍到清晰的照片;
120倍超大变焦:能够拍摄到很远的物体;
人像模式:能够对背景进行虚化,凸显人像;此外还有进行魔法换天、魔法分身、魔法消除等等功能。
我注意到:在手机界面上有一个AI的标志,它表示的意思是是否启用人工智能处理拍照。现在,许多原本需要在云端大型计算机上完成的人工智能操作,都可以在小小的手机上进行了,目前最为普及的就是在拍摄影像方面的应用,它可以极大的提升用户的拍照体验。我专门去学习了人工智能在手机影像中的应用,今天就来给大家介绍一下。
1
AI计算摄影
我们先来比较一下没有经过AI处理的图片和经过AI处理的图:
大家是否感觉很震惊?差别实在太明显了!
传统的光学相机和数码相机,拍照的流程很简单,物体发出或者反射的光通过镜头,成像在胶片或者感光元件CCD、CMOS上,直接成像。
不过传统相机有两个问题:
一是参数设置:如果传统相机需要拍摄高质量的照片,通常需要学习复杂的相机使用知识,并手动进行焦距、光圈、曝光时间等参数设置,对于像我一样的外行来讲,这个过程过于复杂。
二是存在物理极限:由于镜头、感光片的物理特点,传统摄影方法的清晰度受到一定的限制,因为多种原因会出现模糊,比如:
01.光的衍射
光线通过一个镜头后,并不会成像在一个点上,而是会成像成一个光斑,这叫做艾里斑,是因为光的衍射现象造成的,是物理特性决定的模糊,除非增大镜头直径,否则是无法减小的,这也是为什么天文望远镜的口径都非常大的原因。
光的衍射和艾里斑
02.CCD或CMOS分辨率限制
手机摄像头背后有感光元件,相当于人的视网膜,可以感受光照。CCD和CMOS上有很多个单像素点,用来记录外界的光线变化。比如小米11pro拥有的传感器尺寸是1/1.12英寸(有效面积对角线长度为16mm*1/1.12,长宽比4:3),这样就能计算出感光元件的长和宽分别是11.4mm和8.6mm。
每一个单像素点可以看做一个方块,边长为1.4um,这样大家就可以计算出整个感光原件上有多少个像素点了,这就是小米11官方宣传的五千万像素。
像素点的密度越高,对外界信号的描述就越准确,但是任何一个感光元件都是有极限的,对于特别细微的结构,由于感光元件分辨率的限制,也会出现模糊。
03.运动模糊
当我们拍照片时,需要一定的曝光时间让光进入,在这段时间里如果进行拍摄的手机发生移动,就会产生运动模糊。曝光时间越长,这种模糊就越明显。尤其是在手持相机、拍摄夜景进行长曝光、把镜头拉远拍摄范围比较小时,运动模糊就会更加明显。同时,由于拍摄的物体在移动,也会发生运动模糊。
04.噪点
由于CCD或者CMOS的物理特性,比如电子的无规则运动,图片上也会出现一个一个椒盐状的斑点,这种噪点是无法避免的。当外界光照比较强烈的时候,噪点不会很明显,但是在我们在夜晚进光量不足时,有用的光信息不足,噪点就更会凸显出来。我们使用小光圈的长焦镜头拍摄时,也会造成有用的光信息不足,噪点凸显。
此外,还有镜头色差、对焦不准造成的模糊等等。当然,通过改进相机的镜头、增大感光元件的面积、增加有效像素数量、改变镜头焦距等方法,可以对成像进行改进,可是这同时意味着成本、功耗的上升和相机体积的变大。
而且,有些模糊彼此是矛盾的,比如减小单个像素点的尺寸,就能提高感光元件的分辨率,但是每个像素点感光少了,噪点就会上升。所以,硬件方法提升分辨率并不是无限的。
那么,如何解决这个问题呢?
现在,越来越多的人使用手机拍照,不光是因为它比起单反不需要复杂的设置和频繁更换镜头,简单的多。更主要的是:由于手机移动平台处理构架的优化和计算能力的逐代提升,图像信号处理器和AI处理引擎越来越强大,许多厂商都把人工智能引入了拍照过程,我们每次点开手机摄像头,这些算法都在为我们拍出一张好看的照片而努力,我们所看到的照片不是简单的光学成像的结果,而是通过计算得到的结果,我们称之为计算摄影。
具体来讲,手机厂家设计好了摄像头、感光片和芯片之后,就会有针对性的用大量的图片投喂这个系统,让系统理解真实的、不模糊的、美观的物体是什么样子的。当我们再去拍摄一副新的照片时,系统会根据自己的理解对照片进行修饰,让照片更清楚,颜色饱和度更好,更加清晰美观。用业内的说法:AI摄影就是用人工智能突破光学的物理限制,用强大算力创造全新的视觉想象,用深度学习超越人眼可见的细节。
以往的手机所能提供的AI算力太少,难以支撑实现理想的计算摄影效果。如果把影像数据上传到云端,通过云端AI来完成整个计算过程。这个过程一来浪费时间、浪费流量,且还不稳定,也面临隐私泄露等安全性问题。所以手机终端侧的AI算力就变得至关重要。
现在,一切都不一样了。许多旗舰智能手机都搭载了高性能芯片。而芯片性能提高的一个非常重要的表现就是它所能提供的AI算力不断增强。比如高通骁龙888芯片,它采用的第六代高通AI引擎,每秒可以提供高达26万亿次的AI算力,让针对图片甚至是视频的实时AI处理完全可以留在手机端进行。正是由于终端侧AI技术的进步,我们现在得以进入到计算摄影时代。
2
超分辨率技术
AI计算在哪些方面可以改进传统影像呢?首先我们来说说超分辨率技术。
我们经常在电影中看到这样的情景:警察在监控屏幕上看到一个模糊的人脸,然后按了几个按钮,人脸就变得清晰了,这就是图像超分技术,也就是用一张低分辨率(LR)的照片,获得一张高分辨率(HR)的照片。有时候处理的效果会让人十分震惊:
这是怎么做到的呢?其实就是一个字:猜!
举个例子:如果你看到下面这幅图,你就很容易猜测出来这是一个足球。
于是你就可以通过你已经知道的足球的样子,把这张图片的细节补充上去,让它变得更加清晰,这就是超分。
随着近年来人工智能和深度学习的突破,2014年,香港大学的董超等人提出了基于卷积神经网络的超分方法,称为SRCNN。现在许多的超分算法,大都是在此基础上演化而来的。
董超
对于计算机来说,一张图片就是一个数字矩阵,SRCNN的方法就是利用一个信息比较少的数字矩阵,制造出一个信息比较多的数字矩阵来。大体的过程分为三个步骤:
1.图像特征提取:对低分辨率图片Y进行卷积、偏置、激活操作,从中提取出线条等微观特征。过程中需要一个卷积核
和偏置矩阵B1,再进行激活,计算表达式为:
2.非线性映射:模仿上一步,再次进行卷积、偏置和激活运算,提取出更加高级的图像特征。需要新的卷积核W2和偏置矩阵B2,运算得到表达式:
3. 重构:从低分辨率的图变为高分辨率的图,需要卷积核W3和偏置B3,计算表达式是:
(注:以上三个步骤都需要使用到卷积、激活等数学操作,如果想了解更多细节,欢迎搜索我之前讲过的有关卷积神经网络的节目。)
经历了一番操作,我们通过
六个参数,从一个低分辨率图像Y得到了高分辨率图像F(Y)。只要六个参数取的合适,这张高分辨率的图就能让图片看上去更加清晰。SRCNN原理简单,实际效果比较好,所以称为众多厂商偏爱的算法基础。
这六个参数又该如何调整呢?我们首先必须有许多的高清原图X和对应的低分辨率图Y,然后将低分辨率图Y代入刚才的神经网络获得一张超分图F(Y)。如果我们超分图F(Y)与原图X一致,就说明训练是成功的;如果不一致,就说明训练还没结束,我们需要调整参数。原图和超分图的差别用损失函数体现:
(用原图每个元素与超分后的每个元素作差,把它们的差求平方和,再除以训练所用的图片个数。这个损失函数越小,超分的质量就越好。)
通过反向传播算法,我们可以不断优化
这六个参数,这就完成了机器学习过程。随后,当你再拍摄图片时,我就可以利用已经训练好的模型进行推理,猜测出高清图像可能是什么样子了。关于损失函数、反向传播算法,我在之前
人工智能的节目中也都有详细的讲述。
通过调整参数,寻找损失函数最小的点
现在的手机能实现超大范围的变焦,很大程度上归功于AI算力支持下的超分功能,因为我们把镜头拉得越远,有效信息的光线就越小,噪点和抖动造成的模糊影响就越大。能在大范围内拍摄出清晰的照片,就是因为具有了实时的超分辨率功能,修正了这些噪点和模糊。远距离扫二维码时,坐在后排的同学希望用手机把老师在黑板上的板书拍下来时,如果没有超分算法可能都没法实现。
慧鲤超分效果图对比
慧鲤超分效果图对比
随着移动平台AI算力的不断提升,主流AI算法厂商也在不断演进超分的算法,算法模型更大,推理更强,实时性更好。处理一幅图片处理更好,只需要300-400ms。甚至于,许多手机厂商已经开始使用AI视频技术,这对于算力的要求将会显著提升。特别是在处理高分辨率视频(如4K、HDR),或者AR、VR交互领域,同时包含视频和声音处理时,对于平台的算力要求更是超过每秒10万亿次,甚至达到每秒15万亿次以上,这就对了AI芯片的处理能力提出了更高的要求。
3
超级夜景
在夜晚进行拍摄时,传统相机面临很多问题。比如,因为光线不足,噪点的影响非常明显;短曝光时,亮度不够,如果长曝光,又容易出现运动抖动而变得模糊。而且,夜晚有灯光时,亮的地方过曝,暗的地方还是看不清。
低曝光 图片来源:维基百科
高曝光 图片来源:维基百科
专业摄影师如何处理这个问题呢?他们会首先利用三脚架固定好相机防止抖动,然后利用长达数秒甚至十几秒的时间进行长曝光,再多次进行短曝光。随后把这些图片导入到photoshop进行后期处理。将过曝的地方去掉,太暗的地方去掉,再把多幅图片融合到一起,就形成了一张漂亮的夜景图。如果图片很复杂,这个后期处理的时间可能会很长。
现在,一切都不一样了。在手机端AI的加持下,手机摄像头可以自动完成多次长短曝光的拍摄,还能快速进行处理,如:
1. 人工智能降噪:按照超分算法,计算出哪些部位属于噪点,并且将这些噪点去掉。
2.高动态HDR:自动进行多次的长短曝光拍照,再利用算法将暗处提亮,过曝部分去掉,再通过人工智能算法,自动将这些照片结合起来。
整个过程只需要2~3秒钟的时间,相比于传统摄像师立三脚架、拍多多张、后期处理的时间大大缩减了。
高动态HDR效果下对的夜景 图片来源:维基百科
不仅如此,伴随着手机端AI计算能力的提升,一些厂商还开发了针对视频的夜景功能。比如极感科技,他们的视频超级夜景模式就可以实现2400*140030帧的实时计算,1秒钟要处理30张超级夜景照片,这是传统单反相机无法做到的,必须依赖高性能的人工智能芯片和优秀的算法。
极感科技的视频夜景效果
还有头部算法厂商虹软,他们开发的夜景算法可以在黑暗的环境下对人像进行精确识别,实现夜景下人像的美颜和背景虚化功能。
4
背景虚化
传统单反相机配合大光圈,就能实现背景虚化的效果。人工智能是怎么做的呢?它首先需要通过一些方法区分前景和背景,这就需要了解照片的深度信息。这里的处理方法主要又两种:
传统的做法是双目摄像头。我们知道:人的两只眼睛看到的景象不完全相同,当我们观察同一个物体的时候,两个眼睛的视线方向不完全一致,于是就能形成远近不同的感觉。同样,手机因为有多个摄像头,也可以利用双目原理计算出物体的远近,区分前景和背景。区分了前景和背景后,就能利用软件的方法将背景进行虚化。
双目摄像头
不过,这种处理方式也面临几个问题。如果物体距离较远,深度信息就会不足。开一个摄像头就需要几百毫安的电流,开两个摄像头功率就更大,如果仅仅是拍摄照片还好,如果是拍摄视频,希望实现深度信息的实时计算,功耗过大,可能会让手机发热。
为了解决这些困难,极感等公司依赖于人工智能方法,设计出了单目也能进行深度计算的方法。具体的过程是:
❶ 利用软件搭建3D场景,这个3D场景是虚拟的。
❷ 从不同角度导出3D场景的2D图片,并将3D场景和2D图片输入神经网络。
❸ 利用卷积神经网络的拟合能力,学习不同种类,不同场景的深度和场景对应关系,计算图像的深度信息。
这样一来,手机就能实现人像和背景的区分,而且还能实现人像的精确分割。此后我们就可以对前景和背景进行分别处理。例如背景虚化、魔法换天就是针对背景的,魔法消除就是针对前景的。甚至还可以把背景变成黑白的,前景变成彩色的,形成《辛德勒的名单》的效果,总之只有你想不到,没有它做不到。
甚至于,这个算法还可以实时进行——在摄影过程中,实时对画面中的人进行追踪,实现前景背景的分割,以及在运动模式下自动追踪等。
总之,现在的新一代手机拍照,几乎都是AI计算摄影,它不光能够模拟出单反的效果,更能在一瞬间完成许多需要专业摄影师很长时间完成的工作,满足用户各种各样的需求。要实现这些功能,需要优秀的算法、算力和大量数据的支持。我们看到的是热销的旗舰手机,比如小米11、VIVOX60、OPPOfindX3、强大的拍照功能,看不到的是实现这些功能所需要的算法,以及这些骁龙888手机上所集成的第六代高通AI引擎,高达每秒26万亿次的AI运算速度,让各种有趣的摄像功能成为可能。
你还发现了手机上有哪些神奇的AI功能呢?欢迎在评论区中留言。以后找机会我再和大家聊聊手机上有趣的AI应用。
继续阅读
阅读原文