5种计算机视觉技术将改变你如何看待世界



不靠谱的猫 2018-04-14 12:44:24

计算机视觉是目前深度学习领域最热门的研究领域之一。它位于计算机科学(图形,算法,理论,系统,体系结构),数学(信息检索,机器学习),工程(机器人,语音,NLP,图像处理),物理学(光学),生物学(神经科学)和心理学(认知科学)。由于计算机视觉代表了对视觉环境及其背景的相对理解,许多科学家认为该领域由于其跨域掌握而为人工智能铺平了道路。

那么什么是计算机视觉?这里有几个正式的教科书定义:

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

“从一个或多个数字图像计算3D世界的性质”(Trucco&Verri,1998)

“根据感知图像做出关于真实物体和场景的有用决定”(Sockman&Shapiro,2001)

为什么学习计算机视觉 最明显的答案是,从这个研究领域衍生出一批快速增长的有用应用程序。这只是其中的一小部分:

脸部识别:Snapchat和Facebook使用脸部检测算法来应用滤镜并在图片中识别您。

图片检索:Google图片使用基于内容的查询来搜索相关图片。算法分析查询图像中的内容并根据最匹配的内容返回结果。

游戏和控制:使用立体视觉的游戏中的优秀商业产品是Microsoft Kinect。

监视:监视摄像头在公共场所无处不在,用于检测可疑行为。

生物识别:指纹,虹膜和人脸匹配仍然是生物识别中常用的一些方法。

智能车:视觉仍然是检测交通标志和灯光以及其他视觉特征的主要信息来源。

1 - 图像分类

5种计算机视觉技术将改变你如何看待世界

图像分类的问题是这样的:给定一组图像,这些图像都被标记为单一类别,我们被要求预测这些类别以获得一组新的测试图像并测量预测的准确性。与此任务相关的各种挑战包括视点变化,尺度变化,图像变形,图像遮挡,照明条件和背景杂波。

我们可以怎样去编写一个可以将图像分类到不同类别的算法?计算机视觉研究人员提出了一种数据驱动的方法来解决这个问题。它不是直接在代码中指定每个感兴趣的图像类别,而是为计算机提供每个图像类的许多示例,然后开发学习算法,查看这些示例并了解每个类的视觉外观。换句话说,他们首先累积标记图像的训练数据集,然后将其馈送到计算机以处理数据。

鉴于这个事实,完整的图像分类管道可以如下形式化:

我们的输入是一个由N个图像组成的训练数据集,每个图像都标有K个不同类别之一。

然后,我们使用这个训练集来训练一个分类器,以了解每个类的外观。

最后,我们通过要求分类器的质量预测一组以前从未见过的新图像的标签来评估质量。然后我们将这些图像的真实标签与分类器预测的标签进行比较。

用于图像分类的最流行的体系结构是卷积神经网络(CNN)。CNN的一个典型用例是您提供网络映像的位置,并且网络将数据分类。CNN倾向于以输入“扫描仪”开始,该输入“扫描仪”不是一次性解析所有训练数据。例如,要输入100 x 100像素的图像,您不需要具有10,000个节点的图层。相反,您创建一个10 x 10的扫描输入图层,您可以输入图像的前10 x 10像素。通过该输入后,通过将扫描仪向右移动一个像素,将其输入下一个10 x 10像素。这种技术被称为滑动窗口。

5种计算机视觉技术将改变你如何看待世界

这个输入数据然后通过卷积层而不是常规层进行馈送。每个节点只关注紧密相邻的小区。这些卷积层也随着它们变得更深而趋于收缩,主要由输入的易分解因素决定。除了这些卷积层之外,它们还经常具有池化层。池化是过滤细节的一种方式:常见的池化技术是最大池化,其中我们采用2 x 2像素并传递具有最多特定属性的像素。

现在大多数图像分类技术都是在ImageNet上进行的,该ImageNet是一个包含大约120万个高分辨率训练图像的数据集。测试图像将在没有初始注释的情况下呈现(无分割或标签),并且算法必须产生指定图像中存在哪些对象的标签。计算机视觉系统使用复杂的多级流水线,并且通常通过优化一个手工调整的早期阶段来对这个数据集进行试验,这些方法包括来自牛津,INRIA和XRCE的计算机视觉组。参数很少。

5种计算机视觉技术将改变你如何看待世界

第一届ImageNet竞赛的获奖者Alex Krizhevsky(NIPS 2012)开发了Yann LeCun开创的非常深的卷积神经网络类型。其架构包括7个隐藏层,不包括一些最大池层。早期的层是卷积的,而最后的两层是全局连接的。激活函数在每个隐藏层中被纠正为线性单位。这些训练比物流单位训练速度更快,表现力更强。除此之外,当附近的单位有更强的活动时,它还使用竞争性标准化来压制隐藏的活动。这有助于强度的变化。

