半监督目标检测相关方法总结

article/2025/3/16 14:23:28

7c98ce00f199986b5aa4e8b64cde7ae3.png 戳我,查看GAN的系列专辑~!

等你着陆!【GAN生成对抗网络】知识星球!

作者丨kinredon@知乎 编辑丨极市平台

来源丨https://zhuanlan.zhihu.com/p/404160115

近期阅读了一些半监督目标检测(Semi-Supervised Object Detection,SSOD)的文章,特此总结,以供未来查阅。

什么是半监督目标检测?

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

e68382404f22601ea3e52d590273666c.png
图一 目标检测的不同的 setting

总而言之,我们可以讲目标检测的 setting 分为四个部分:

  • 有监督目标检测: 拥有大规模带标签的数据,包括完整的实例级别的标注,即包含坐标和类别信息;

  • 弱监督目标检测: 数据集中的标注仅包含类别信息,不包含坐标信息,如图一 b 所示;

  • 弱半监督目标检测: 数据集中拥有部分实例级别的标注,大量弱标注数据,模型希望利用大规模的弱标注数据提升模型的检测能力;

  • 半监督目标检测: 数据集中拥有部分实例级别的标注,大量未标注数据,模型希望利用大规模的无标注的数据提升模型的检测能力;

半监督目标检测方法的核心在于,如何充分利用大量未标注、多样性的数据提升模型在测试集上的性能,目前的半监督目标检测方法主要有两个方向:

  1. 一致性学习(Consistency based Learning)

  2. 伪标签(Pseudo-label based Learning)

前者利用两个深度卷积神经网络学习同一张 unlabeled 图像不同扰动(比如水平翻转,不同的对比度,亮度等)之间的一致性,充分利用 unlabeled data的信息。后者利用在 labeled data 上学习的预训练模型对 unlabeled data 进行推理,经过 NMS 后减少大量冗余框后,利用一个阈值去挑选伪标签,最后利用伪标签训练模型。个人认为这两种方法没有本质的区别,本身都是伪标签技术,一致性学习可以认为是一种 soft pseudo label,而后者是一种 hard pseudo label。

接下来我讲介绍几篇近期半监督目标检测文章,主要发表在 ICLR, NeurIPS, CVPR等会议。

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

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

d9235d026163872504c800d9162cf63a.png
图二 CSD 半监督目标检测算法结构图

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 时无法一一对应。解决此问题也很简单,两张图像使用同一个 RPN 生成同一组 RoI (Region of Interest) 来提取特征得到 proposals。

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

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

A Simple Semi-Supervised Learning Framework for Object Detection

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

  1. 首先利用 labeled data 训练一个 Teacher 模型;

  2. 生成 pseudo label, 将 unlabeled data 输入进 Teacher 网络中,得到大量的目标框预测结果,利用 NMS 消除大量的冗余框,最后使用阈值来挑选高置信度的 pseudo label;

  3. 应用 strong data augmentation。得到 pseudo label 后与 unlabeled image 图像相结合,包括图像级别的颜色抖动、geometric transformation(平移、旋转、剪切)、box-level transformation(小幅度的平移、旋转、剪切);

  4. 计算无监督 loss (pseudo label)和监督学习 loss;

1181bd8251a40f55e17641c47fff2571.png
图三 STAC 半监督目标检测算法示意图

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

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

d91b437e36875040f4fc369039b48e3b.png
图四 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,形式如图四右半部分。

Data-Uncertainty Guided Multi-Phase Learning for Semi-Supervised Object Detection

这篇工作提出一个多阶段的学习半监督目标检测学习算法,前面的方法基本在伪标签生成后,直接拟合生成的伪标签,这样将会引发 label noise overfitting 问题,即由于深度网络较强的拟合能力,即时错误的标签模型也能够拟合。因此作者利用图像级别 uncertainty 来进行多阶段学习,思想类似于课程学习(curriculum learning),先学习 easy 样本再学习 difficult data。具体来说,作者利用 RPN 出来的 proposal 的平均分数作为 uncertainty 的指标。平均分数越高,uncertainty 越小,视为 easy sample,反之为 difficult sample。

303a86355c8c03ddee546f879d48268f.png
图五 DUGMPL示意图

在区域级别,作者提出 RoI 的 re-weighting 操作,作者从 Soft sampling for robust object detection 得到启示,对于具有噪声的数据(伪标签),在训练时,不同的 RoI 应该给予不同的权重,作者提出了几个的简单但有效的策略来解决这个问题,受限于篇幅,这里不再具体介绍,感兴趣可以去阅读原文的 Section 3.3.2.

Unbiased Teacher for Semi-Supervised Object Detection

