ARCore之路-计算机视觉概述

版权声明:David Wang原创ARCore文章,仅供学习研究之用,不得用于任何商业目的,未经授权不得转载! https://blog.csdn.net/yolon3000/article/details/83899598

  计算机视觉(Computer vision)是一个当前极为热门,同时又处于高速发展的一门科学,计算机视觉的应用领域也在不断扩展,已经渗透到我们日常生活的方方面面,而且当前最火的所有创业的方向都跟计算机视觉相关。其中包括我们经常提到的无人驾驶、无人安防、人脸识别、人工智能等等。人脸识别相对来说已经是一个最成熟的应用领域了,然后还有文字识别、车辆车牌识别、语音识别,还有以图搜图、 VR/AR,还包括 3D 重构,以及医学图像分析。 同时,计算机视觉又是一门跨学科的科学,其与计算机科学和工程、人工智能、信息工程、固体物理学、神经生物学、信号处理、概率与数理统计、微积分、线性代数与矩阵都有密切联系,计算机视觉发展到现在,各类文献浩如烟海。我们前面学习的图像识别也只是计算机视觉领域中的非常小的一个分支,鉴于我们的主题,我们也不打算深入探究这个领域,但我们还是有必要作一简明介绍。

DavidWang原创

一、计算机视觉的定义

  计算机视觉是一个跨学科的领域,研究如何使计算机从数字图像或视频中获得高层次的理解。从工程的角度来看,它试图使人类视觉系统能够完成的任务自动化。计算机视觉涉及从单个图像或图像序列中自动提取、分析和理解有用信息。计算机视觉主要任务包括获取、处理、分析和理解数字图像的方法,以及从现实世界中提取高维数据的方法,以便产生数字或符号信息。例如,在这种情况下的理解意味着将视觉图像(视网膜的输入)转化为对世界的描述,能够与其他思维过程相结合并引起适当的行动。这种图像理解可以看作是利用几何、物理、统计和学习理论构建的模型,将符号信息从图像数据中分离出来。计算机视觉的子域包括物体识别和检测(Object Detection)、语义分割(Semantic Segmentation)、运动和跟踪(Motion & Tracking)、三维重建(3D Reconstruction)、视觉问答(Visual Question & Answering)、动作识别(Action Recognition)等等。

  计算机视觉、图象处理、图像分析、机器人视觉和机器视觉、模式识别是彼此紧密关联的学科。在技术和应用领域上他们都有着相当大部分的重叠,他们的基础理论大致是相同的。
计算机视觉的研究对象主要是映射到单幅或多幅图像上的三维场景,例如三维场景的重建。计算机视觉的研究很大程度上针对图像的内容。

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

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

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

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

DavidWang原创

二、计算机视觉的历史

  在20世纪60年代末,计算机视觉开始于开创人工智能的大学。它的目标是模仿人类的视觉系统,作为赋予机器人智能行为的基础。1966年,人们相信这可以通过一个将相机附在计算机上并让它“描述它所看到的”夏季项目(summer project)来实现,后来发现这个目标太过宏大,为此,大量学者进行了深入的研究,并由此开启了计算机视觉学科的大门。20世纪70年代的研究为今天存在的许多计算机视觉算法奠定了早期的基础,包括从图像中提取边缘、线的标记、非多面体和多面体建模、将物体表示为较小结构的相互连接、光流和运动估计等等。

  在接下来的十年里,基于更严格的数学分析和计算机视觉的定量方面进行了大量研究。这些包括尺度空间(scale-space)的概念,从不同的线索,如阴影、纹理、焦点、以及轮廓模型对形状的推断。研究人员还认识到,这些数学概念中的许多可以与正则化(regularization)和马尔可夫随机场(Markov random fields)在同一个优化框架内处理。1982年马尔( David Marr )《视觉》(Marr, 1982)一书的问世,标志着计算机视觉成为了一门独立学科。到了20世纪90年代,以前的一些研究课题变得更加活跃。对投影三维重建的研究使人们对摄像机标定有了更好的理解。随着相机标定优化方法的出现,人们发现,在摄影测量领域里,光束平差理论(Bundle Adjustment)中的许多思想已经得到了探索,这就导致了从多幅图像中的三维场景重建(sparse 3-D reconstructions of scenes)方法的出现,在稠密立体对应问题和进一步的多视点立体技术(multi-view stereo)方面也取得了进展,同时,利用图形切分变化来解决图像分割问题也发展起来。这十年也标志着统计学习技术首次在实践中被用来识别图像中的人脸。20世纪90年代末,随着计算机图形学和计算机视觉领域相互作用的增加,出现了重大变化。这包括基于图像的绘制、图像变形、视图内插、全景图像拼接和早期光场绘制。20世纪末开始,深度学习技术开始登上历史舞台。在深度学习算法出来之前,对于视觉算法来说,大致可以分为以下5个步骤:特征感知,图像预处理,特征提取,特征筛选,推理预测与识别。早期的机器学习中,占优势的统计机器学习群体中,对特征是不大关心的。卷积神经网络(Convoltional Neural Networks, CNN)也被设计出来,加之计算机软硬件的飞速发展,应用卷积神经网络深度学习技术出现了突飞猛进的发展,在很多学术领域,比非深度学习算法往往有20-30%成绩的提高,计算机视觉随之进入到一个新的发展阶段。

