当前位置: 首页 > news >正文

【深度学习】半监督学习 Efficient Teacher: Semi-Supervised Object Detection for YOLOv5

https://arxiv.org/abs/2302.07577
https://github.com/AlibabaResearch/efficientteacher

文章目录

  • Abstract
  • Introduction
  • Related Work
  • Efficient Teacher
    • Dense Detector

Abstract

半监督目标检测(SSOD)在改善R-CNN系列和无锚点检测器的性能方面取得了成功。然而,一阶段基于锚点的检测器缺乏生成高质量或灵活伪标签的结构,导致SSOD存在严重的一致性问题。本文提出了Efficient Teacher框架,用于可扩展和有效的一阶段基于锚点的SSOD训练,包括Dense Detector(密集检测器)、Pseudo Label Assigner(伪标签分配器)和Epoch Adaptor(时代适配器)。Dense Detector是一种基准模型,通过受到YOLOv5启发的密集采样技术扩展了RetinaNet。Efficient Teacher框架引入了一种名为Pseudo Label Assigner的新颖伪标签分配机制,它更精细地利用了Dense Detector生成的伪标签。Epoch Adaptor是一种方法,为Dense Detector实现了稳定且高效的端到端SSOD训练计划。Pseudo Label Assigner可以防止在学生-教师相互学习机制中由大量低质量伪标签引起的偏差,并且Epoch Adaptor利用领域和分布适应使Dense Detector能够学习全局分布一致的特征,使训练不依赖于标记数据的比例。我们的实验证明,Efficient Teacher框架在VOC、COCO-standard和COCO-additional数据集上取得了比先前方法更好的结果,并且使用的FLOPs更少。据我们所知,这是首次将SSOD应用于YOLOv5。

Introduction

目标检测[3, 19, 24, 31]在近年来取得了显著进展,采用传统的监督训练方法,并依赖于昂贵的手动注释工作。为了缓解这个问题,许多半监督技术[1, 26]被提出,通过自动生成伪标签来利用大量未标记数据,而无需手动注释。尽管SSOD[4, 5, 21, 35]取得了很大进展,但仍然存在三个关键问题具有挑战性:首先,关于一阶段基于锚点的SSOD的研究较少。尽管无锚点检测器[12,16, 31]最近在目标检测领域受到更多关注,但一阶段基于锚点的检测器[2,14,16,23,33]由于具有高召回率、高数值稳定性和快速训练速度的优势,在对召回率要求极高的场景中被广泛使用。然而,大多数SSOD方法是基于两阶段的基于锚点的检测器(如Faster R-CNN[24])或基于一阶段的基于无锚点的检测器(如FCOS[31])实现的,由于多阶段的粗到精预测机制或无锚点设计的检测头部,这些方法输出相对稀疏的边界框预测。相反,经典的一阶段基于锚点的检测器由于其多锚点机制生成了更密集的预测,这导致在监督训练[36]和半监督训练过程中正负样本不平衡和伪标签质量较差。

其次,当前主流的SSOD方法按照学生-教师互学习的方式进行训练[21, 35],但对于一阶段基于锚点的检测器来说,训练十分困难,因为存在严重的伪标签不一致问题,即在训练过程中,教师模型生成的伪标签数量和质量波动较大,不合格的伪标签可能会误导模型更新。为了缓解这个问题,两阶段方法[4] [21]对伪标签进行了多次精炼,而无锚点方法[39]采用特征图作为软伪标签,以避免非极大值抑制引起的偏倚。由于上述的多锚点机制,一阶段基于锚点的检测器中的伪标签不一致性问题更为严重。研究[37]报告了RetinaNet的SSOD实验结果不如Faster R-CNN和FCOS的结果。

第三,如何训练具有更高准确性和更好效率的SSOD模型成为限制SSOD在广泛场景应用的关键问题。之前的SSOD方法[4, 17, 21, 35, 40]通常需要很大的计算量、时间和记忆消耗,阻碍了其在实际应用中的推广。为了解决以上问题,我们提出了Efficient Teacher框架。
主要追求更好的准确性,但通常会牺牲训练效率。此外,大多数之前的研究只关注特定的检测器结构,然而真实世界应用的多样性要求更快速、计算资源更低且准确性更高的迭代式检测器设计。

