计算机视觉
发布日期:2019-05-21
        

(一)相关概念

计算机视觉是使用计算机及相关设备对生物视觉的一种模拟。它的主要任务就是通过对采集的图片或视频进行处理以获得相应场景的三维信息,就像人类和许多其他类生物每天所做的那样。

计算机视觉是一门关于如何运用照相机和计算机来获取我们所需的,被拍摄对象的数据与信息的学问。形象地说,就是给计算机安装上眼睛(照相机)和大脑(算法),让计算机能够感知环境。我们中国人的成语"眼见为实"和西方人常说的"One picture is worth ten thousand words"表达了视觉对人类的重要性。不难想象,具有视觉的机器的应用前景能有多么地宽广。

计算机视觉既是工程领域,也是科学领域中的一个富有挑战性重要研究领域。计算机视觉是一门综合性的学科,它已经吸引了来自各个学科的研究者参加到对它的研究之中。其中包括计算机科学和工程、信号处理、物理学、应用数学和统计学,神经生理学和认知科学等。视觉是各个应用领域,如制造业、检验、文档分析、医疗诊断,和军事等领域中各种智能/自主系统中不可分割的一部分。由于它的重要性,一些先进国家,例如美国把对计算机视觉的研究列为对经济和科学有广泛影响的科学和工程中的重大基本问题,即所谓的重大挑战(grand challenge)。计算机视觉的挑战是要为计算机和机器人开发具有与人类水平相当的视觉能力。机器视觉需要图象信号,纹理和颜色建模,几何处理和推理,以及物体建模。一个有能力的视觉系统应该把所有这些处理都紧密地集成在一起。作为一门学科,计算机视觉开始于60年代初,但在计算机视觉的基本研究中的许多重要进展是在80年代取得的。计算机视觉与人类视觉密切相关,对人类视觉有一个正确的认识将对计算机视觉的研究非常有益。为此我们将先介绍人类视觉。

(二)原理

计算机视觉就是用各种成象系统代替视觉器官作为输入敏感手段,由计算机来代替大脑完成处理和解释。计算机视觉的最终研究目标就是使计算机能象人那样通过视觉观察和理解世界,具有自主适应环境的能力。要经过长期的努力才能达到的目标。因此,在实现最终目标以前,人们努力的中期目标是建立一种视觉系统,这个系统能依据视觉敏感和反馈的某种程度的智能完成一定的任务。例如,计算机视觉的一个重要应用领域就是自主车辆的视觉导航,还没有条件实现象人那样能识别和理解任何环境,完成自主导航的系统。因此,人们努力的研究目标是实现在高速公路上具有道路跟踪能力,可避免与前方车辆碰撞的视觉辅助驾驶系统。这里要指出的一点是在计算机视觉系统中计算机起代替人脑的作用,但并不意味着计算机必须按人类视觉的方法完成视觉信息的处理。计算机视觉可以而且应该根据计算机系统的特点来进行视觉信息的处理。但是,人类视觉系统是迄今为止,人们所知道的功能最强大和完善的视觉系统。对人类视觉处理机制的研究将给计算机视觉的研究提供启发和指导。因此,用计算机信息处理的方法研究人类视觉的机理,建立人类视觉的计算理论,也是一个非常重要和信人感兴趣的研究领域。这方面的研究被称为计算视觉(Computational Vision)。计算视觉可被认为是计算机视觉中的一个研究领域。

(三)相关技术

1.图像分类技术

计算机视觉研究人员提出了一种基于数据驱动的方法。该算法并不是直接在代码中指定每个感兴趣的图像类别,而是为计算机每个图像类别都提供许多示例,然后设计一个学习算法,查看这些示例并学习每个类别的视觉外观。也就是说,首先积累一个带有标记图像的训练集,然后将其输入到计算机中,由计算机来处理这些数据。

因此,可以按照下面的步骤来分解:

输入是由 N 个图像组成的训练集,共有 K 个类别,每个图像都被标记为其中一个类别。然后,使用该训练集训练一个分类器,来学习每个类别的外部特征。最后,预测一组新图像的类标签,评估分类器的性能,我们用分类器预测的类别标签与其真实的类别标签进行比较。