这篇文章发表在 ICLR 2021, 主要思想还是说现在的半监督目标检测算法生成的标签具有 bias,这里作者主要 argue 的点在于目标检测中存在天然的类别不平衡问题,包括 RPN 前景和背景的分类,ROIHead 的多类别分类,因此作者提出了一个 Unbiased Teacher 方法,来解决此问题。

19239dab913d1312eb7c90e4854020fd.png
图六 Unbiased Teacher 示意图

从方法上来说,非常的简单,首先是 Burn-IN stage,即在 labeled data 上训练一个预训练模型,然后利用 Mean Teacher 的结构,Teacher 生成 Pseudo label 来同时监督 RPN 和 ROIHead。不同的点在于,作者只利用 pseudo label 更新 RPN 和 ROIHead 的 classification 分支,主要原因在于由 confidence score 生成的 pseudo label 与 bounding box 位置的质量关系不大。除此之外,作者将原本的 cross entropy loss 替换为 Focal loss 来解决 pseudo label bias 问题,即 class imbalance 。

Interactive Self-Training with Mean Teachers for Semi-supervised Object Detection

这篇文章揭示了之前利用 pseudo label 的方法忽略了同一张图片在不同的迭代的检测结果之间的差异性,而且不同的模型对同一张图像的检测结果也有差异。

4c13b1e72105d17a08bd2bf3491a567d.png
图七 不同迭代的模型对同一张图像的预测结果(a)(b),不同 ROIHead 的检测结果

因此作者提出一个基于 Mean Teacher 的 Interactive form of self-training 的半监督目标检测算法:

  1. 解决不同训练迭代检测结果的不稳定问题,作者使用 NMS 将不同迭代的检测结果进行融合。

  2. 同时利用两个检测头部 ROIHead 生成 pseudo label,两个检测头部可以相互提供有用的互补信息。

e90dd285878c46ad6858c1589a9987a4.png
图八 Interactive Self-Training 的算法步骤

IST 算法的主要步骤如图八所示:

  1. 使用 labeled data 训练一个拥有两个 ROIHead 的预训练模型

  2. 利用预训练模型生成两个对应的伪标签

  3. 利用 labeled data 和 unlabeled data 进行监督学习,图八中 Pseudo Labels Memory 用来使用 NMS 融合不同迭代的检测结果。该步骤详情如图九所示,利用 Mean Teacher 的结构,teacher 生成 pseudo label 并与 Memory 中的 pseudo label 进行融合,并更新 Memory。作者使用 Dropblock 模块确保不同的 ROIHead 能够独立收敛,并提供互补的信息,即图九中的 D。

c54a8059b9b89c4350d318d44d1dfd45.png
图九 Illustration of interactive self-training with mean teachers.

总结

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

猜您喜欢:

超110篇!CVPR 2021最全GAN论文汇总梳理!

超100篇!CVPR 2020最全GAN论文梳理汇总!

拆解组新的GAN:解耦表征MixNMatch

StarGAN第2版:多域多样性图像生成

附下载 | 《可解释的机器学习》中文版

附下载 |《TensorFlow 2.0 深度学习算法实战》

附下载 |《计算机视觉中的数学方法》分享

《基于深度学习的表面缺陷检测方法综述》

《零样本图像分类综述: 十年进展》

《基于深度神经网络的少样本学习综述》

66c9d123e2306ac186102e1c39f89beb.png

文章来源:https://blog.csdn.net/lgzlgz3102/article/details/121782352
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://chatgpt.dhexx.cn/article/IBgWp17l.shtml

相关文章

半监督深度学习