GPU非常适合矩阵矩阵乘法,并且还具有非常高的内存带宽。这使他可以在一周内训练网络,并使测试时快速结合10个补丁的结果。如果我们能够以足够快的速度交流状态,我们可以将网络分布在多个核心上。

2 - 对象检测

5种计算机视觉技术将改变你如何看待世界

在图像中定义对象的任务通常涉及为各个对象输出边界框和标签。这不同于分类/本地化任务,通过将分类和本地化应用于许多对象而不是仅仅一个主导对象。您只有2类对象分类,这意味着对象边界框和非对象边界框。例如,在汽车检测中,您必须使用边框检测给定图像中的所有汽车。

如果我们像使用滑动窗口技术一样对图像进行分类和本地化,则需要将CNN应用于许多不同的图像作物。由于CNN将每种作物分类为对象或背景,我们需要将CNN应用于大量的位置和尺度,这在计算上非常昂贵!

5种计算机视觉技术将改变你如何看待世界

为了解决这个问题,神经网络研究人员建议使用区域,而我们发现可能包含物体的“斑点”图像区域。运行速度相对较快。第一种模式是R-CNN(基于区域的卷积神经网络)。在R-CNN中,我们首先使用称为选择性搜索的算法扫描输入图像以寻找可能的对象,从而生成〜2,000个区域提议。然后,我们在这些区域提案之上运行一个CNN。最后,我们将每个CNN的输出提供给SVM,以对区域进行分类并进行线性回归以收紧对象的边界框。

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

R-CNN的直接后代是Fast R-CNN,它通过2次增强提高了检测速度:1)在提出区域之前执行特征提取,因此仅在整个图像上运行一个CNN,以及2)用softmax层替换SVM ,从而扩展了预测的神经网络,而不是创建一个新的模型。

5种计算机视觉技术将改变你如何看待世界

快速R-CNN在速度方面表现要好得多,因为它只为整个图像训练一个CNN。但是,选择性搜索算法仍然花费大量时间来生成区域提议。

因此,更快的R-CNN的发明,它现在是一个基于深度学习的对象检测的典范模型。它通过插入区域提议网络(RPN)来预测来自特征的提议,用快速神经网络取代了慢速选择性搜索算法。RPN用于决定“看哪里”,以减少整个推理过程的计算需求。RPN快速高效地扫描每个位置,以评估是否需要在给定地区进行进一步的处理。它通过输出k个包围盒提案来实现,每个包围盒提案都有2个代表每个位置的对象或不包含对象的概率。

5种计算机视觉技术将改变你如何看待世界

一旦我们有了我们的地区建议,我们就直接将它们送入本质上是Fast R-CNN的地方。我们添加一个池层,一些完全连接的层,最后是一个softmax分类层和边界框回归器。

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

近年来主要目标检测趋势已经转向更快,更高效的检测系统。在像You Only Look Once(YOLO),Single Shot MultiBox Detector(SSD)和基于区域的全卷积网络(R-FCN)这样的方法中,这可以看作是在整个图像上共享计算的一种方式。因此,这些方法与3 R-CNN技术相关的昂贵子网区分开来。这些趋势背后的主要原因是避免将单独的算法孤立地集中在各自的子问题上,因为这通常会增加培训时间并降低网络准确性。

3 - 对象跟踪

5种计算机视觉技术将改变你如何看待世界

对象跟踪是指在特定场景中跟踪特定对象或多个对象的过程。传统上,它在视频和真实世界的交互中具有应用程序,其中在初始对象检测之后进行观察。现在,对于自动驾驶系统(例如来自优步和特斯拉等公司的自动驾驶车辆)来说至关重要。

对象跟踪方法根据观察模型可分为2类:生成方法和判别方法。生成方法使用生成模型来描述表观特征并最小化重建误差以搜索目标,如PCA。区分方法可以用来区分物体和背景,其性能更稳健,并逐渐成为跟踪的主要手段。判别法也被称为跟踪检测,深度学习属于这一类别。为了通过检测实现跟踪,我们检测所有帧的候选对象,并使用深度学习从候选对象中识别想要的对象。有两种可以使用的基本网络模型:堆叠自动编码器(SAE)和卷积神经网络(CNN)。

使用SAE跟踪任务的最受欢迎的深度网络是Deep Learning Tracker,它提出离线预培训和在线微调网络。这个过程像这样工作:

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

5种计算机视觉技术将改变你如何看待世界

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

FCNT成功地分析和利用了VGG模型的特征图,这是一个预先训练好的ImageNet,并得出以下结论:

  • CNN功能地图可用于本地化和跟踪。
  • 许多CNN功能地图对于区分背景中的特定对象的任务而言是嘈杂或不相关的。
  • 较高层捕获对象类别的语义概念,而较低层编码更多区分性特征以捕获类内变体。