目前较为流行的图像分类架构是卷积神经网络(CNN——将图像送入网络,然后网络对图像数据进行分类。卷积神经网络从输入扫描仪开始,该输入扫描仪也不会一次性解析所有的训练数据。比如输入一个大小为 100*100 的图像,你也不需要一个有 10,000 个节点的网络层。相反,你只需要创建一个大小为 10 *10 的扫描输入层,扫描图像的前 10*10 个像素。然后,扫描仪向右移动一个像素,再扫描下一个 10 *10 的像素,这就是滑动窗口。现在,大部分图像分类技术都是在 ImageNet 数据集上训练的, ImageNet 数据集中包含了约 120 万张高分辨率训练图像。测试图像没有初始注释(即没有分割或标签),并且算法必须产生标签来指定图像中存在哪些对象。

现存的很多计算机视觉算法,都是被来自牛津、 INRIA XRCE 等顶级的计算机视觉团队在 ImageNet 数据集上实现的。通常来说,计算机视觉系统使用复杂的多级管道,并且,早期阶段的算法都是通过优化几个参数来手动微调的。第一届 ImageNet 竞赛的获奖者是 Alex KrizhevskyNIPS 2012) ,他在 Yann LeCun 开创的神经网络类型基础上,设计了一个深度卷积神经网络。该网络架构除了一些最大池化层外,还包含 7 个隐藏层,前几层是卷积层,最后两层是全连接层。在每个隐藏层内,激活函数为线性的,要比逻辑单元的训练速度更快、性能更好。除此之外,当附近的单元有更强的活动时,它还使用竞争性标准化来压制隐藏活动,这有助于强度的变化。

就硬件要求而言, Alex 2 Nvidia GTX 580 GPU (速度超过 1000 个快速的小内核)上实现了非常高效的卷积网络。 GPU 非常适合矩阵间的乘法且有非常高的内存带宽。这使他能在一周内完成训练,并在测试时快速的从 10 个块中组合出结果。如果我们能够以足够快的速度传输状态,就可以将网络分布在多个内核上。随着内核越来越便宜,数据集越来越大,大型神经网络的速度要比老式计算机视觉系统更快。在这之后,已经有很多种使用卷积神经网络作为核心,并取得优秀成果的模型,如 ZFNet2013),GoogLeNet2014), VGGNet2014), RESNET2015),DenseNet2016)等。

2.对象检测技术

识别图像中的对象这一任务,通常会涉及到为各个对象输出边界框和标签。这不同于分类/定位任务——对很多对象进行分类和定位,而不仅仅是对个主体对象进行分类和定位。在对象检测中,你只有 2 个对象分类类别,即对象边界框和非对象边界框。例如,在汽车检测中,你必须使用边界框检测所给定图像中的所有汽车。

如果使用图像分类和定位图像这样的滑动窗口技术,我们则需要将卷积神经网络应用于图像上的很多不同物体上。由于卷积神经网络会将图像中的每个物体识别为对象或背景,因此我们需要在大量的位置和规模上使用卷积神经网络,但是这需要很大的计算量!

为了解决这一问题,神经网络研究人员建议使用区域(region)这一概念,这样我们就会找到可能包含对象的斑点图像区域,这样运行速度就会大大提高。第一种模型是基于区域的卷积神经网络( R-CNN ),其算法原理如下:

1)在 R-CNN 中,首先使用选择性搜索算法扫描输入图像,寻找其中的可能对象,从而生成大约 2,000 个区域建议;

2)然后,在这些区域建议上运行一个 卷积神网络;

3)最后,将每个卷积神经网络的输出传给支持向量机( SVM ),使用一个线性回归收紧对象的边界框。

实质上,我们将对象检测转换为一个图像分类问题。但是也存在这些问题:训练速度慢,需要大量的磁盘空间,推理速度也很慢。

R-CNN 的第一个升级版本是 Fast R-CNN,通过使用了 2 次增强,大大提了检测速度:

在建议区域之前进行特征提取,因此在整幅图像上只能运行一次卷积神经网络;

用一个 softmax 层代替支持向量机,对用于预测的神经网络进行扩展,而不是创建一个新的模型。

