SPP-net阅读笔记

成就

  • 相比于深度卷积神经网络,可以不管图像的大小而生成固定长度的表示
  • 对变形的物体也很有效
  • 在准确性相当的前提下,速度比R-CNN更快(24-64× faster overall)

做法

在R-CNN实现思路的基础上,在最后一个卷积层和全连接层之间添加一个SPP层,由SPP层生成固定长度的输出,并将其输入到全连接层中。

SPP的特性

  • 无论输入的大小,SPP都能生成固定长度的输出
  • SPP使用多级spatial bins(多个尺寸的pooling)
  • SPP能够对以任意比例提取的特征进行池化
    在这里插入图片描述

SPP-net工作原理
在对图片提取特征时,使用的是如上图所示的多级bin块(1122441*1,2*2,4*4),就是将一张图片分别用1122441*1,2*2,4*4的方式分割提取特征,然后对每个区域做Max pooling,这样就可以获得1+4+16中特征向量。由于conv5层filter的数目是256,所以每个特征向量的维度是256。再将这1×256d,4×256d,16×256d1\times256-d,4\times256-d,16\times256-d的特征向量拼接起来,得到21×256d21\times256-d的特征向量。
即不论图片的尺寸和大小,只要固定了spatial bins,最后得到的特征向量的维度都是相同的。

使用SPP层训练网络

单一规格训练
首先使用固定输入(224×224224\times 224)。
对于一个给定了大小的图像,需要先计算SPP所需的bin的大小。假如conv5conv_5之后feature maps的大小为a×aa\times a,并且pyramid的等级为n×nn\times n的bins,那么window size=a/n\lceil a/n \rceil,stride=a/n\lfloor a/n \rfloor.
这一步的目的是为了实现多级池化的行为。(Ps:不理解)
多规格训练
本文使用了两种规格(180×180180 \times 180224×224224\times 224),本文是将原来的224×224224\times 224调整到180×180180 \times 180,而且这两个网络在每一层的参数是相同的,即在训练过程中,利用共享参数的两个输入大小固定的网络来实现输入大小可变的SPP-net.
(无法体会到下面步骤的独特意义不写了)

SPP-net应用于目标识别

  • R-CNN的弊端:对于每张图片提取出来的2000个窗口,R-CNN都要在每个窗口上重复的应用深度神经网络,时间耗费很大。
  • SPP-net实现:本文在整张图片上只提取一次feature maps,然后在每个feature map的每个候选窗口上应用SPP,对这个候选窗口池化一个固定长度的表示。在此过程中,由于神经网络只应用了一次,所以时间耗费大大减少。

需要学习

  • 实验部分没有看(P12P_{12}之后)
  • SPP-net的ROI映射

如有问题 请多多指正

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章