PFPNet 笔记

前言
1.本文重点是PFPNet的网络结构和MSCA模块,尽量用较少篇幅表达清楚论文算法,其他一些不影响理解算法的东西不做赘述
2.博客主要是学习记录,为了更好理解和方便以后查看,当然如果能为别人提供帮助就更好了,如果有不对的地方请指正(论文中的链接是我经过大量搜索,个人认为讲解最清楚的参考)

论文链接

创新点
1.利用MSCA模块将spp输出的多尺度特征图进行融合
2.提出PFPNet(Parallel Feature Pyramid Network)

PFPNet
1.首先回顾一下目标检测网络结构的演变过程
PFPNet 笔记
(a)上面结构是cnn提取特征,然后在最后的特征图上进行预测,如YOLOv1
(a)下面结构是提取特征之后在几个特征图上分别预测,如SSD
(c)是利用spp进行多尺度池化,然后融合,最后在一个特征图上预测,如SPPNet
(b)上虽然也在最后的特征图上预测,但是这个特征图是前面基层特征图融合得到的
(b)下是多尺度特征图融合后分别在几个特征图上预测,如FPN
(d)就是PFPNet了,可以看到前面是spp,只是后面融合方式不同(MSCA:multi-scale context aggregation)

2.PFPNet网络结构
网络流程是,输入图片经过cnn特征提取,然后经过spp输出三种尺度的特征图FhF_h,再经过bottleneck层减少通道数,三种尺度的FhF_h分别得到低通道数的特征图FlF_l,接着将FhF_hFlF_l进行融合,最后在融合后的三种尺度的特征图P上分别预测
PFPNet 笔记
其中参数:
D:基础网络特征提取后得到的特征图的通道数
ChC_h:经过spp后特征图FhF_h的通道数(spp是池化,所以通道数不变,ChC_h=D)
ClC_l:特征图FlF_l的通道数,ClC_l=D/(N-1)
CpC_p:特征图P的通道数
N:spp输出不同尺度特征图的个数(图中N=3)

3.具体融合过程(MSCA)
PFPNet 笔记
MSCA是对通道进行concat操作(特殊方式的融合)。以P1P_1为例,按照常规的融合应该是,Fl(1)F_l^{(1)}Fl(0)F_l^{(0)}下采样得到的特征图和Fl(2)F_l^{(2)}上采样得到的特征图三者进行concat;但是MSCA的操作是Fh(1)F_h^{(1)}Fl(0)F_l^{(0)}下采样得到的特征图和Fl(2)F_l^{(2)}上采样得到的特征图三者从concat,也就是说和P1P_1尺寸相同的特征图选Fh(1)F_h^{(1)},因为Fh(1)F_h^{(1)}的通道数多,这样特征信息就多,对网络性能有帮助,最后通过卷积层得到P1P_1P0P_0P2P_2同理

所以融合后特征图的通道数:ChC_h+(N-1)ClC_l=D+(N-1)D/(N-1)=2D。也就是说一半来自FhF_h,一半来自FlF_l