DavidWang原创

三、计算机视觉的主要研究方向

  计算机视觉任务包括获取、处理、分析和理解数字图像的方法,以及从现实世界中提取高维数据的方法,以便产生数字或符号信息或者说是图像理解,这种图像理解可以看作是利用几何、物理、统计和学习理论构建的模型,将符号信息从图像数据中分离出来。
  计算机视觉本身又包括了诸多不同的研究方向,比较基础和热门的几个方向主要包括了:物体识别和检测(Object Detection),语义分割(Semantic Segmentation),运动和跟踪(Motion & Tracking),三维重建(3D Reconstruction),视觉问答(Visual Question & Answering),动作识别(Action Recognition)等。

  1、物体识别和检测
  物体检测一直是计算机视觉中非常基础且重要的一个研究方向,大多数新的算法或深度学习网络结构都首先在物体检测中得以应用如VGG-net, GoogLeNet, ResNet等等,每年在imagenet数据集上面都不断有新的算法涌现,一次次突破历史,创下新的记录,而这些新的算法或网络结构很快就会成为这一年的热点,并被改进应用到计算机视觉中的其它应用中去。物体识别和检测,即给定一张输入图片,算法能够自动找出图片中的常见物体,并将其所属类别及位置输出出来。计算机视觉的经典问题就是确定图像数据是否包含特定的对象、特征或活动。它又包括物体识别(可以识别一个或几个预先指定或学习的对象或对象类,通常与它们在图像中的2d位置或场景中的3D姿态一起识别)、物体鉴定(识别对象的单个实例。例如识别特定人的脸或指纹、识别手写数字、或识别特定车辆)、物体检测(扫描图像数据以确定满足特定条件的物体。例如,在医学图像中检测可能出现的异常细胞或组织,或在自动道路收费系统中检测车辆),目前,解决这类问题的最佳算法是卷积神经网络。

  2、语义分割
  图像语义分割,简单而言就是给定一张图片,对图片上的每一个像素点分类。物体检测和识别通常是将物体在原图像上框出,可以说是“宏观”上的物体,而语义分割是从每一个像素上进行分类,图像中的每一个像素都有属于自己的类别。与其他计算机视觉任务一样,卷积神经网络在分割任务上取得了巨大成功。

  3、运动和跟踪
  跟踪也属于计算机视觉领域内的基础问题之一,在近年来也得到了非常充足的发展,方法也由过去的非深度算法跨越向了深度学习算法,精度也越来越高,不过实时的深度学习跟踪算法精度一直难以提升,而精度非常高的跟踪算法速度又十分之慢,因此在实际应用中也很难派上用场。 就目前而言,学术界对待跟踪的评判标准主要是在一段给定的视频中,在第一帧给出被跟踪物体的位置及尺度大小,在后续的视频当中,跟踪算法需要从视频中去寻找到被跟踪物体的位置,并适应各类光照变换,运动模糊以及表观的变化等。但实际上跟踪是一个不适定问题(ill posed problem),比如跟踪一辆车,如果从车的尾部开始跟踪,若是车辆在行进过程中表观发生了非常大的变化,如旋转了180度变成了侧面,那么现有的跟踪算法很大的可能性是跟踪不到的,因为它们的模型大多基于第一帧的学习,虽然在随后的跟踪过程中也会更新,但受限于训练样本过少,所以难以得到一个良好的跟踪模型,在被跟踪物体的表观发生巨大变化时,就难以适应了。跟踪很多算法都改进自检测或识别算法。

  4、三维重建
  三维重建是指给定一个场景的二张或多张图像或者一段录像,场景重建寻求为该场景建立一个计算机三维模型。最简单的情况便是生成一组三维空间中的点,更复杂的情况下会建立起完整的三维表面模型。前几天看华为的mate 20 手机,对特定模型的三维重建已经做得比较好了。深度传感器的出现,不仅给娱乐应用带来了变革,同样对科学研究提供了新的方向,尤其是在三维重建领域。然而由于三维重建过程涉及到大量密集的点云数据处理,计算量巨大,所以对系统进行相应的性能优化显得非常的重要。

  5、视觉问答
  视觉问答也简称VQA(Visual Question Answering),其目的旨在根据输入图像,由用户进行提问,而算法自动根据提问内容进行回答。除了问答以外,还有一种算法被称为标题生成算法(Caption Generation),即计算机根据图像自动生成一段描述该图像的文本,而不进行问答。对于这类跨越两种数据形态(如文本和图像)的算法,有时候也可以称之为多模态,或跨模态问题。

  6、动作识别
  动作识别是指从视频剪辑(一串二维帧序列)中识别不同的动作,其中的动作可能贯穿整个视频,也可能不会。这是图像分类任务的一种自然扩展,即在多帧视频中进行图像识别,然后从每一个帧中聚集预测结果。从视频中进行动作识别需要从整个视频中捕捉上下文信息而不只是从每一帧中捕捉信息。目前准确识别动作在通常意义上来讲还有很大的困难,但对特定动作的识别却有了非常大的提高,如对手指动作的识别、对人体步态的识别。

