深度学习之半监督学习:一文梳理目标检测中的半监督学习策略

什么是半监督目标检测?

传统机器学习根据训练数据集中的标注情况,有着不同的场景,主要包括:监督学习、弱监督学习、弱半监督学习、半监督学习。由于目标检测任务的特殊性,在介绍半监督目标检测方法之前,我们查看一下目标检测在四个方向上的具体设定:

总而言之,目标检测的setting分为四个部分:

  • 有监督目标检测:拥有大规模带标签的数据,包括完整的实例级别的标注,即包含坐标和类别信息
  • 弱监督目标检测:数据集中的标注仅包含类别信息,不包含坐标信息
  • 弱半监督目标检测:数据集中拥有部分实例级别的标注,大量弱标注数据,模型希望利用大规模的弱标注数据提升模型的检测能力
  • 半监督目标检测 :数据集中拥有部分实例级别的标注,大量未标注数据,模型希望利用大规模的无标注的数据提升模型的检测能力
      半监督目标检测方法的核心在于,如何充分利用大量未标注、多样性的数据提升模型在测试集上的性能,目前的半监督目标检测方法主要有两个方向:
    1.一致性学习(Consistency based Learning)
    2.伪标签(Pseudo-label based Learning)
    前者利用两个深度卷积神经网络学习同一张unlabeled图像不同扰动(比如水平翻转,不同的对比度,亮度等)之间的一致性,充分利用unlabeled data进行推理,经过NMS后减少大量冗余框,利用一个阈值去挑选伪标签,最后利用伪标签训练模型,两种方法没有本质区别,本身都是伪标签技术,一致性学习可以认为是一种soft pseudo label,而后者是一种hard pseudo label.
    近期比较好的半监督目标检测文章

1. Consistency-based Semi-supervised Learning for Object Detection, NeurIPS 19

论文link:https://papers.nips.cc/paper/2019/hash/d0f4dae80c3d0277922f8371d5827292-Abstract.html

code:code

CSD 这篇文章是比较早期的半监督目标检测方法,非常简单,该文章提出了一个 Consistency-based 半监督目标检测算法,可以同时在单阶段和双阶段检测器上工作。

CSD的结构如图二所示,以单节段目标检测器为例,训练的损失函数主要包括两个部分,labeled sample的监督损失和unlabeled samples的Consistency loss.针对unlabeled samples,首先将图片翻转,然后分别送到网络之中,得到对应的Feature map,由于两张翻转的图像的空间位置是可以一一对应的,因此可以在对应的位置计算一致性损失。分类部分,利用JS散度作为consistency loss;定位部分,利用L2 loss作为consistency loss。

双阶段检测器的部分与单阶段检测器类似,差别主要在于RPN(Region Proposal Network)对于不同的输入可能产生不同的proposals,因此在计算consistency loss时无法一一对应,解决此问题也很简单,两张图像使用同一个RPB生成同一组RoI(Region of Interest)来提取特征得到proposals。

作者还提出了一个 Background elimination 方法来消除大量背景部分的损失主导训练过程的问题,因此作者定义了一个 mask 来过滤大量的背景样本:

其中,当该实例的类别不等于背景类时等于1,否则为 0

2.A Simple Semi-Supervised Learning Framework for Object Detection

paper:link

code:code

TAC 提出了一个基于 hard pseudo label 的半监督目标检测算法,如图三所示,该方法包含四个步骤:

  • 首先利用 labeled data 训练一个 Teacher 模型;
  • 生成 pseudo label, 将 unlabeled data 输入进 Teacher 网络中,得到大量的目标框预测结果,利用 NMS 消除大量的冗余框,最后使用阈值来挑选高置信度的 pseudo label;
  • 应用 strong data augmentation。得到 pseudo label 后与 unlabeled image 图像相结合,包括图像级别的颜色抖动、geometric transformation(平移、旋转、剪切)、box-level transformation(小幅度的平移、旋转、剪切);
  • 计算无监督 loss (pseudo label)和监督学习 loss;

    图三 STAC 半监督目标检测算法示意图

3.Instant-Teaching: An End-to-End Semi-Supervised Object Detection Framework

paper:link

Instant-Teaching 主要的 motivation 在于 STAC 仅生成一次的 pseudo label,即离线生成,在训练的过程中不会更新。这样的模式存在一个问题是,当训练的模型精度逐步提升,超过原本的模型,继续使用原来模型生成的 pseudo label 会限制模型精度进一步提升。因此作者提出 Instant-Teaching,以及 Instant-Teaching。

图四 Instant-Teaching 和 Instant-Teaching* 示意图

Instant-Teaching 采用即时生成 pseudo label 的模式,在每一个迭代中,包括两个步骤:

1.生成 pseudo label: 对 unlabeled image 进行 weak augmentation,送入模型中得到 hard label;

2.利用生成的 pseudo label 进行 strong augmentation,除了 在 STAC 中的数据增强,还包括了 Mixup 和 Mosaic,利用增强后的数据训练模型;

Instant-Teaching 主要提出了一个 co-rectify scheme 来解决 pseudo label 的 confirmation bias 的问题(噪声 pseudo label 的错误累计效应)。因此,作者利用两个模型,给予不同的初始化参数,输入不同的数据增强的样本,分别彼此纠正和检测对方生成的 pseudo label,形式如图四右半部分。

总结

本文介绍了一些半监督目标检测算法,即如何利用大量的 unlabeled data 提升模型的检测性能,当前主要的方法包含 consistency based 以及 pseudo label based 两类。consistency based 方法主要学习模型在 unlabeled data 上的一致性,pseudo label 则利用在 unlabeled data 上生成 pseudo label 进而监督模型训练,主要的方向即为如何生成高质量的伪标签以及模型如何对抗在 unlabeled data 上的 noise label。本文介绍了的半监督目标检测方法不多,关于方法的介绍较为笼统,如有谬误,烦请指正,其中细节,还需仔细阅读文章,欢迎讨论。

转自wx:https://mp.weixin.qq.com/s?__biz=MzU0NjgzMDIxMQ==\&mid=2247602689\&idx=3\&sn=608057273347f3109b0a6e65212ed3c4\&chksm=fb54b0edcc2339fb809d96e89c98a6a023d9f4d19185c875ce70f348d2265ddf620d91fba086\&scene=27

相关推荐
迅易科技1 小时前
借助腾讯云质检平台的新范式,做工业制造企业质检的“AI慧眼”
人工智能·视觉检测·制造
古希腊掌管学习的神2 小时前
[机器学习]XGBoost(3)——确定树的结构
人工智能·机器学习
ZHOU_WUYI2 小时前
4.metagpt中的软件公司智能体 (ProjectManager 角色)
人工智能·metagpt
靴子学长3 小时前
基于字节大模型的论文翻译(含免费源码)
人工智能·深度学习·nlp
梧桐树04294 小时前
python常用内建模块:collections
python
AI_NEW_COME4 小时前
知识库管理系统可扩展性深度测评
人工智能
Dream_Snowar4 小时前
速通Python 第三节
开发语言·python
海棠AI实验室4 小时前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
hunteritself4 小时前
AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
人工智能·gpt·chatgpt·github·openai·copilot
南宫生5 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论