前言
1.本文重点是PFPNet的网络结构和MSCA模块,尽量用较少篇幅表达清楚论文算法,其他一些不影响理解算法的东西不做赘述
2.博客主要是学习记录,为了更好理解和方便以后查看,当然如果能为别人提供帮助就更好了,如果有不对的地方请指正(论文中的链接是我经过大量搜索,个人认为讲解最清楚的参考)
创新点
1.利用MSCA模块将spp输出的多尺度特征图进行融合
2.提出PFPNet(Parallel Feature Pyramid Network)
PFPNet
1.首先回顾一下目标检测网络结构的演变过程
(a)上面结构是cnn提取特征,然后在最后的特征图上进行预测,如YOLOv1
(a)下面结构是提取特征之后在几个特征图上分别预测,如SSD
(c)是利用spp进行多尺度池化,然后融合,最后在一个特征图上预测,如SPPNet
(b)上虽然也在最后的特征图上预测,但是这个特征图是前面基层特征图融合得到的
(b)下是多尺度特征图融合后分别在几个特征图上预测,如FPN
(d)就是PFPNet了,可以看到前面是spp,只是后面融合方式不同(MSCA:multi-scale context aggregation)
2.PFPNet网络结构
网络流程是,输入图片经过cnn特征提取,然后经过spp输出三种尺度的特征图
F
h
F_h
Fh,再经过bottleneck层减少通道数,三种尺度的
F
h
F_h
Fh分别得到低通道数的特征图
F
l
F_l
Fl,接着将
F
h
F_h
Fh和
F
l
F_l
Fl进行融合,最后在融合后的三种尺度的特征图P上分别预测
其中参数:
D:基础网络特征提取后得到的特征图的通道数
C
h
C_h
Ch:经过spp后特征图
F
h
F_h
Fh的通道数(spp是池化,所以通道数不变,
C
h
C_h
Ch=D)
C
l
C_l
Cl:特征图
F
l
F_l
Fl的通道数,
C
l
C_l
Cl=D/(N-1)
C
p
C_p
Cp:特征图P的通道数
N:spp输出不同尺度特征图的个数(图中N=3)
3.具体融合过程(MSCA)
MSCA是对通道进行concat操作(特殊方式的融合)。以
P
1
P_1
P1为例,按照常规的融合应该是,
F
l
(
1
)
F_l^{(1)}
Fl(1)和
F
l
(
0
)
F_l^{(0)}
Fl(0)下采样得到的特征图和
F
l
(
2
)
F_l^{(2)}
Fl(2)上采样得到的特征图三者进行concat;但是MSCA的操作是
F
h
(
1
)
F_h^{(1)}
Fh(1)和
F
l
(
0
)
F_l^{(0)}
Fl(0)下采样得到的特征图和
F
l
(
2
)
F_l^{(2)}
Fl(2)上采样得到的特征图三者从concat,也就是说和
P
1
P_1
P1尺寸相同的特征图选
F
h
(
1
)
F_h^{(1)}
Fh(1),因为
F
h
(
1
)
F_h^{(1)}
Fh(1)的通道数多,这样特征信息就多,对网络性能有帮助,最后通过卷积层得到
P
1
P_1
P1,
P
0
P_0
P0、
P
2
P_2
P2同理
所以融合后特征图的通道数: C h C_h Ch+(N-1) C l C_l Cl=D+(N-1)D/(N-1)=2D。也就是说一半来自 F h F_h Fh,一半来自 F l F_l Fl