当前位置: 首页 > 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 然后 这里这个免费下载已经写的这么明显了 那就直接点…...

大华摄像头有问题,海康摄像头也有问题

买了个大华摄像头&#xff0c;除了抗噪方面效果不好&#xff0c;我是很满意的。前一段时间摄像头启动出了点问题&#xff08;忘记拔掉SD卡&#xff09;&#xff0c;于是买了个海康的。 大华摄像头是3寸&#xff0c;海康是2寸。视频效果差多了。看来大有大的道理。更可恨的是&a…...

Linux多线程同步机制(下)

文章目录 前言一、读写锁二、条件变量总结 前言 一、读写锁 多线程同步机制中的读写锁&#xff08;Read-Write Lock&#xff09;是一种特殊的锁机制&#xff0c;用于控制对共享资源的读写访问。读写锁允许多个线程同时读取共享资源&#xff0c;但在写操作时需要独占访问。 读…...

【QT】ComboBox的使用(14)

ComboBox这个控件我常用于多文本的储存、调用&#xff0c;正如他的中文意思为&#xff1a;下拉列表框。 下拉列表框&#xff1a;字面意思就是一个多文本的列表框&#xff0c;今天来看下如何使用ComboBox这个控件。 一.环境配置 1.python 3.7.8 可直接进入官网下载安装&…...

关于写英文论文的一些总结

名词连接名词组成名词&#xff0c;例如任务名&#xff0c;用task name&#xff0c;而不是name of task。其他各种词也是类似的&#xff1b;本文提出了什么什么&#xff0c;用 this study&#xff1b;多用it is become xx&#xff0c;这种更好&#xff0c;而不是we xx&#xff1…...

swagger 2.10.5 整合 spring boot

参考&#xff1a; http://springfox.github.io/springfox/ https://github.com/springfox/springfox http://springfox.github.io/springfox/docs/current/ https://github.com/springfox/springfox-demos https://github.com/springfox/springfox-demos/tree/2.9.2 https://gi…...

Python 练习:剔除数字

练习&#xff1a;剔除数字&#xff1a; 要求如下&#xff1a; 1、编写一段程序代码&#xff0c;程序运行后&#xff0c; 需要用户随意输入一段包含有数字和字母的字符串&#xff1b; 2、程序会自动删除字符串中的数字&#xff0c; 然后输出一串没有数字的字符串&#xff08;纯…...

Linux系统编程:基础知识入门学习笔记汇总

Linux基础shell编程——>Linux 系统编程——>&#xff08;计算机网络&#xff09;——>Linux 网络编程 来源&#xff1a;黑马程序员-Linux系统编程 45小时 评价 这个老师好像讲了很多课程&#xff0c;都还不错我由于赶时间之前学过Linux的Shell编程和Linux的网络编程&…...

基于硬件隔离增强risc-v调试安全1_问题描述

安全之安全(security)博客目录导读 2023 RISC-V中国峰会 安全相关议题汇总 说明&#xff1a;本文参考RISC-V 2023中国峰会如下议题&#xff0c;版权归原作者所有。...

OpenCV简介

OpenCV简介 OpenCV&#xff08;开源计算机视觉库&#xff1a;http://opencv.org&#xff09;是一个开源库&#xff0c;包含数百种计算机视觉算法。OpenCV 具有模块化结构&#xff0c;主要包括下列模块&#xff1a; 核心功能&#xff08;core&#xff09; - 定义基本数据结构的…...

Windows下编译qt-src-5.15.10

首先从镜像站点下载qt源码&#xff1a; https://download.qt.io/static/mirrorlist/ 下载QT的镜像站点 下载源码后解压到 F: 盘 创建编译目录F:\qtbuild 打开VS2019的 X64 Native Tools Command Prompt for VS 2019 进入到源码目录 cd F:\qt-everywher…...