一、什么是计算机视觉

  • 定义:计算机视觉(Computer vision)是⼀⻔研究如何使机器“看”的科学,更 进⼀步的说,就是指⽤摄影机和计算机代替⼈眼对⽬标进⾏识别、跟踪和测量 等,⽤计算机处理成为更适合⼈眼观察或传送给仪器检测的图像。

比如下图,做到的不仅仅是检测到图像前景中有四个⼈、⼀条街道和⼏辆⻋。除了这些基本信息,⼈类还能够看出图像前景中的⼈正在⾛路,其中⼀⼈⾚脚,我们甚⾄知道他们是谁。我们可以理性地推断出图中⼈物没有被⻋撞击的危险,⽩⾊的⼤众汽⻋没有停好。⼈类还可以描述图中⼈物的穿着,不⽌是⾐服颜⾊,还有材质与纹理。⼈类能够理解和描述图像中的场景。

1.2 区分计算机视觉与其相关领域

计算机视觉,图像处理,图像分析,机器⼈视觉和机器视觉是彼此紧密关联的学科。

1、计算机视觉的研究很⼤程度上针对图像的内容。如果你翻开带有上⾯这些名字的教材,你会发现在技术和应⽤领域上他们都有着相当⼤部分的重叠。这表明这些学科的基础理论⼤致是相同的,甚⾄让⼈怀疑他们是同⼀学科被冠以不同的名称。然⽽,各研究机构,学术期刊,会议及公司往往把⾃⼰特别的归为其中某⼀个领域,于是各种各样的⽤来区分这些学科的特征便被提了出来。下⾯将给出⼀种区分⽅法,尽管并不能说这⼀区分⽅法完全准确。

2、图像处理旨在处理原始图像以应⽤某种变换。其⽬标通常是改进图像或将其作为某项特定任务的输⼊,⽽计算机视觉的⽬标是描述和解释图像。例如,降噪、对⽐度或旋转操作这些典型的图像处理组件可以在像素层⾯执⾏,⽆需对图像整体具备全⾯的了解。

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

1.2 计算机视觉应用方向

⽬前CV公司⽐较集中的技术赛道有:⼈脸识别、⾃动驾驶、医疗图像等,但⽬前⽽⾔,商业化落地最快的还是⼈脸识别及其业务相关的⼀些技术,⽐如银⾏会⽤到⼈脸和⾃然场景下的OCR(⽂字识别),还有浸⼊式⼤数据⻛控,安防会⽤到⼈脸、⼈体、⻋辆与⼤数据分析等。

1.2.1 行为跟踪

实体零售店利⽤计算机视觉算法和摄像头,了解顾客及其⾏为。计算机视觉算法能够识别⼈脸,确定⼈物特征,如性别或年龄范围。此外,零售店还可以利⽤计算机视觉技术追踪顾客在店内的移动轨迹,分析其移动路线,检测⾏⾛模式,并统计零售店店⾯受到⾏⼈注意的次数。

添加视线⽅向检测后,零售店能够回答这⼀重要问题:将店内商品放在哪个位置可以提升消费者体验,最⼤化销售额。计算机视觉还是开发防盗窃机制的强⼤⼯具。⼈脸识别算法可⽤于识别已知的商店扒⼿,或检测出某位顾客将商品放⼊⾃⼰的背包。

1.2.2 医疗行业

在医疗⾏业中现有计算机视觉应⽤的数量⾮常庞⼤。毫⽆疑问医疗图像分析是最著名的例⼦它可以显著提升医疗诊断流程。此类系统对 MRI 图像、CT 扫描图像和 X 光图像进⾏分析找出肿瘤等异常或者搜索神经系统疾病的症状。在很多情况下图像分析技术从图像中提取特征从⽽训练能够检测异常的分类器。但是⼀些特定应⽤需要更细化的图像处理。

例如对结肠镜检查图像进⾏分析时分割图像是必要的这样才能找出肠息⾁防⽌结直肠癌。

