转:图像分类、物体检测、物体分割、实例分割、语义分割

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

转:图像分类、物体检测、物体分割、实例分割、语义分割0001,常识1
计算机视觉的任务很多,有图像分类、⽬标检测、语义分割、实例分割和全景分割等,那它们的区别是什么呢?
1、Image Classification(图像分类)
图像分类(下图左)就是对图像判断出所属的分类,⽐如在学习分类中数据集有⼈(person)、⽺(sheep)、狗(dog)和猫(cat)四种,图像分类要求给定⼀个图⽚输出图⽚⾥含有哪些分类,⽐如下图的例⼦是含有person、sheep和dog三种。

2、Object detection(⽬标检测)
⽬标检测(上图右)简单来说就是图⽚⾥⾯有什么?分别在哪⾥?(把它们⽤矩形框框住)
⽬前常⽤的⽬标检测算法有Faster R-CNN和基于YOLO的⽬标检测的算法
3、semantic segmentation(语义分割)
通常意义上的⽬标分割指的就是语义分割
语义分割(下图左)就是需要区分到图中每⼀点像素点,⽽不仅仅是矩形框框住了。

但是同⼀物体的不同实例不需要单独分割出来。

对下图左,标注为⼈,⽺,狗,草地。

⽽不需要⽺1,⽺2,⽺3,⽺4,⽺5等。

4、Instance segmentation(实例分割)
实例分割(上图右)其实就是⽬标检测和语义分割的结合。

相对⽬标检测的边界框,实例分割可精确到物体的边缘;相对语义分割,实例分割需要标注出图上同⼀物体的不同个体(⽺1,⽺2,⽺3...)
⽬前常⽤的实例分割算法是Mask R-CNN。

Mask R-CNN 通过向 Faster R-CNN 添加⼀个分⽀来进⾏像素级分割,该分⽀输出⼀个⼆进制掩码,该掩码表⽰给定像素是否为⽬标对象的⼀部分:该分⽀是基于卷积神经⽹络特征映射的全卷积⽹络。

将给定的卷积神经⽹络特征映射作为输⼊,输出为⼀个矩阵,其中像素属于该对象的所有位置⽤ 1 表⽰,其他位置则⽤ 0 表⽰,这就是⼆进制掩码。

⼀旦⽣成这些掩码, Mask R-CNN 将 RoIAlign 与来⾃ Faster R-CNN 的分类和边界框相结合,以便进⾏精确的分割:
5、Panoramic segmentation(全景分割)
全景分割是语义分割和实例分割的结合。

跟实例分割不同的是:实例分割只对图像中的object进⾏检测,并对检测到的object进⾏分割,⽽全景分割是对图中的所有物体包括背景都要进⾏检测和分割。

0002,常识2
2018年10⽉09⽇ 22:42:42 阅读数:1221
Directions in the CV
物体分割(Object segment)属于图像理解范畴。

那什么是图像理解?Image Understanding (IU) 领域包含众多sub-domains,如图像分类、物体检测、物体分割、实例分割等若⼲问题。

每个问题研究的范畴是什么?每个问题中,各个approach对应的the result of processing是什么?
Image Understanding (IU) is an interdisciplinary approach which fuse computer science, mathematics, engineering science, physics,
neurosciences, and cognitive science etc. together.
⼀般我们将CV分为三个⼤⽅向:图像处理、图像分析、图像理解。

其中图像理解分为以下三个部分
Image Classification:
即是将图像结构化为某⼀类别的信息,⽤事先确定好的类别(string)或实例ID来描述图⽚。

其中ImageNet是最权威的测评集,每年的ILSVRC催⽣⼤量优秀的深度⽹络结构,为其他任务提供基础,在应⽤领域,⼈脸、场景识别都可以视为分类任务。

Detection
分类任务关⼼整体,给出的是整张图⽚的内容描述,⽽检测则关注特定的物体⽬标,要求获得这⼀⽬标的类别信息和位置信息。