在本文中,我们追求设计一个可扩展且有效的一阶段基于锚点的SSOD框架,同时考虑推理和训练效率。我们将YOLO系列中使用的有效技术添加到经典的RetinaNet中,设计了一个新的代表性的一阶段基于锚点的检测器基线,称为Dense Detector。我们尝试将成熟的SSOD方案(即无偏教师[21])应用到Dense Detector上,但与监督方法相比,仅获得1.65 AP50:95的改进(如表5所示),这证实了上述的第二个问题。根据Dense Detector的设计范例,我们提出了Efficient Teacher框架来克服SSOD中的这些挑战。我们引入伪标签分配器(PLA),通过在目标性分支设计中利用细粒度的伪标签分配策略,减轻了伪标签不一致性。通过将伪标签区分为可靠区域和不确定区域,分别使用不同的损失计算方法。此外,我们提出了时代适配器(EA),分别利用领域适应和分布适应来优化Burn-In阶段和SSOD训练阶段的训练过程。

具体而言,在Burn-In阶段,EA利用领域适应技术对学生模型的输出特征图进行对抗学习。在SSOD训练阶段,EA通过在线统计标记数据中每个类别标签的比例,动态估计伪标签的阈值,以优化学生模型所见的伪标签的质量和分布。本文的主要贡献如下:

• 我们设计Dense Detector作为基准模型,比较YOLOv5和RetinaNet之间的差异,通过利用密集采样,性能提升了5.36 AP50:95。

• 我们提出了一种有效的SSOD训练框架,称为Efficient Teacher,其中包括一种新颖的伪标签分配机制(Pseudo Label Assigner),减少了伪标签的不一致性,并且引入了Epoch Adaptor,实现快速高效的端到端SSOD训练计划。

• 我们的实验结果表明,在YOLOv5上使用Efficient Teacher能够在VOC、COCO-standard和COCO-additional数据集上实现最先进的结果,同时消耗的计算资源明显少于以前的方法。

Related Work

半监督目标检测。继承于半监督图像分类方法的半监督目标检测[1, 25, 26, 30, 34]分为基于一致性的方案[13, 28]和基于伪标签的方案[21, 27, 35, 40]。后者已成为当前主流方法。STAC[27]利用弱和强数据增强分别处理未标记的数据。Unbiased Teacher[21]采用学生-教师相互学习的方法生成更准确的伪标签。为平衡伪标签的影响,Soft Teacher[35]使用伪标签的得分作为损失计算的权重。DSL[5]是首次尝试在无锚定检测器(FCOS)[31]上进行半监督训练。为解决不一致性问题,LabelMatch[4]利用标签分布动态确定不同类别伪标签的过滤阈值。上述方法在两阶段和无锚定检测器上表现出色,但在单阶段锚定检测器上效果不佳。我们提出了高效教师来弥合半监督训练和单阶段锚定检测器之间的差距。

标签分配。标签分配是决定目标检测器性能的关键组成部分。许多研究已经提出改进标签分配机制的方法,如ATSS[36],PAA[15],AutoAssign[41]和OTA[11]。一些研究[4][22]注意到,在监督目标检测中使用的默认标签分配机制不能直接应用于半监督目标检测,从而导致性能下降。在本文中,我们提出了一种新颖的伪标签分配方法,可以适应单阶段锚定检测器的半监督训练。

目标检测中的域自适应。域自适应目标检测的任务[6, 8, 18, 32]旨在解决域偏移问题[7]。工作[10]通过训练带有梯度反转层(GRL)的判别器来利用对抗学习生成域不变特征。工作[8]引入了在Mean Teacher中使用的半监督技术来缓解域偏差,并揭示了域偏移与半监督任务的不一致性之间的内在关系。这启发了高效教师在域自适应中引入对抗学习,以缓解半监督目标检测训练中伪标签的不一致性。

Efficient Teacher

Efficient Teacher是一种新颖高效的半监督目标检测框架,显著提升了单阶段锚定检测器的性能。该框架基于学生-教师相互学习方法,如图1所示,受到之前工作[4, 5, 21, 35]的启发。我们提出的Pseudo Label Assigner方法根据伪标签的得分将其分为可靠和不确定两类,可靠的伪标签用于默认的监督训练,不确定的伪标签用于通过软损失指导学生模型的训练。Epoch Adaptor方法通过在已标记和未标记数据之间进行域自适应,并在每个时期计算伪标签的阈值,加快了收敛速度。在整个训练过程中,教师模型采用指数移动平均(EMA)技术进行更新。

Dense Detector

YOLOv5 [14]是一个广泛应用的单阶段锚定检测器,由于其友好的部署支持和快速的训练速度在工业界得到广泛使用。为了对YOLOv5进行半监督实验,需要对YOLOv5检测器与其他先进检测器(如RetinaNet)的改进进行全面分析。表1中的结果显示,相比于RetinaNet,YOLOv5 w/o 在性能和计算方面取得了更好的表现。此外,通过Mosaic增强后的密集图像输入,YOLOv5的AP50:95可以从41.2提升至49.0。基于密集输入,YOLOv7在信息流密集和梯度密集的基础上进一步将AP50:95提高至51.5。根据以上比较,我们推测增加输入密度可以有效提升单阶段锚定检测器的性能。为验证这个假设,我们构建了一个名为Dense Detector的新型检测器,以定量评估YOLOv5所采用的技术。