上图是观察胸腔元素所需的图像分割结果。该系统分割每个重要部分并着⾊:肺动脉(蓝⾊)、肺静脉(红⾊)、纵膈(⻩⾊)和横膈(紫⾊)。⽬前⼤量此类应⽤已经投⼊使⽤如估计产后出⾎量、量化冠状动脉钙化情况、在没有 MRI 的情况下测定⼈体内的⾎流量。
但是医疗图像并⾮计算机视觉在医疗⾏业中唯⼀的⽤武之地。⽐如计算机视觉技术为视障⼈⼠提供室内导航帮助。这些系统可以在楼层平⾯图中定位⾏⼈和周围事物等以便实时提供视觉体验。视线追踪和眼部分析可⽤于检测早期认知障碍如⼉童⾃闭症或阅读障碍这些疾病与异常注视⾏为⾼度相关。

1.2.1 自动驾驶

你是否思考过,⾃动驾驶汽⻋如何「看」路?计算机视觉在其中扮演核⼼⻆⾊,它帮助⾃动驾驶汽⻋感知和了解周围环境,进⽽恰当运⾏。计算机视觉最令⼈兴奋的挑战之⼀是图像和视频⽬标检测。这包括对不同数量的对象进⾏定位和分类,以便区分某个对象是交通信号灯、汽⻋还是⾏⼈,如下图所示:

此类技术,加上对来⾃传感器和/或雷达等来源的数据进⾏分析,使得汽⻋能够看⻅。

二、计算机视觉任务

2.1 计算机视觉发展历程

  • 1、1963年,Larry Roberts发表了(可能是)CV领域的第一篇专业论文,用以对简单几何体进行边缘提取和三维重建。1966年,麻省理工学院(MIT)发起了一个夏季项目,目标是搭建一个机器视觉系统,完成模式识别(pattern recognition)等工作。

    • 从现在来看,当时的目标确实定的过大,以至于到了50多年后的今天为止,即使CV领域有了数以千计的科学工作者,仍然无法建立起整个机器视觉系统。
  • 2、七十年代,同样是在MIT,学者David Marr发表的著作《Vision》从严谨又长远的角度给出了CV的发展方向和一些基本算法,其中不乏现在为人熟知的“图层”的概念、边缘提取、三维重建等。

    • 整个60年代到80年代,虽然CV的概念已经提出了20年,但是与“识别”相关的工作进展得并不顺利。除了上述些许学者们点燃的星星之火,很难看到太多突破性的方法和文献。因此人们开始思考:如果图像识别太困难了,那为什么不先试试图像分割呢?
  • 3、1999年David Lowe提出了尺度不变特征变换(SIFT, Scale-invariant feature transform)目标检测算法,用于匹配不同拍摄方向、纵深、光线等图片中的相同元素。

    • (1)2001年,在互联网泡沫的大背景下,CV领域却发展得风生水起,并再次取得重大突破性进展:Paul Viola和Michael Johns使用Adaboost算法实现了实时性的人脸检测。而这一技术仅在5年后就被富士胶片公司(Fujifilm)用于产品中——首个带有实时人脸检测功能的照相机。
    • (2)同一时期,Lazbnik, Schmid 和 Ponce等人提出了空间金字塔匹配算法(SPM, Spatial Pyramid Matching),具有开创性地将图片进行分块和特征提取,以验证图片间的相似度。Dalal和Triggs等人提出了进行人物识别的HoG特征(Histogram of Gradient)。2009年,Felzenswalb, McAllester和Ramanan等人提出了可变形部件模型(DPM, Deformable Parts Model)。
  • 4、随着互联网的不断发展,学习计算机视觉可用的图片资源越来越多
    • (1)Everingham等人在2006年至2012年间搭建了一个大型图片数据库,供机器识别和训练,称为PASCAL Visual Object Challenge,该数据库中有20种类别的图片,每种图片数量在一千至一万张不等。
    • (2)后来Li Fei-fei等人搭建了图像数据库ImageNet,总计两万两千种类别,和一千四百余万张图片。通过训练ImageNet所给出的数据集,识别错误率正逐年下降,并在2015年就已经低于了正常人类的错误率。图中值得注意的是,在2012年,识别错误率突然下降了近10个百分点,这得益于卷积神经网络(CNN,Convolutional Neural Network)的运用,或者更为大家所知晓的概念就是——深度学习(Deep Learning)。CNN在识别错误率上远低于同年的其他模型,这标志着以深度学习为核心的CV时代正式开启。

2.2.2 典型的计算机视觉任务

计算机视觉基于大量不同任务,并组合在一起实现高度复杂的应用。计算机视觉中最常见的任务是图像和视频识别,涉及确定图像包含的不同对象。

  • 四大主要任务

    • 图像分类
    • 目标检测
    • 目标分割
    • 目标追踪
  • 1、图像分类