相⽐分类,检测给出的是对图⽚前景和背景的理解,我们需要从背景中分离出感兴趣的⽬标,并确定这⼀⽬标的描述(类别和位置),因⽽检测模型的输出是⼀个列表,列表的每⼀项使⽤⼀个数据组给出检出⽬标的类别和位置,常⽤矩形检测框的坐标表⽰。

Segmentation
分割包括语义分割(semantic segmentation)和实例分割(instance segmentation),前者是对背景分离的拓展,要求分离开具有不同语义的图像部分,⽽后者是检测任务的拓展,要求描述出⽬标的轮廓(相⽐检测框更为精细)。

分割是对图像的像素级描述,它赋予每个像素类别意义,适⽤于理解要求较⾼的场景,如⽆⼈驾驶中对道路和⾮道路的分割。

后期我会写CV综述,此处留坑占位!
也会对object segmentation的⽅法进⾏总结,占坑!
Image Classification
The task of object classification requires binary labels indicating whether objects are present in an image.
Definition:Image Classification根据image中不同图像信息中不同的feature,把不同类别的object region进⾏分类。

该任务需要我们对出现在某幅图像中的物体做标注。

例如:⼀共有1000个物体类的image中,某个物体要么有,要么没有。

可实现:输⼊⼀幅测试图⽚,输出该图⽚中物体类别的候选集。

如下图所⽰,不同形状的图形,通过分类分成了8类
Object localization (⽬标定位)
在图像分类的基础上,我们还想知道图像中的⽬标具体在图像的什么位置,通常是以边界框的(bounding box)形式。

基本思路
1. 多任务学习,⽹络带有两个输出分⽀。

⼀个分⽀⽤于做图像分类,即全连接+softmax判断⽬标类别,和单纯图像分类区别在于这⾥还
另外需要⼀个“背景”类。

另⼀个分⽀⽤于判断⽬标位置,即完成回归任务输出四个数字标记bounding box位置(例如中⼼点横纵坐标和包围盒长宽),该分⽀输出结果只有在分类分⽀判断不为“背景”时才使⽤。

2. ⼈体位姿定位/⼈脸定位
⽬标定位的思路也可以⽤于⼈体位姿定位或⼈脸定位。

这两者都需要我们对⼀系列的⼈体关节或⼈脸关键点进⾏回归。

3. 弱监督定位
由于⽬标定位是相对⽐较简单的任务,近期的研究热点是在只有标记信息的条件下进⾏⽬标定位。

其基本思路是从卷积结果中找到⼀些较⾼响应的显著性区域,认为这个区域对应图像中的⽬标。

Object detection(⽬标检测)
Detecting an object entails both stating that an object belonging to a specified class is present, and localizing it in the image. The location of an object is typically represented by a bounding box.
理解:object detection=classification+localization
定义:物体探测包含两个问题,⼀是判断属于某个特定类的物体是否出现在图中;⼆是对该物体定位,定位常⽤表征就是物体的边界框(bounding box)。

可实现:输⼊测试图⽚,输出检测到的物体类别和位置。

如下图,移动的⽪卡丘和恐龙
语义分割(Semantic Segmentation)
The task of labeling semantic objects in a scene requires that each pixel of an image be labeled as belonging to a category, such as sky, chair, floor, street, etc. In contrast to the detection task, individual instances of objects do not need to be segmented.
语义标注(Semantic scene labeling)/分割(segmentation):该任务需要将图中每⼀点像素标注为某个物体类别。

同⼀物体的不同实例不需要单独分割出来。

Instance segmentation
instance segment = object detect +semantic segment
相对物体检测的边界框,实例分割可精确到物体的边缘;相对语义分割,实例分割可以标注出图上同⼀物体的不同个体
分类任务通常来说就是识别出包含单个对象的图像是什么,但在分割实例时,我们需要执⾏更复杂的任务。

