文 / 阿里淘系 - 白罗
什么是计算机视觉 (Computer Vision)?与计算机图形学 (Computer Graphics)以及图像处理(Image Process)有什么区别?
用一句话来概括,计算机视觉(CV)是一门让计算机从图像中提取有用信息并加以分析的科学。利用CV提取出的信息后续可以用于辅助一些决策或者任务,比如医学图像分析、工程测量、自动驾驶、机器人学等等。
两个时常会被放在一起讨论具有混淆性的概念是计算机图形学(CG)与图像处理,它们之间的区别其实也是非常简单,CV和CG在其实是一个方向相反的过程:CV是计算机从图像中提炼有用的信息,而CG通过使用数学模型和计算机算法来生成图像。而图像处理的输入和产出都是图像,只不过产出的图像在某些特征上被强化或者提取出来了。(三者的流程图如下)
从上述定义我们也可以看出来,CV并不是类似谷歌街景, Google Glass, Pokeymon Go (AR), deep fake等一些听起来与之有所联系的应用所使用的核心技术(也许某一环节会用到CV,但不是核心技术)。而CV真正高强度应用的场景是无人驾驶, OCR, 安检时对包裹的智能筛查, 医学成像分析, 机器人视觉, 军事上通过图像对目标的筛查定位等等需要计算机分析图像以提炼信息的场景。
计算机视觉与人眼的对比人眼的视觉简单来说是一种对三维世界的二维投影(受到视角变换的影响),可见的波长在400-800纳米之间,色域可以被RGB系统概括。而三分之一的人脑都与人眼中的视网膜、视神经相连或间接相关。
计算机视觉的成像仪器并不像人眼那么单一,相比于人眼的可见光频域,计算机视觉甚至不局限于电磁波的领域(例如B超成像)。关于成像的维度,传统相机为二维图像,雷达等为2.5D图像(多出的半个维度是距离),核磁共振等为3D图像(由大量二维图像在Z轴上叠加形成第三个维度)。
计算机视觉链路概览如果我们尝试对CV的流程分步骤进行一个抽象化的总结,可以得到两条非常经典的链路。在传统的CV手段中,我们很少会直接将二维图像(甚至更高维度的图像)展平到一维,然后直接输入到传统的机器学习模型(比如决策树家族、SVM、KNN、MLP等等)当中,通常我们会对原始图像做一次特征提取,将一些更数据化的特征作为机器学习的输入,让模型更准确高效地运转。而近年来,深度学习的崛起很大程度上颠覆了人们对这一经验规律的认知,CNN及其衍生模型(ResNet等)、GAN、已经两年年火热的自监督式学习(如对比学习)在很多情景下已经可以取代手工特征提取,一个非常经典的例子,过去的围棋AI中,工程师会提取每块棋的气、双方所围空的位置大小等等信息作为模型的输入,但是随着AlphaGo系列的横空出世,手工提取特征被证明在这一情景下远不如让深度学习模型的卷积及池化层自行提取来得准确高效。
深度学习是否只是炒作下昙花一现的泡沫幻影?在过去几年中,很多怀着对深度学习憧憬的工程师在大热潮投入了这个领域,但可能到现在发现它并没有如预期般的那样神乎其技。冷静下来的人们开始反思,深度学习是否被过度炒作了?要阐述这个问题,可以从Gartner曲线 (Gartner Hype Cycle)谈起。纵观一项技术的生命周期,往往可以被分为五个阶段:1. 初创的攀升期 2. 泡沫膨胀的巅峰期 3. 泡沫幻灭的低谷期 4. 迈向成熟的光明期 5. 在生产中落地的高原期。
下面几张图为Gartner官方对近期一些比较火热的前沿技术的统计结果。如图所示,在近五年内,深度学习(箭头标出的)正在从2016年的期待值的泡沫巅峰逐步走向幻灭低谷期,可以预期的是,深度学习接下来会伴随着质疑和悲观预期经历很长一段时间的蛰伏期,直至迈向成熟。
图像数字化空间采样、量化、与连通性策略是将图像做数字化表达过程中涉及到的重要概念。**空间采样:**描述单位空间内的样本数量。
量化: 将每个像素点在色彩通道内的亮度按照区间从连续分布转化为离散分布的过程。
四连通与八连通: 像素点计算领域的划分标准。四连通即是像素四条边相连的区域,八连通比四连通多四个角。
距离:欧式距离 (Euclidean) - 两点之间的直线距离曼哈顿距离 (City Block) - 沿着方格线行走的两点间距(即仅水平和竖直四个方向移动)切比雪夫距离距离 (Chess Board) - 沿着方格线及对角行走的两点间距(即水平、竖直、以及对角八个方向移动)
区域连通性算法一张图片中往往有前景(foreground)和背景(background),在我们判断图中哪些像素点连成一个区块之前,我们需要确定前景和背景的连通性策略:通常有背景四连通、前景八连通与背景八连通、前景四连通这两种。为什么不采用背景前景都是四连通或者八连通的策略呢?如下图所示:
背景如果和前景保持相同的连通性策略会导致上图中前景和背景完全连通或者完全破碎的极端局面。
递归算法 (Recursive Algorithm)作为一种计算像素连通区域的基础思路,递归法的策略非常简单:遍历图像中所有的像素点,遇到未标记区域编号的点即递归用当前的区域编号标记与之相连的所有像素点。
顺序标记法 (Sequential Method)尽管递归策略能够解决问题,但是对资源损耗过大,这里有一种进阶的方法可以运用与像素区域连通性问题:
遍历图像中所有的点,如果与之相邻的点已被标记编号,则对改像素点做相同的赋值。(对于一个四连通前景有两个已经遍历的相邻点,对于一个八连通前景有四个已经遍历的相邻点)如果没有相邻点被标记编号,则在之前的编号上加一。这里存在一种特殊情况,图中红色箭头指向的像素同时存在多个编号不等的相邻点,此时我们需要标记编号2和3是等价的。第二次遍历图像中所有的点,合并所有先前被标记为等价的编号。
淘系前端-F-x-Team 开通微博 啦!(微博登录后可见) 除文章外还有