Fast R-CNN 的运行速度要比 R-CNN 快的多,因为在一幅图像上它只能训练一个 CNN 。 但是,择性搜索算法生成区域提议仍然要花费大量时间。该算法用一个快速神经网络代替了运算速度很慢的选择性搜索算法:通过插入区域提议网络( RPN ),来预测来自特征的建议。 RPN 决定查看哪里,这样可以减少整个推理过程的计算量。RPN 快速且高效地扫描每一个位置,来评估在给定的区域内是否需要作进一步处理,其实现方式如下:通过输出 k 个边界框建议,每个边界框建议都有 2 个值——代表每个位置包含目标对象和不包含目标对象的概率。

一旦我们有了区域建议,就直接将它们送入 Fast R-CNN 。并且,我们还添加了一个池化层、一些全连接层、一个 softmax 分类层以及一个边界框回归器。

总之,Faster R-CNN 的速度和准确度更高。值得注意的是,虽然以后的模型在提高检测速度方面做了很多工作,但很少有模型能够大幅度的超越 Faster R-CNN 。换句话说, Faster R-CNN 可能不是最简单或最快速的目标检测方法,但仍然是性能最好的方法之一。

近年来,主要的目标检测算法已经转向更快、更高效的检测系统。这种趋势在 You Only Look OnceYOLO),Single Shot MultiBox DetectorSSD)和基于区域的全卷积网络( R-FCN )算法中尤为明显,这三种算法转向在整个图像上共享计算。因此,这三种算法和上述的3种造价较高的R-CNN 技术有所不同。

3.目标跟踪技术

目标跟踪,是指在特定场景跟踪某一个或多个特定感兴趣对象的过程。传统的应用就是视频和真实世界的交互,在检测到初始对象之后进行观察。现在,目标跟踪在无人驾驶领域也很重要,例如 Uber 和特斯拉等公司的无人驾驶。

根据观察模型,目标跟踪算法可分成 2 类:生成算法和判别算法。生成算法使用生成模型来描述表观特征,并将重建误差最小化来搜索目标,如主成分分析算法( PCA );判别算法用来区分物体和背景,其性能更稳健,并逐渐成为跟踪对象的主要手段(判别算法也称为 Tracking-by-Detection ,深度学习也属于这一范畴)。

为了通过检测实现跟踪,我们检测所有帧的候选对象,并使用深度学习从候选对象中识别想要的对象。有两种可以使用的基本网络模型:堆叠自动编码器( SAE )和卷积神经网络( CNN )。

目前,最流行的使用 SAE 进行目标跟踪的网络是 Deep Learning TrackerDLT),它使用了离线预训练和在线微调。其过程如下:

离线无监督预训练使用大规模自然图像数据集获得通用的目标对象表示,对堆叠去噪自动编码器进行预训练。堆叠去噪自动编码器在输入图像中添加噪声并重构原始图像,可以获得更强大的特征表述能力。

将预训练网络的编码部分与分类器合并得到分类网络,然后使用从初始帧中获得的正负样本对网络进行微调,来区分当前的对象和背景。 DLT 使用粒子滤波作为意向模型(motion model),生成当前帧的候选块。分类网络输出这些块的概率值,即分类的置信度,然后选择置信度最高的块作为对象。

在模型更新中, DLT 使用有限阈值。

鉴于 CNN 在图像分类和目标检测方面的优势,它已成为计算机视觉和视觉跟踪的主流深度模型。一般来说,大规模的卷积神经网络既可以作为分类器和跟踪器来训练。具有代表性的基于卷积神经网络的跟踪算法有全卷积网络跟踪器( FCNT )和多域卷积神经网络( MD Net )。

FCNT 充分分析并利用了 VGG 模型中的特征映射,这是一种预先训练好的 ImageNet 数据集,并有如下效果:

l  卷积神经网络特征映射可用于定位和跟踪。

l  对于从背景中区分特定对象这一任务来说,很多卷积神经网络特征映射是噪音或不相关的。

l  较高层捕获对象类别的语义概念,而较低层编码更多的具有区性的特征,来捕获类别内的变形。

 

因此, FCNT 设计了特征选择网络,在 VGG 网络的卷积 4-3 和卷积 5-3 层上选择最相关的特征映射。 然后为避免噪音的过拟合, FCNT 还为这两个层的选择特征映射单独设计了两个额外的通道(即 SNet GNet ): GNet 捕获对象的类别信息; SNet 将该对象从具有相似外观的背景中区分出来。

