深度学习:FPN网络
FPN的作用?
答: 以往的ROI映射到feature map都在作用在最后一层,这种映射是直接将ROI除以相应的stride来获取feature map上对应的特征。对于小目标来说,ROI映射到feature map很可能没有了。那我用浅层一点好不好:不好,因为深层的特征含有比较高级的语义信息,浅层的对于准确定位比较有用,只用浅层的就发挥不了深度网络的强大能力了。FPN就是一种 结合多层级特征来解决多尺度问题的特征金字塔模型 。
FPN长什么样?
自底向上 :黄色部分就是ResNet前项传播的结构,不多逼逼
自顶向下 :将顶层特征做两倍上采样,然后和其对应的前一层特征做element-wise的加法。注意,前一层特征在加法之前,要先采用1×1×256的卷积,使得不同层的通道数都相同,以便后续前后层特征的相加。
Faster R-CNN:RPN生成ROI,创建特征图上对应的特征片,传给ROI pooling以resize到相同的尺度。
FPN + Faster R-CNN:RPN生成ROI,根据其尺寸选择最合适的尺度的特征层以生成特征片,传给ROI pooling以resize到相同的尺度。
概览:
①RPN:固定每种特征图上只用一个尺度的anchor,每层的anchor对应3种长宽比。这样对于每一个ROI,就有12个anchor。RPN在特征图上应用3×3卷积,然后再分别采用1×1卷积进行分类(前景or背景)和回归,得到ROI。
②对于不同尺度的ROI,选择合适的特征层做ROI pooling。即小目标采用浅一点的特征层,大目标采用深一点的特征层。(对每一个ROI提取对应特征图上的特征,组成一个大的特征列表,然后进行ROI pooling)
③对这个特征列表先接两个1024通道数的卷积层(也就是全连接层,卷积核的大小等于ROI pooling后的大小),再分别送入分类层和回归层得到最终的结果。
参考
- lonlon ago:从代码细节理解 FPN (Feature Pyramid Networks for Object Detection)
- FPN(特征金字塔网络)的直觉、架构和表现简要介绍-电子发烧友网
- 转载关于FC、ROI、RPN的另类理解,有点意思