我们会看到多个重叠物体和不同背景的复杂景象,我们不仅需要将这些不同的对象进⾏分类,⽽且还要确定对象的边界、差异和彼此之间的关系!
如下图所⽰,把不同的实例对象进⾏了分割,并⽤不同的颜⾊进⾏边缘标注(⽽不是边框标注
Some examples
综述
图像理解领域中的object segmentation⽅向包括了:image classification、object localization、object detection、semantic segmentation、instance-level segmentation。

分类复杂度依次递增,分类详细程度依次递增。

1.
0003,常识
计算机视觉(CV)⼀直是⽬前深度学习领域最热的研究领域,其是⼀种交叉学科包括计算机科学(computer science / (Graphics, Algorithms, Theory, Systems, Architecture)、数学 (Information Retrieval, Machine Learning)、⼯程学(Robotics, Speech, NLP, Image Processing)、物理(Optics)、⽣物学 (Neuroscience), and 神经科学 (Cognitive Science),由于计算机视觉表⽰了对视觉环境的理解,加上其学科交叉性,众多科学家认为计算机视觉的发展可以为实现理想的⼈⼯智能铺路。

对于问题:什么才是计算机视觉?以下有三个不同的教科书式计算机视觉定义:
1. “the construction of explicit, meaningful descriptions of physical objects from images” (Ballard & Brown, 1982)
2. “computing properties of the 3D world from one or more digital images” (Trucco & Verri, 1998)
3. “to make useful decisions about real physical objects and scenes based on sensed images” (Sockman & Shapiro, 2001)
那么为什么要研究计算机视觉呢?最简单的答案就是其可以将研究快速有效的应⽤到现实场景中,下⾯列举了⼏个CV应⽤的场景:
⼈脸识别
图像检索
游戏和控制
监控
⽣物统计(指纹,虹膜,⼈脸匹配)
智能驾驶
笔者最近完成了斯坦福的CS231课程【1】,课程中将卷积神经⽹络⽤在视觉识别任务中,包括图像分类,定位和检测,尤其是深度学习技术的发展极⼤的提⾼了这些任务的精度,完成这个课程后,笔者想和⼤家分享5个最具影响⼒的计算机视觉技术。

1--图像分类
图像分类的问题是这样的:给定⼀组单⼀类别标注的图像,要求我们对⼀组新的测试集预测这些类别并且测试预测的准确率。

关于这个任务有很多挑战,包括视点变化,尺度变换,类内变化,图像变形,图像遮挡,条件,以及杂乱的背景。

我们如何来编写⼀个能将图像分成不同类别的算法?计算机视觉研究⼈员已经提出⼀种数据驱动的⽅法来解决这个问题。

他们不是试图直接在代码中指定每个感兴趣的图像类别,⽽是为计算机提供每张图像类的许多样本,然后开发学习算法,查看这些样本并了解每个类的视觉外观。

换句话说,他们⾸先收集⼀个带标注图像的训练集,然后将它传给计算机去处理这个数据。

鉴于这⼀事实,整个图像分类的过程可形式化如下:
我们的输⼊是⼀个训练集,包括N 个图像,⽤K 个不同的类别给每个图像进⾏标注。

然后,我们⽤这个训练集来训练分类器以了解每个类别像什么。

最后,我们通过让这个分类器预测⼀组它之前没见过的新的图像集来评估分类器的效果。

然后我们将这些图像的真实标签与分类器预测的标签进⾏⽐较。

卷积神经⽹络(CNNs)是⽤于图像分类最流⾏的架构。

CNNs⼀个典型的⽤例是你传给这个⽹络图像,然后⽹络对这些数据分类。

CNNs往往从输⼊”扫描器“ 开始,它不打算⼀次解析所有的训练数据。

⽐如,输⼊⼀张100×100像素的图像,你不需要具有10,000节点的图层。

相反,你会创建⼀个10×10⼤⼩的扫描输⼊层,你可以为图像的前10×10像素提供图像。

通过该输⼊后,通过将扫描器向右移动⼀个像素,可以输⼊下⼀个10×10像素。

这个技术称为滑动窗⼝。

然后,通过卷积层⽽不是正常层馈送输⼊数据。

每个节点仅仅关注与⾃⾝相邻的部分。

这些卷积层随着⽹络的变深也趋于收缩,主要是通过输⼊的易分解因素。

除了卷积层,它们通常还具有特征池化层。

池化是⼀个过滤细节的⽅法:常见的池化技术是最⼤池化,我们采⽤2×2像素,并传递具有最⼤量特定属性的像素。

⽬前⼤多数图像分类技术都是在ImageNet上⾯训练的,它是⼀个约120万个⾼分辨率的训练图像的数据集。

测试图像不显⽰初始注释(没有分割或者标签),并且算法必须⽣成指定图像中存在的对象的标签。

Oxford、INRIA、XRCE 等机构的领先计算机视觉⼩组⽤已有的最好计算机视觉⽅法应⽤于这个数据集。

通常,计算机视觉系统是复杂的多级系统,往往需要在早期阶段通过⼿动调试优化参数。

第⼀届ImageNet 竞赛的冠军 Alex Krizhevsky (NIPS 2012) 由 Yann LeCun 开创的深度卷积神经⽹络。

其结构包括7个隐藏层,不包括⼀些最⼤池化层。

前5层是卷积层,最后2层是全连接层。

每个隐藏层的激活函数是ReLU。

这些训练⽐逻辑单元更快更有表达⼒。

除此之外,当相近的单元有更强的激活值,它还⽤竞争的归⼀化来抑制隐藏的活动。

这有助于强度的变化。

在硬件要求⽅⾯,Alex在2个Nvidia GTX 580 GPU(超过1000个快速⼩内核)上使⽤了⾮常有效的卷积⽹络实现。

GPU⾮常适合矩阵矩阵乘法,并且具有⾮常⾼的存储器带宽。

这使他能够在⼀周内训练⽹络,并在测试时快速组合10个补丁的结果。

如果我们能够⾜够快地传达状态,我们可以在多个核⼼上传播⽹络。

随着核⼼变得越来越便宜⽽数据集越来越⼤,⼤型神经⽹络的改进速度将超过⽼式的计算机视觉系统。

⾃AlexNet以来,已有多种新型号使⽤CNN作为其⾻⼲架构,并在ImageNet中取得了出⾊的成果:
ZFNet(2013),GoogLeNet(2014),VGGNet(2014),ResNet(2015),DenseNet(2016)等。

2--⽬标检测
在图像中定义⽬标的任务通常涉及单个⽬标的边界框和标签的输出。

这与分类/定位任务的不同之处在于,它将分类和定位应⽤于许多⽬标,⽽不仅仅是⼀个主导⽬标。

你只有2类⽬标分类,即⽬标边界框和⾮⽬标边界框。

例如,在汽车检测中,您必须使⽤其边界框检测给定图像中的所有汽车。

如果我们就像对图像进⾏分类和定位的⽅式使⽤滑动窗⼝技术,我们需要将CNN应⽤于图像的许多不同位置。

因为CNN将每个位置分类为⽬标或背景,我们需要在CNN中应⽤许多的位置和不同⽐例,计算上是⾮常昂贵的!
为了处理这种情况,神经⽹络研究⼈员已经提出使⽤区域来代替,在那⾥我们找到可能包含⽬标的“blobby”图像区域。

这个区域运⾏起来相对较快。

第⼀个引⼈注⽬的模型是 R-CNN(基于区域的卷积神经⽹络)。

在R-CNN中,我们⾸先使⽤称为选择性搜索的算法扫描输⼊图像以寻找可能的⽬标,⽣成约2,000个候选区域。

然后我们在每个区域框的基础上运⾏CNN。

最后,我们获取每个CNN的输出并将其输⼊到SVM以对区域进⾏分类,并使⽤线性回归来收紧⽬标的边界框。

基本上,我们将⽬标检测转变成了图像分类问题。

但是,存在⼀些问题 - 训练缓慢,需要⼤量磁盘空间,推理也很慢。

R-CNN的直接后代是快速R-CNN,它通过2次增强提⾼了检测速度:1)在侯选区域之前执⾏特征提取,因此在整个图像上仅运⾏⼀个CNN,以及2)⽤softmax层替换SVM ,从⽽扩展神经⽹络的预测,⽽不是创建⼀个新的模型。

