【学习-目标检测】目标检测之—FPN+Cascade+Libra

文章目录

FPN-多尺度

【学习-目标检测】目标检测之—FPN+Cascade+Libra
FPN相比faster RCNN,在特征提取和训练的过程中考虑到 多尺度的问题,使用 不同尺度上的 特征并进行充分 融合,得到最终 多个层级的预测结果
从上图中可以看到,在图像进入backbone进行特征提取后,分别在C2\C3\C4\C5四个尺度上继续1×1特征提取和组合,最终进行四个尺度的预测输出。其中在每一个环节中的输出有1*1conv进行通道调整和上采样进行特征融合。

; FPN整体结构

【学习-目标检测】目标检测之—FPN+Cascade+Libra
从上图的结果可以看到:
  1. backbone提取特征通过FPN得到 四个维度的输出(特征图)
  2. RPN在FPN输出特征基础上生成anchor并进行采样
  3. ROI Align将ROI 生成区域分配到对应特征层并进行降维和训练,得到最终预测结果。

FPN的RoI Align

【学习-目标检测】目标检测之—FPN+Cascade+Libra
分配方法:多个roi进行面积计算(不同层的feature size不同),根据面积大小来区别是来自第几层的roi,分配到对应尺度的特征层进行roi align。

; Cascade-合理阈值

Cascade网络针对faster rcnn筛选正负样本的 阈值IoU进行了分析,发现使用 合理的阈值对于训练中的RoI非常关键,而faster rcnn仅使用0.7、0.3和0.5作为正负样本阈值选择是不合适的。

【学习-目标检测】目标检测之—FPN+Cascade+Libra
通过上图进行实验结果对比分析可知:
  1. 单一阈值训练出的结果非常有限
  2. 使用合理的阈值(RoI自身的IoU和训练器一致时性能最优)可以有效增加训练结果

所以,下一步的思路是 增加多个header从而让训练器使用不同的阈值得到预测结果。

【学习-目标检测】目标检测之—FPN+Cascade+Libra

Cascade rcnn使用三种不同结构的网络结构,有:

  1. 串联分开参数训练
  2. 串联共享参数巡训练
  3. 并联公用roi分开参数的结构

最终的结果是,使用Cascade级联的结构可以获得最好结果。
Cascade RCNN使用 三个header分开参数,使用 不同的IoU训练器,每层使用上一层学习的RoI进行训练,最终回归分支结果作为最终回归结果,而 三个分类结果平均作为最终分类结果

Libra-融合+采样、loss平衡

问题:

  • 不同尺度特征层如何有效利用?
  • 采样不平衡
  • 损失函数不合理

解决方法

不同尺度特征层如何有效利用

针对不同尺度特征问题,先进行 上采样或者下采样进行尺度统一,使用 平均方法进行图像融合成为一张图,之后使用 non-local方法进行相同特征强化,最后将相同特征融合到原特征以增强特征作用。

【学习-目标检测】目标检测之—FPN+Cascade+Libra

; 采样不平衡

针对采样不平衡问题,采用 分类分区域采样的思路。对于 正样本采样,原来是从正样本中随机采样,现在是在正样本中 根据类别数量进行均匀采样;对于 负样本采样,先根据阈值划分为 两个分段高于阈值在进行分桶,计算落在每个桶的数量得到均匀分布的负样本,对于 低于阈值的样本进行 随机采样

【学习-目标检测】目标检测之—FPN+Cascade+Libra

损失函数不合理

针对第三个问题loss,从smooth L1的损失函数可以看到,在从梯度小于1到1的过程中出现较大转折,使用此loss训练并不平滑,作者提出 balance loss可以增加训练过程的平滑性

【学习-目标检测】目标检测之—FPN+Cascade+Libra

Original: https://blog.csdn.net/helloworld_Fly/article/details/124872257
Author: helloworld_Fly
Title: 【学习-目标检测】目标检测之—FPN+Cascade+Libra

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/686389/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球