结构
先学习一下SPP(spatial pyramid pooling),如下图所示,在R-CNN中,进入卷积层之前必须对图片进行crop或者warp以保证大小相同(因为有全连接层),但是这样不仅会影响识别精度,而且检测的速度也很慢,因为原始图片经过crop或者warp后得到的图片会重复使用卷积网络计算feature maps,但是SPP只计算一次原始图像的feature maps,SPP主要的作用就是保证在进入全连接层前维度一致。
SPP论文(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(TPAMI2015))中还展现了经过卷积层后输出的特征图主要有两个信息:
- 对个别特征的响应强度
- 对应的空间位置
比如下图,filter#175对于四边形比较敏感,而filter#55对于圆形比较敏感。
SPP的模块如下图所示,这里的输入图像是经过SS后proposal regions
SPP将feature maps分成
,
,
三个level的bin,经过最大池化后将每层feature map就变成16,4,1三个level的特征向量。
接着再来看看WSDDN,整个网络如下所示,首先添加了SPP模块,并且结合region proposals机制,从而无论什么形状的proposals都能得到相同维度的输出。这里有两个问题,一是如何通过SSW(Selective Search Windows)或EB(Edge Boxes)获取proposal(这都是最开始的获取proposal的方法,之后的RPN会解放这些费时的操作)?二是如何将多个proposal拼接起来?
- 如何通过SSW(IJCV2012)或EB(ECCV2014)获取proposal?
SSW
首先了解一下SSW,在训练分类器之前通常要把图片分成一些小的区域,并且一张图中包含的信息比较丰富,不同物体之间的不同之处也有很多,而不是仅仅靠纹理或者颜色,形状大小等而区分开,更何况物体之间也有层次关系。SSW主要包括两个方面,一个是Hierarchical Grouping Algorithm来获取bounding boxes,另一个是Diversification Strategies来计算相似度。
Hierarchical Grouping Algorithm
这里首先利用基于图的图像分割(论文代码下载地址)得到初始区域,然后两两计算邻近区域之间的相似度,将两个相似度最大的区域合并,并删去这两个区域,再计算合并区域和相邻区域的相似度,重复这些过程,最后就得到了每个区域的bounding boxes。
Diversification Strategies
该部分主要为了保证抽样的多样性,计算的正式上述过程的相似度,主要从颜色、纹理、尺度、形状四个角度来计算最终加权相似度。
EB
利用边缘信息确定bounding boxes包含的轮廓个数,并基于此对bounding boxes进行评分,进一步根据得分的高低确定最终的proposal。
- 如何将多个proposal拼接起来?
加一个维度,类似于batchsize。
在加入了SSP后,引出了两个分支,一个负责分类,一个负责检测。如下图所示,对列进行softmax即
是得到每个proposal的类别概率,对行进行softmax即
是得到哪个proposal更有可能包含多个图像片段。
最后再对这两个矩阵按元素相乘,结果是region-level的结果,为了得到整个图片的image-level类预测的结果,按以下式子进行计算,其中
被
归一化了,这里并不用softmax是因为一张图会有多个类别的目标。
最后介绍以下损失函数:
除了上式,还有Spatial Regulariser,为了精确的定位,不同于fast R-CNN(会选择与gt boxes的交并比大于50%的proposal作为正样本并回归它们的坐标),WSDDN中没有gt boxes,所以采用了如下软正则策略来训练与最高分的proposal有至少60%的IOU的proposal,因为如果某个proposal在类别中获得高分,则与其具有高重合度的相邻proposal也将具有高分,公式如下式所示,其中
是类别
的正样本(即包含这个类别的图片个数),
是第
个正样本图片第
类最高分数的proposal(并且其他的proposal和这个最高分数的proposal的交并比大于60%),但是为什么选fc7作者没有说:
测试
网络输出图片x的各个proposal属于各类的分数(region-level),以及图片x的各个类别的分数(image-level),根据合适的阈值在y_c里面选取靠前的几个类别,然后对于每一个类别,将proposal排序进行nms操作。
实验
评价指标
- AP
- CorLoc:即某个类别的correct localization,以IOU>0.5为标准,正确定位的图像数量占总共的图像数量的百分比,如何算是正确定位?某张图片至少有1个该类别的实例,并且每个实例和其中置信度最高的IOU超过0.5。