计算机视觉中最知名的任务可能就是图像分类了,它对给定图像进行分类。我们看一个简单的二分类例子:我们想根据图像是否包含旅游景点对其进行分类。假设我们为此任务构建了一个分类器,并提供了一张图像(见下图)。

我们要得出这张建筑图片是否是埃菲尔铁塔。

  • 2、目标检测

    •  目标检测通常是从图像中输出单个目标的Bounding Box(边框)以及标签

我们想象一个同时包含定位和分类的动作,对一张图像中的所有感兴趣对象重复执行该动作,这就是目标检测。该场景中,图像中的对象数量是未知的。因此,目标检测的目标是找出图像中的对象,并进行分类。

在这个密集图像中,我们可以看到计算机视觉系统识别出大量不同对象:汽车、人、自行车,甚至包含文本的标志牌。这个问题对人类来说都算困难的。一些对象只显示出一部分,因为它们有一部分在图像外,或者彼此重叠。此外,相似对象的大小差别极大。目标检测的一个直接应用是计数,它在现实生活中应用广泛,从计算收获水果的种类到计算公众集会或足球赛等活动的人数,不一而足。

  • 3、语义分割(Semantic Segmentation)

我们可以把实例分割看作是目标检测的下一步。它不仅涉及从图像中找出对象,还需要为检测到的每个对象创建一个尽可能准确的掩码。

你可以从上图中看到,实例分割算法为四位披头士成员和一些汽车创建掩码(不过该结果并不完整,尤其是列侬)。

还有实例分割与语义分割有所不同,物体分割不仅需要对图像中不同的对象进行分类,而且还需要确定它们之间的界限、差异和关系。

  • 4、目标追踪

目标追踪旨在追踪随着时间不断移动的对象,它使用连续视频帧作为输入。该功能对于机器人来说是必要的,以守门员机器人举例,它们需要执行从追球到挡球等各种任务。目标追踪对于自动驾驶汽车而言同样重要,它可以实现高级空间推理和路径规划。类似地,目标追踪在多人追踪系统中也很有用,包括用于理解用户行为的系统(如零售店的计算机视觉系统),以及在游戏中监控足球或篮球运动员的系统。

  • 其他任务技术:

    • 图像标注 (Image Captioning)

      • 图像标注是一项引人注目的研究领域,它的研究目的是给出一张图片,你给我用一段文字描述它。(根据图片生成描述文字)
    • 图像生成(Image Generator):文字转图像
    • 超分辨率、风格迁移、着色
      • 超分辨率指的是从低分辨率对应物估计高分辨率图像的过程,以及不同放大倍数下图像特征的预测,这是人脑几乎毫不费力地完成的。最初的超分辨率是通过简单的技术,如bicubic-interpolation和最近邻。在商业应用方面,克服低分辨率限制和实现“CSI Miami”风格图像增强的愿望推动了该领域的研究。
      • 风格转换:作为一个主题,一旦可视化是相当直观的,比如,拍摄一幅图像,并用不同的图像的风格特征呈现。
      • 着色:是将单色图像更改为新的全色版本的过程。最初,这是由那些精心挑选的颜色由负责每个图像中的特定像素的人手动完成的。2016年,这一过程自动化成为可能,同时保持了以人类为中心的色彩过程的现实主义的外观。
    • 行为识别
      • 行为识别的任务是指在给定的视频帧内动作的分类,以及最近才出现的,用算法预测在动作发生之前几帧的可能的相互作用的结果。
    • 人体姿势估计
      • 人体姿势估计试图找出人体部位的方向和构型。 2D人体姿势估计或关键点检测一般是指定人体的身体部位,例如寻找膝盖,眼睛,脚等的二维位置。

