1 FPN是什么

FPN,Feature Pyramid Networks,特征金字塔网络。用来处理多尺度(不同大小)物体检测问题。

2 为什么要用FPN

  • 为什么要用FPN?
    以前,在Backbone的最后一个stage的最后一层特征图,后面接上检测头实现目标检测,这种检测称之为单stage检测算法。但效果不太好!为什么呢?
    因为无法用单一stage的特征图同时有效的表征各个尺度的物体。怎么办呢?
    利用不同stage的特征图(不同stage的特征图,其scale也不同)!如下图所示,类似于金字塔结构,故称之为特征金字塔。
    通过FPN,不同尺度的特征图 表征不同scale的物体,然后再基于此做目标检测。

  • stage 概念
    一般而言,特征图分辨率相同的所有卷积层归类为一个stage,就像resnet50的3,4,6,3,称为4个stage

  • 检测头 概念
    目标检测最后一公里,拿到特征图后,通过卷积等操作完成物体类别和位置的检测部分。

在这里插入图片描述

3 目标检测backbone中常见术语解读

以ResNet50为例,只看下图左侧部分。

Backbone生成的特征,一般按stage划分,分别记作C1、C2、C3、C4、C5等,其中的数字与stage的编号相同,代表的是分辨率减半的次数,如C2代表stage2输出的特征图,分辨率为输入图片的1/4,C5代表,stage5输出的特征图,分辨率为输入图片的1/32。
在这里插入图片描述

4 FPN特征融合常规解读

如上图中间部分。

4.1 FPN包括哪些部分

FPN依赖backbone,包括自底向上、横向连接、自顶向下、特征融合,特征整合。

  • 自底向上:Resnet特征提取(feature map),例如:C2, C4
  • 横向连接:将C2到C4的特征利用 1x1 卷积进行整合,也就是通道变换,例如:Conv2D 1x1, s1
  • 自顶向下:高层feature map上采样,例如Upsample
  • 特征融合:将自顶向下上采样的channel与横向连接后的channel 相加(注意:它俩通道数相同,尺寸相同),例如 :+注意:有的特征融合部分不是相加,而是concat拼接,例如YOLOv3。
  • 特征整合:融合后的特征,利用卷积进行整合。例如:Conv2D 3x3, s1

4.2 FPN特征融合的思想

  • 低层的feature map包含更多的定位细节,高层的feature map包含更多的目标特征信息
  • 把高层的特征传下来,补充低层的语义,这样就可以获得高分辨率、强语义的特征,有利于小目标的检测。

5 FPN特征融合YOLOv3实例解读

特征金字塔可以将不同shape的特征层进行特征融合,有利于提取出更好的特征。

YOLOv3利用多特征层进行目标检测,一共提取三个特征层。
三个特征层处在主干网络Darknet53的不同位置,分别位于中间层,中下层,底层(相对下图中的位置),三个特征层的shape分别为(52,52,256)、(26,26,512)、(13,13,1024)。

在获得三个有效特征层后,利用这三个有效特征层进行FPN层的构建。

在这里插入图片描述

5.1 构建方式解读1

  • 13x13x1024的特征层进行5次卷积处理,处理完后的结果分两路走,一路利用**YoloHead(检测头)获得预测结果,一路用于进行卷积(降低通道数)+上采样UmSampling2d(c通道数不变,w,h尺寸变为原来2倍)**后与26x26x512特征层进行concat拼接,拼接后特征层的shape为(26,26,768)。
  • 拼接后的特征层再次进行5次卷积处理,处理完后的结果 分两路 走,一路利用 YoloHead 获得预测结果,一路用于进行 卷积(降低通道数)+上采样UmSampling2d(c通道数不变,w,h尺寸变为原来2倍) 后与52x52x256特征层进行concat拼接,拼接后特征层的shape为(52,52,384)。
  • 拼接后的特征层再次进行5次卷积处理,处理完后利用YoloHead获得预测结果。

5.2 构建方式解读2

  • backbone最后一层经过5次卷积得到一层特征图,从这儿分成两路,一路去做预测,一路上采样和上一个Block进行concat拼接,类推形成特征金字塔(FPN,Feature Pyramid Networks,用于解决目标检测中的多尺度变化问题)
  • 预测那一路包括分类预测和回归预测,使用的是3x3的卷积和1x1的卷积,最后得到的特征图尺寸为13x13,75的由来,每个像素点(网格思想)上有3个先验框,每个先验框属于每一类的概率(voc有20类)、是否有物体(1个参数)、对应的调整参数(4个参数,中心点x,y坐标,框宽w和高h),因此最后的13,13,75的理解为:13,13,75 ->13,13,3x25 -> 13,13,3x[20(属于某一类的概率,voc有20类)+1(是否有物体)+4(调整参数)]
  • 上采样那一路,和上一层的输出特征图融合后,做5次卷积得到一层特征图,然后分成两路,一路去做预测,一路去。。。

ps:先验框是预设的( 9种尺度的先验框 ),经过网络训练,参数调整后才能变成 预测框

6 FPN特征融合FCOS实例解读

放一张图在这让大家感受一下,具体细节,详见我的另一篇博客:(还没写)
在这里插入图片描述

7 BiFPN图解

BiFPN的简单版本如下图:
在这里插入图片描述
BiFPN的具体细节如下图:
在这里插入图片描述

8 感谢链接

https://blog.csdn.net/weixin_44791964
https://www.bilibili.com/video/BV1dh411U7D9
https://zhuanlan.zhihu.com/p/148738276
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