SPNet(Cross Stage Partial Network)
CSPNe是一种增强CNN学习能力的跨阶段局部网络。CSPNet全称是Cross Stage Partial Network,主要从网络结构设计的角度来解决以往工作在推理过程中需要很大计算量的问题,其能够在降低20%计算量的情况下保持甚至提高CNN的能力。作者认为推理计算过高的问题是由于网络优化中的梯度信息重复导致的,因此CSPNet通过将梯度的变化从头到尾地集成到特征图中,在减少了计算量的同时可以保证准确率。需要指出的是CSPNet是一种处理思想,它可以与ResNet、DenseNet、HarNet等分类网络和YOLO等目标检测网络结合。下图展示了CSPNet与不同网络的backbone结合后的效果,可以看出计算量大幅下降、准确率保持不变或提升。
SPP(Spatial Pyramid Pooling)
SPP(Spatial Pyramid Pooling)是为了确保输入预定义全连接层的feature vector(特征向量)是固定尺寸。feature vector是由feature maps展开的,因此常规做法是在输入数据做文章,即对图像进行裁剪和变形操作。但是这两种方式可能会出现不同的问题,1)裁剪的区域可能没法包含物体的整体;2)变形操作造成目标无用的几何失真。而SPP是在feature maps展开为feature vector时做文章的,即SPP将输入的不同图像的feature maps展开为一个固定尺寸的feature vector。
SPP的工作原理很简单,对每个特征图,使用三种不同尺寸的池化核进行最大池化,分别得到预设的特征图尺寸,最后将所有特征图展开为特征向量并融合,过程如下图所示。现在,我们以经过5次卷积模块运算后的Tensor[1, 256, 10, 10]为例,运用SPP原理倒推最大池化层的信息。
1)明确全连接层的输入参数尺寸,如107521= 21X256=16X256+4X256+1X256;
2)明确三种池化后的特征图尺寸,如44、22、11;
3)求三种kernel、stride、padding;
a. 44对应的kernel、stride、padding:kernel—⌈10/4⌉=3;stride—⌈10/4⌉=3;padding—⌊(34-10+1)/2⌋=1
b. 22对应的kernel、stride、padding:kernel—⌈10/2⌉=5;stride—⌈10/2⌉=5;padding—⌊(52-10+1)/2⌋=0
c. 11对应的kernel、stride、padding:kernel—⌈10/1⌉=10;stride—⌊10/1⌋=10;padding—⌊(101-10+1)/2⌋=0
FPN(Feature pyramid network)
FPN(Feature pyramid network)是CVPR2017年的一篇文章,它在目标检测中融入了特征金字塔,提高了目标检测的准确率,尤其体现在小物体的检测上。
特征金字塔的高(深)层特征包含有丰富的语义信息(利于分类),但分辨率底,很难准确地保存物体的位置信息;低(浅)层特征虽然语义信息较少,但分辨率高,包含准确的物体位置信息(利于检测和分割)。FPN就是将低层特征和高层特征融合起来,得到一个识别和定位都准确的目标检测结构。FPN的结构主要包括三个部分:Bottom-up,Top-down和Lateral connection
开源代码
百度网盘:链接:https://pan.baidu.com/s/1C7ObZZbVGpRO3gf7Vhdx5A?pwd=k19z
提取码:k19z
更多代码 加微信 AI_xiaoao
回复题目【基于XXXX的XXXX系统设计】免费获取源代码
所有代码均可远程部署安装+代码调试讲解