经典卷积神经网络之SppNet
在以前的卷积神经网络中,我们通常会将输入图片缩放到固定大小,进行训练。主要的原因就是卷积神经网络中的全连接层,我们都知道卷积层是不需要固定大小的输入,给它多大的输入,它就可以产生对应的输出。但是当遇到全连接层时,如果给它不同大小的输入,那么它的权重参数的数量就会发生改变,导致无法训练。在固定输入图片时,常用的操作就是裁剪、变形,但是裁剪会导致信息的丢失,变形会导致位置信息的扭曲,从而影响到检测的精度。
而SppNet的出现,主要就是为了解决这个问题,使得卷积神经网络能够使用不同大小的输入。那么它是如何做的??
SppNet引入了一个叫做空间池化金字塔的层,该层正是SppNet用来消除卷积神经网络对于固定尺寸的限制。它的主要思想就是,在卷积层与全连接层之间,加入空间池化金字塔层,卷积层的输出通过空间池化金字塔层之后产生固定大小的输出,然后再传递到全连接层,这样全连接层就可以得到一个固定大小的输入了。
下图,是空间池化金字塔的实现:
可以看到,它的实现方法就是,对输入进来的特征图分别做不同尺度的池化操作,然后将池化后的结果进行拼接,以产生固定大小的输出。在这个过程中,我们需要设计池化的窗口大小以及步长:
假设最后一层卷积的输出是(H、W、K)
Spp层的块分别是4∗4、2∗2、1∗14*4、2*2、1*14∗4、2∗2、1∗1
那么4∗44*44∗4的块对应的池化层是:
Window_h = np.ceil(H/4)
Window_w = np.ceil(W/4)
strides_h = np.floor(H/4)
strides_w = np.floor(W/4)
这里池化层的输出为:((H-(H/4)/(H/4)+1),(H-(H/4)/(H/4)+1),(K))->(4, 4, K)->展平->16K
那么2∗22*22∗2的块对应的池化层是:
Window_h = np.ceil(H/2)
Window_w = np.ceil(W/2)
strides_h = np.floor(H/2)
strides_w = np.floor(W/2)
这里池化层的输出为:((H-(H/2)/(H/2)+1),(H-(H/2)/(H/2)+1),(K))->(2, 2, K)->展平->4K
那么1∗11*11∗1的块对应的池化层是:
Window_h = np.ceil(H/1)
Window_w = np.ceil(W/1)
strides_h = np.floor(H/1)
strides_w = np.floor(W/1)
这里池化层的输出为:((H-(H/1)/(H/1)+1),(H-(H/1)/(H/1)+1),(K))->(1, 1, K)->展平->1K
最后做一个拼接:16K+4K+1K=21K=MK,这里的M表示的是之前画的块的个数:4∗4+2∗2+1∗1=214*4+2*2+1*1=214∗4+2∗2+1∗1=21,K表示输入到SPP的维度,这样不管输入进来的图像是否是固定尺寸,经过SPP之后都可以产生固定的输出,在与全连接层进行连接。
输入不同尺寸的图像,SPP中池化的参数就会不同,但是池化层没有需要训练的参数,因此没有关系,不影响训练。
- 卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning(转)
- 【转载】卷积神经网络CNN经典模型整理(AlexNet,GoogleNet,VGG,Deep Residual Learning)
- 卷积神经网络CNN经典模型整理(AlexNet,GoogleNet,VGG,Deep Residual Learning)
- 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
- 卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
- 深度学习经典卷积神经网络之GoogLeNet(Google Inception Net)
- 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
- 深度学习--卷积神经网络CNN经典模型:Lenet、Alexnet、GoogleNet、VGG、Deep Residual Learning
- 深度学习卷积神经网络——经典网络GoogLeNet(Inception V3)网络的搭建与实现
- 卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning,squeezenet
- 图像分类之经典卷积神经网络AlexNET、VGG、GoogLeNet、ResNet和DenseNet
- 卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
- 深度学习-CNN卷积神经网络经典模型:AlexNet、VGG、GoogleNet、ResNet、U-Net
- 深度学习方法:卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,ResNet
- 卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
- 卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
- 经典卷积神经网络(4)--InceptionNet-V3卷积网络模型
- 经典卷积神经网络(LeNet、AlexNet、VGG、GoogleNet、ResNet)的实现(MXNet版本)
- 卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
- 机器学习与深度学习系列连载: 第二部分 深度学习(十二)卷积神经网络 3 经典的模型(LeNet-5,AlexNet ,VGGNet,GoogLeNet,ResNet)