Dense Detector是基于RetinaNet修改而来,使用ResNet-50-FPN骨干网络,同时将FPN输出层数从5改为3,消除了检测头之间的权重共享,并将训练和推断的输入分辨率从1333降低到640。此外,Dense Detector具有三个输出分支:分类得分、边界框偏移和目标性得分。

与RetinaNet相比,Dense Detector在表1中的报道中提高了5.36%的AP50:95,并且推断速度提高了30%。具体地,Dense Detector通过计算预测框和GT框之间的Complete Intersection over Union(CIoU) [38]来获得目标性得分。目标性得分表示预测框的位置质量,并作为改进检测性能的附加信息来源。如图1所示,在SSOD中,伪标签是未标记数据的预测框,其目标性得分表示了伪标签的位置质量。因此,与仅具有分类分支的RetinaNet相比,Dense Detector具有额外的目标性分支,可以在SSOD的训练过程中指示伪标签的位置质量,如图2所示。

为验证Dense Detector在SSOD中的性能,我们将经典的SSOD方法(Unbiased Teacher [21])应用于Dense Detector,其中包括标记和未标记数据、教师模型和学生模型,以及一个伪标签过滤器来选择伪标签。此外,标记和未标记数据分支都采用了方程式2中定义的损失。

然而,与表2中Faster R-CNN上的Unbiased Teacher相比,Unbiased Teacher在Dense Detector上的AP50:95改进从7.64降至4.3。这激发了我们开发下面的伪标签分配器,该分配器在伪标签分配中起着关键作用。

相关文章:

【深度学习】半监督学习 Efficient Teacher: Semi-Supervised Object Detection for YOLOv5

https://arxiv.org/abs/2302.07577 https://github.com/AlibabaResearch/efficientteacher 文章目录 AbstractIntroductionRelated WorkEfficient TeacherDense Detector Abstract 半监督目标检测(SSOD)在改善R-CNN系列和无锚点检测器的性能方面取得了成…...

vue3鼠标拖拽滑动效果