快速R-CNN在速度⽅⾯表现得更好,因为它只为整个图像训练⼀个CNN。

但是,选择性搜索算法仍然需要花费⼤量时间来⽣成候选区域。

因此,发现了更快的R-CNN,它现在是⽤于基于深度学习的⽬标检测的规范模型。

通过插⼊区域⽣成⽹络(RPN)来预测来⾃特征的区域,它⽤快速神经⽹络取代慢的选择性搜索算法。

RPN⽤于决定“在哪⾥”以减少整个推理过程的计算要求。

RPN快速有效地扫描每个位置,以评估是否需要在给定区域中进⾏进⼀步处理。

它通过输出k个边界框区域来做到这⼀点,每个区域具有2个分数,表⽰每个位置处⽬标的概率。

⼀旦我们获得了我们的候选区域,我们就会直接将它们提供给基本上是快速R-CNN的内容。

我们添加了⼀个池化层,⼀些全连接层,最后是⼀个softmax分类层和边界框回归器。

总⽽⾔之,更快的R-CNN实现了更好的速度和更⾼的精度。

值得注意的是,尽管未来的模型在提⾼检测速度⽅⾯做了很多⼯作,但很少有模型能够以更⾼的优势超越更快的R-CNN。

换句话说,更快的R-CNN可能不是最简单或最快的⽬标检测⽅法,但它仍然是表现最好的⽅法之⼀。