这两个网络的运作流程如下:都使用第一帧中给定的边界框进行初始化,以获取对象的映射。而对于新的帧,对其进行剪切并传输最后一帧中的感兴趣区域,该感兴趣区域是以目标对象为中心。最后,通过 SNet GNet ,分类器得到两个预测热映射,而跟踪器根据是否存在干扰信息,来决定使用哪张热映射生成的跟踪结果。

FCNT 的思路不同, MD Net 使用视频的所有序列来跟踪对象的移动。上述网络使用不相关的图像数据来减少跟踪数据的训练需求,并且这种想法与跟踪有一些偏差。该视频中的一个类的对象可以是另一个视频中的背景,因此, MD Net 提出了多域这一概念,它能够在每个域中独立的区分对象和背景,而一个域表示一组包含相同类型对象的视频。

近年来,深度学习研究人员尝试使用了不同的方法来适应视觉跟踪任务的特征,并且已经探索了很多方法:

l  应用到诸如循环神经网络( RNN )和深度信念网络(DBN )等其他网络模型;

l  设计网络结构来适应视频处理和端到端学习,优化流程、结构和参数;

l  或者将深度学习与传统的计算机视觉或其他领域的方法(如语言处理和语音识别)相结合。

 

4.语义分割技术

计算机视觉的核心是分割,它将整个图像分成一个个像素组,然后对其进行标记和分类。特别地,语义分割试图在语义上理解图像中每个像素的角色(比如,识别它是汽车、摩托车还是其他的类别)。如上图所示,除了识别人、道路、汽车、树木等之外,我们还必须确定每个物体的边界。因此,与分类不同,我们需要用模型对密集的像素进行预测。

与其他计算机视觉任务一样,卷积神经网络在分割任务上取得了巨大成功。最流行的原始方法之一是通过滑动窗口进行块分类,利用每个像素周围的图像块,对每个像素分别进行分类。但是其计算效率非常低,因为我们不能在重叠块之间重用共享特征。

解决方案就是加州大学伯克利分校提出的全卷积网络( FCN ),它提出了端到端的卷积神经网络体系结构,在没有任何全连接层的情况下进行密集预测。

这种方法允许针对任何尺寸的图像生成分割映射,并且比块分类算法快得多,几乎后续所有的语义分割算法都采用了这种范式。目前的语义分割研究都依赖于完全卷积网络,如空洞卷积 ( Dilated Convolutions ),DeepLab RefineNet

5.实例分割技术

除了语义分割之外,实例分割将不同类型的实例进行分类,比如用 5 种不同颜色来标记 5 辆汽车。分类任务通常来说就是识别出包含单个对象的图像是什么,但在分割实例时,我们需要执行更复杂的任务。我们会看到多个重叠物体和不同背景的复杂景象,我们不仅需要将这些不同的对象进行分类,而且还要确定对象的边界、差异和彼此之间的关系!

到目前为止,我们已经看到了如何以多种有趣的方式使用卷积神经网络的特征,通过边界框有效定位图像中的不同对象。对每个对象的精确像素进行定位,而不仅仅是用边界框进行定位,Facebook AI 则使用了 Mask R-CNN 架构对实例分割问题进行了探索。Mask R-CNN 通过向 Faster R-CNN 添加一个分支来进行像素级分割,该分支输出一个二进制掩码,该掩码表示给定像素是否为目标对象的一部分:该分支是基于卷积神经网络特征映射的全卷积网络。将给定的卷积神经网络特征映射作为输入,输出为一个矩阵,其中像素属于该对象的所有位置用 1 表示,其他位置则用 0 表示,这就是二进制掩码。外,当在原始 Faster R-CNN 架构上运行且没有做任何修改时,感兴趣池化区域( RoIPool ) 选择的特征映射区域或原始图像的区域稍微错开。由于图像分割具有像素级特性,这与边界框不同,自然会导致结果不准确。 Mas R-CNN 通过调整 RoIPool 来解决这个问题,使用感兴趣区域对齐( Roialign )方法使其变的更精确。本质上, RoIlign 使用双线性插值来避免舍入误差,这会导致检测和分割不准确。一旦生成这些掩码, Mask R-CNN RoIAlign 与来自 Faster R-CNN 的分类和边界框相结合,以便进行精确的分割。

 

(四)应用

