精华内容
参与话题
问答
  • 计算机视觉实际上是一个跨领域的交叉学科,包括计算机科学(图形、算法、理论、系统、体系结构),数学(信息检索、机器学习),工程学(机器人、语音、自然语言处理、图像处理),物理学(光学 ),生物学(神经...

    作者 James Le

    编者按

    目前,计算机视觉是深度学习领域最热门的研究领域之一。计算机视觉实际上是一个跨领域的交叉学科,包括计算机科学(图形、算法、理论、系统、体系结构),数学(信息检索、机器学习),工程学(机器人、语音、自然语言处理、图像处理),物理学(光学 ),生物学(神经科学)和心理学(认知科学)等等。许多科学家认为,计算机视觉为人工智能的发展开拓了道路。

    那么什么是计算机视觉呢? 这里给出了几个比较严谨的定义:

    ✦ “对图像中的客观对象构建明确而有意义的描述”(Ballard&Brown,1982)

    ✦ “从一个或多个数字图像中计算三维世界的特性”(Trucco&Verri,1998)

    ✦ “基于感知图像做出对客观对象和场景有用的决策”(Sockman&Shapiro,2001)

    为什么要学习计算机视觉?

    一个显而易见的答案就是,这个研究领域已经衍生出了一大批快速成长的、有实际作用的应用,例如:

    • 人脸识别: Snapchat 和 Facebook 使用人脸检测算法来识别人脸。
    • 图像检索:Google Images 使用基于内容的查询来搜索相关图片,算法分析查询图像中的内容并根据最佳匹配内容返回结果。
    • 游戏和控制:使用立体视觉较为成功的游戏应用产品是:微软 Kinect。
    • 监测:用于监测可疑行为的监视摄像头遍布于各大公共场所中。
    • 生物识别技术:指纹、虹膜和人脸匹配仍然是生物识别领域的一些常用方法。
    • 智能汽车:计算机视觉仍然是检测交通标志、灯光和其他视觉特征的主要信息来源。

    视觉识别是计算机视觉的关键组成部分,如图像分类、定位和检测。神经网络和深度学习的最新进展极大地推动了这些最先进的视觉识别系统的发展。在本文中,我将分享 5 种主要的计算机视觉技术,并介绍几种基于计算机视觉技术的深度学习模型与应用。

    1、图像分类

    

    给定一组各自被标记为单一类别的图像,我们对一组新的测试图像的类别进行预测,并测量预测的准确性结果,这就是图像分类问题。图像分类问题需要面临以下几个挑战☟☟☟:

    视点变化,尺度变化,类内变化,图像变形,图像遮挡,照明条件和背景杂斑

    我们怎样来编写一个图像分类算法呢?

    计算机视觉研究人员提出了一种基于数据驱动的方法。

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

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

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

    目前较为流行的图像分类架构是卷积神经网络(CNN)——将图像送入网络,然后网络对图像数据进行分类。卷积神经网络从输入“扫描仪”开始,该输入“扫描仪”也不会一次性解析所有的训练数据。比如输入一个大小为 100*100 的图像,你也不需要一个有 10,000 个节点的网络层。相反,你只需要创建一个大小为 10 *10 的扫描输入层,扫描图像的前 10*10 个像素。然后,扫描仪向右移动一个像素,再扫描下一个 10 *10 的像素,这就是滑动窗口。

    

    输入数据被送入卷积层,而不是普通层。每个节点只需要处理离自己最近的邻近节点,卷积层也随着扫描的深入而趋于收缩。除了卷积层之外,通常还会有池化层。池化是过滤细节的一种方法,常见的池化技术是最大池化,它用大小为 2*2 的矩阵传递拥有最多特定属性的像素。

    现在,大部分图像分类技术都是在 ImageNet 数据集上训练的, ImageNet 数据集中包含了约 120 万张高分辨率训练图像。测试图像没有初始注释(即没有分割或标签),并且算法必须产生标签来指定图像中存在哪些对象。

    现存的很多计算机视觉算法,都是被来自牛津、 INRIA 和 XRCE 等顶级的计算机视觉团队在 ImageNet 数据集上实现的。通常来说,计算机视觉系统使用复杂的多级管道,并且,早期阶段的算法都是通过优化几个参数来手动微调的。

    第一届 ImageNet 竞赛的获奖者是 Alex Krizhevsky(NIPS 2012) ,他在 Yann LeCun 开创的神经网络类型基础上,设计了一个深度卷积神经网络。该网络架构除了一些最大池化层外,还包含 7 个隐藏层,前几层是卷积层,最后两层是全连接层。在每个隐藏层内,激活函数为线性的,要比逻辑单元的训练速度更快、性能更好。除此之外,当附近的单元有更强的活动时,它还使用竞争性标准化来压制隐藏活动,这有助于强度的变化。

    

    就硬件要求而言, Alex 在 2 个 Nvidia GTX 580 GPU (速度超过 1000 个快速的小内核)上实现了非常高效的卷积网络。 GPU 非常适合矩阵间的乘法且有非常高的内存带宽。这使他能在一周内完成训练,并在测试时快速的从 10 个块中组合出结果。如果我们能够以足够快的速度传输状态,就可以将网络分布在多个内核上。

    随着内核越来越便宜,数据集越来越大,大型神经网络的速度要比老式计算机视觉系统更快。在这之后,已经有很多种使用卷积神经网络作为核心,并取得优秀成果的模型,如 ZFNet(2013),GoogLeNet(2014), VGGNet(2014), RESNET(2015),DenseNet(2016)等。

    2、对象检测

    

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

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

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

    1. 在 R-CNN 中,首先使用选择性搜索算法扫描输入图像,寻找其中的可能对象,从而生成大约 2,000 个区域建议;
    2. 然后,在这些区域建议上运行一个 卷积神网络;
    3. 最后,将每个卷积神经网络的输出传给支持向量机( SVM ),使用一个线性回归收紧对象的边界框。

    

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

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

    1. 在建议区域之前进行特征提取,因此在整幅图像上只能运行一次卷积神经网络;
    2. 用一个 softmax 层代替支持向量机,对用于预测的神经网络进行扩展,而不是创建一个新的模型。

    

    Fast R-CNN 的运行速度要比 R-CNN 快的多,因为在一幅图像上它只能训练一个 CNN 。 但是,择性搜索算法生成区域提议仍然要花费大量时间。

    Faster R-CNN 是基于深度学习对象检测的一个典型案例。

    该算法用一个快速神经网络代替了运算速度很慢的选择性搜索算法:通过插入区域提议网络( RPN ),来预测来自特征的建议。 RPN 决定查看“哪里”,这样可以减少整个推理过程的计算量。

    RPN 快速且高效地扫描每一个位置,来评估在给定的区域内是否需要作进一步处理,其实现方式如下:通过输出 k 个边界框建议,每个边界框建议都有 2 个值——代表每个位置包含目标对象和不包含目标对象的概率。

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

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

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

    3、目标跟踪

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

    根据观察模型,目标跟踪算法可分成 2 类:生成算法和判别算法。

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

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

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

    • 离线无监督预训练使用大规模自然图像数据集获得通用的目标对象表示,对堆叠去噪自动编码器进行预训练。堆叠去噪自动编码器在输入图像中添加噪声并重构原始图像,可以获得更强大的特征表述能力。
    • 将预训练网络的编码部分与分类器合并得到分类网络,然后使用从初始帧中获得的正负样本对网络进行微调,来区分当前的对象和背景。 DLT 使用粒子滤波作为意向模型(motion model),生成当前帧的候选块。 分类网络输出这些块的概率值,即分类的置信度,然后选择置信度最高的块作为对象。
    • 在模型更新中, DLT 使用有限阈值。

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

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

    • 卷积神经网络特征映射可用于定位和跟踪。
    • 对于从背景中区分特定对象这一任务来说,很多卷积神经网络特征映射是噪音或不相关的。
    • 较高层捕获对象类别的语义概念,而较低层编码更多的具有区性的特征,来捕获类别内的变形。

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

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

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

    如下图所示, MD Net 可分为两个部分,即 K 个特定目标分支层和共享层:每个分支包含一个具有 softmax 损失的二进制分类层,用于区分每个域中的对象和背景;共享层与所有域共享,以保证通用表示。

    

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

    • 应用到诸如循环神经网络( RNN )和深度信念网络(DBN )等其他网络模型;
    • 设计网络结构来适应视频处理和端到端学习,优化流程、结构和参数;
    • 或者将深度学习与传统的计算机视觉或其他领域的方法(如语言处理和语音识别)相结合。

    4、语义分割

    

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

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

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

    这种方法允许针对任何尺寸的图像生成分割映射,并且比块分类算法快得多,几乎后续所有的语义分割算法都采用了这种范式。

    

    但是,这也仍然存在一个问题:在原始图像分辨率上进行卷积运算非常昂贵。为了解决这个问题, FCN 在网络内部使用了下采样和上采样:下采样层被称为条纹卷积( striped convolution );而上采样层被称为反卷积( transposed convolution )。

    尽管采用了上采样和下采样层,但由于池化期间的信息丢失, FCN 会生成比较粗糙的分割映射。SegNet 是一种比 FCN (使用最大池化和编码解码框架)更高效的内存架构。在 SegNet 解码技术中,从更高分辨率的特征映射中引入了 shortcut/skip connections ,以改善上采样和下采样后的粗糙分割映射。

    

    目前的语义分割研究都依赖于完全卷积网络,如空洞卷积 ( Dilated Convolutions ),DeepLab 和 RefineNet 。

    5、实例分割

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

    到目前为止,我们已经看到了如何以多种有趣的方式使用卷积神经网络的特征,通过边界框有效定位图像中的不同对象。我们可以将这种技术进行扩展吗?也就是说,对每个对象的精确像素进行定位,而不仅仅是用边界框进行定位? Facebook AI 则使用了 Mask R-CNN 架构对实例分割问题进行了探索。

    

    

    就像 Fast R-CNN 和 Faster R-CNN 一样, Mask R-CNN 的底层是鉴于 Faster 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 的分类和边界框相结合,以便进行精确的分割:

    结语

    上述这 5 种主要的计算机视觉技术可以协助计算机从单个或一系列图像中提取、分析和理解有用的信息。你还可以通过我的 GitHub 存储库(https://github.com/khanhnamle1994/computer-vision)获取所有的演讲幻灯片以及指南。

    原文链接 https://heartbeat.fritz.ai/the-5-computer-vision-techniques-that-will-change-how-you-see-the-world-1ee19334354b

    展开全文
  • 计算机视觉技术为盲人带来福音

    千次阅读 2012-02-03 10:19:05
    Crosswatch系统指引视觉障碍...最近,一个旨在为视觉障碍者提供指路和定位服务的系统,引起了加州大学圣库鲁兹分校计算机视觉研究专家们的兴趣。 这套系统在环境中的关键地理位置设置了特别的色彩标记器,这些标记器能


    Crosswatch系统指引视觉障碍者通过斑马线。(左图)盲人使用者用手机摄像头左右扫描十字路口,

    系统反馈信息给使用者提醒他何时穿越斑马线。(右图)通过原理图可以看到系统是如何通知使用者交通灯何时变亮的。

     

     

    最近,一个旨在为视觉障碍者提供指路和定位服务的系统,引起了加州大学圣库鲁兹分校计算机视觉研究专家们的兴趣。

    这套系统在环境中的关键地理位置设置了特别的色彩标记器,这些标记器能被一般的手机摄像头侦测到,从而为使用者提供决策判断。

    三位视觉障碍者在室内环境,和基于不同的系统设置下,对这套系统进行了测试。

    在美国有超过2千万的视觉障碍者,他们有的是看不清东西的,有的是戴眼镜的,有的则是完全失明者。视觉障碍几乎影响到生活中的方方面面。

    走路,开车,阅读以及对地点,和物体的识别,没有视力,人们在生活中将会变得寸步难行。由此,能在这方面帮助到视觉障碍者的技术将会收获很大的社会效益。

    对视觉障碍者提供帮助的这类技术,其硬件和软件已经足够在全社会推广开来。迄今为止,最成功的产品包括:文本放大镜,屏幕阅读器,布莱叶笔记提取器,

    以及加上光学字符辨识功能(OCR)的文档扫描器。要研发第三方应用,计算机视觉技术将不可避免地成为最自然地选择——也就是用这项技术来制造一对“人工眼”。

    计算机视觉已经被应用到其他诸多领域,如机器人导航,监控,和用户界面。然而,在为视觉障碍者的协助上,鲜有相关的系统和算法来支撑。

    随着视觉障碍在人群的增加,计算机视觉(CV)和移动计算将会在辅助技术中拥有巨大的潜力,并发挥重要的作用。而这个群体的实际需求也会拉动该项技术的发展,

    从而使得其被广泛的应用。


    展开全文
  • 计算机视觉五大技术

    2020-04-27 13:10:38
    目前,计算机视觉是深度学习领域最热门的研究领域之一。计算机视觉实际上是一个跨领域的交叉学科,包括计算机科学(图形、算法、理论、系统、体系结构),数学(信息检索、机器学习),工程学(机器人、语音、自然...

    目前,计算机视觉是深度学习领域最热门的研究领域之一。计算机视觉实际上是一个跨领域的交叉学科,包括计算机科学(图形、算法、理论、系统、体系结构),数学(信息检索、机器学习),工程学(机器人、语音、自然语言处理、图像处理),物理学(光学 ),生物学(神经科学)和心理学(认知科学)等等。许多科学家认为,计算机视觉为人工智能的发展开拓了道路。

    那么什么是计算机视觉呢? 这里给出了几个比较严谨的定义:

    ✦ “对图像中的客观对象构建明确而有意义的描述”(Ballard&Brown,1982)

    ✦ “从一个或多个数字图像中计算三维世界的特性”(Trucco&Verri,1998)

    ✦ “基于感知图像做出对客观对象和场景有用的决策”(Sockman&Shapiro,2001)

    为什么要学习计算机视觉?

    一个显而易见的答案就是,这个研究领域已经衍生出了一大批快速成长的、有实际作用的应用,例如:

    • 人脸识别: Snapchat 和 Facebook 使用人脸检测算法来识别人脸。
    • 图像检索:Google Images 使用基于内容的查询来搜索相关图片,算法分析查询图像中的内容并根据最佳匹配内容返回结果。
    • 游戏和控制:使用立体视觉较为成功的游戏应用产品是:微软 Kinect。
    • 监测:用于监测可疑行为的监视摄像头遍布于各大公共场所中。
    • 生物识别技术:指纹、虹膜和人脸匹配仍然是生物识别领域的一些常用方法。
    • 智能汽车:计算机视觉仍然是检测交通标志、灯光和其他视觉特征的主要信息来源。

    视觉识别是计算机视觉的关键组成部分,如图像分类、定位和检测。神经网络和深度学习的最新进展极大地推动了这些最先进的视觉识别系统的发展。在本文中,我将分享 5 种主要的计算机视觉技术,并介绍几种基于计算机视觉技术的深度学习模型与应用。

    1、图像分类

    

    给定一组各自被标记为单一类别的图像,我们对一组新的测试图像的类别进行预测,并测量预测的准确性结果,这就是图像分类问题。图像分类问题需要面临以下几个挑战☟☟☟:

    视点变化,尺度变化,类内变化,图像变形,图像遮挡,照明条件和背景杂斑

    我们怎样来编写一个图像分类算法呢?

    计算机视觉研究人员提出了一种基于数据驱动的方法。

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

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

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

    目前较为流行的图像分类架构是卷积神经网络(CNN)——将图像送入网络,然后网络对图像数据进行分类。卷积神经网络从输入“扫描仪”开始,该输入“扫描仪”也不会一次性解析所有的训练数据。比如输入一个大小为 100*100 的图像,你也不需要一个有 10,000 个节点的网络层。相反,你只需要创建一个大小为 10 *10 的扫描输入层,扫描图像的前 10*10 个像素。然后,扫描仪向右移动一个像素,再扫描下一个 10 *10 的像素,这就是滑动窗口。

    

    输入数据被送入卷积层,而不是普通层。每个节点只需要处理离自己最近的邻近节点,卷积层也随着扫描的深入而趋于收缩。除了卷积层之外,通常还会有池化层。池化是过滤细节的一种方法,常见的池化技术是最大池化,它用大小为 2*2 的矩阵传递拥有最多特定属性的像素。

    现在,大部分图像分类技术都是在 ImageNet 数据集上训练的, ImageNet 数据集中包含了约 120 万张高分辨率训练图像。测试图像没有初始注释(即没有分割或标签),并且算法必须产生标签来指定图像中存在哪些对象。

    现存的很多计算机视觉算法,都是被来自牛津、 INRIA 和 XRCE 等顶级的计算机视觉团队在 ImageNet 数据集上实现的。通常来说,计算机视觉系统使用复杂的多级管道,并且,早期阶段的算法都是通过优化几个参数来手动微调的。

    第一届 ImageNet 竞赛的获奖者是 Alex Krizhevsky(NIPS 2012) ,他在 Yann LeCun 开创的神经网络类型基础上,设计了一个深度卷积神经网络。该网络架构除了一些最大池化层外,还包含 7 个隐藏层,前几层是卷积层,最后两层是全连接层。在每个隐藏层内,激活函数为线性的,要比逻辑单元的训练速度更快、性能更好。除此之外,当附近的单元有更强的活动时,它还使用竞争性标准化来压制隐藏活动,这有助于强度的变化。

    

    就硬件要求而言, Alex 在 2 个 Nvidia GTX 580 GPU (速度超过 1000 个快速的小内核)上实现了非常高效的卷积网络。 GPU 非常适合矩阵间的乘法且有非常高的内存带宽。这使他能在一周内完成训练,并在测试时快速的从 10 个块中组合出结果。如果我们能够以足够快的速度传输状态,就可以将网络分布在多个内核上。

    随着内核越来越便宜,数据集越来越大,大型神经网络的速度要比老式计算机视觉系统更快。在这之后,已经有很多种使用卷积神经网络作为核心,并取得优秀成果的模型,如 ZFNet(2013),GoogLeNet(2014), VGGNet(2014), RESNET(2015),DenseNet(2016)等。

    2、对象检测

    

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

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

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

    1. 在 R-CNN 中,首先使用选择性搜索算法扫描输入图像,寻找其中的可能对象,从而生成大约 2,000 个区域建议;
    2. 然后,在这些区域建议上运行一个 卷积神网络;
    3. 最后,将每个卷积神经网络的输出传给支持向量机( SVM ),使用一个线性回归收紧对象的边界框。

    

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

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

    1. 在建议区域之前进行特征提取,因此在整幅图像上只能运行一次卷积神经网络;
    2. 用一个 softmax 层代替支持向量机,对用于预测的神经网络进行扩展,而不是创建一个新的模型。

    

    Fast R-CNN 的运行速度要比 R-CNN 快的多,因为在一幅图像上它只能训练一个 CNN 。 但是,择性搜索算法生成区域提议仍然要花费大量时间。

    Faster R-CNN 是基于深度学习对象检测的一个典型案例。

    该算法用一个快速神经网络代替了运算速度很慢的选择性搜索算法:通过插入区域提议网络( RPN ),来预测来自特征的建议。 RPN 决定查看“哪里”,这样可以减少整个推理过程的计算量。

    RPN 快速且高效地扫描每一个位置,来评估在给定的区域内是否需要作进一步处理,其实现方式如下:通过输出 k 个边界框建议,每个边界框建议都有 2 个值——代表每个位置包含目标对象和不包含目标对象的概率。

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

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

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

    3、目标跟踪

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

    根据观察模型,目标跟踪算法可分成 2 类:生成算法和判别算法。

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

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

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

    • 离线无监督预训练使用大规模自然图像数据集获得通用的目标对象表示,对堆叠去噪自动编码器进行预训练。堆叠去噪自动编码器在输入图像中添加噪声并重构原始图像,可以获得更强大的特征表述能力。
    • 将预训练网络的编码部分与分类器合并得到分类网络,然后使用从初始帧中获得的正负样本对网络进行微调,来区分当前的对象和背景。 DLT 使用粒子滤波作为意向模型(motion model),生成当前帧的候选块。 分类网络输出这些块的概率值,即分类的置信度,然后选择置信度最高的块作为对象。
    • 在模型更新中, DLT 使用有限阈值。

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

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

    • 卷积神经网络特征映射可用于定位和跟踪。
    • 对于从背景中区分特定对象这一任务来说,很多卷积神经网络特征映射是噪音或不相关的。
    • 较高层捕获对象类别的语义概念,而较低层编码更多的具有区性的特征,来捕获类别内的变形。

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

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

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

    如下图所示, MD Net 可分为两个部分,即 K 个特定目标分支层和共享层:每个分支包含一个具有 softmax 损失的二进制分类层,用于区分每个域中的对象和背景;共享层与所有域共享,以保证通用表示。

    

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

    • 应用到诸如循环神经网络( RNN )和深度信念网络(DBN )等其他网络模型;
    • 设计网络结构来适应视频处理和端到端学习,优化流程、结构和参数;
    • 或者将深度学习与传统的计算机视觉或其他领域的方法(如语言处理和语音识别)相结合。

    4、语义分割

    

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

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

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

    这种方法允许针对任何尺寸的图像生成分割映射,并且比块分类算法快得多,几乎后续所有的语义分割算法都采用了这种范式。

    

    但是,这也仍然存在一个问题:在原始图像分辨率上进行卷积运算非常昂贵。为了解决这个问题, FCN 在网络内部使用了下采样和上采样:下采样层被称为条纹卷积( striped convolution );而上采样层被称为反卷积( transposed convolution )。

    尽管采用了上采样和下采样层,但由于池化期间的信息丢失, FCN 会生成比较粗糙的分割映射。SegNet 是一种比 FCN (使用最大池化和编码解码框架)更高效的内存架构。在 SegNet 解码技术中,从更高分辨率的特征映射中引入了 shortcut/skip connections ,以改善上采样和下采样后的粗糙分割映射。

    

    目前的语义分割研究都依赖于完全卷积网络,如空洞卷积 ( Dilated Convolutions ),DeepLab 和 RefineNet 。

    5、实例分割

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

    到目前为止,我们已经看到了如何以多种有趣的方式使用卷积神经网络的特征,通过边界框有效定位图像中的不同对象。我们可以将这种技术进行扩展吗?也就是说,对每个对象的精确像素进行定位,而不仅仅是用边界框进行定位? Facebook AI 则使用了 Mask R-CNN 架构对实例分割问题进行了探索。

    

    

    就像 Fast R-CNN 和 Faster R-CNN 一样, Mask R-CNN 的底层是鉴于 Faster 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 的分类和边界框相结合,以便进行精确的分割:

    结语

    上述这 5 种主要的计算机视觉技术可以协助计算机从单个或一系列图像中提取、分析和理解有用的信息。可以通过 GitHub 存储库(https://github.com/khanhnamle1994/computer-vision)获取所有的演讲幻灯片以及指南。

    展开全文
  • 浅谈-什么是计算机视觉

    万次阅读 2018-05-02 13:42:48
    这意味着计算机视觉技术的研究目标是使计算机具有通过二维图像认知三维环境信息的能力。因此不仅需要使机器能感知三维环境中物体的几何信息(形状、位置、姿态、运动等)而且能对它们进行描述、存储、识别与理解。...

    1什么是计算机视觉

    计算机视觉(Computer Vision)是指用计算机实现人的视觉功能——对客观世界的三维场景的感知、识别和理解。


    这意味着计算机视觉技术的研究目标是使计算机具有通过二维图像认知三维环境信息的能力。因此不仅需要使机器能感知三维环境中物体的几何信息(形状、位置、姿态、运动等)而且能对它们进行描述、存储、识别与理解。可以认为,计算机视觉与研究人类或动物的视觉是不同的:它借助于几何、物理和学习技术来构筑模型,用统计的方法来处理数据。


    人工智能的完整闭环包括感知、认知、推理再反馈到感知的过程,其中视觉在我们的感知系统中占据大部分的感知过程。所以研究视觉是研究计算机的感知重要的一步。


    2发展的几个重要节点

    • 视觉研究的开端-Hubel和Wiesel关于大脑视皮层细脑感受野的论述

    感受野-(一个感觉神经元的感受野是指这个位置里适当的刺激能够引起该神经元反应的区域。感受野一词主要是指听觉系统、本体感觉系统和视觉系统中神经元的一些性质。)

    1959年,Hubel和Wiesel猫实验的故事,把微电极埋进猫的视皮质细胞,之后在屏幕上打出一些光影和图形。通过固定猫的头部来控制视网膜上的成像,并测试细胞对线条、直角、边缘线等图形的反应。Hubel和Wiesel告诉我们视觉识别应该从简单的形状开始。


    对于看到鱼和老鼠投像的猫来说,视觉处理的前期并不是对整体的鱼或者老鼠进行处理,视觉处理流程的第一步是对简单的形状的结构处理、边缘排列。只有当图片切换时的反应激烈。


    • 二维到三维- Roberts积木世界让计算机理解三维场景

    20世纪50年代主要分析二维图像,而Lary Roberts 1963年写的论文《block world》(积木世界),运用计算机程序,试图从图像中阐释出诸如立方体等多面体的这些边缘和形状。它根据线画图来理解由多面体构成的景物,并对物体形状物体的空间关系进行描述。


    • 学科的诞生

    计算机视觉真正的诞生时间是在1966年,MIT人工智能实验室成立了计算机视觉学科,标志着CV成为一门人工智能领域中的可研究的学科,同时历史的发展也证明了CV是人工智能领域中增长最快的一个学科。


    • 视觉理论:视觉是分层的

    20世纪80年代初,MIT人工智能实验室的David Marr出版了一本书《视觉》(全名《Vision: A Computational Investigation into the Human Representation and Processing of Visual Information》),他提出了一个观点:视觉是分层的。


    他认为视觉是个信息处理任务,应该从三个层次来研究和理解,即计算理论、算法、实现算法的机制或硬件。

    • 一、信息处理的计算理论,在这个层次研究的是对什么信息进行计算和为什么要进行这些计算。

    • 二、算法,在这个层次研究的是如何进行所要求的计算,即设计特定的算法

    • 三、实现算法的机制或硬件,在这个层次上研究完成某一特定算法的计算机构。

    1. 例如根据 Fourier 分析理论,任意连续函数可用它的 Fourier 频谱来表示,因此 Fourier 变换是属于第一层的理论,而计算Fourier 变换的算法是属于第二个层次的,至于实现快速,Fourier算法的阵列处理机就属于第三层次。

    视觉理论使人们对视觉信息的研究有了明确的内容和较完整的基本体系,仍被看做是研究的主流;


    3计算机视觉是一门交叉学科

    计算机视觉技术是一种典型的交叉学科研究领域,包含了生物、心理,物理,工程,数学,计算机科学等领域,存在与其他许多学科或研究方向之间相互渗透、相互支撑的关系。在概念的理解中我们常常听到AI、图像处理、模式识别、机器视觉等词语,那么他们和计算机视觉之间是怎样的关系呢?


    (图片来自网络)

    计算机视觉与人工智能

    人工智能技术主要研究智能系统的设计和有关智能的计算理论与方法。 人工智能可被分为三个阶段感知 、认知和动作执行。计算机视觉常被视为A I的一分支 。

    计算机视觉与图像处理

    图像处理中,人是最终的解释者;计算机视觉中,计算机是图像的解释者。图像处理算法在机器视觉系统的早期阶段起着很大的作用,它们通常被用来增强特定信息并抑制噪声。计算机视觉系统必须有图像处理模块存在。

    (图片来自wikipedia)

    计算机视觉与模式识别

    模式识别是根据从图像中抽取的统计特性或结构信息,把图像分为设定的类别。图像模式的分类是计算机视觉中的一个重要问题。模式识别中的许多方法可以应用于计算机视觉中。

    计算机视觉与机器视觉

    计算机视觉技术的研究目标是使计算机具有通过一幅或多幅图像认知周围环境的能力(包括对客观世界三维环境的感知 、识别与理解)。 这意味着计算机不仅要模拟人眼的功能,而且更重要的是使计算机完成人眼所不能胜任的工作。而机器视觉则是建立在计算机视觉理论基础之上,偏重于计算机视觉技术的工程化,能够自动获取和分析特定的图像,以控制相应的行为。与计算机视觉所研究的视觉模式识别、视觉理解等内容不同,机器视觉技术重点在于感知环境中物体的形状、位置 、姿态 、运动等几何信息 。两者基本理论框架、底层理论、算法相似,只是研究的最终目的不同。所以实际中并不加以严格划分,对于工业应用常使用“机器视觉” ,而一般情况下则常用“计算机视觉“。(部分选自《基于 OpenCV 的计算机视觉技术实现》


    4计算机视觉的关键任务

    1、物体识别,识别图像物体属于的类别。

    2、物体检测,用框去标出物体的位置,并给出物体的类别。

    3、分类+定位,分类问题就是给输入图像分配标签的任务,找到图像中某一目标物体在图像中的位置,即定位。

    4、图像分割,将数字图像细分为多个图像子区域(像素的集合,也被称作超像素)的过程。


    5值得关注的人工智能开放平台

    Face++人工智能开放平台包含了包括人脸识别、人体识别、证件识别、图像识别在内的CV能力的体现。承接了如手机、营销、教育、汽车等行业的落地解接方案。




    展开全文
  • 资源名称:计算机视觉技术相关资料汇总资源目录:【】(贾云得)机器视觉【】MVIPS机器视觉图像处理软件说明【】数字图像处理与机器视觉【】机器人视觉技术【】机器视觉的现状及发展趋势资源截图: 资源太大,传百度...
  • 计算机视觉简述

    2020-11-13 10:25:58
    如果我们把数据分为结构化数据和非结构化数据,我们可以看到,以图像为代表的非结构化数据以指数级的方式增加,为了能“读懂”海量的非结构化数据,计算机视觉技术尤为重要。 在没有计算机视觉之前,我们只能把图像...
  • 但是,在本文中,我想介绍一些计算机视觉技术不太明显的用途。特别是以下的三个行业,可能会从这种技术趋势的发展中受益匪浅。计算机视觉技术(也被称为机器视觉)允许机器以视觉方式解释周围的世界。作为人工智能的一...
  • 计算机视觉五大技术

    万次阅读 2019-07-07 16:36:56
    计算机视觉五大技术文章来源:企鹅号 - AI火箭营 计算机视觉五大技术 - 云+社区 - 腾讯云 当前计算机视觉是深度学习领域最热门的研究领域之一。计算机视觉实际上是一个跨领域的交叉学科,包括计算机科学(图形、算法...
  • 让我们看一下使计算机视觉软件开发市场如此快速增长的最有前途和更有趣的技术。 深度学习的进展 深度学习由于其提供准确结果的优势而广受欢迎。尽管传统的机器学习算法可能非常复杂,但它们的核...
  • 讲真在计算机这个庞大的体系下挑选出一个方向来确实蛮难,自己挑来挑去,有种乱花渐欲迷人眼的感觉,不过就目前自己的兴趣、性格和学习能力,远景规划来看,计算机视觉这个方向目前来看对我自己来说确实是一个十分...
  • 译者 | 王柯凝出品 | AI科技大本营(公众号ID:rgznai100)【 AI 科技大本营导读】目前,计算机视觉是深度学习领域最热门的研究领域之一。计算机视觉实际上是...
  • 基于OpenCV的计算机视觉技术实现(pdf电子书)

    千次下载 热门讨论 2011-09-27 11:49:42
    自己在网上找了遍也没有找到《基于OpenCV的计算机视觉技术实现》这本书,找到的都是该书每章对应的程序实现代码,但是如果原理不知道的话,光看代码很难理解的。希望这本书给学习利用opencv研究机器视觉的朋友带来...
  • 计算机视觉技术与应用综述

    千次阅读 2019-08-19 09:53:47
    引用自:无人系统之“眼”——计算机视觉技术与应用浅析 张 丹,单海军,王 哲,吴陈炜 一、前言 ​         近年来,人工智能和深度学习获得突破,成为了大众关注的焦点。如LeCun Y,Bengio ...
  • 计算机视觉技术学习路线(3D视觉)

    千次阅读 2019-12-14 10:18:26
    2D视觉技术借助强大的计算机视觉和深度学习算法取得了超越人类认知的成就,而3D视觉则因为算法建模和环境依赖等问题,一直处于正在研究的前沿。近年来,3D视觉技术快速发展,并开始结合深度学习算法,在智能制造、...
  • 深度学习在计算机视觉领域,解决了或者推动了一大类非线性的映射函数学习的问题。但从落地角度来看,依赖于有标注大数据的深度学习也还存在非常多问题。
  • 本文首发于GitChat,未经授权不得转载,转载需与GitChat联系。背景当前,人工智能是下一代信息技术的核心和焦点,而无人配送则是人工智能典型的落地场景,因为完成无人...
  • 计算机视觉技术路径

    千次阅读 2017-12-20 21:15:22
    本文章用于说明计算机视觉的学习路径,具体内容后面补入。
  • 基于深度学习的计算机视觉技术在无人驾驶中的应用 背景 当前,人工智能是下一代信息技术的核心和焦点,而无人配送则是人工智能典型的落地场景,因为完成无人配送需要自动驾驶技术、机器人技术、视觉分析、自然语言...
  • 计算机视觉前沿技术探索

    千次阅读 2018-11-24 09:10:29
    计算机视觉前沿技术探索   摘要:计算机视觉与最前沿技术如何结合? 计算机视觉软件正在改变行业,使用户的生活变得不仅更容易,而且更有趣。作为一个有潜力的领域,计算机视觉已经获得了大量的投资。北美计算机...
  • 概述: 在这些年的科幻电影中,特效的发展越来越令人赏心悦目,沉醉不已。今天博主来和大家分享一下如何将电影中的特效在现实生活中实现一番! 我们就拿电影中经常出现的透明触摸屏来做本篇主题吧!...

空空如也

1 2 3 4 5 ... 20
收藏数 95,385
精华内容 38,154
关键字:

计算机视觉技术