第一步 在utils下面新建一个directives.js文件,然后引入如下代码 const dragscroll (el) > {el.onmousedown ev > {const disX ev.clientX;const disY ev.clientY; // 需要上下移动可以加const originalScrollLeft el.scrollLeft;const originalScroll…...

08 通过从 库1 复制 *.ibd 到 库2 导致 mysql 启动报错

前言 呵呵 最近同事有这样的一个需求 需要将 库1 的一张表 复制到 库2 然后 我想到了 之前一直使用的通过复制这个库的 data 文件来进行数据迁移的思路, 是需要复制这个 库对应的 data 目录下的数据文件, 以及 ibdata1 文件 然后 我又在想 这里的场景能否也使用这里的额方式…...

一生一芯9——ubuntu22.04安装valgrind

这里安装的valgrind版本是3.19.0 下载安装包 在选定的目录下打开终端,输入以下指令 wget https://sourceware.org/pub/valgrind/valgrind-3.19.0.tar.bz2直至下载完成 解压安装包 输入下面指令解压安装包 tar -xvf valgrind-3.19.0.tar.bz2.tar.bz2注&#xf…...

STM32中BOOT的作用 (芯片死锁解决方法)

BOOT stm32中具有BOOT1和BOOT0 作用 BOOT是stm32单片机的启动模式, 通过不同组合模式,共有三种启动方式。 一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置B…...

基于YOLOv8模型和DarkFace数据集的黑夜人脸检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型和DarkFace数据集的黑夜人脸检测系统可用于日常生活中检测与定位黑夜下的人脸,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目…...

C++中<iostream> 的cin >> str 和<string>的getline(cin, str) 用来读取用户输入的两种不同方式的不同点

C中<iostream> 的cin >> str 和<string>的getline(cin, str) 用来读取用户输入的两种不同方式的不同点 &#xff1c;string&#xff1e;的getline()函数语法如下【https://cplusplus.com/reference/string/string/getline/】&#xff1a; istream& getl…...

微信报修系统有什么优势?怎么提升企业维修工作效率与管理水平?

随着智能化时代的到来&#xff0c;企业、事业单位的现代化设备数量和种类不断增加&#xff0c;原本繁琐的报修、填写记录、检修管理等工作得以简化。从发起报修到维修&#xff0c;以及维修之后给予评价的整个过程&#xff0c;通过手机微信报修系统均能看到&#xff0c;既省时又…...

11.2.1-通货膨胀CPI

文章目录 1. 什么是CPI2. 在哪里获取CPI数据3. CPI的同比、环比到底是什么意思&#xff1f;4. 计算购买力侵蚀5. 复利计算 微不足道的小事也会引发惊人的结果&#xff0c; 每念及此&#xff0c; 我就认为世上无小事。——布鲁斯巴登&#xff08;Bruce Barton&#xff09; 核心内…...

服务器基础

0x01基础 介绍 可以理解为企业级的电脑&#xff0c;比个人使用的电脑具备更强的配置、性能、可靠性及稳定性。设计工艺和器件全部采用企业级设计&#xff0c;保障7*24小时稳定运行。 演进历史 处理性能 外观 发展方向 分类 按外形分类 按高度分类 按应用分类 按综合能力…...

mybatis中#{ }和${ }的区别

先说结论&#xff1a;二者肯定是有区别的 区别总结 ${ } 直接的 字符串 替换&#xff0c;在mybatis的动态 SQL 解析阶段将会进行变量替换。 #{ } 通过预编译&#xff0c;用占位符的方式?传值可以把一些特殊的字符进行转义&#xff0c;这样可以防止一些sql注入。 举例说明区…...

【真人语音】讯飞星火个人声音训练及导出下载工具V0.2.exe

【项目背景】 小编一直在尝试着短视频技术&#xff0c;在读文案的时候经常会读错&#xff1b;所以&#xff0c;只能用微软或者剪映的文本转语音软件。 很早之前在Github上也看到过真人人声训练的开源代码&#xff0c;尝试过一番之后&#xff0c;也是以失败告终&#xff1b;就…...

正中优配:创业板指大涨3.47%!减速器等概念板块掀涨停潮!

周二&#xff08;8月29日)&#xff0c;三大股指团体涨超1%。截至上午收盘&#xff0c;上证指数涨1.39%&#xff0c;报3141.82点&#xff1b;深证成指和创业板指别离涨2.41%和3.47%&#xff1b;沪深两市算计成交额6264.51亿元&#xff0c;总体来看&#xff0c;两市个股涨多跌少&…...

多功能租车平台微信小程序源码 汽车租赁平台源码 摩托车租车平台源码 汽车租赁小程序源码

多功能租车平台微信小程序源码是一款用于汽车租赁的平台程序源码。它提供了丰富的功能&#xff0c;可以用于租赁各种类型的车辆&#xff0c;包括汽车和摩托车。 这个小程序源码可以帮助用户方便地租赁车辆。用户可以通过小程序浏览车辆列表&#xff0c;查看车辆的详细信息&…...

spring事件和线程池区别

Spring事件&#xff08;Spring Event&#xff09;和线程池&#xff08;Thread Pool&#xff09;是两个不同的概念。 Spring事件是Spring框架中的一种机制&#xff0c;用于在应用程序中实现发布-订阅模式。通过定义事件和监听器&#xff0c;可以在特定事件发生时&#xff0c;通…...

深圳寄墨西哥专线国际物流详解

随着全球贸易的不断发展&#xff0c;国际物流服务的需求也越来越大。深圳这座中国的特区城市&#xff0c;不仅是全球电子产品供应链的重要节点&#xff0c;也是国际物流服务的中心之一。对于那些需要将物品从深圳邮寄到墨西哥的人来说&#xff0c;深圳邮寄到墨西哥专线的国际物…...

PHP教学资源管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP 教学资源管理系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 源码 https://download.csdn.net/download/qq_41221322/88260480 论文 https://downl…...

机器学习---决策树算法(CLS、ID3、CART)

1. 决策树 决策树&#xff08;Decision Tree&#xff09;又称为判定树&#xff0c;是运用于分类的一种树结构。其中的每个内部结点 &#xff08;internal node&#xff09;代表对某个属性的一次测试&#xff0c;每条边代表一个测试结果&#xff0c;叶结点&#xff08;leaf&am…...

【算法与数据结构】404、LeetCode左叶子之和

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;思路比较简单&#xff0c;遍历所有节点然后判断该节点是否为左叶子节点&#xff0c;如果是&#xff0c…...

Apifox下载安装步骤

我们先访问网址 https://apifox.com/?utm_sourcebaidu&utm_mediumsem&utm_campaign251430236&utm_content7810722111&utm_termapifox%E6%9F%A5%E7%9C%8B%E7%89%88%E6%9C%AC&bd_vid8323327349775096324 然后 这里这个免费下载已经写的这么明显了 那就直接点…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...