SPPNet详解(白话讲解——附图文)

SPPNet是何凯明大神提出的,为了解决R-CNN中速度慢问题。

在神经网络中输入图片的尺寸必须是固定的,这是因为在设计的时候FC层中神经元的个数都是固定的,导致输入图片尺寸必须是固定的。

CNN是可以适应不同尺寸的输入图片,说明在CNN后面加入某种机制就可以让FC层也适应不同尺寸的输入图片,某种机制就是何凯明大神提出的空间金字塔池化(SPP)。

SPPNet详解(白话讲解——附图文)_第1张图片

在最后的卷积层和全连接层之间加入SPP层。具体做法是,在conv层得到的特征图是256层,每层都做一次spatial pyramid pooling。先把每个特征图分割成多个不同尺寸的网格,比如网格分别为44、22、11,然后每个网格做max pooling,这样256层特征图就形成了16256,4256,1256维特征,他们连起来就形成了一个固定长度的特征向量,将这个向量输入到后面的全连接层。

R-cnn中将2000个框输入到神经网络中,而SPPNet中将整张图片丢到神经网络中,得到原图的feature map,而在R-CNN中有候选框,我们就可以将feature map中可能存在物体的候选框截取下来,这时截取出来的框尺寸会不同,但是通过SPP后,就被固定为长度一定的特征向量,将向量输入到后面的FC层。

SPPNet可以将数据集缩放这样就起到了增加数据集了,SPPNET后面和R-cnn差不多一致。

你可能感兴趣的:(深度学习,Python,pytorch深度学习实战,神经网络,计算机视觉,卷积神经网络,深度学习,卷积)