计算机视觉是一门研究如何对数字图像或视频进行高层理解的交叉学科。
据说人一生中70%的信息都是通过看获得的,很容易联想到,对于致力于和人类一样拥有智能的AI也很看重看得能力。实际上,计算机视觉的技术在生活的方方面面都有着应用,如指纹识别、车牌识别、人脸识别、视频监控、自动驾驶、增强现实等。
视觉任务处理对人类来说非常简单,但是对计算机来说确很复杂。对计算机来说,图像是有像素点组成的,每个像素点的亮度、颜色、距离等信息表示为一个或多个数字。有一些比较特殊的设备,甚至还有深度的信息。对人类而言,这些庞杂的数据远比图像要复杂得多。
尽管计算机视觉任务繁多,但大多数任务本质上可以建模为广义的函数拟合问题。即对任意输入图像X,需要学习一个以Θ为参数的函数F,使得y=F0(X)。其中y可以分为两大类,一类是类别标签,一类是连续便令或者向量矩阵。
对于任何一个复杂的任务,分而治之都是很常见的思路习惯,对于一个典型的视觉任务,一般有下面四个步骤:
图像预处理
特征设计与提取
特征汇聚或变换
分类器/回归器
在特征设计和提取这个环节,基本是采用一种专家知识驱动的方法,即研究者自己或通过咨询特定领域专家,根据对所研究问题或目标的理解,设计某种流程来提取专家觉得好的特征。目前绝大多数的人工设计的特征有两大类,全局特征和局部特征。前者通常是图像中全部像素或不同区域像素中所蕴涵的信息,后者则通常只从一个局部区域内的少量像素中提取信息。
然而在步骤二这个环节,提取的人工设计特征往往非常多,这就给后续的计算带来了困难。因此,在把它们输入给分类器或者回归器之前,一般还需要对这些特征进行进一步处理。常用的方法有特征汇聚或者特征变换。
到了分类器的环节,其实没有和别的机器学习方法有太大的区别,还是最近邻分类器、决策树、随机森林、支持向量机等方法。
除此之外,基于深度学习的计算机视觉应用也比较多,神经网络之类的方法在计算机视觉上的应用还是比较广的。
比如现在应用比较广的人脸识别技术,仅从步骤上来说,也就是简单的几个步骤:
第一步,人脸检测。检测画面中是否有人脸,如果有,给出人脸的位置和大小
第二步,特征点定位。在人脸检测给出的矩形框内进一步找到眼睛中心、笔尖和嘴角等关键特征点,以便进行后续的预处理操作。
第三步,面部子图预处理。也就是对人脸子图进行归一化处理,把关键点进行对齐,消除光线亮度等问题的影响。
第四步,特征提取。从人脸子图中提取出可以区分不同人的特征。
第五步,特征比对。也就是对两幅图所提取的特征进行距离或者相似度的计算。
第六步,决策。简单来说就是对前面的相似度或者距离进行阈值化,在与之内的判定为同一人,不在阈值内的判定为不同人。
尽管深度学习给计算机视觉带来了很多革命性的改变,但是目前的计算机视觉领域还是一个以来大规模、强监督的数据路线上。从这个角度上来说,计算机视觉可能更像一个劳动密集型的产业,大量依赖于数据标注。