基于深度学习的目标检测方法:SPP-net

SPP-net

       论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

       在R-CNN中,要求输入固定大小的图片,因此需要对图片进行crop、wrap变换。此外,对每一个图像中每一个proposal进行一遍CNN前向特征提取,如果是2000个propsal,需要2000次前向CNN特征提取,这无疑将浪费很多时间。

       该论文对R-CNN中存在的缺点进行了改进,基本思想是,输入整张图像,提取出整张图像的特征图,然后利用空间关系从整张图像的特征图中,在spatial pyramid pooling layer提取各个region proposal的特征。

基于深度学习的目标检测方法:SPP-net_第1张图片

-------------------------------------------------------------------------------------------------------------------------------------------------------  

spatial pyramid pooling layer      

       在传统的CNN中,卷积层不需要输入固定大小的图像,并能产生任意大小的特征图,但是全连接层要求输入固定大小的图像。因此,该论文提出了将最后一个卷积层后的池化层替换为spatial pyramid pooling layer(SPP层), 该层能够生成长度固定的特征,并输入到全连接层。因此,SPP-net适合输入大小不同的图像。

     spatial pyramid pooling layer的结构如下图,类似于金字塔:

基于深度学习的目标检测方法:SPP-net_第2张图片


 -----------------------------------------------------------------------------------------------------------------------------------------------------

多尺度训练

     为了能够输入任意大小的图像,在训练网络时,采用了多尺度输入,如:224*224, 180*180,其中,180*180图像是从224*224图像变换的到的。构建两种CNN模型,一种模型的输入大小为224*224,另一种模型的输入大小为180*180,而且这两个模型共享参数。


------------------------------------------------------------------------------------------------------------------------------------------------------

将图像ROI映射到feature map上

     SPP-net 是把原始ROI的左上角和右下角映射到 feature map上的两个对应点。有了feature map上的两个角点,就确定了对应的 feature map 区域,如下图:

基于深度学习的目标检测方法:SPP-net_第3张图片     

       该模型从第一个卷积层到最后一个卷积层,包括中间的池化层,计算各个层stride的乘积s ;  (x’, y’)表示特征图上的坐标点,(x , y)表示原输入图片上的坐标点,那么每个矩形候选框的左上角、右下角在特征图上的对应点:

左上角:  x’= ⌊x/s⌋ + 1    y’= ⌊y/s⌋ + 1 

右下角:  x’= x/s + 1    y’= y/s + 1


你可能感兴趣的:(机器学习与深度学习)