2017CS231n笔记_S11分割,定位,检测

目录

S11.0前言

S11.1语义分割

S11.1.1滑动窗口方法

S11.1.2全卷积方法

S11.1.13上采样

S11.2分类+定位

S11.2.1分类+定位

S11.2.2姿态估计

S11.3目标检测

S11.3.1目标检测作为回归任务?

S11.3.2目标检测作为分类任务

S11.3.3Detection with Region Proposals

S11.3.4Detection without Proposals

S11.4实例分割


S11.0前言

本章节对分类之外的其他视觉任务进行介绍,包括语义分割(Semantic Segmentation),分类+定位(Classification+Localization),目标检测(Classification+Localization)和实例分割(Instance Segmentation)。四种视觉任务结果如下图所示。


S11.1语义分割

语义分割是像素级任务,并不区分实例。语义分割是指输入图像,并对图像中的每个像素做分类,为每个像素分配标签。语义分割并不区分同类目标。

S11.1.1滑动窗口方法

使用该方法的一个模型如下。模型将输入图片分为很多很多个小的局部图像块,然后用CNN判别局部图像块的中心像素的类别。但对于每个像素,都要判别该像素对应的局部图像块,并且模型没有共享这些图像块之间重叠的特征,因此模型的计算复杂度很高。该模型论文“Learning Hierarchical Features for Scene Labeling“。

S11.1.2全卷积方法

全卷积方法是指,图像输入到模型中,使用多个卷积层,输出和输入图像相同大小的结果图像。但这样,会有一个问题,就是在原始图像分辨率上做卷积会十分昂贵。因此,在多个卷积层之间先进行降采样(downsampling),再进行上采样(unsampling),使得输出图像的大小等同输入图像的大小。降采样方法有:pooling和strided convolution。上采样方法有:unpooling和transpose convolution。使用该方法的一个模型如下。模型论文"Fully Convolutional Networks for Semantic Segmentation"。但该方法的问题是,如何得到数据库。可以考虑自己使用ps工具来得到每个输入图像对应的目标图像。

S11.1.13上采样

上采样方法分为Unpooling和Transpose Convolution。

Unpooling:常见方法如下图所示。设Unpooling层的输出是输出区域。Nearest Neighbor方法是在输出区域中对像素进行重复。Bed of Nails方法是输出区域左上角的值为对应的输入像素值,输出区域的其他值为0。Max Unpooling方法在使用时,网络中每个Max Pooling层对应一个Max Unpooling层。在输出区域中,对应Max Pooling层中最大像素的位置(例如图中5,6,7,8的位置)的值为降采样输入像素值(例如图中1,2,3,4),输出区域中其他位置的值为0。

Transpose Convolution:比如输入是一个2*2的像素,例如上图的1,2,3,4。假设转置卷积层的过滤器大小为3*3。那么该层的计算是:使用1这个标量与过滤器相乘,得到3*3的矩阵。那么分别使用1,2,3,4进行上述操作,总共能得到4个3*3的矩阵。转置卷积层有步常stride参数。根据这个参数,4个3*3的矩阵在空间上可能有重叠的部分。那么重叠部分的值为每个矩阵中该位置值之和。该层还有其他名称,如Deconvolution,Upconvolution,fractionally strided convolution,Backward strided convolution。


S11.2分类+定位

S11.2.1分类+定位

对于一幅含有猫的图片,除了判别该图像是猫,还想判断猫在哪里。这就是分类定位问题。提前知道有一个物体或多个物体是需要定位的。我们需要画出一个框来包括整个猫咪。解决该任务的一个模型如下所示。首先,在一个预训练的CNN网络上生成图像表示向量。然后用两个全连接层。第一个全连接层用于图像的分类。使用Softmax,交叉熵等损失函数来计算分类损失。第二个全连接层用于输出位置值(x,y,w,h)。使用L1损失,平滑L1损失,L2等损失韩式来计算回归损失。回归和分类的区别在于,回归的值是一个连续值,分类的值是一个离散值。网络的整体损失是分类损失和回归损失的加权和,需要手动设置加权参数。网络的训练方法可以是网络整体一起训练,这种效果会好。但实际中有一个训练技巧,首先冻结卷积网络,分别训练来优化两个全连接部分网络的参数,直到两个网络收敛,最后再对整体网络进行训练/联合调试。

S11.2.2姿态估计

在图片中预测固定点的位置的想法可以应用到分类+定位以外的其他问题上,比如姿态估计。姿态估计的任务是,输入左边的图,输出人的关节/点位(右边的图)。这样网络就能预测出这个人的姿态。一般在深度学习中,使用14个关节点的位置来定义人的姿态。

人体姿势估计模型如下所示。模型接收图片,然后使用使用CNN网络来得到图像表示向量,然后输出14个关节点的坐标值。分别计算14个关节点的回归损失,这里使用L2损失。然后对所有损失求和。模型来自论文“DeepPose: Human Pose Estimation via Deep Neural Networks”。


S11.3目标检测

