当前位置: 首页 > 科技观察

一文看懂深度学习改变的五大计算机视觉技术

时间:2023-03-13 21:37:47 科技观察

摘要:本文主要介绍了计算机视觉中的五大主要技术,即图像分类、目标检测、目标跟踪、语义分割和实例分割。每种技术都给出了基本概念和相应的典型方法,通俗易懂,适合阅读。计算机视觉是目前最热门的研究之一。它是涵盖计算机科学(图形学、算法、理论研究等)、数学(信息检索、机器学习)、工程学(机器人、NLP等)、生物学(神经科学)和心理学(认知科学)的多学科研究。由于计算机视觉代表了对视觉环境和上下文的相对理解,许多科学家认为该领域的研究将为人工智能产业的发展奠定基础。那么,什么是计算机视觉?以下是一些公认的定义:1.从图像中清晰而有意义地描述物理对象的结构(Ballard&Brown,1982);2.从一张或多张数字图像计算三维世界的属性(Trucco&Verri,1998);3.根据遥感图像对真实物体和场景做出有用的决策(Sockman&Shapiro,2001);那么,为什么要研究计算机视觉呢?答案很明显,可以从这个领域衍生出一系列的应用,比如:1.人脸识别:一种人脸检测算法,可以从照片中识别出某人的身份;2.图像检索:类似于谷歌的图像使用基于内容的查询来搜索相关图像,算法返回与3.查询的内容最匹配的图像。4、游戏及控制:体感游戏;5、监控:公共场所随处可见的监控摄像头,监控可疑行为;6.生物识别技术:指纹、虹膜和人脸匹配是生物识别常用的方法;7.智能汽车:视觉仍然是观察交通标志、信号灯等视觉特征的主要信息来源;正如斯坦福大学公开课CS231所说,计算机视觉任务大多基于卷积神经网络。如图像分类、定位和检测。那么,对于计算机视觉来说,哪些任务占主导地位并对世界产生影响呢?本文将与读者分享5种重要的计算机视觉技术,以及它们相关的深度学习模型和应用。相信这5种技术可以改变您看待世界的方式。1.图像分类图像分类的任务经常出现在我们的日常生活中,我们习以为常,并不以为然。每天早上洗漱刷牙,我们需要准备牙刷、毛巾等生活用品。如何准确获取这些必需品是图像分类任务。官方的定义是:给定一组图像集,每张图像都标有对应的类别。然后为一组新的测试图像预测标签类别,并测量预测精度。如何编写可以对图像进行分类的算法?计算机视觉研究人员提出了一种数据驱动的方法来解决这个问题。研究人员不再关心图像在代码中是如何表达的,而是提供给计算机很多很多图像(包括每一类),然后开发一个学习算法,让计算机学习这些图像的特征,然后进行图像处理基于学习到的特征。分类。鉴于此,一个完整的图像分类步骤的一般形式如下:1.首先,输入一组训练图像数据集;2.然后,用这个训练集训练一个分类器,可以学习到每个类别的特征;3.最后,使用测试集评估分类器的性能,将预测结果与真实类别标签进行比较;对于图像分类,最流行的方法是卷积神经网络(CNN)。CNN是深度学习中常用的方法,其性能远超一般的机器学习算法。CNN网络结构基本上由卷积层、池化层和全连接层组成。其中,卷积层被认为是提取图像特征的主要组成部分。它类似于“扫描仪”。矩阵进行卷积操作,每次只“扫描”卷积核的大小,然后滑动到下一个区域进行相关操作。这种计算称为滑动窗口。从图中可以看出,输入图像被送入卷积神经网络,通过卷积层进行特征提取,然后通过池化层过滤细节(一般采用最大池化和平均池化),最后在全连接层进行特征扩展,送入对应的分类器得到其分类结果。大多数图像分类算法都是在ImageNet数据集上训练的,该数据集由120万张图像组成,涵盖1000个类别。这个数据集也可以称为改变人工智能和世界的数据集。ImagNet数据集提醒人们,构建好的数据集是AI研究的核心,数据和算法一样重要。为此,世界组织还针对这个数据集举办了一场挑战赛——ImageNetChallenge。AlexKrizhevsky(NIPS2012)赢得了第一届ImageNet挑战赛的第一名。使用的方法是深度卷积神经网络。网络结构如下图所示。在该模型中,使用了一些技术,如最大池化、线性校正单元激活函数ReLU、使用GPU模拟计算等。AlexNet模型拉开了深度学习研究的序幕。自从AlexNet网络模型赢得比赛以来,许多基于CNN的算法在ImageNet上取得了特别好的成绩,例如ZFNet(2013)、GoogleNet(2014)、VGGNet(2014)、ResNet(2015)和DenseNet(2016)等。2.目标检测目标检测通常是从图像中输出单个目标的BoundingBox(边框)和标签。例如,在汽车检测中,必须使用边界框检测给定图像中的所有车辆。以前在图像分类任务中大放异彩的CNN也可以在这里应用。第一个高效的模型是R-CNN(Region-basedConvolutionalNeuralNetwork),如下图所示。在这个网络中,首先扫描图像并使用搜索算法生成可能的区域,然后为每个可能的区域运行CNN,最后将每个CNN网络的输出送入SVM分类器进行分类和线性回归区域,并使用边界框标记目标。本质上,目标检测被转化为图像分类问题。但该方法存在训练速度慢、内存消耗大、预测时间长等问题。为了解决上述问题,RossGirshickyou提出了FastR-CNN算法,从两个方面提高了检测速度:1)在给出建议区域之前进行特征提取,这样CNN只需要在整个区域上运行一次图像;2)使用Softmax分类器代替SVM分类器;尽管FastR-CNN在速度方面有所提升,但是选择搜索算法仍然需要大量时间来生成建议区域。为此,提出了FasterR-CNN算法。该模型提出了一种候选区域生成网络(RPN),用于替代选择搜索算法,将所有内容集成到一个网络中,大大提高了检测速度和准确率。近年来,目标检测的研究趋势主要是朝着更快、更高效的检测系统方向发展。已经有一些其他方法可用,例如YOLO、SSD和R-FCN。3.对象跟踪对象跟踪是指在给定场景中跟踪特定对象或感兴趣对象的过程。简单地说,给定跟踪视频第一帧中目标的初始状态(如位置和大小),自动估计后续帧中目标对象的状态。该技术对于自动驾驶汽车等领域至关重要。根据观察模型,目标跟踪可以分为两类:生成方法和判别方法。其中,生成式方法主要是利用生成模型来描述目标的表观特征,然后通过搜索候选目标来最小化重建误差。常用的算法有稀疏编码(sparsecoding)、主成分分析(PCA)等。相比之下,判别法训练一个分类器将目标与背景区分开来,性能更稳定,逐渐成为目标跟踪领域的主要研究方法。常用的算法有堆栈自编码器(SAE)、卷积神经网络(CNN)等。使用SAE方法进行目标跟踪的最经典的深度网络是DeepLearningTracker(DLT),它提出离线预训练和在线微调。该方法的主要步骤如下:1.首先,使用堆叠自编码器(SDAE)对大规模自然图像数据集进行无监督的离线预训练,以获得通用的对象表示能力。2.将预训练网络的编码部分与分类器结合形成分类网络,然后利用从初始帧得到的正负样本对网络进行微调,使其能够区分当前对象和背景。在跟踪过程中,选择分类网络输出的得分最高的patch作为最终的预测目标。3.模型更新策略采用限制阈值的方法。基于CNN进行目标跟踪的典型算法有FCNT和MDNet。FCNT的一大亮点是深入分析了在ImageNet上预训练的CNN特征在目标跟踪任务上的性能:1.CNN特征图可用于跟踪目标定位;2.CNN的很多featuremap有噪声或者与目标跟踪任务相关性较小,无法区分目标和背景;3.CNN不同层提取的特征不同。高层特征更抽象,擅长区分不同类别的物体,而低层特征更关注目标的局部细节。基于以上观察,FCNT最终提出了如下图所示的模型结构:1.对于Conv4-3和Con5-3,采用VGG网络结构来选择与当前跟踪目标最相关的featuremap通道;2.为避免过度Fitting,分别为过滤后的Conv5-3和Conv4-3特征构建捕获类别信息GNet和SNet;3、在第一帧使用给定的帧生成热图(heapmap)返回来训练SNet和GNet;4.对于每一帧,预测结果为中心裁剪区域,分别输入到GNet和SNet中,得到两张预测热图,根据是否存在干扰决定使用哪张热图。与FCNT不同,MDNet使用视频中的所有序列来跟踪它们的运动。但是序列训练也有一个问题,就是不同的跟踪序列对于跟踪目标是完全不同的。最终,MDNet提出了多域训练的思路。网络结构如下图所示。网络分为共享层和分类层两部分。网络结构部分用于提取特征,最后分类层区分不同的类别。4.语义分割计算机视觉的核心是分割过程,它将整个图像分成像素组,然后进行标记和分类。语言分割试图从语义上理解图像中每个像素的作用(例如,汽车、摩托车等)。CNN也展示了它在这项任务中的出色表现。典型的方法是FCN,结构如下图所示。FCN模型输入图像后,在输出端直接得到密度预测,即每个像素所属的类别,从而得到端到端的方法来实现图像语义分割。与FCN上采样不同,SegNet将最大池化传输到解码器中,提高了分割分辨率。提高内存使用效率。还有其他一些方法,例如全卷积网络、扩展卷积、DeepLab和RefineNet。5.InstanceSegmentation除语义分割外,实例分割还会分割不同的类实例,比如用5种不同的颜色标记5辆汽车。在分类中,通常有一个图像,其中有一个物体在焦点上,任务是说出这个图像是什么。但是为了分割实例,我们需要执行更复杂的任务。我们看到具有多个重叠对象和日常背景的复杂场景,我们不仅对这些日常对象进行分类,还确定它们的边界、差异以及彼此之间的关系。到目前为止,我们已经了解了如何以许多有趣的方式使用CNN特征来有效地定位带有边界框的图像中的日常对象。我们能否扩展这些技术来定位每个对象的精确像素,而不仅仅是边界框?CNN在这个任务上也表现不错,典型的算法是MaskR-CNN。MaskR-CNN在FasterR-CNN的基础上增加了一个分支来输出二进制掩码。该分支与现有的分类和边界回归并行,如下图所示:Faster-RCNN在实例分割任务中表现不佳。为了改正它的缺点,MaskR-CNN提出了一个RolAlign层,通过调整Rolpool来提高准确率。本质上,RolAlign使用双线性插值来避免导致检测和分割不准确的舍入误差。生成掩码后,MaskR-CNN结合分类器和边界以产生非常准确的分割:结论以上五种计算机视觉技术可以帮助计算机从单个或一系列图像中提取、分析和理解有用信息。除此之外,还有很多其他先进的技术等待我们去探索,比如风格转换、动作识别等,希望这篇文章能指导你改变看世界的方式。