由于这些观察,FCNT设计了特征选择网络以在VGG网络的conv4-3和conv5-3层上选择最相关的特征图。然后为了避免嘈杂的过拟合,它还为两层单独选择的特征映射设计了额外的两个通道(称为SNet和GNet)。在主干网络捕获对象的类别信息,而SNET将对象从具有相似外观的背景中区分开来。两个网络都使用第一帧中给定的边界框进行初始化,以获取对象的热图,而对于新帧,将剪切并传播最后一帧中以对象位置为中心的感兴趣区域(ROI)。最后,通过SNet和GNet,分类器获取两个预测的热图,跟踪器根据是否存在干扰,决定使用哪个热图来生成最终的跟踪结果。FCNT的管道如下所示。

5种计算机视觉技术将改变你如何看待世界

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

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

5种计算机视觉技术将改变你如何看待世界

近年来,深度学习研究人员尝试了不同的方法来适应视觉追踪任务的特征。有许多方向已经被探索:应用其他网络模型,如Recurrent Neural Net和Deep Belief Net,设计网络结构以适应视频处理和端到端学习,优化流程,结构和参数,或者甚至将深度学习与计算机视觉的传统方法或其他领域的方法(如语言处理和语音识别)相结合。

4 - 语义分割

5种计算机视觉技术将改变你如何看待世界

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

与其他计算机视觉任务一样,CNN在分割问题上取得了巨大成功。最流行的初始方法之一是通过滑动窗口进行贴片分类,其中每个像素使用其周围的图像片分别分类。但是,这在计算上效率非常低,因为我们不重用重叠补丁之间的共享功能。

相反,该解决方案是加州大学伯克利分校的全卷积网络 (FCN),它在没有任何完全连接层的情况下推广了端到端CNN体系结构以进行密集预测。这允许针对任何尺寸的图像生成分割图,并且与补丁分类方法相比也快得多。几乎所有后续的语义分割方法都采用了这种范式。

5种计算机视觉技术将改变你如何看待世界

然而,仍然存在一个问题:原始图像分辨率的卷积将非常昂贵。为了解决这个问题,FCN在网络内部使用下采样和上采样。下采样层被称为条带卷积,而上采样层被称为转置卷积。

尽管有上采样/下采样层,但由于池中的信息丢失,FCN会生成粗分割图。SegNet是一种比使用最大池和编码器 - 解码器框架的FCN更高效的内存架构。在SegNet中,从更高分辨率的特征映射中引入了快捷/跳过连接,以改善上采样/下采样的粗糙度。

5种计算机视觉技术将改变你如何看待世界

最近的语义分割研究都严重依赖完全卷积网络,如扩张卷积,DeepLab和RefineNet。

5 - 实例分割

5种计算机视觉技术将改变你如何看待世界

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

5种计算机视觉技术将改变你如何看待世界

到目前为止,我们已经看到了如何以许多有趣的方式使用CNN特征,以便用包围盒有效定位图像中的不同对象。我们可以扩展这种技术来定位每个对象的精确像素,而不仅仅是边界框吗?Facebook AI使用称为Mask R-CNN的体系结构研究了此实例分割问题。

就像Fast R-CNN和更快的R-CNN一样,Mask R-CNN的底层直觉很直观鉴于更快的R-CNN在物体检测方面的工作如此出色,我们是否可以将其扩展到进行像素级分割?

Mask R-CNN通过向Faster R-CNN添加分支来完成此操作,该分支输出一个二进制掩码,该掩码表示给定像素是否为对象的一部分。该分支是基于CNN特征映射的完全卷积网络。给定CNN特征映射作为输入,网络输出一个矩阵,其中像素属于该对象的所有位置均为1,而其他位置为0(这称为二进制掩码)。

5种计算机视觉技术将改变你如何看待世界

另外,当在原始Faster R-CNN架构上运行时没有修改时,由RoIPool(感兴趣区域)选择的特征映射区域与原始图像的区域稍微不重合。由于图像分割需要像素级别的特异性,与边界框不同,这自然会导致不准确。Mask R-CNN通过调整RoIPool使用称为Roialign(感兴趣区域对齐)的方法更精确地对齐来解决此问题。本质上,RoIAlign使用双线性插值来避免舍入错误,这会导致检测和分割不准确。

一旦生成这些蒙版,Mask R-CNN将它们与来自Faster R-CNN的分类和边界框相结合,以生成如此精确的精确分段:

5种计算机视觉技术将改变你如何看待世界

结论

这5种主要的计算机视觉技术可以帮助计算机从单个或一系列图像中提取,分析和理解有用的信息。还有许多其他我尚未涉及的高级技术,包括样式转换,着色,动作识别,3D对象,人体姿势估计等等。



0