目标检测-初始篇

传统是怎么做的

R-NN的原理

思路:

  • 提取框
  • 对每个框提取特征(将传统的特征(SIFT、HOG等)换成了深度卷积网络提取特征)
  • 图像分类
  • 非极大值抑制

整体架构:

  1. 使用Selective Search从图像中启发式地搜索出可能包含物体的区域
  2. 将取出的可能含有物体的区域送入CNN中提取特征 
  3. CNN通常是接受一个固定大小的图像,而取出的区域大小却各有不同。对此,R-CNN的做法是将区域缩放到
    统一大小,再使用CNN提取特征。
  4. 提取出特征后使用SVM进行分类,最后通过非极大值抑制输出结果

R-CNN缺点

SPPNet的原理

SPPNet主要做了一件事:将CNN的输入从固定尺寸改进为任意尺寸,输出则不变(加入了ROI池化层实现)

ROI池化层结构

详解:为了说清楚为什么ROI 池化层能够把任意大小的卷积特征转换成固定长度的向量,不妨设卷积层输出的宽度为w,高度为h,通道为C。不管输入的图像尺寸是多少,卷积层的通道数都不会变,也就是说c是一个常数。而w、h会随着输入图像尺寸的变化而变化,可以看作是两个变量。以上图中的ROI池化层为例,它首先把卷积层划分为4x4的网格,每个网格的宽是w/4、高是h/4、通道数为c。当不能整除时,需要取整。接着,对每个网格中的每个通道,都取出其最大值,换句话说,就是对每个网格内的特征做最大值池化Max Pooling )。这个4x4的网格最终就形成了16c维的特征。接着,再把网络划分成2x2的网格,用同样的方法提取特征,提取的特征的长度为4c。再把网络划分为1x1的网格,提取的特征的长度就是c,最后的1x1的划分实际是取出卷积中每个通道的最大值。最后,将得到的特征拼接起来,得到的特征是16c+4c+c= 21c维的特征。很显然,这个输出特征的长度与w、h两个值是无关的,因此ROI池化层可以把任意宽度、高度的卷积特征转换为固定长度的向量。


           应该怎么把ROI池化层用到目标检测中来呢?其实,可以这样考虑该问题:网络的输入是一张图像,中间经过若干卷积形成了卷积特征,这个卷积特征实际上和原始图像在位置上是有一定对应关系的。如图5-4所示,原始图像中有一辆汽车, 它使得卷积特征在同样位置产生了激活。因此,原始图像中的候选框,实际上也可以对应到卷积特征中相同位置的框。由于候选框的大小千变万化,对应到卷积特征的区域形状也各有不同,但是不用担心,利用ROI池化层可以把卷积特征中的不同形状的区域对应到同样长度的向量特征。综合,上述步骤,就可以将原始图像中的不同长宽的区域都对应到一个固定长度的向量特征,这就完成了各个区域的特征提取工作。

ROI池化层的优势

在R-CNN中,对于原始图像的各种候选区域框,必须把框中的图像缩放到统一大小,再对每一张缩放后的图片提取特征。使用ROI池化层后,就可以先对图像进行一遍卷积计算,得到整个图像的卷积特征;接着,对于原始图像中的各种候选框,只需要在卷积特征中找到对应的位置框,再使用ROI池化层对位置框中的卷积提取特征,就可以完成特征提取工作。

R-CNN和SPPNet比较

Fast R-CNN原理

在SPPNet中,实际上特征提取和区域分类两个步骤还是分离的。只是使用ROI池化层提取了每个区域的特征,在对这些区域分类时,还是使用传统的SVM作为分类器.Fast R-CNN相比SPPNet更进-步,不再使用SVM作为分类器,而是使用神经网络进行分类,这样就可以同时训练特征提取网络和分类网络,从而取得比SPPNet更高的准确度。Fast R-CNN的网络结构如图5-5所示。

对于原始图片中的候选框区域,和SPPNet中的做法一样,都是将它映射到卷积特征的对应区域(即图5-5中的ROI projection),然后使用ROI池化层对该区域提取特征。在这之后,SPPNet 是使用sVM对特征进行分类,而Fast R-CNN则是直接使用全连接层。全连接层有两个输出,一个输出负责分类(即图5-5中的Softmax ),另一个输出负责框回归(即图5-5中的bbox regressor)

分类:先说分类 ,假设要在图像中检测K类物体,那么最终的输出应该是K+1个数,每个数都代表该区域为某个类别的概率。之所以是K+1个输出而不是K个输出,是因为还需要一类“背景类”,针对该区域无目标物体的情况。

框回归:

Fast R-CNN 与 SPPNet区别

Faster R-CNN原理

Fast R-CNN看似很完美了,但在Fast R-CNN中还存在着一一个有点尴尬的问题:它需要先使用Selective Search提取框,这个方法比较慢,有时,检测一张图片,大部分时间不是花在计算神经网络分类上,而是花在SelectiveSearch提取框上!在Fast R-CNN升级版Faster R-CNN中,用RPN网络( Region Proposal Network )取代了Selective Search,不仅速度得到大大提高, 而且还获得了更加精确的结果。

RPN网络结构:

TensorFlow Object Detection API

猜你喜欢

转载自blog.csdn.net/yangyang688/article/details/82898511