计算机视觉概述:视觉任务+场景领域+发展历程+典型任务相关推荐

  1. 2018 WAIC |最强阵容!各界大咖齐聚,推动视觉智能全领域发展

    9 月 17 日,2018 年世界人工智能大会(2018 WAIC)在上海徐汇西岸顺利召开,主题论坛主要从技术.产业.应用等角度对人工智能技术和产业的发展现状进行深入探讨,包括脑机融合.人工智能算法. ...

  2. 目标检测近5年发展历程概述(转)

    目标检测近5年发展历程概述,从R-CNN到RFBNet(2013--2018)(转) 2018年09月24日 12:32:02 C小C  [时间]2018.09.24 [题目]目标检测近5年发展历程概 ...

  3. 人工智能概述、人工智能发展历程、人工智能主要分支、机器学习工作流程、完整机器学习项目的流程、机器学习算法分类、独立同分布、模型评估、深度学习简介

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 1.1 人工智能概述 1 人工智能应用场景 2 人工智能小案例 ...

  4. 前端发展历程与技术应用概述

    前端发展历程与技术应用概述 前言 随着web2.0时代的到来,前端在web开发中所占的比重越来越大,专注于内容呈现和网站交互的前端开发人员也逐渐展现出其不可替代性.前端所涉及的领域甚至不限于web应用 ...

  5. 深度学习笔记004-计算机视觉CV的发展历程

    计算机视觉的发展历程–诞生 1966年MIT人工智能实验室一名教授给自己的研究生布置了一个课题:想办法写一个程序,让计算机告诉我们摄像头看到了什么 这次事件标志着计算机视觉的诞生,1966年也称为计算 ...

  6. 计算机视觉:目标检测的发展历程与基础概念

    计算机视觉:目标检测的发展历程与基础概念 目标检测发展历程 目标检测基础概念 边界框(bounding box) 锚框(Anchor box) 交并比 对计算机而言,能够"看到"的 ...

  7. 什么是Web3D?Web3D技术发展历程以及Web3D应用场景

    当今的互联网已经迈入了第三代,这被称为Web3.0,而Web3D正是Web3.0的其中一个技术分支.Web3D是指将三维图形技术应用于Web上的技术,它是将3D图形和Web技术结合起来的一个分支,可以 ...

  8. 《游戏视频主播手册》——第1章 游戏视频直播概述 1.1 游戏视频直播的发展历程...

    本节书摘来自异步社区<游戏视频主播手册>一书中的第1章,第1.1节,作者 王岩,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第1章 游戏视频直播概述 在201 ...

  9. node windows更新_node.js 01 简介 - 产生,发展历程,优势,适用场景,实际应用

    node.js是什么 上面是来自于node.js 官网 (https://nodejs.org)的介绍.翻译过来,意思是node.js 基于JavaScript, 需要运行在Chrome V8 的 J ...

最新文章

  1. Docker安装Apache与运行简单的web服务——httpd helloworld
  2. 警惕!油性混合皮肤护理的误区 - 健康程序员,至尚生活!
  3. 如何在iOS或macOS上检查活动的Internet连接?
  4. jBPM4.4:分配任务的几种方式
  5. python怎么解释语言_python——解释型语言
  6. hadoop2.4.1源码编译步骤 hive0.13.1编译
  7. 最大字段和(动态规划,C语言)
  8. note.js和mysql的优劣_nginx与Node.js的优缺点是什么?
  9. Kubernetes 日志查询分析实践
  10. 【Java】总结Integer类的API
  11. mysql 与oracle 批量插入的 sql 总结
  12. 使用git和github进行协同开发流程
  13. Hibernate ,Mybatis 区别,以及各自的一级,二级缓存理解
  14. 理解 Delphi 的类(十) - 深入方法[13] - 在 interface 区声明的方法
  15. 中国体声波器件市场趋势报告、技术动态创新及市场预测
  16. 【科研论文】基于HTTP协议的嵌入式远程监控系统的研究
  17. keepalived详解和实战
  18. yolo如何降低loss_YOLO训练中的问题与怀疑
  19. win10动态桌面_win10动态桌面如何设置?电脑炫酷动态壁纸
  20. Cgroup 资源配置方法----------Control Groups------Docker通过 Cgroup 来控制容器使用的资源配额

热门文章

  1. 【2022】多线程并发编程面试真题
  2. python 去掉空格_如何从Python DataFrame中去除空格在这个例子中
  3. Python html 代码转成 word(docx)
  4. 清华大学《操作系统》(九):进程和线程
  5. python中continue只结束本次循环_循环(while,break,continue),转义字符
  6. Linux:shell脚本命令: /dev/null 21 的理解
  7. 【传智播客】Libevent学习笔记(三):事件循环
  8. Jmeter java.lang.OutOfMemoryError: GC overhead limit exceeded
  9. imageNamed和imageWithContentsOfFile-无法加载图片的问题
  10. 字符串数组判断数字,字母汉字,