目标检测算法改进-SPPNet(详解)

Posted ZSYL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标检测算法改进-SPPNet(详解)相关的知识,希望对你有一定的参考价值。

学习目标

  • 目标
    • 说明SPPNet的特点
    • 说明SPP层的作用

【目标检测算法】R-CNN(详解)R-CNN的速度慢在哪?

每个候选区域都进行了卷积操作提取特征。

1. SPPNet

SPPNet主要存在两点改进地方,提出了SPP层

  • 减少卷积计算

R-CNN模型SPPNet模型
1、R-CNN是让每个候选区域经过crop/wrap等操作变换成固定大小的图像 2、固定大小的图像塞给CNN 传给后面的层做训练回归分类操作1、SPPNet把全图塞给CNN得到全图的feature map 2、让SS得到候选区域直接映射特征向量中对应位置 3、映射过来的特征向量,经过SPP层(空间金字塔变换层),S输出固定大小的特征向量给FC层

1.1 映射

原始图片经过CNN变成了feature map,原始图片通过选择性搜索(SS)得到了候选区域(Region of Interest),现在需要将基于原始图片的候选区域映射到feature map中的特征向量。映射过程图参考如下:

整个映射过程有具体的公式,如下

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

  • 左上角的点:
    • x′=[x/S]+1
  • 右下角的点:
    • x′=[x/S]−1

其中 S 就是CNN中所有的strides的乘积,包含了池化、卷积的stride。论文中使用S的计算出来为2x2x2x2=16

拓展:如果关注这个公式怎么计算出来,请参考:http://kaiminghe.com/iccv15tutorial/iccv2015_tutorial_convolutional_feature_maps_kaiminghe.pdf

1.2 spatial pyramid pooling

  • 通过spatial pyramid pooling 将特征图转换成固定大小的特征向量

示例:假设原图输入是224x224,对于conv出来后的输出是13x13x256,其中某个映射的候选区域假设为:12x10x256

  • spp layer会将每一个候选区域分成1x1,2x2,4x4三张子图,对每个子图的每个区域作max pooling,得出的特征再连接到一起就是(16+4+1)x256=21x256=5376结果,接着给全连接层做进一步处理,如下图:
  • Spatial bins(空间盒个数):1+4+16=21

2. SPPNet总结

来看下SPPNet的完整结构

  • 优点
    • SPPNet在R-CNN的基础上提出了改进,通过候选区域和feature map的映射,配合SPP层的使用,从而达到了CNN层的共享计算,减少了运算时间, 后面的Fast R-CNN等也是受SPPNet的启发
  • 缺点
    • 训练依然过慢、效率低,特征需要写入磁盘(因为SVM的存在)
    • 分阶段训练网络:选取候选区域、训练CNN、训练SVM、训练bbox回归器, SPPNet反向传播效率低

3. 总结

  • 掌握SPP的池化作用
  • 掌握SPP的优缺点

4. 问题

1、SPPNet的映射过程描述?公式?

2、spatial pyramid pooling的过程?

3、SPPNet相对于R-CNN的改进地方?

以上是关于目标检测算法改进-SPPNet(详解)的主要内容,如果未能解决你的问题,请参考以下文章

目标检测算法-YOLO-V4代码详解

深度学习目标检测网络结构SPP FAST-RCNN FASTER-RCNN

运动目标检测--改进的背景减法

目标检测论文解读复现NO.25基于改进Yolov5的地铁隧道附属设施与衬砌表观病害检测方法

计算机视觉:rcnnfast-rcnnfaster-rcnnSSDYOLO

从零开始学习目标检测:YOLO算法详解