四、计算机视觉的若干发展趋势

  (1) 基于学习的物体视觉和基于几何的空间视觉继续“相互独立”进行。深度学习在短时期内很难代替几何视觉。在深度网络中如何引入“鲁棒外点剔除模块”将是一个探索方向,但短时间内估计很难有实质性进展;

  (2) 基于视觉的定位将更加趋向“应用性研究”,特别是多传感器融合的视觉定位技术。

  (3) 三维点云重建技术已经比较成熟,如何从“点云”到“语义”是未来研究重点。“语义重建”将点云重建、物体分割和物体识别同时进行,是三维重建走向实用的前提。

  (4)对室外场景的三维重建,如何重建符合“城市管理规范”的模型是一个有待解决的问题。室内场景重建估计最大的潜在应用是“家庭服务机器人”。 鉴于室内重建的应用还缺乏非常具体的应用需求和驱动,在加上室内环境的复杂性,估计在3-5年内很难有突破性进展。

  (5)对物体识别而言,基于深度学习的物体识别估计将从“通用识别”向“特定领域物体的识别”发展。“特定领域”可以提供更加明确和具体的先验信息,可以有效提高识别的精度和效率,更加具有实用性;

  (6)目前基于RCNN 对视频理解的趋势将会持续;

  (7) 解析深度网络机理的工作具有重大的理论意义和挑战性,鉴于深度网络的复杂性,估计近期很难取得突破性进展;

  (8)具有“反馈机制”的深度网络结构(architecture)研究必将是下一个研究热点。

五、当前主流的框架(库)

  OpenCV
  OpenCV是一个很经典的计算机视觉库,它基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效(由一系列 C 函数和少量 C++ 类构成),同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

  Caffe
  Caffe,全称Convolutional Architecture for Fast Feature Embedding。是一种常用的深度学习框架,主要应用在视频、图像处理方面的应用上。caffe是一个清晰,可读性高,快速的深度学习框架。核心语言是C++。支持命令行、Python和Matlab接口,它既可以在CPU上运行也可以在GPU上运行。

  TensorFlow
  TensorFlow是一个Google开源的代码库,用于进行高性能数值计算。借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等),可为机器学习和深度学习提供强力支持,并且其灵活的数值计算核心广泛应用于许多其他科学领域。它擅长于训练深度神经网络,版本迭代也非常快,目前非常火。

参考文献

1、维基百科 维基百科
2、百度百科 百度百科
3、计算机视觉简介:历史、现状和发展趋势 计算机视觉简介:历史、现状和发展趋势添加链接描述

猜你喜欢

转载自blog.csdn.net/yolon3000/article/details/83899598