一张图片理解BiFPN原理
直接上图
Notes:
- P3、P4、P5、P6、P7表示backbone网络的输出层,每个输出层都有对应的输出feature(包含channel数,feature的大小等信息),例如P3的输出feature大小为输入图片分辨率/ 2 3 2^3 23, P4的输出feature大小为输入图片分辨率/ 2 4 2^4 24,依次类推,P7的输出feature大小为输入图片分辨率/ 2 7 2^7 27,分别为图中的P3_in, P4_in, … , P7_in;
- 不带颜色的圆圈表示feature,带颜色的圆圈表示算子。有线连接的都表示权重w,向上向下连接都有resize操作,表示要么是upsampling要么是downsampling。
基本原理
BiFPN全称:bi-directional feature pyramid network。意思是,双向特征金字塔网络。
主要包含三大特点:
多尺度特征融合;
可参考FPN网络的原理理解
跨尺度连接;
可参考PANet网络原理理解
加权特征融合;
是BiFPN网络的创新之处,考虑到不同特征对输出特征的贡献大小不同,也就是重要性不同而引出的。
公式理解
图中已经给出了各输出层特征的加权计算公式,
下面是更加全面的公式帮助理解。
P
7
_
o
u
t
=
C
o
n
v
(
P
7
_
i
n
∗
W
71
+
R
e
s
i
z
e
(
P
6
_
o
u
t
)
∗
W
72
W
71
+
W
72
+
ϵ
)
P7\_out =Conv(\frac{P7\_in*W71+Resize(P6\_out)*W72}{W71+W72+\epsilon})
P7_out=Conv(W71+W72+ϵP7_in∗W71+Resize(P6_out)∗W72)
P 6 _ o u t = C o n v ( P 6 _ i n ∗ W 63 + P 6 _ t d ∗ W 64 + R e s i z e ( P 5 _ o u t ) ∗ W 65 W 63 + W 64 + W 65 + ϵ ) P6\_out =Conv(\frac{P6\_in*W63+P6\_td*W64+Resize(P5\_out)*W65}{W63+W64+W65+\epsilon}) P6_out=Conv(W63+W64+W65+ϵP6_in∗W63+P6_td∗W64+Resize(P5_out)∗W65)
P 5 _ o u t = C o n v ( P 5 _ i n ∗ W 53 + P 5 _ t d ∗ W 54 + R e s i z e ( P 4 _ o u t ) ∗ W 55 W 53 + W 54 + W 55 + ϵ ) P5\_out =Conv(\frac{P5\_in*W53+P5\_td*W54+Resize(P4\_out)*W55}{W53+W54+W55+\epsilon}) P5_out=Conv(W53+W54+W55+ϵP5_in∗W53+P5_td∗W54+Resize(P4_out)∗W55)
P 4 _ o u t = C o n v ( P 4 _ i n ∗ W 43 + P 4 _ t d ∗ W 44 + R e s i z e ( P 3 _ o u t ) ∗ W 45 W 43 + W 44 + W 45 + ϵ ) P4\_out =Conv(\frac{P4\_in*W43+P4\_td*W44+Resize(P3\_out)*W45}{W43+W44+W45+\epsilon}) P4_out=Conv(W43+W44+W45+ϵP4_in∗W43+P4_td∗W44+Resize(P3_out)∗W45)
P 3 _ o u t = C o n v ( P 3 _ i n ∗ W 31 + R e s i z e ( P 4 _ t d ) ∗ W 32 W 31 + W 32 + ϵ ) P3\_out =Conv(\frac{P3\_in*W31+Resize(P4\_td)*W32}{W31+W32+\epsilon}) P3_out=Conv(W31+W32+ϵP3_in∗W31+Resize(P4_td)∗W32)
参考论文:EfficientDet: Scalable and Efficient Object Detection
链接:https://arxiv.org/pdf/1911.09070v2