近年来的主要⽬标检测趋势已转向更快,更有效的检测系统。

这在诸如You Only Look Once(YOLO),Single Shot MultiBox
Detector(SSD)和基于区域的完全卷积⽹络(R-FCN)等⽅法中可见,作为在整个图像上共享计算的⼀种⽅法。

因此,这些⽅法将⾃⼰与3种R-CNN技术相关联的昂贵⼦⽹区分开来。

这些趋势背后的主要原因是避免让单独的算法孤⽴地关注各⾃的⼦问题,因为这通常会增加训练时间并降低⽹络准确性。

3--⽬标跟踪
⽬标跟踪指的是在给定场景下跟踪特定感兴趣的⼀个或者多个⽬标。

传统上,它应⽤在视频和现实世界的交互中,它们在初始⽬标检测之后进⾏观察。

现在,它对⾃动驾驶系统⾄关重要,例如优步和特斯拉等公司的⾃动驾驶车辆。

⽬标跟踪⽅法可以根据观察模型分为两类:⽣成⽅法和判别⽅法。

⽣成⽅法使⽤⽣成模型来描述表观特征并最⼩化重建误差以搜索⽬标,例如PCA。

判别⽅法可⽤于区分⽬标和背景,其性能更加鲁棒,它逐渐成为跟踪的主要⽅法。

判别⽅法也称为检测跟踪,深度学习属于这⼀类。

为了通过检测实现跟踪,我们检测所有帧的候选⽬标,并使⽤深度学习从候选者中识别所需⽬标。

可以使⽤两种基本⽹络模型:栈式⾃动编码器(SAE)和卷积神经⽹络(CNN)。

使⽤SAE跟踪任务的最流⾏的深度⽹络是深度学习跟踪器,它提出了离线预训练和在线微调⽹络。

这个过程是这样的:
离线⽆监督预训练使⽤⼤规模⾃然图像数据集的栈式去噪⾃动编码器以获得⼀般⽬标表⽰。

通过在输⼊图像中添加噪声并重建原始图像,栈式去噪⾃动编码器可以获得更鲁棒的特征表达能⼒。

将预训练⽹络的编码部分与分类器组合以获得分类⽹络,然后使⽤从初始帧获得的正样本和负样本来微调⽹络,这可以区分当前⽬标和背景。