人类正在进入信息时代,计算机将越来越广泛地进入几乎所有领域。一方面是更多未经计算机专业训练的人也需要应用计算机,而另一方面是计算机的功能越来越强,使用方法越来越复杂。这就使人在进行交谈和通讯时的灵活性与在使用计算机时所要求的严格和死板之间产生了尖锐的矛盾。人可通过视觉和听觉,语言与外界交换信息,并且可用不同的方式表示相同的含义,而计算机却要求严格按照各种程序语言来编写程序,只有这样计算机才能运行。为使更多的人能使用复杂的计算机,必须改变过去的那种让人来适应计算机,来死记硬背计算机的使用规则的情况。而是反过来让计算机来适应人的习惯和要求,以人所习惯的方式与人进行信息交换,也就是让计算机具有视觉、听觉和说话等能力。这时计算机必须具有逻辑推理和决策的能力。具有上述能力的计算机就是智能计算机。

智能计算机不但使计算机更便于为人们所使用,同时如果用这样的计算机来控制各种自动化装置特别是智能机器人,就可以使这些自动化系统和智能机器人具有适应环境,和自主作出决策的能力。这就可以在各种场合取代人的繁重工作,或代替人到各种危险和恶劣环境中完成任务。

应用范围从任务,比如工业机器视觉系统,例如,检查瓶子上的生产线加速通过,研究为人工智能和计算机或机器人,可以理解他们周围的世界。计算机视觉和机器视觉领域有显著的重叠。计算机视觉涉及的被用于许多领域自动化图像分析的核心技术。机器视觉通常指的是结合自动图像分析与其他方法和技术,以提供自动检测和机器人指导在工业应用中的一个过程。在许多计算机视觉应用中,计算机被预编程,以解决特定的任务,但基于学习的方法现在正变得越来越普遍。计算机视觉应用的实例包括用于系统:

1)控制过程,比如,一个工业机器人 ;

2)导航,例如,通过自主汽车或移动机器人;

3)检测的事件,如,对视频监控和人数统计 ;

4)组织信息,例如,对于图像和图像序列的索引数据库;

5)造型对象或环境,如,医学图像分析系统或地形模型;

6)相互作用,例如,当输入到一个装置,用于计算机人的交互;

7)自动检测,例如,在制造业的应用程序。

其中最突出的应用领域是医疗计算机视觉和医学图像处理。这个区域的特征的信息从图像数据中提取用于使患者的医疗诊断的目的。通常,图像数据是在形式显微镜图像,X射线图像,血管造影图像,超声图像和断层图像。的信息,可以从这样的图像数据中提取的一个例子是检测的肿瘤,动脉粥样硬化或其他恶性变化。它也可以是器官的尺寸,血流量等。这种应用领域还支持通过提供新的信息,医学研究的测量例如,对脑的结构,或约医学治疗的质量。计算机视觉在医疗领域的应用还包括增强是由人类的解释,例如超声图像或X射线图像,以降低噪声的影响的图像。

第二个应用程序区域中的计算机视觉是在工业,有时也被称为机器视觉,在那里信息被提取为支撑的制造工序的目的。一个例子是质量控制,其中的信息或最终产品被以找到缺陷自动检测。另一个例子是,被拾取的位置和细节取向测量由机器人臂。机器视觉也被大量用于农业的过程,从散装材料,这个过程被称为去除不想要的东西,食物的光学分拣。

军事上的应用很可能是计算机视觉最大的地区之一。最明显的例子是探测敌方士兵或车辆和导弹制导。更先进的系统为导弹制导发送导弹的区域,而不是一个特定的目标,并且当导弹到达基于本地获取的图像数据的区域的目标做出选择。现代军事概念,如战场感知,意味着各种传感器,包括图像传感器,提供了丰富的有关作战的场景,可用于支持战略决策的信息。在这种情况下,数据的自动处理,用于减少复杂性和融合来自多个传感器的信息,以提高可靠性。

