文章来源:CVHub
作 者:派派星
原文链接:https://mp.weixin.qq.com/s/B0yHtFMTO5gwt0B-ra18QA
Title: Efficient Teacher: Semi-Supervised Object Detection for YOLOv5
Paper: https://arxiv.org/pdf/2302.07577.pdf
导读
不同于全监督学习拥有大量带标签的数据可以供模型训练,半监督学习旨在借助一小部分带标注数据的基础上,能够充分利用大量未标注数据来进一步提升模型的性能。构建 SSOD 的主流方式有两种,即伪标签学习(Pseudo-label based Learning)和一致性正则化(Consistency Regularization)。下面简单为大家科普下一些相关的专业术语。
基于伪标签学习的做法通常是利用标注好的一小部分数据集先训练一个模型出来,随后再通过该模型为剩余大量未带标签的数据进行推理,最后再通过 NMS 之类的技术并给定合适的 Threshold 筛选出合适的标签。一般的,我们将这种方式下构建的标签称之为伪标签。
而基于一致性正则化的方法类似于自监督学习(Self-Supervised Learning, SSL)中的对比学习(Contrastive Learning),其核心思想是对于一个给定的输入,即使人为的施加扰动(例如对原图做水平/垂直翻转、调节亮度/对比度/饱和度等),网络仍然可以产生趋向于原始期望的输出。具体实现方法其实同对比学习采用的孪生网络(Siamese neural network)结构类似,一般将来自一张图像的不同视角作为输入对,并通过在特征空间中优化它们的距离以实现相似性度量。通过这种方式便可以使原本相似的实例在投影空间中趋近,反之远离,从而充分地利用大规模的无标注数据信息。
好了,相信了解完这些基本的概念和思想之后能帮助大家更好的理解本文。今天为大家带来的是阿里新出的一篇基于 YOLOv5 框架实现的半监督目标检测方法(Semi-Supervised Object Detection, SSOD)。作者认为,以往大部分 SSOD 方法之所以基于 R-CNN 系列或 Anchor-free 检测器上实现,这是由于基于单阶段 Anchor-based 检测器缺乏生成高质量或灵活伪标签的结构,导致 SSOD 中存在严重的不一致问题。因此,本文提出了一种称为高效教师(Efficient Teacher)的框架,用于可扩展且有效的基于 Anchor 的单阶段 SSOD 训练,由 Dense Detector、Pseudo Label Assigner 和 Epoch Adapter 三部分组成。实验结果表明,Efficient Teacher 框架使用比以前的方法更少的 FLOPs 仍然能够在 VOC、COCO-standard 和 COCO-additional 榜上取得 SOTA。
本文作者在 Abstract 末尾强调说: "To the best of our knowledge, this is the first attempt to apply Semi-Supervised Object Detection to YOLOv5." 但严格意义上来说半监督学习在 YOLOv5 上的应用之前就有人发表过了,例如上海交大在 arxiv 公开的论文做的是关于 SSAD 算法的研究,笔者还为此专门写过一篇讲解。其实两篇文章的思路还是可以互相借鉴的,例如 SSAD 这个里面便是用的 Mead Teacher 来缓解 Domain Bias,而本文所提出的 Efficient Teacher 本质上也是为了缓解 SSOD 训练过程中的伪标签不一致问题。
一文教你如何用YOLOv5玩转半监督
动机
Tow-stage/Anchor-free vs. One-stage Anchor-based
众所周知,经典的基于 One-stage 的 Anchor-based 检测器则由于其多锚框机制而产生更密集的预测,这导致监督训练期间正、负样本不均衡以及半监督训练期间所生成的伪标签质量较差。因此,领域内大多数 SSOD 算法通常都应用于 coarse-to-fine 的 Tow-stage 或 Anchor-free 系列算法。
然而,尽管存在以上缺陷,但不可否认的是诸如 yolov3 ~ yolov7 等一众基于单阶段的 Anchor-based 检测器大都具备以下几点优势:
- 高召率高;
- 训练速度快;
- 数值稳定性高;
因此,探索 SSOD 在基于单阶段的 Anchor-based 检测器是非常有必要的。
Learning Mechanism
如上所述,目前主流的 SSOD 算法大都是遵循伪标签训练法,然而这很容易导致一个问题——伪标签不一致(pseudo label inconsistency)。这个很好理解,大家思考下伪标签是怎么得到的,不就是由 Teacher 模型输出一定量的结果,再经过 NMS 过滤和阈值筛选出来的标签吗?我们知道标签质量的好坏势必会影响到 Student 模型最终的精度,因此这种学习机制最重要的一点便是要保障 Teacher 模型的质量。
从这一点来看主流的 SSOD 算法也会倾向于选择 Tow-stage 算法作为特征检测器,因为相比于 One-stage 的算法而言它能够将伪标签细化数倍,通过采用特征图作为软伪标签,以避免由 NMS 引起的偏差。反观单阶段的检测器,这种基于学生-教师相互学习的机制会导致其在整个训练过程中难以稳定的训练,即教师模型生成的伪标签的数量和质量波动很大,其产生的不合格伪标签便会持续误导模型的更新。
因此,如何解决基于多锚框机制的单阶段检测算法表现出来的伪标签不一致问题上显得极为重要。
Accuracy vs. Efficiency Trade-offs in SSOD
最后,如何训练出精度更高、效率更高的 SSOD 模型成为制约 SSOD 算法在广泛场景应用的关键问题。此前的 SSOD 方法主要是为了追求更好的准确性,但通常会牺牲训练效率。
因此,一个可以进行更快的迭代、需要更少计算资源和能够实现更高精度的检测器架构是迫切需要的。
综上所述,在充分考虑训练和推理效率的同时,本文考虑采用基于单阶段的 Anchor-based 检测器构建有效的 SSOD 架构。
首先,通过借鉴 yolov4、yolox 和 yolov7 中使用的技术,作者重新优化了一版 RetinaNet,从而设计出一种新的代表性单阶段 Anchor-based 检测器作为 Baseline,称为 Dense Detector。最终的实验结果表明通过使用密集采样可以有效的将 @AP50:95 指标提高 5.36 个点!
其次,通过将成熟的 SSOD 方案——Unbiased Teacher移植到 Dense Detector 上,发现与监督方法相比只有 1.65 个点的提升,这充分验证了学习机制对 SSOD 算法的影响。因此,根据 Dense Detector 的设计范式,本文提出了 Efficient Teacher 框架来克服 SSOD 中的这些挑战。具体地,引入伪标签分配器(Pseudo Label Assigner, PLA)通过在目标分支设计上利用细粒度伪标签分配策略来缓解伪标签不一致的现象,同时通过将伪标签划分为可靠区域和不确定区域,分别采用不同的损失计算方法。
最后,为实现快速高效的端到端半监督训练,作者进一步提出了 Epoch Adaptor (EA) 策略,这是一种针对 SSOD 的端到端训练策略,由一个 Burn-In 阶段和一个半监督训练阶段组成。其中,Burn-In 阶段仅使用标记数据进行模型参数更新预热,以获得具有基本伪标签生成能力的学生模型。而在半监督训练阶段,EA 可以根据一个 epoch 内 Mosaic 数据增强后的 ground truth 数量自动计算 PLA 所需的低阈值和高阈值,促使整个训练过程稳定有效。
方法
Efficient Teacher Framework
上图展示的是一种新颖高效的半监督目标检测框架 Efficient Teacher,它显著地提高了单阶段 Anchor-based 检测器的性能。该框架基于 student-teacher mutual 学习的方法。图中右上角展示的是 PLA 方法,它可以依据 score 将伪标签自动地划分为可靠伪标签和不确定伪标签,其中可靠伪标签用于默认监督训练,不确定伪标签用于指导学生模型的训练。此外,上图左侧展示的 Epoch Adapter 策略则用于通过在标记数据和未标记数据之间执行域自适应来加速收敛,并在 burn-in 阶段后将主要 epoch 从标记数据切换到未标记数据。在整个训练过程中,教师模型采用指数移动平均即 EMA 技术进行更新,这也是大多数半监督学习的常用做法。下面分别就这几大板块为大家详细介绍下。
Dense Detector
先来看下不同类型的检测器在 COCO 验证集上的表现:
从上表可以明显的看出,YOLOv5 整体性能算挺高的了,而 YOLOv7 在 Mosaci 增强的基础上借助密集信息流和梯度优化进一步将指标提高到 51.5,从中也可以看出 Mosaic 增强对目标检测器的显著影响,这主要是由于训练过程中正、负样本不均衡所导致的问题。为此,作者认为基于单阶段的 Anchor-based 检测器通常需要 dense inputs。
本文所设计的 Dense Detector 是从具有 ResNet-50-FPN 主干的 RetinaNet 修改而来的,同时将 FPN 输出的数量从 5 更改为 3,消除了检测头之间的权重共享,并将训练和推理的输入分辨率从 1333 降低到 640。更重要的是,Dense Detector 有两个输出(对应一个分类分数和一个边界框偏移量)和一个输出目标分数共计三个分支。Dense Detector 采用的是 CIoU 损失,如上图所示,SSOD 中的伪标签是未标记数据的预测框,其目标分数直接体现了伪标签的位置质量。因此,与只有分类分支的 RetinaNet 相比,具有额外目标分支的 Dense Detector 可以指导 SSOD 训练期间产生高质量的伪标签,如下图所示:
Pseudo Label Assigner
众所周知,SSOD 的核心问题是如何分配伪标签,因为次优分配会导致伪标签不一致和相互学习机制的性能恶化。本文提出的伪标签过滤器是一种朴素的方法,它通过设置阈值来分配伪标签,低于阈值的被视为背景,如下图所示:
大家可以观察一下,以右上角那个示例说明下,由于阈值设置为 0.1,红色的伪标签被错误地分配,导致学生模型学习到错误的标签。而它的正下方,当我们把阈值设置为 0.6 时,虽然排除了低分伪标签,但也错误地将红色伪标签视为背景,导致该类别参与到整个训练过程的机会大幅减少。因此,我们亟需一种更合理的伪标签分配策略来为 Dense Detector 分配更精细的伪标签。
怎么做呢?其实很不难,这里我们可以将经过 NMS 过滤后得到的伪标签分为两类,即可靠伪标签和不确定伪标签。假设我们用 τ1、τ2 表示伪标签得分的高低阈值。那么,得分在 (τ1, τ2) 之间的伪标签将被认为是不确定的。从上表可以看出,忽略这些标签可以显著提升 Dense Detector 的性能。除了解决由 Pseudo Label Filter 引起的次优问题,PLA 也包含利用了不确定伪标签的无监督损失。假设有一对单张标记图像和单张未标记图像,那么我们可以将 SSOD 中 Dense Detector 的损失定义为如下公式:
其中第一部分表示在标记图像上计算的损失函数,其采用标准的交叉熵损失和 CIoU 损失:
而第二部分表示在未标记图像上计算的损失函数,其同样包含三部分:
最后,超参数 用于平衡监督损失和半监督损失,本文设置为 3.0。
总体来说,PLA 将不确定的伪标签分为两类:
- high classification scores;
- high objectness scores;
首先,对于第一类,只计算 ,将交叉熵的目标替换为软标签,说明这些伪标签既不属于背景样本也不属于正样本。其次,对于第二类,PLA 在 objectness score 大于0.99 时计算 ,因为这些伪标签具有良好的回归结果但分类分数不足以确定其标签类别。PLA 旨在使用 将更多不确定伪标签转换为真阳性,因为在 COCO 上的 SSOD 训练期间,由于预测框不准确,超过 70% 的不确定伪标签是误报。因此,PLA 通过软标签学习机制抑制伪标签的不一致性,而不影响可靠伪标签的丢失。
Epoch Adaptor
尽管 PLA 解决了 SSOD 中伪标签不一致的问题,但超参数 τ1 和 τ2 仍然是手动调整的,并受到标记数据分布的影响。此外,原始的训练方案显着影响 SSOD 方法的性能。当前的 SSOD 方法使用两种类型的训练方案:
- 交替训练;
- Burn-In 联合训练;
首先,如《Label Matching Semi-Supervised Object Detection》中展示的那样,交替训练是非常耗时的,但它允许精确计算可靠的伪标签阈值。相比之下,使用基于 Burn-In 的联合训练方法通过直接在训练过程中加入未标记的数据,训练速度更快,但降低了 SSOD 训练的稳定性。由于训练集中标记和未标记数据的数量不同,Soft Teacher 建议人为增加 mini-batch 中标记和未标记数据的比例,例如 1: 4。
在联合训练方案的基础上,作者进一步提出了一种新的策略,称为 Epoch Adaptor(EA),可提高 Burn-In 阶段的训练效率和伪标签一致性。此外,EA 策略还可以在 SSOD 训练阶段动态计算出 PLA 所需的 τ1 和 τ2 参数,从而避免人工调参。在 Burn-In 阶段,EA 利用 Domain Adaptation 让 Dense Detector 同时训练标记和未标记的数据。具体来说,EA 以 1:1 的比例合并了标记和未标记数据,并在每对标记和未标记数据上训练域适应分类器。
在 SSOD 训练阶段,EA 应用了一种策略,即经过一定的 epoch 训练之后从标记数据切换到未标记数据,如下图所示:
为了实现在每个 epoch 动态计算出 PLA 所需的 τ1 和 τ2 阈值,本文实现了一种基于 LabelMatch 改进的分布自适应方法。如果直接采用 LabelMatch 会受由于引入 Moscai 增强导致的 GT 数量激增的影响(大致会增加3倍)。关于这两个阈值的具体实现方法有兴趣的可以看论文,这里不展开讲了。
总的来说,通过使 SSOD 训练可以获得更高的性能指标以及更快的收敛速度而无需手动调整阈值。此外,借助 EA 策略有效地减少了联合训练方案的整体训练时间。
效果
Effect of dynamic threshold
可以看出,引入 EA 策略比手工调参获得的精度还要高,重点是省心省力。
Effect of the Epoch Adaptor
上图表明,在与 Epoch Adaptor 联合训练后,与其他两种 SSOD 训练方法,即完全监督和交替训练相比,网络以更少的迭代次数实现了卓越的性能。
Experimental results on COCO-standard
不难发现,Efficient Teacher 的性能始终优于 Unbiased Teacher 在 Dense Detector 上的表现。此外,当应用标准 YOLOv5l Backbone 时,所提方法在具有 2%、5%、10% 的标记数据上实现了 SOTA。在 1% 的标注数据上,虽然略低于 LabelMatch,但其 FLOPs 整体低不少,而且在 5% 和 10% 的辅助数据上表现优异。
总结
本文主要提出了一种新颖而高效的半监督目标检测框架——Efficient Teacher,这是一种通过建立在 Dense Detector 的高效密集输入处理之上来弥合 SSOD 和基于单阶段 Anchor-based 检测器之间差距的方法。此外,通过对 SSOD 中标签分配的分析,本文设计了一种伪标签分配器,以有效地利用可靠和不确定的伪标签。最后,为了提高整体的训练效率,本文额外引入了一种 Epoch Adaptor 的策略,可以最大限度地提高训练效率和以及对标记和未标记数据的充分利用。实验结果表明,所提方法在 VOC 和 COCO 等主流数据集上取得了最先进的结果。
本文暂时没有评论,来添加一个吧(●'◡'●)