论文阅读笔记 | 目标检测算法——Dynamic R-CNN算法

简介: 论文阅读笔记 | 目标检测算法——Dynamic R-CNN算法

paper:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training

image.png


摘要:


虽然两阶段目标检测算法近年不断发展,但是其训练过程并非完美的。作者发现了固定网络设置和动态训练过程之间存在的不一致问题,这极大地影响了性能。固定标签分配策略和回归损失函数不能适应候选框的分布变化,因此不利于训练高质量的检测器。

image.png

为此,作者提出了Dynamic R-CNN算法。基于训练时候选框的统计数据,Dynamic R-CNN可以自动调整标签分配标准(IoU阈值)和回归损失函数的形状(SmoothL1 Loss的参数)。这种动态设计更好地利用了训练样本,并推动检测器适应更多高质量的样本,其中高质量代表高IoU下的结果。


与Libra R-CNN一样,Dynamic R-CNN的关注点也是在训练过程上。


1. Introduction


对于目标检测的分类与普通的分类任务是不一样的,在目标检测中是对候选框进行分类。而如何区分候选框是正样本还是负样本,一般通过与其所对于的ground truth的IoU来判断,当超过一定的阈值时才会将候选框判定为正样本。之前阅读的Cascade R-CNN论文中有提到过,用单一的IoU阈值去训练网络会严重的限制网络的性能,且得到的候选框质量不算很高。为了得到质量比较高的候选框,一般需要设置一个比较高的阈值,而如果在训练时直接设置一个高阈值,由于正样本的敏感性,会让正样本的数量严重下降。为此,Cascade R-CNN提出了级联训练思想,通过多个回归器不断提高阈值,进而不断提高输出候选框的质量。虽然有效,但是费时。而且对于回归器还是会出现问题,因为在训练过程中,候选框的质量虽然得到了提高,但是SmoothL1损失中的参数是固定的。因此,这导致对高质量候选框的训练不足。


为了解决这个问题,作者首先检查一个被忽略的事实,即建议的质量确实在培训期间得到了提高,如图1所示。可以发现,即使在不同的IoU阈值下,阳性的数量仍然显著增加。


为此,作者提出了Dynamic R-CNN算法,其由两个部分组成:1)动态标签分配(Dynamic Label Assignment);2)动态SmoothL1损失(Dynamic SmoothL1 Loss);分别为分类和回归分支设计。


为了能训练出一个能更好的区别高质量IoU候选框的分类器,作者根据训练过程中的候选框分布,逐步调整正/负样本的IoU阈值。具体来说,就是将候选框的IoU阈值设置为某个百分比,因为它可以反映总体分配的质量。对于回归,作者选择改变回归损失函数的形状,自适应地拟合回归标签的分布变化,保证高质量样本对训练的贡献。然后作者根据回归标签分布调整SmoothL1损失中的β ββ,因为β ββ实际上控制小误差梯度的大小。


通过这种动态的方案,不仅可以缓解训练初期的数据稀缺问题,还可以收获高IoU训练的好处。这两个模块探索检测器的不同部分,因此可以协作实现高质量的物体检测。


2. Related Work


用这一节补充一下之前没有接触过的论文。


  • IoU-Net

检测中的分类分数不仅决定了每个候选框的语义类别,还影响边界框的准确性,因为非最大抑制(NMS)使用更可靠的边界框来抑制置信度较低的边界框,而其首先使用分类分数对预测边界框进行排序。然而,如IoU-Net所述,分类得分与定位精度的相关性较低,导致排序有噪声且性能有限。因此,IoU-Net采用了一个额外的分支来预测IoU得分和细化分类置信度。


  • Dynamic training

遵循动态训练的思想有各种各样的研究。一个广泛使用的例子是基于训练迭代调整学习速率。此外,课程学习(Curriculum Learning)和自定进度学习(Self-paced Learning)侧重于改善样本的训练顺序。对于目标检测,硬挖掘方法也可以看作是一种动态的方式。然而,这些方法没有处理目标检测中的核心问题:例如常量标签分配策略(constant label assignment strategy)。


3. Dynamic Quality in the Training Procedure


一般来说,目标检测是复杂的,因为它需要解决两个主要任务:识别和定位。识别任务需要区分前景对象和背景,并为它们确定语义类别。此外,定位任务需要为不同的对象找到准确的边界框。为了实现高质量的物体检测,我们需要进一步探索这两个任务的训练过程如下。


3.1 Proposal Classification

如果候选框与ground-truth没有任何交集,则肯定其为负样本;而如果候选框与 ground-truth完全重合,则肯定其为正样本。但是如果候选框与ground-truth的IoU为0.5,判断其是正样本还是负样本是一个问题。


在Faster RCNN中,标签是通过使用预定义的IoU阈值将预测框的最高IoU与ground-truth进行比较来分配的。基本可以用以下公式来表示:

image.png


由于分类器的目标是区分正负样本,因此使用不同的IoU阈值进行训练将得到具有相应质量的分类器。因此,为了实现高质量的目标检测需要训练具有高IoU阈值的分类器,但是直接提高阈值会导致正样本的大量消失。Cascade R-CNN采取级联训练的方法,有效但是费时。


那么有没有办法两全其美呢?如上所述,候选框的质量实际上随着训练而提高。这个现象启发了作者在训练的时候采取渐进的方法:在开始时,RPN网络无法产生足够高质量的候选框,因此作者在第二阶段训练中使用较低的IoU阈值来更好地容纳这些低质量的候选框。随着训练的进行候选框质量不断提高,逐渐拥有了足够高质量的候选框。因此,此时可以提高阈值来训练高质量的检测器,在更高的IoU下具有更强的鉴别力。