一个较新的应用领域是自主车,其中包括潜水,陆上车辆(带轮子,轿车或卡车的小机器人),高空作业车和无人机(UAV)。自主化水平,从完全独立的(无人)的车辆范围为汽车,其中基于计算机视觉的系统支持驱动程序或在不同情况下的试验。完全自主的汽车通常使用计算机视觉进行导航时,即知道它在哪里,或用于生产的环境(地图SLAM)和用于检测障碍物。它也可以被用于检测特定任务的特定事件,例如,一个UAV寻找森林火灾。支承系统的例子是障碍物警报系统中的汽车,以及用于飞行器的自主着陆系统。数家汽车制造商已经证明了系统的汽车自动驾驶,但该技术还没有达到一定的水平,就可以投放市场。有军事自主车型,从先进的导弹,无人机的侦察任务或导弹的制导充足的例子。太空探索已经正在使用计算机视觉,自主车比如,美国宇航局的火星探测漫游者和欧洲航天局的ExoMars火星漫游者。

其他应用领域包括:

1)支持视觉特效制作的电影和广播,例如,摄像头跟踪(运动匹配)。

2)监视。

(五)计算机视觉与图像处理等的异同

计算机视觉,图象处理,图像分析,机器人视觉和机器视觉是彼此紧密关联的学科。计算机视觉的研究对象主要是映射到单幅或多幅图像上的三维场景,例如三维场景的重建。计算机视觉的研究很大程度上针对图像的内容。

图象处理与图像分析的研究对象主要是二维图像,实现图像的转化,尤其针对像素级的操作,例如提高图像对比度,边缘提取,去噪声和几何变换如图像旋转。这一特征表明无论是图像处理还是图像分析其研究内容都和图像的具体内容无关。

机器视觉主要是指工业领域的视觉研究,例如自主机器人的视觉,用于检测和测量的视觉。这表明在这一领域通过软件硬件,图像感知与控制理论往往与图像处理得到紧密结合来实现高效的机器人控制或各种实时操作。

模式识别使用各种方法从信号中提取信息,主要运用统计学的理论。此领域的一个主要方向便是从图像数据中提取信息。

还有一个领域被称为成像技术。这一领域最初的研究内容主要是制作图像,但有时也涉及到图像分析和处理。例如,医学成像就包含大量的医学领域的图像分析。

(六)计算机视觉系统

计算机视觉系统的结构形式很大程度上依赖于其具体应用方向。有些是独立工作的,用于解决具体的测量或检测问题;也有些作为某个大型复杂系统的组成部分出现,比如和机械控制系统,数据库系统,人机接口设备协同工作。计算机视觉系统的具体实现方法同时也由其功能决定——是预先固定的抑或是在运行过程中自动学习调整。尽管如此,有些功能却几乎是每个计算机系统都需要具备的:

l  图像获取

一幅数字图像是由一个或多个图像感知器产生,这里的感知器可以是各种光敏摄像机,包括遥感设备,X射线断层摄影仪,雷达,超声波接收器等。取决于不同的感知器,产生的图片可以是普通的二维图像,三维图组或者一个图像序列。图片的像素值往往对应于光在一个或多个光谱段上的强度(灰度图或彩色图),但也可以是相关的各种物理数据,如声波,电磁波或核磁共振的深度,吸收度或反射度。

l  预处理

在对图像实施具体的计算机视觉方法来提取某种特定的信息前,一种或一些预处理往往被采用来使图像满足后继方法的要求。例如:二次取样保证图像坐标的正确;平滑去噪来滤除感知器引入的设备噪声;提高对比度来保证实现相关信息可以被检测到;调整尺度空间使图像结构适合局部应用。

l  特征提取

从图像中提取各种复杂度的特征。例如:线,边缘提取;局部化的特征点检测如边角检测,斑点检测;更复杂的特征可能与图像中的纹理形状或运动有关。

l  检测分割

在图像处理过程中,有时会需要对图像进行分割来提取有价值的用于后继处理的部分,例如筛选特征点;分割一或多幅图片中含有特定目标的部分。

l  高级处理

到了这一步,数据往往具有很小的数量,例如图像中经先前处理被认为含有目标物体的部分。这时的处理包括:验证得到的数据是否符合前提要求;估测特定系数,比如目标的姿态,体积;对目标进行分类。

高级处理有理解图像内容的含义,是计算机视觉中的高阶处理,主要是在图像分割的基础上再经行对分割出的图像块进行理解,例如进行识别等操作。


友情链接:                     

版权所有©1980-2014 北京信息科技大学 信息管理学院
地址:北京市海淀区清河小营东路12号
邮编:100192 | 联系我们