个人博客:wyxogo.top 半监督学习 在有标签数据无标签数据混合成的训练数据中使用的机器学习算法。一般假设,无标签数据比有标签数据多,甚至多得多。 要求: 无标签数据一般是有标签数据中的某一个类别的(不要不属于的…

半监督学习深度学习算法

该文章主体摘自知乎糯米稻谷的文章,对一些细节添加了自己的理解 文章链接https 半监督学习 啥是半监督学习(Semi-supervised Learning)1.简单自训练(simple self-training)2.协同训练(co-training&#xff…

深度半监督学习方法总结

深度神经网络已被证明在对大量标记数据进行监督学习的训练中是非常有效的。 但是大多数现实世界的数据并没有被标记,并且进行全部标记也是不太现实的(需要大量的资源、时间和精力)。 为了解决这个问题半监督学习 ( semi-supervised learning)…

深度半监督学习

半监督学习介绍 Zhu X, Goldberg A B. Introduction to semi-supervised learning[J]. Synthesis lectures on artificial intelligence and machine learning, 2009, 3(1): 1-130. 链接半监督 无监督学习:主要目的是从独立同分布采样中得到的n个独立样本中找到in…

半监督SVM

半监督SVM 什么是半监督学习半监督SVM要做什么TSVM 这里是阅读周志华的《机器学习》中关于半监督SVM(S3VM)的笔记。 什么是半监督学习 在数据的搜集中,获得标记数据的成本是高昂的,而获得未标记的数据则是低廉的,为此…

半监督学习代码实战

sklearn官方例子——用半监督学习做数字识别 什么是半监督学习 半监督学习很重要,为什么呢?因为人工标注数据成本太高,现在大家参加比赛的数据都是标注好的了,那么如果老板给你一份没有标注的数据,而且有几百万条&am…

半监督学习综述

Chapter 7 Semi-supervised Learning 翻译不易,未经允许请勿转载! Author: Mohamed Farouk Abdel Hady and Friedhelm Schwenker Translator: Howard Wonanut 摘要 传统的监督学习方法需要使用有标签数据建立模型。然而,在现实世界中给训练…

半监督学习(一)

什么是半监督学习? 传统的机器学习技术分为两类,一类是无监督学习,一类是监督学习。 无监督学习只利用未标记的样本集,而监督学习则只利用标记的样本集进行学习。 但在很多实际问题中,只有少量的带有标记的数据,因为…

半监督学习简介

“我们预计从长远来看,无监督学习将变得更加重要。人类和动物的学习在很大程度上是不受监督的:我们通过观察来发现世界的结构,而不是通过被告知每个物体的名称。”——LeCun, Bengio, Hinton, Nature (2015)。 Semi-Supervised Learning 半监…

半监督学习

1. 介绍 1.1 什么是半监督学习 所给的数据有的是有标签的,而有的是没有标签的。常见的两种半监督的学习方式是直推学习(Transductive learning)和归纳学习(Inductive learning)。   直推学习(Transduct…

半监督学习(SEMI-Supervised Learning)

半监督学习的工作原理 想象一下,收集了大量未标记的数据,您想在这些数据上训练模型。手动标记所有这些信息可能会花费你一大笔钱,除了需要几个月的时间来完成注释。这时候半监督机器学习方法就派上用场了。工作原理很简单。无需将标签添加到…

半监督学习概述

1、半监督学习 今天在阅读一篇论文时了解了这个之前一直不太清晰的概念。下面是查阅了相关资料后对半监督学习的理解。如有错误,望更正。 半监督学习是一种介于监督学习和无监督学习之间的学习凡是,我们都知道,在监督学习中,样本…

JS中使数组倒序排列

使用reverse方法 注意:reverse方法会使得原数组发生变化

JS实现数组和数组对象倒序(reverse方法)

const arr1 [{a:1},{b:2},{c:3},{d:4}]; const arr2 [1,2,3,4,5,6,7]; console.log(倒序前,arr1,arr2); arr1.reverse(); arr2.reverse(); console.log(倒序后,arr1,arr2);

js实现数组翻转(倒序输出)

//倒序排列var arr[2,30,1,9,5,7];var brrarr.reverse();for(var i0;i<brr.length;i){document.write(brr[i]);}console.log(brr);//控制台也能看到数组的输出

js实现数组元素的倒序

模拟循环录入采集名单存储到数组中并编码实现数组元素的倒序查看名单 :例如数组原名单: A B C D E ,倒序后展示为: E D C B A 运行后的结果如下图所示&#xff1a;

JS数组对象的正序、倒序和根据中文首字母排序

//数组对象方法排序:升序 sortByKey(array,key){return array.sort(function(a,b){var xa[key];var yb[key];return ((x<y)?-1:((x>y)?1:0));}); },//数组对象方法排序:降序 sortDownByKey(array,key){return array.sort(function(a,b){var xa[key];var yb[key];return…

js中数组反向、排序reverse、sort

全栈工程师开发手册 &#xff08;作者&#xff1a;栾鹏&#xff09; js系列教程1-数组操作全解 js中数组反向、排序 数组反向使用reverse函数&#xff0c;数组排序使用sort函数&#xff0c;排序函数可以传入比较函数&#xff0c;也可以修改数组圆形&#xff0c;自定义添加排序…

数组倒序排序

Array.reverse()&#xff0c;数组元素的排序排列 今天做项目的时候遇到了一个需求&#xff0c;把下单字段的时间倒序排列&#xff0c;也就是最新的时间显示在前面&#xff0c;像这样 因为这个字段是一个数组元素&#xff0c;所以就想到了让数组元素倒序排列&#xff0c;然后就…