DLT使⽤粒⼦滤波器作为运动模型来产⽣当前帧的候选补丁。

分类⽹络输出这些补丁的概率分数,表⽰其分类的置信度,然后选择这些补丁中最⾼的补丁作为⽬标。

在模型更新中,DLT使⽤限制阈值的⽅式。

由于其在图像分类和⽬标检测⽅⾯的优越性,CNN已成为计算机视觉和视觉跟踪的主流深度模型。

⼀般⽽⾔,⼤规模CNN既可以作为分类器也可以作为跟踪器进⾏训练。

2个代表性的基于CNN的跟踪算法是完全卷积⽹络跟踪器(FCNT)和多域CNN (MD Net)。

FCNT成功分析并利⽤VGG模型的特征图,这是⼀个经过预先训练的ImageNet,并产⽣以下观察结果:
CNN特征图可⽤于定位和跟踪。

许多CNN特征图区分特定⽬标与其背景的任务是嘈杂的或不相关的。

较⾼层捕获对象类别的语义概念,⽽较低层编码更多的判别特征以捕获类内变异。

由于这些观察,FCNT设计了特征选择⽹络,以在VGG⽹络的conv4-3和conv5-3层上选择最相关的特征图。

然后,为了避免在噪声上过拟合,它还分别为两个层的选定特征图设计了额外的两个通道(称为SNet和GNet)。

GNet捕获⽬标的类别信息,⽽SNet将⽬标位置为中⼼的感兴趣区域(ROI)。

最后,通过SNet和GNet,分类器获得两个预测热图,并且跟踪器根据是否存在⼲扰者来决定将使⽤哪个热图来⽣成最终跟踪结果。

FCNT的流程如下所⽰。

与FCNT的想法不同,MD Net使⽤视频的所有序列来跟踪其中的移动物体。

上述⽹络使⽤不相关的图像数据来减少跟踪数据的训练需求,这种想法与跟踪有⼀些偏差。

此视频中⼀个类的⽬标可以是另⼀个视频中的背景,因此MD Net提出了多域的概念,以独⽴区分每个域中的⽬标和背景。

域表⽰包含相同类型⽬标的⼀组视频。

如下所⽰,MD Net分为两部分:共享层和特定域层的K分⽀。

每个分⽀包含⼀个具有softmax损失的⼆进制分类层,⽤于区分每个域中的⽬标和背景,以及共享层与所有域共享以确保⼀般性表⽰。

近年来,深度学习研究⼈员尝试了不同的⽅法来适应视觉跟踪任务的特征。

他们已经探索了许多⽅向:应⽤其他⽹络模型,如递归神经⽹络和深度置信⽹络,设计⽹络结构以适应视频处理和端到端学习,优化过程,结构和参数,或者甚⾄将深度学习与传统的计算机视觉⽅法或语⾔处理和语⾳识别等其他领域的⽅法相结合。

4--语义分割
计算机视觉的核⼼是分割过程,它将整个图像分成像素组,然后可以对其进⾏标记和分类。

特别是,语义分割试图在语义上理解图像中每个像素的作⽤(例如,它是汽车,摩托车还是其它类型的类?)。

例如,在上图中,除了识别⼈,道路,汽车,树⽊等之外,我们还必须描绘每个物体的边界。

因此,与分类不同,我们需要从模型中进⾏密集的逐像素预测。

与其他计算机视觉任务⼀样,CNN在分割问题上取得了巨⼤成功。

其中⼀种流⾏的初始⽅法是通过滑动窗⼝进⾏补丁分类,其中每个像素使⽤其周围的图像分别分为类。

然⽽,这在计算上是⾮常低效的,因为我们不重⽤重叠补丁之间的共享特征。

相反,解决⽅案是加州⼤学伯克利分校的全卷积⽹络(FCN),它推⼴了端到端的CNN架构,⽤于密集预测⽽⽆需任何全连接层。