通过进阶式的在训练中不断的提高阈值,从而达到效果,且没有像Cascade R-CNN那样额外费时。


3.2 Bounding Box Regression

image.png


然而,作者发现回归标签(regression labels)的分布在训练过程中是移动的。如图2所示:其中δ 是预测框相对于标注框的偏移大小,而这里作者的regression labels个人理解,感觉就是相对的偏移量参数。

image.png

作者计算了不同迭代次数和IoU阈值下回归标签的统计量。首先,在前两列中,作者发现在相同的正样本IoU阈值下,由于候选框质量的提高,均值和stdev随着训练的进行而降低。在归一化因子相同的情况下,基于SmoothL1 Loss函数的定义,这些高质量样本的贡献将减少,这不利于高质量回归器的训练。由于均值和方差均减小,预测的偏移也会减小即损失值减小,而此时正样本的比例是在不断变大的。即相对减小了高质量的正样本在训练过程中的贡献。


而且,随着更高的IoU阈值,正样本的质量进一步增强,从而它们的贡献甚至会进一步降低,这将极大地限制整体性能。因此,为了实现高质量的目标检测,需要拟合分布变化并调整回归损失函数的形状,以补偿高质量候选框的增加。


4. Dynamic R-CNN


Dynamic R-CNN中的关键思想是:调整第二阶段的分类器和回归器,以适应候选框的分布变化。处理流程如图所示:

image.png

下面会分别加以说明。


4.1 Dynamic Label Assignment

image.png


4.2 Dynamic SmoothL1 Loss

image.png

image.png


在图中可以发现,当β 值较小时,其回归速率会更快,其梯度也更陡。所以较小的β 实际上加速了梯度大小的饱和,我理解为可以比较快的收敛,从而使得更精确的样本对网络训练的贡献更大。

image.png


看完这里其实有点晕,但是简单来说就是随着训练回归参数是会改变的,均值与方差不断的变小,这同时会造成原式中β 的变化。而固定不变的将β ββ设置为1,确实是会影响网络的性能的。所以,这里作者根据不断变化的回归参数动态的改变β 以实现补偿。而β 的取值就等于当前前K 个最小回归参数的中值。


小结:


阈值与β 的取值如下所示:

image.png

这里再再补充,随着不断训练,回归参数的均值与标准差是不断减小的,而为了平衡这种差异,回归损失的β就不应该保持1不变,而是应该随着数据分布的变化而变化,所以作者取前K 个最小值的中值作为β 值。所以β 值也是在不断减小的。而不断减小的β 可以加速梯度幅度的饱和,从而使得更精确的样本对网络训练贡献更大。(不过关于这一点,我还是不清楚,为什么断减小的β ββ可以使得使得更精确的样本对网络训练贡献更大,虽然实验结果却是如此)

image.png


算法流程图如下所示:

image.png


5. Result


  • 与其他baseline的对比:

image.png

  • 两个模块的作用:

image.png

  • 与SOTA的对比:

image.png

效果好像还不错,与DCN配合使用达到了50的mAP。


总结:


作者的关注点与Libra RCNN一样,关注与训练过程中的动态问题。提出动态的提高阈值训练,且动态的降低SmoothL1损失函数中的β,来提高网络性能。


目录
相关文章
|
3月前
|
机器学习/深度学习 算法 测试技术
低照度增强算法(图像增强+目标检测+代码)
低照度增强算法(图像增强+目标检测+代码)
116 1
|
3月前
|
机器学习/深度学习 监控 算法
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
157 1
|
2月前
|
机器学习/深度学习 算法 计算机视觉
[YOLOv8/YOLOv7/YOLOv5系列算法改进NO.5]改进特征融合网络PANET为BIFPN(更新添加小目标检测层yaml)
本文介绍了改进YOLOv5以解决处理复杂背景时可能出现的错漏检问题。
104 5
|
1天前
|
机器学习/深度学习 人工智能 算法
【图像版权】论文阅读:CRMW 图像隐写术+压缩算法
【图像版权】论文阅读:CRMW 图像隐写术+压缩算法
7 0
|
7天前
|
人工智能 算法 测试技术
论文介绍:进化算法优化模型融合策略
【5月更文挑战第3天】《进化算法优化模型融合策略》论文提出使用进化算法自动化创建和优化大型语言模型,通过模型融合提升性能并减少资源消耗。实验显示,这种方法在多种基准测试中取得先进性能,尤其在无特定任务训练情况下仍能超越参数更多模型。同时,该技术成功应用于创建具有文化意识的日语视觉-语言模型。然而,模型融合可能产生逻辑不连贯响应和准确性问题,未来工作将聚焦于图像扩散模型、自动源模型选择及生成自我改进的模型群体。[论文链接: https://arxiv.org/pdf/2403.13187.pdf]
111 1
|
1月前
|
机器学习/深度学习 存储 算法
算法·动态规划Dynamic Programming
算法·动态规划Dynamic Programming
11 0
|
3月前
|
机器学习/深度学习 编解码 算法
中科大提出PE-YOLO | 让YOLO家族算法直击黑夜目标检测
中科大提出PE-YOLO | 让YOLO家族算法直击黑夜目标检测
58 0
|
22小时前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
1天前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
1天前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
11 1