MaskRcnn(四)源码解读之FPN

一、FPN介绍

1、FPN层作用:

R-CNN中只用最后一层的特征图进行特征的提取,网络层数越高,提取的信息越丰富,表示的是整体的一些信息。而浅层的特征图是一些浅显的信息,比如说轮廓等。不过,顶层特征忽略小物体的一些信息,这使得检测效果不够理想。因此提出FPN(金字塔特征提取网络),用多层特征去提取信息,用各层的特征图进行特征提取。

2、基本思想:

将多个阶段的特征图融合在一起,既提取高层特征图的语义特征,又提取低层的轮廓特征。

3、FPN的实现:

①:继续采用Resnet的五个阶段。
②:不改变特征图大小的层归为一个阶段。
③:每次抽取的特征都是每个阶段最后一层的输出。

4、存在问题:

不同层的特征图的大小会发生变化,如何把这些特征图融合在一起?
后续的讲解过程会解释清楚的。

二、FPN网络结构

在这里插入图片描述
抽取每个阶段最后一层的输出,每个阶段的特征图的尺寸是不同的,特征图个数也大概率不同,先用1*1卷积得到P5(不改变特征图大小,改变通道数),然后进行上采样(线性插值),然后和C4进行特征融合得到P4,接着后续进行相同的操作。

三、源码解读

代码中有详细注释

#resnet网络,残差网络。
_, C2, C3, C4, C5 = resnet_graph(input_image, config.BACKBONE, stage5=True)#这里之所以没有使用C1,是考虑到由于C1的尺寸过大,训练过程中会消耗很多的显存。
#得到各个阶段最后一层的特征图
print(_,C2,C3,C4,C5)
# Top-down Layers 自顶向下来完成
P5 = KL.Conv2D(256, (1, 1), name='fpn_c5p5')(C5)  #1*1卷积,输入C5,得到P5,维度为H*W*256
P4 = KL.Add(name="fpn_p4add")([    #特征图相加C4+P5得到P4
    KL.UpSampling2D(size=(2, 2), name="fpn_p5upsampled")(P5),  #上采样,线性插值
    KL.Conv2D(256, (1, 1), name='fpn_c4p4')(C4)])
P3 = KL.Add(name="fpn_p3add")([
    KL.Conv2D(256, (1, 1), name='fpn_c3p3')(C3)])
    KL.UpSampling2D(size=(2, 2), name="fpn_p4upsampled")(P4), 
P2 = KL.Add(name="fpn_p2add")([
    KL.UpSampling2D(size=(2, 2), name="fpn_p3upsampled")(P3),
    KL.Conv2D(256, (1, 1), name='fpn_c2p2')(C2)])
#对P5,P4,P3,P2都进行3*3卷积,把之前得到的特征组合应用起来。
P2 = KL.Conv2D(256, (3, 3), padding="SAME", name="fpn_p2")(P2)
P3 = KL.Conv2D(256, (3, 3), padding="SAME", name="fpn_p3")(P3)
P4 = KL.Conv2D(256, (3, 3), padding="SAME", name="fpn_p4")(P4)
P5 = KL.Conv2D(256, (3, 3), padding="SAME", name="fpn_p5")(P5)
#得到当前的FPN层。
#P6用来后续特征框的生成,P6是直接对P5进行pooling得到的。
P6 = KL.MaxPooling2D(pool_size=(1, 1), strides=2, name="fpn_p6")(P5)
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

血狼傲骨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值