美文网首页嵌牛IT观察
计算机视觉——典型的目标检测算法(SPP-Net算法)(四)

计算机视觉——典型的目标检测算法(SPP-Net算法)(四)

作者: 茶新味 | 来源:发表于2022-03-18 08:51 被阅读0次

    姓名:贾轶名    学号:21011210011     学院:通信工程学院

    【嵌牛导读】目标检测在现实中的应用很广泛,我们需要检测数字图像中的物体位置以及类别,它需要我们构建一个模型,模型的输入一张图片,模型的输出需要圈出图片中所有物体的位置以及物体所属的类别。在深度学习浪潮到来之前,目标检测精度的进步十分缓慢,靠传统依靠手工特征的方法来提高精度已是相当困难的事。而ImageNet分类大赛出现的卷积神经网络(CNN)——AlexNet所展现的强大性能,吸引着学者们将CNN迁移到了其他的任务,这也包括着目标检测任务,近年来,出现了很多目标检测算法。

    【嵌牛鼻子】计算机视觉

    【嵌牛提问】如何理解目标检测算法——SPP-Net

    【嵌牛正文】

    针对R-CNN对所有候选区域分别提取特征、计算量大的问题,2015年He等提出空间金字塔网络(Spatial Pyramid Pooling Network,SPP-Net)。SPP-Net 在最后一个卷积层和全连接层之间加入空间金字塔结构;使用多个标准尺度微调器对图像进行分割,将量化后的局部特征融合生成中层表达,在第五个卷积层的特征图上生成固定长度的特征向量,一次性提取特征避免重复特征提取,打破了固定尺寸输入的束缚。

    R-CNN模型与SPPNet模型

           将侯选区域送到CNN里面提取特征向量时,因为CNN的输入图像需要固定大小,而候选区域的长宽都是不固定的,故需要对候选区域填充到固定大小,当对侯选区域做cropping或者warping操作,图片不完整包含物体,都会造成识别精度损失。 

           SPP-Net的解决办法是使用“空间金字塔变换层”将接收任意大小的图像输入,输出固定长度的输出向量这样就能让SPP-Net可接受任意大小的输入图片,不需要对图像做crop/wrap操作。

    空间金字塔池化网络结构:

    -

    R-CNN模型与SPP-Net模型

    在R-CNN中,每个候选区域都要塞到CNN内提取特征向量,一张图片有2000个候选区域,也就是一张图片需要经过2000次CNN的前向传播,这2000重复计算过程会有大量的计算冗余,耗费大量的时间。SPPNet提出了一种从候选区域到全图的特征映射(feature map)之间的对应关系,通过此种映射关系可以直接获取到候选区域的特征向量,不需要重复使用CNN提取特征,从而大幅度缩短训练时间。

    SPP Net的实现过程:

    (1)SPP Net把全图传入CNN得到全图的feature map;(2)让候选区域与feature map直接映射,得到候选区域的映射特征向量(这是映射来的,不需要过CNN);(3)映射过来的特征向量大小不固定,所以这些特征向量传入SPP层(空间金字塔变换层),SPP层接收任何大小的输入,输出固定大小的特征向量,再传给FC层。

    上图SPPlayer分成1x1(塔底),2x2(塔中),4x4(塔顶)三张子图,对每个子图的每个区域作max pooling,出来的特征再连接到一起,就是(16+4+1)x256(kM)的特征向量。

    无论输入图像大小如何,出来的特征固定是(16+4+1)x256维度。这样就实现了不管图像尺寸如何,SPP层的输出永远是(16+4+1)x256特征向量。

    网络训练阶段:

    论文中将网络的训练分为两种:Single-size和Multi-size。

    Single-size的训练过程:

    理论上说,SPP-net支持直接以多尺度的原始图片作为输入后直接BP即可。实际上,caffe等实现中,为了计算的方便,GPU、CUDA等比较适合固定尺寸的输入,所以训练的时候输入是固定了尺度了的。以224*224的输入为例:

    在conv5之后的特征图为:13x13(a*a)    金字塔层bins:   n*n

    将pooling层作为sliding window pooling,则windows_size=[a/n] 向上取整 ,stride_size=[a/n]向下取整。参数如下:

    Multi-size training的训练过程:

    使用两个尺度进行训练:224*224 和180*180

    训练时,用224*224的图片训练一个epoch,之后用180*180的图片训练一个epoch,二者交替进行。

    两种尺度经过SSP后,输出的特征维度都是(9+4+1)x256(kM)。

    对于映射关系,论文中给出了一个公式:

    假设(x’,y’)表示特征图上的坐标点,坐标点(x,y)表示原输入图片上的点,那么它们之间有如下转换关系,这种映射关系与网络结构有关:(x,y)=(S*x’,S*y’)

    反过来,我们希望通过(x,y)坐标求解(x’,y’),那么计算公式如下:

    其中S就是CNN中所有的strides的乘积,包含了池化、卷积的stride。

    比如,对于下图的集中网络结构,S的计算如下:

    论文中使用的是ZF-5:         S=2*2*2*2=16                  Overfeat-5/7 :               S =2*3*2 =12

    相关文章

      网友评论

        本文标题:计算机视觉——典型的目标检测算法(SPP-Net算法)(四)

        本文链接:https://www.haomeiwen.com/subject/ncdbdrtx.html