这允许为任何⼤⼩的图像⽣成分割图,并且与补丁分类⽅法相⽐也快得多。

⼏乎所有后续的语义分割⽅法都采⽤了这种范式。

然⽽,仍然存在⼀个问题:原始图像分辨率下的卷积将⾮常昂贵。

为了解决这个问题,FCN在⽹络内部使⽤下采样和上采样。

下采样层称为条纹卷积,⽽上采样层称为反卷积。

尽管采⽤了上采样/下采样层,但由于在池化期间信息丢失,FCN会⽣成粗分割图。

SegNet 是⼀种⽐使⽤最⼤池化和编码 - 解码器框架的FCN更⾼效的内存架构。

在SegNet中,从更⾼分辨率的特征映射引⼊快捷/跳跃连接,以改善上采样/下采样的粗糙度。

最近的语义分割研究在很⼤程度上依赖于全卷积⽹络,例如扩张卷积,DeepLab和RefineNet。

5--实例分割
除了语义分割之外,实例分割将不同类的实例分段,例如⽤5种不同颜⾊标记5辆汽车。

在分类中,通常有⼀个图像,其中⼀个⽬标作为焦点,任务是说这个图像是什么。

但是为了分割实例,我们需要执⾏更复杂的任务。

我们看到复杂的景点有多个重叠的物体和不同的背景,我们不仅要对这些不同的物体进⾏分类,还要确定它们之间的界限,差异和关系!
到⽬前为⽌,我们已经看到了如何以许多有趣的⽅式使⽤CNN特征来有效地定位带有边界框的图像中的不同⽬标。

我们可以扩展这些技术来定位每个⽬标的精确像素⽽不仅仅是边界框吗?使⽤称为Mask R-CNN的架构在Facebook AI上探索该实例分割问题。

就像Fast R-CNN和Faster R-CNN⼀样,Mask R-CNN的潜在原理很简单。

鉴于 Faster R-CNN在⽬标检测中运⾏得⾮常好,我们是否可以扩展它以进⾏像素级分割?
Mask R-CNN通过向 Faster R-CNN添加分⽀来完成此操作,该分⽀输出⼆进制掩码,该掩码表⽰给定像素是否是⽬标的⼀部分。

该分⽀是基于CNN的特征图之上的全卷积⽹络。

给定CNN特征图作为输⼊,⽹络在像素属于⽬标的⽤1s在所有位置输出矩阵,在其他地⽅输出0(这称为⼆进制掩码)。

另外,当在原始Faster R-CNN架构上运⾏⽽没有修改时,由RoIPool(感兴趣区域池化)选择的特征图的区域与原始图像的区域略微不对准。

由于图像分割需要像素级特异性,与边界框不同,这⾃然会导致不准确。

Mask R-CNN通过使⽤称为RoIAlign(感兴趣区域对齐)的⽅法调整RoIPool以更精确地对齐来解决此问题。

从本质上讲,RoIAlign使⽤双线性插值来避免舍⼊误差,从⽽导致检测和分割不准确。

⼀旦⽣成了这些掩模,Mask R-CNN将它们与来⾃Faster R-CNN的分类和边界框组合在⼀起,以⽣成如此精确的分割:
结论
这5种主要的计算机视觉技术可以帮助计算机从⼀个或⼀系列图像中提取,分析和理解有⽤的信息。

我还没有谈到许多其他先进技术,包括样式转移,着⾊,动作识别,3D对象,⼈体姿势估计等。

事实上,计算机视觉领域的成本太⾼⽽⽆法深⼊探讨,我⿎励您进⼀步探索,⽆论是通过在线课程,博客教程还是正式⽂档。

对于初学者,我强烈推荐CS231n课程,因为您将学习如何实现,训练和调试⾃⼰的神经⽹络。

作为奖励,您可以从我的GitHub存储库获取所有演讲幻灯⽚和作业指南。

我希望它能指导你改变对世界的看法!
参考⽂献:
分类:。

相关文档
最新文档