如今和人工智能联系最紧密的名词,可能是“深度学习”或者是“神经网络”。而它们最知名的应用领域:“人脸识别”和“无人驾驶”,都属于计算机视觉(CV)的范畴。深度学习这一波的爆发点,Imagenet比赛和Alpha Go,也都在CV范围内。可以说,正是计算机视觉任务上的巨大成功,才造就了这一波人工智能浪潮,并且AI目前最成熟的落地方向也仍是计算机视觉。
但与数字图像相关的学科,并不只有CV,还有“计算机图形学”(CG)与“数字图像处理”(DIP)。它们与计算机视觉的区别,可以用输入输出的不同来简单划分——输入图像、输出知识的是计算机视觉,输入图像、输出图像的是数字图像处理,输入知识、输出图像的是计算机图形学。理所当然的,深度学习既然能在计算机视觉上取得巨大成功,也自然应该为CG和DIP领域带来革命。之所以这两个名词与深度学习的结合不如CV频繁,是因为此前它们的需求不如计算机视觉来得迫切,并且难度也要更大。更形象的说:就如同人出生后,总得先看清、理解周围的世界,再来改造、创建属于自己的世界一样;人工智能在数字图像上的发展,也是遵循理解、改造、创作的步骤。
近两年来,有关深度学习在CG和DIP方向上的大众新闻其实已越来越频繁了——换脸应用Deep fake、ZAO,脱衣应用Deep nude,人脸修复应用“你我当年”;以及更偏学术一点的——人脸生成Style GAN,图像生成Big GAN,图像风格转换Cycle GAN...这其中,完全是无中生有的Style GAN和Big GAN属于计算机图形学领域,剩下的则属于数字图像处理。但从名字就可以感受到,它们都使用了深度学习技术,并且大都与“GAN”相关。那么,深度神经网络,到底是如何来改造、甚至创作图像的呢?这个GAN又是何方神圣,它如何来帮助神经网络更好的达成上述目标?
你可能已听说过,这波深度学习爆发的基础是三驾马车:“网络”、“算力”和“数据”。算力方面,虽然“摩尔定律”似乎将走到尽头,但AI摩尔定律才刚刚开始;近年来GPU性能以及专用AI芯片的性能飞速发展,使得比CV有更高算力需求的CG和DIP深度学习应用得以继续发展。数据方面,首先数据采集端随着智能手机的发展极速进步,一些旗舰手机的摄像头分辨率高的吓人;其次存储和传播能力也在同步发展,使得高清图片和视频的播放得以被保障,需求也同时持续增长;所以,海量的高清图片和视频得以喂饱胃口比CV更大的CG和DIP。最后,在网络方面,CV领域带到的神经网络进步,更加上GAN的发展,如同CV中的Resnet一般,彻底带动了深度学习在CG和DIP上的大爆发。
接下来让我们专注于数字图像处理进行更细致的讨论。数字图像处理的需求一般有:图像分辨率提升(超分辨率)、图像修复、图像主观效果提升(图像增强)、图像编解码等。如果从信息论的角度,又可分为:无效信息的去除、有效信息的聚合、信息的变换。所谓图像的信息量,可以先简单理解为保存成jpg格式后的图像文件大小。两张同等分辨率的图片,一张纯色图片的jpg文件大小会比一张有复杂纹理的jpg文件小的多,因为其所表示的信息量也小的多。
具体的,对于提升图像分辨率的任务来说,需要增加更多信息。在深度学习方法下,这些额外信息由训练好的神经网络来提供。更具体的,由神经网络里以一定结构组织起来的网络参数(权值)来提供。而这些网络参数所蕴含的信息又从哪来呢?从训练集中来。这些训练集由成千上万的高/低分辨率图像对所组成,网络所要学习的,就是低分辨率图像到高分辨率图像之间的映射关系。更细致的,处理图像的网络一般为卷积神经网络,而卷积运算只是一小块图像到一个像素点的映射。在卷积神经网络不是特别深时,对于输出图像中的一个像素点,只有部分输入图像上的像素点能对它产生影响。这部分输入图像的范围可以被称为此网络的“感受野”,即感受的视野,这是卷积神经网络中的一个核心概念。那么网络的感受野越大越好吗?并不是。感受野越大,网络需要处理的映射也越多,因而也需要更大的数据量、更多的网络参数。可对单纯的两倍超分辨率任务来说,一个像素点的取值绝大部分情况下仅仅取决于它周围一小块像素,过大的感受野在加大训练难度的同时并不能提升网络性能。
对网络来说,感受野和网络参数量的大小决定了它能存储多少信息,网络结构的设计决定了它存储信息的效率有多高,而喂给网络的训练集,则决定了网络有机会学习到哪些信息。对于图像超分/修复/增强任务所需的图像对,要么在采集图像就一同去获取,要么就在一种图像的基础上,通过其它数字图像处理方法来造出另一种。一同采集听起来是最好的,但这又涉及到几个问题——采集的成本高,采集的图像对难以在同一时空拍摄;要么在同一位置不同时间拍,要么在同一时间不同位置拍,不同的时间拍可能有光线变化,不同的空间拍会带来校正问题;而采集的高成本,又往往导致采集的数量有限,从而数据集的泛化性也有限。因而,通过一种图像造另一种是更常见的手段。以图像增强来说,网络的任务是从低清图映射到高清图,如果先用高清来造低清,那么网络学习的其实就是这个造低清方法的逆变换;如果先是从低清造高清,网络的训练目标则是模拟此造高清的方式。上述方法中最常用的还是由高清来造低清,因而怎样造的距实际低清图像分布尽量接近,成了DIP深度学习中的一个核心课题。
网络和数据问题解决了,然而还有一个CV已经解决的大坑等着深度学习DIP与CG——数据中输入输出映射分布的不均衡。在CV任务中,比如图像分类,训练集一定会被尽量保证每一类别的数据量大概是相等的。然而在DIP与CG中,这一点却往往缺失了——没有保证输出空间中每一种像素值出现的概率相近。并且对输入空间而言,在感受野比较小时,输入数据中容易出现大量重复,这些相同的输入可能对应着不同的输出:比如输入为10,输出有时为10、有时为20,那么网络会学习到哪一种?在使用L1损失即曼哈顿距离时,网络会认为输出可以是10-20之间的任一个数;在使用L2损失即欧氏距离时,网络会认为10和20中间的15是最优输出。可实际上呢?也许输出要么应该在10附近,要么应该在20附近,13-17可能都是很不理想的结果。另一方面,在感受野比较大时,输入空间中的很大一部分都不能被训练数据cover到,那么网络就只能靠一些猜测了。怎么猜?假如输入10对应输出10,输入20对应输出20,那么输入15,网络很可能会猜输出就应该是15。但现实时,这附近的输出可能是高度离散的,输出应该要么在10附近,要么在20附近,输出15会是很差的结果。
由上诉讨论可以看到,无论感受野是大是小,在使用L1或L2损失来优化网络时,输出总会倾向于保持平滑。所以在主观感受上,输出图像往往显得锐度太低而缺乏纹理。要解决这个问题,需要从损失函数上入手。如果普通的距离损失函数太简单,那么也使用一个神经网络来计算损失如何?这样的思路就是“感知”损失,它确实能带来纹理的提升。进一步的,如果这个计算损失的网络也能训练会不会更好?这就是GAN了,即“对抗生成式网络”。计算损失的网络被称为“判别器”,它的训练目标与增强图像的“生成器”相反。但同时训练两个目标相反的网络产生了严重的不稳定性,训练很容易发生崩溃。为了解决这个问题,大量的GAN论文探讨如何对损失做进一步限制,又或者调节两个网络的学习速率或次数的比值,这其中做人脸生成的Style Gan可谓集大成者。
人脸生成属于CG范畴,是由一串随机数来生成人脸图像。而Style Gan可以做到生成多种多样的1024*1024分辨率高清人脸!它的成功,一方面依赖于七万张高质量的人脸训练集,一方面依赖网络、训练过程和损失函数的优化。网络上,它的每一层运算都会产生随机噪声,相当于大大增加了输入数据的范围,同时减少了输入的重复性;训练过程上,它沿用了Progressive Gan的渐进式训练,相当于逐步的增大输出空间,极大降低了训练难度;损失函数上,Style Gan沿用目前GAN中最流行的WGAN-GP损失来提升训练的稳定性。此外,由于对输入的随机数做了尺度上的解耦,因而Style Gan可以通过改变某一位置的随机数来实现指定尺度上的生成效果调整。
随着Style Gan在CG领域的巨大成功,与CG紧密相关的DIP也逐渐因此受益。在强大的算力、高质量的数据集、可靠全面的造低清方式、精心控制的输入输出空间、越来越稳定的GAN的加持下,深度学习在CG与DIP领域的天地将越来越广阔,并和CV领域形成更紧密的互哺关系。最终对深度学习而言,CV、CG、DIP三者的界限也将越来越模糊(其实现在已经比较模糊了)。Style Gan训练好的网络参数里,存的是上万张高清人脸信息,而未来某一天的超级视觉模型,也许它的网络参数里表征的将是可见光频率的整个三维宏观世界(要去真正理解底层物理规律那就是另一回事了...)。对于这样一个神经网络而言,它还有什么计算机视觉、计算机图形学、数字图像处理任务是不能胜任的呢?
【后记:
昨天在知乎上看到一个问题:“5 年前、10 年前的 OI「圈子」是什么样的...”,不禁一阵感概。我曾处在的是12、13年前的OI圈子,那说长不长、说短不短的两年未曾想成了人生中的一个重要锚点。以此为契机,大学本科又接触了一阵图像处理,到了大三就开始去忙别的。兜兜转转了好一阵,读研时看了美剧《硅谷》,第一次知道视频编码这回事,后来又得知虽从未蒙面但仿佛邻班学神的楼教主、陈天奇、cdq都在机器学习/深度学习相关领域。终于在去年,仿佛宿命般,我也在视频云方向上开始了深度学习相关工作。一年来收获与经历太多,很多次想稍作小结。这次趁着半年来的人脸修复终有阶段性成果,总算有了足够的动力与时间来完成此作。仅以此文,纪念曾惊叹于算法之美,而充满激情捣鼓DP、线段树、图像处理、自学机器学习以及看《硅谷》的那些日子;也纪念这一年来,在AR处理、人脸修复项目组中,和你们一起看论文、调bug、下馆子,一起在一次次打击中摸索着前进的那些时光...】