Efficient Teacher: Semi-Supervised Object Detection for YOLOv5
- [1 背景](#1 背景)
-
- [1.1 动机](#1.1 动机)
- [1.2 问题](#1.2 问题)
- [2 创新点](#2 创新点)
- [3 方法](#3 方法)
- [4 模块](#4 模块)
-
- [4.1 伪标签分配](#4.1 伪标签分配)
- [4.2 Epoch Adapter](#4.2 Epoch Adapter)
- [5 效果](#5 效果)
-
- [5.1 与SOTA方法对比](#5.1 与SOTA方法对比)
- [5.2 消融实验](#5.2 消融实验)
论文:https://arxiv.org/pdf/2302.07577v3.pdf
代码:https://github.com/AlibabaResearch/efficientteacher
1 背景
1.1 动机
关于单阶段anchor-based的SSOD的研究很少。
1.2 问题
问题1:经典的单阶段锚点检测器由于其群锚机制产生更密集的预测,导致监督训练时正负样本不平衡,半监督训练时伪标签质量差。
问题2:目前主流的SSOD方法遵循师生互学习的方式,由于存在严重的伪标签不一致问题,即在整个训练过程中,教师模型生成的伪标签数量和质量波动较大,且不合格的伪标签会误导模型更新,导致单阶段anchor-based检测器难以训练。
问题3:如何训练出精度更高,效率更好的SSOD模型成为制约SSOD应用的关键问题。
2 创新点
-
在本文中,作者追求的是考虑推理和训练速度的同时,在一个anchor-based单阶段检测器上设计一个可扩展且有效的SSOD框架。将YOLO系列中使用的技术有效的添加到了经典的RetinaNet中,设计了一种新的具有代表性的anchor-based单阶段检测器baseline,成为Dense Detector。
-
根据Dense Detector的设计范式,作者提出了Efficient Teacher框架去克服SSOD中的挑战。
-
引入伪标签分配PLA,通过在客观性分支设计上采用细粒度的伪标签分配策略来缓解伪标签不一致性。通过将伪标签区分为可靠区域和不可靠区域,分别采用不同的损失计算方法。
-
提出了一个Epoch Adaptor(EA),分别利用域适应和分布适应来优化SSOD的训练过程。
3 方法
YOLOv5由于其友好的部署支持和快速的训练速度,是工业上广泛使用的单阶段anchor-based检测器。为了研究YOLOv5的半监督实验,需要全面分析YOLOv5检测器相对于其他最先进的检测器(如RetinaNet )所做的改进。表1的结果表明,YOLOv5 w/o在性能和计算量方面都优于RetinaNet。此外,使用Mosaic增强后的稠密图像输入,YOLOv5的AP50:95可以从41.2提高到49.0。YOLOv7在密集输入的基础上,借助信息和梯度的密集流动,进一步将AP50:95提升至51.5。根据上述比较,可以得到一个假设,即增加输入的密度可以有效地增强一级锚点检测器的性能。为了验证这一假设,作者构建了一个名为Dense Detector的新型探测器来定量评估YOLOv5中使用的技术。
Dense Detector使用ResNet-50-FPN主干对RetinaNet进行改造,同时将FPN输出数量从5个改成了3个,消除了检测头之间的权重共享,并将输入分辨率从1333降低到640,用于推理和训练。
Dense Detector有三个输出分支:分类得分,边界框偏移和目标置信度。与RetinaNet相比,Dense检测器实现了5.36 %的AP50:95提升和30 %的推理速度,如表1所示。具体来说,Dense Detector通过计算预测框和GT框之间的完全交并比(Complete Intersection over Union,CIoU )来获得目标性得分。目标性分数表示预测框的位置质量,并作为额外的信息源来提高检测性能。如图1所示,SSOD中的伪标签是未标记数据的预测框,其目标性分数表示伪标签的位置质量。因此,与仅有分类分支的RetinaNet相比,在SSOD训练过程中,具有额外对象分支的Dense Detector可以指示伪标签的位置质量,如图2所示。
为了验证Dense Detector在SSOD中的性能,将经典的SSOD方法(Unbiased Teacher)应用到Dense Detector中,该方法包含有标签和无标签数据、教师和学生模型以及一个伪标签过滤器来选择伪标签。此外,有标记和无标记数据分支都采用了公式2中的损失定义。然而,与表2中Faster R - CNN上的无偏教师相比,在Dense Detector上,无偏教师的AP50:95提升幅度从7.64下降到4.3。这促使作者开发了以下在伪标签分配中起关键作用的伪标签分配器。
4 模块
4.1 伪标签分配
SSOD中的核心问题是如何分配伪标签,因为次优的分配会导致伪标签不一致和相互学习机制的性能恶化。伪标签过滤( Pseudo Label Filter )是一种简单的分配标签的实现,它过滤掉低于设定阈值的伪标签。得分低于阈值的伪标签被标记为背景,而得分高于阈值的伪标签被标记为可靠伪标签。然而,该方法会导致次优的分配,如图3所示:在最上面的情况下,Pseudo Label Filter是一种快速过滤得分低于设定阈值的伪标签的方法。然而,在SSOD训练的整个过程中,伪标签的分数不断增加,这会导致伪标签过滤器将不正确的伪标签当作可靠的伪标签并包含在训练中,导致SSOD训练出现无法收敛的现象。
本文提出的伪标签分配( PLA )对Dense Detector生成的伪标签进行了更精细的赋值。在PLA中,非最大抑制( NMS )后得到的伪标签分为两类:可靠的伪标签和不确定的伪标签。伪标签得分的高低阈值 τ 1 , τ 2 \tau_1,\tau_2 τ1,τ2 用于判断两类伪标签。得分在 τ 1 , τ 2 \tau_1,\tau_2 τ1,τ2之间的伪标签被认为是不确定的,忽略这些标签的损失直接导致Dense Detector性能的提高。除了解决伪标签过滤器带来的次有问题外,PLA还包括了一种无监督损失,有效地利用了不确定的伪标签,将SSOD中稠密检测器的损失定义为:
其中 L s L_s Ls 表示有标签数据计算的损失, L u L_u Lu 表示为无标注数据的损失, λ \lambda λ 为平衡监督损失和无监督损失的权重,论文中设置为3。 L s L_s Ls 的损失以为:
其中CE是交叉熵损失, X ( h , w ) X_{(h,w)} X(h,w) 是学生模型的输出, Y ( h , w ) Y_{(h,w)} Y(h,w) 是GT标签分配的结果。
L u L_u Lu 的损失可以表示为:
其中 Y ^ ( h , w ) c l s , Y ^ ( h , w ) r e g , Y ^ ( h , w ) o b j \hat{Y}{(h,w)}^{cls},\hat{Y}{(h,w)}^{reg},\hat{Y}{(h,w)}^{obj} Y^(h,w)cls,Y^(h,w)reg,Y^(h,w)obj 分别表示PLA在特征图 ( h , w ) (h,w) (h,w) 处采样的分类得分,回归坐标和置信度分数。 o b j ^ ( h , w ) \hat{obj}{(h,w)} obj^(h,w) 表示在 ( h , w ) (h,w) (h,w) 处的伪标签置信度, p ( h , w ) p_{(h,w)} p(h,w) 是 ( h , w ) (h,w) (h,w) 处的伪标签得分。 1 { ⋅ } 1_{\{·\}} 1{⋅} 为指示函数,如果满足条件 { ⋅ } \{·\} {⋅} 则输出1,反之则输出0。
PLA与其他伪标签选择策略的不同之处在于,作者设计了一个软损失来分别处理不确定伪标签。PLA区分了两类不确定伪标签:分类得分高的伪标签和客观性得分高的伪标签。对于第一类,只计算对象性损失项 L u o b j L^{obj}u Luobj。将交叉熵 Y ^ ( h , w ) o b j \hat{Y}{(h,w)}^{obj} Y^(h,w)obj 的目标替换为软标签 o b j ^ ( h , w ) \hat{obj}_{(h,w)} obj^(h,w),说明这些伪标签不是背景样本,也不是正样本。对于第二类,PLA计算了对象性得分大于0.99时的回归损失项 L u r e g L^{reg}_u Lureg。这些伪标签具有良好的回归结果,但分类分数不足以确定其标签类别。
4.2 Epoch Adapter
在解决SSOD中伪标签不一致问题的同时,PLA在训练过程中仍然面临着实现稳定性和高效性的挑战。为了克服这一挑战,作者引入了Epoch Adaptor方法,该方法同时利用域适应和分布适应技术来实现快速稳定的SSOD训练。本文方法旨在缩小有标签和无标签数据之间的分布差距,同时在每个epoch动态估计伪标签的阈值。
如图4所示,与交替和原始的联合训练方案相比,EA能够使神经网络在Burn - In阶段同时接收有标记和无标记数据,并采用域适应技术与分类器来困扰检测器区分两类数据的能力。这有效地缓解了在原始方法中通常观察到的过拟合效应,该方法在Burn - In阶段仅依赖于标记数据。领域自适应损失函数为:
式中: p ( h , w ) p_{( h , w)} p(h,w) 为域分类器的输出。有标记数据 D = 0 D = 0 D=0,无标记数据 D = 1 D=1 D=1。作者使用梯度反向层( GRL ) ,而普通的梯度下降用于训练域分类器,并且梯度的符号在通过GRL层时是反向去优化基础框架的。在Burn - In阶段,一幅图像中的监督损失可以重新制定如下:
其中 λ \lambda λ 是控制域自适应损失的超参,实验中设置为0.1。
此外,目前的方法需要计算PLA的 τ 1 \tau_1 τ1和 τ 2 \tau_2 τ2 阈值,以便在SSOD训练过程中对未标记数据生成伪标记。在这些方法中,最有效的方法是利用带标签数据标签分布的先验信息来计算上述阈值。然而,这种方法并不直接适用于像Dense Detector这样的检测器,因为前面已经证明了马赛克数据增强在这些检测器中起着不可或缺的作用。此外,Mosaic数据增强的使用扰乱了标签分配比例。为了解决这个问题,作者基于LabelMatch中的重分配方法实现了一个分布自适应方法。在分布自适应中,第 k k k 个历元的 τ 1 \tau_1 τ1和 τ 2 \tau_2 τ2阈值为:
对于所有实验,可靠比 α α α 设置为60, P c k P^k_c Pck 表示第 k k k 个历元第 c c c 类的伪标签分数列表。同时, N l N_l Nl 和 N u N_u Nu 表示有标记和无标记数据的数量, n k c n^c_k nkc 表示EA在第 k k k 个epoch统计的第 c c c 类真值标注的数量。EA通过在每个epoch动态计算合适的阈值,使联合训练更适应动态数据分布。
EA中域适应和分布适应的融合有效地缓解了神经网络对标记数据的过拟合。此外,EA动态地在每个历元估计合适的伪标注阈值,实现快速高效的SSOD训练。
5 效果
5.1 与SOTA方法对比
5.2 消融实验
伪标签分配策略的消融实验。
Epoch Adaptor的消融实验。