目标检测是一个内容相当丰富的话题,在计算机视觉领域占据核心地位。目标检测任务是,目标的类别确定,根据输入的图像,每当图像中出现一个对象时,确定这个对象的类别以及位置。与分类+定位不同的是,目标检测在最开始不确定图像中对象的个数。

S11.3.1目标检测作为回归任务?

如果将目标检测作为回归任务,那么对于下面第一张图,需要预测4个值;第二张图,需要预测16个值;而第三张图,需要预测很多很多个值。但由于提前并不确定图像中对象的个数,因此需要预测的值的个数也不确定。因此将目标检测作为回归任务会非常棘手。

S11.3.2目标检测作为分类任务

将目标检测作为分类任务,应用滑动窗口的思想。将输入图像切分为小块,将图像块输入到CNN网络中,进行分类决策。当网络没有见过的范围之外的其他对象时,就会将其识别为背景Background。但选择图像块是一个问题,因为图像中对象的大小和位置不固定,那么图像块的大小,尺度,位置也不定。那么滑动窗口方法就要测试成千上万次。另外,每一个图像块都要输入到CNN网络中进行训练,计算复杂度过高,实际中不会这样进行。

S11.3.3Detection with Region Proposals

使用候选区域(Region Proposals)方法来进行目标检测。该方法在深度学习中并不常见,更像传统的计算机视觉方法。候选区域网络采用信号处理,图像处理等方法建立候选的区域。一般会在对象周围给出上千个框,如下图所示。相关论文: "Measuring the objectness of image windows","Selective Search for Object Recognition","BING: Binarized normed gradients for objectness estimation at 300fps","Edge boxes: Locating object proposals from edges"。使用候选区域的方法有Selective Search,R-CNN,Fast R-CNN,Faster R-CNN等。

Selective Search:一种常见的候选区域方法。该方法首先将输入图像切分为2000个候选区域,然后使用CNN网络对候选区域进行分类。这比穷尽所有的候选区域简单一点。但区域中包含噪点,它们中的大部分不是想要的。但召回率比较高。

R-CNN:论文"Rich feature hierarchies for accurate object detection and semantic segmentation"。给定输入图像,首先运行区域选择网络,找到大约2000个兴趣区域(Regionis of Interest,RoI),并会边界框进行修正;接着由于兴趣区域可能有不同尺寸,但都要输入到CNN中进行分类,因此,需要对兴趣区域进行切分,使得区域尺寸一致;最后将兴趣区域输入到CNN中进行分类。但该算法的实现需要许多计算力;训练时间慢(84h);占用很多磁盘空间;区域选择模型是固定的,并不学习参数。

Fast R-CNN:论文"Fast R-CNN"。给定输入图像,首先使用卷积网络得到整个图像的高分辨率特征映射;然后使用一些方法来选择兴趣区域RoI;接着使用RoI池化层来对固定RoI的尺寸;将固定尺寸的RoI输入到全连接网络中,进行分类以及边界框的回归。因此模型中存在两种损失。训练和测试时间都有大幅减少,测试时间耗在得到备选区域上。

Faster R-CNN: 论文"Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks"。解决了备选区域耗时问题。在模型中插入候选区域网络(Region Proposal Network,RPN)来解决,RPN网络从卷积映射图中来预测候选区域。这使得网络自身去做RoI的预测。RPN网络有两个损失,分类损失和边界框损失。RPN的分类结果为两类:有目标或者没有目标。整个网络,给定输入图像,首先使用卷积网络得到整个图像的高分辨率特征映射;然后使用RPN来选择兴趣区域RoI;接着使用RoI池化层来对固定RoI的尺寸;将固定尺寸的RoI输入到全连接网络中,进行分类以及边界框的回归。整个网络有4个损失,RPN分类损失,RPN回归损失,最终的分类损失(目标的类别),最终的回归损失。

S11.3.4Detection without Proposals

用于目标检测的另一种方法,是一种前馈模型,有两种模型:YOLO和SSD。该类模型不对候选区域分别进行处理,而是尝试将其作为回归问题处理。借助于大型网络,所有的预测一次完成。下图是SSD模型方法。给定输入图像,将输入图像分成网格,例如7*7。以每个单元格为中心,分别画一些基本边界框,例如长的,宽的,正方形的三个基本边界框。模型要预测边界框与对象位置的偏移量;预测对象对应类别的分数。YOLO模型论文"You Only Look Once: Unified, Real-Time Object Detection"。SSD模型论文"SSD: Single-Shot MultiBox Detector"。


S11.4实例分割

实例分割是指,给定一幅图片,输出对象的位置,类别以及所在的整个区域。该任务像是混合了语义分割和目标检测的任务。Mask R-CNN模型是解决该问题的一个模型,如下所示。模型有两个分支,上面的分支用于预测对象的类别和框,下面的分支对输入候选框的像素进行分类,确定该像素是不是属于某个对象。模型论文 “Mask R-CNN”。


发布了71 篇原创文章 · 获赞 6 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/KKALL1314/article/details/104241112