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

FPN-多尺度

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

FPN整体结构

在这里插入图片描述
从上图的结果可以看到:

  1. backbone提取特征通过FPN得到四个维度的输出(特征图)
  2. RPN在FPN输出特征基础上生成anchor并进行采样
  3. ROI Align将ROI 生成区域分配到对应特征层并进行降维和训练,得到最终预测结果。

FPN的RoI Align

在这里插入图片描述
分配方法:多个roi进行面积计算(不同层的feature size不同),根据面积大小来区别是来自第几层的roi,分配到对应尺度的特征层进行roi align。

Cascade-合理阈值

Cascade网络针对faster rcnn筛选正负样本的阈值IoU进行了分析,发现使用合理的阈值对于训练中的RoI非常关键,而faster rcnn仅使用0.7、0.3和0.5作为正负样本阈值选择是不合适的。
在这里插入图片描述
通过上图进行实验结果对比分析可知:

  1. 单一阈值训练出的结果非常有限
  2. 使用合理的阈值(RoI自身的IoU和训练器一致时性能最优)可以有效增加训练结果

所以,下一步的思路是增加多个header从而让训练器使用不同的阈值得到预测结果。
在这里插入图片描述

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

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

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

Libra-融合+采样、loss平衡

问题:

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

解决方法

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

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

在这里插入图片描述

采样不平衡

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

损失函数不合理

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

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值