论文阅读笔记:Efficient Teacher: Semi-Supervised Object Detection for YOLOv5

Efficient Teacher: Semi-Supervised Object Detection for YOLOv5

  • 1 背景
    • 1.1 动机
    • 1.2 问题
  • 2 创新点
  • 3 方法
  • 4 模块
    • 4.1 伪标签分配
    • 4.2 Epoch Adapter
  • 5 效果
    • 5.1 与SOTA方法对比
    • 5.2 消融实验

论文:https://arxiv.org/pdf/2302.07577v3.pdf

代码:https://github.com/AlibabaResearch/efficientteacher

1 背景

1.1 动机

关于单阶段anchor-based的SSOD的研究很少。

1.2 问题

问题1:经典的单阶段锚点检测器由于其群锚机制产生更密集的预测,导致监督训练时正负样本不平衡,半监督训练时伪标签质量差。

问题2:目前主流的SSOD方法遵循师生互学习的方式,由于存在严重的伪标签不一致问题,即在整个训练过程中,教师模型生成的伪标签数量和质量波动较大,且不合格的伪标签会误导模型更新,导致单阶段anchor-based检测器难以训练。

问题3:如何训练出精度更高,效率更好的SSOD模型成为制约SSOD应用的关键问题。

2 创新点

  1. 在本文中,作者追求的是考虑推理和训练速度的同时,在一个anchor-based单阶段检测器上设计一个可扩展且有效的SSOD框架。将YOLO系列中使用的技术有效的添加到了经典的RetinaNet中,设计了一种新的具有代表性的anchor-based单阶段检测器baseline,成为Dense Detector。

  2. 根据Dense Detector的设计范式,作者提出了Efficient Teacher框架去克服SSOD中的挑战。

  3. 引入伪标签分配PLA,通过在客观性分支设计上采用细粒度的伪标签分配策略来缓解伪标签不一致性。通过将伪标签区分为可靠区域和不可靠区域,分别采用不同的损失计算方法。

  4. 提出了一个Epoch Adaptor(EA),分别利用域适应和分布适应来优化SSOD的训练过程。

3 方法

在这里插入图片描述

YOLOv5由于其友好的部署支持和快速的训练速度,是工业上广泛使用的单阶段anchor-based检测器。为了研究YOLOv5的半监督实验,需要全面分析YOLOv5检测器相对于其他最先进的检测器(如RetinaNet )所做的改进。表1的结果表明,YOLOv5 w/o在性能和计算量方面都优于RetinaNet。此外,使用Mosaic增强后的稠密图像输入,YOLOv5的AP50:95可以从41.2提高到49.0。YOLOv7在密集输入的基础上,借助信息和梯度的密集流动,进一步将AP50:95提升至51.5。根据上述比较,可以得到一个假设,即增加输入的密度可以有效地增强一级锚点检测器的性能。为了验证这一假设,作者构建了一个名为Dense Detector的新型探测器来定量评估YOLOv5中使用的技术。

Dense Detector使用ResNet-50-FPN主干对RetinaNet进行改造,同时将FPN输出数量从5个改成了3个,消除了检测头之间的权重共享,并将输入分辨率从1333降低到640,用于推理和训练。
在这里插入图片描述

Dense Detector有三个输出分支:分类得分,边界框偏移和目标置信度。与RetinaNet相比,Dense检测器实现了5.36 %的AP50:95提升和30 %的推理速度,如表1所示。具体来说,Dense Detector通过计算预测框和GT框之间的完全交并比(Complete Intersection over Union,CIoU )来获得目标性得分。目标性分数表示预测框的位置质量,并作为额外的信息源来提高检测性能。如图1所示,SSOD中的伪标签是未标记数据的预测框,其目标性分数表示伪标签的位置质量。因此,与仅有分类分支的RetinaNet相比,在SSOD训练过程中,具有额外对象分支的Dense Detector可以指示伪标签的位置质量,如图2所示。
在这里插入图片描述

为了验证Dense Detector在SSOD中的性能,将经典的SSOD方法(Unbiased Teacher)应用到Dense Detector中,该方法包含有标签和无标签数据、教师和学生模型以及一个伪标签过滤器来选择伪标签。此外,有标记和无标记数据分支都采用了公式2中的损失定义。然而,与表2中Faster R - CNN上的无偏教师相比,在Dense Detector上,无偏教师的AP50:95提升幅度从7.64下降到4.3。这促使作者开发了以下在伪标签分配中起关键作用的伪标签分配器。

4 模块

4.1 伪标签分配

在这里插入图片描述

SSOD中的核心问题是如何分配伪标签,因为次优的分配会导致伪标签不一致和相互学习机制的性能恶化。伪标签过滤( Pseudo Label Filter )是一种简单的分配标签的实现,它过滤掉低于设定阈值的伪标签。得分低于阈值的伪标签被标记为背景,而得分高于阈值的伪标签被标记为可靠伪标签。然而,该方法会导致次优的分配,如图3所示:在最上面的情况下,Pseudo Label Filter是一种快速过滤得分低于设定阈值的伪标签的方法。然而,在SSOD训练的整个过程中,伪标签的分数不断增加,这会导致伪标签过滤器将不正确的伪标签当作可靠的伪标签并包含在训练中,导致SSOD训练出现无法收敛的现象。

本文提出的伪标签分配( PLA )对Dense Detector生成的伪标签进行了更精细的赋值。在PLA中,非最大抑制( NMS )后得到的伪标签分为两类:可靠的伪标签和不确定的伪标签。伪标签得分的高低阈值 τ 1 , τ 2 \tau_1,\tau_2 τ1,τ2 用于判断两类伪标签。得分在 τ 1 , τ 2 \tau_1,\tau_2 τ1,τ2之间的伪标签被认为是不确定的,忽略这些标签的损失直接导致Dense Detector性能的提高。除了解决伪标签过滤器带来的次有问题外,PLA还包括了一种无监督损失,有效地利用了不确定的伪标签,将SSOD中稠密检测器的损失定义为:
在这里插入图片描述

其中 L s L_s Ls 表示有标签数据计算的损失, L u L_u Lu 表示为无标注数据的损失, λ \lambda λ 为平衡监督损失和无监督损失的权重,论文中设置为3。 L s L_s Ls 的损失以为:
在这里插入图片描述

其中CE是交叉熵损失, X ( h , w ) X_{(h,w)} X(h,w) 是学生模型的输出, Y ( h , w ) Y_{(h,w)} Y(h,w) 是GT标签分配的结果。

L u L_u Lu 的损失可以表示为:
在这里插入图片描述

其中 Y ^ ( h , w ) c l s , Y ^ ( h , w ) r e g , Y ^ ( h , w ) o b j \hat{Y}_{(h,w)}^{cls},\hat{Y}_{(h,w)}^{reg},\hat{Y}_{(h,w)}^{obj} Y^(h,w)cls,Y^(h,w)reg,Y^(h,w)obj 分别表示PLA在特征图 ( h , w ) (h,w) (h,w) 处采样的分类得分,回归坐标和置信度分数。 o b j ^ ( h , w ) \hat{obj}_{(h,w)} obj^(h,w) 表示在 ( h , w ) (h,w) (h,w) 处的伪标签置信度, p ( h , w ) p_{(h,w)} p(h,w) ( h , w ) (h,w) (h,w) 处的伪标签得分。 1 { ⋅ } 1_{\{·\}} 1{} 为指示函数,如果满足条件 { ⋅ } \{·\} {} 则输出1,反之则输出0。

PLA与其他伪标签选择策略的不同之处在于,作者设计了一个软损失来分别处理不确定伪标签。PLA区分了两类不确定伪标签:分类得分高的伪标签和客观性得分高的伪标签。对于第一类,只计算对象性损失项 L u o b j L^{obj}_u Luobj。将交叉熵 Y ^ ( h , w ) o b j \hat{Y}_{(h,w)}^{obj} Y^(h,w)obj 的目标替换为软标签 o b j ^ ( h , w ) \hat{obj}_{(h,w)} obj^(h,w),说明这些伪标签不是背景样本,也不是正样本。对于第二类,PLA计算了对象性得分大于0.99时的回归损失项 L u r e g L^{reg}_u Lureg。这些伪标签具有良好的回归结果,但分类分数不足以确定其标签类别。

4.2 Epoch Adapter

在这里插入图片描述

在解决SSOD中伪标签不一致问题的同时,PLA在训练过程中仍然面临着实现稳定性和高效性的挑战。为了克服这一挑战,作者引入了Epoch Adaptor方法,该方法同时利用域适应和分布适应技术来实现快速稳定的SSOD训练。本文方法旨在缩小有标签和无标签数据之间的分布差距,同时在每个epoch动态估计伪标签的阈值。

如图4所示,与交替和原始的联合训练方案相比,EA能够使神经网络在Burn - In阶段同时接收有标记和无标记数据,并采用域适应技术与分类器来困扰检测器区分两类数据的能力。这有效地缓解了在原始方法中通常观察到的过拟合效应,该方法在Burn - In阶段仅依赖于标记数据。领域自适应损失函数为:
在这里插入图片描述

式中: p ( h , w ) p_{( h , w)} p(h,w) 为域分类器的输出。有标记数据 D = 0 D = 0 D=0,无标记数据 D = 1 D=1 D=1。作者使用梯度反向层( GRL ) ,而普通的梯度下降用于训练域分类器,并且梯度的符号在通过GRL层时是反向去优化基础框架的。在Burn - In阶段,一幅图像中的监督损失可以重新制定如下:
在这里插入图片描述
其中 λ \lambda λ 是控制域自适应损失的超参,实验中设置为0.1。

此外,目前的方法需要计算PLA的 τ 1 \tau_1 τ1 τ 2 \tau_2 τ2 阈值,以便在SSOD训练过程中对未标记数据生成伪标记。在这些方法中,最有效的方法是利用带标签数据标签分布的先验信息来计算上述阈值。然而,这种方法并不直接适用于像Dense Detector这样的检测器,因为前面已经证明了马赛克数据增强在这些检测器中起着不可或缺的作用。此外,Mosaic数据增强的使用扰乱了标签分配比例。为了解决这个问题,作者基于LabelMatch中的重分配方法实现了一个分布自适应方法。在分布自适应中,第 k k k 个历元的 τ 1 \tau_1 τ1 τ 2 \tau_2 τ2阈值为:
在这里插入图片描述

对于所有实验,可靠比 α α α 设置为60, P c k P^k_c Pck 表示第 k k k 个历元第 c c c 类的伪标签分数列表。同时, N l N_l Nl N u N_u Nu 表示有标记和无标记数据的数量, n k c n^c_k nkc 表示EA在第 k k k 个epoch统计的第 c c c 类真值标注的数量。EA通过在每个epoch动态计算合适的阈值,使联合训练更适应动态数据分布。

EA中域适应和分布适应的融合有效地缓解了神经网络对标记数据的过拟合。此外,EA动态地在每个历元估计合适的伪标注阈值,实现快速高效的SSOD训练。

5 效果

5.1 与SOTA方法对比

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2 消融实验

伪标签分配策略的消融实验。
在这里插入图片描述

Epoch Adaptor的消融实验。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/397976.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 常用内置函数

目录 1、enumerate函数 1.1、for循环中使用 1.2、enumerate指定索引的起始值 1.3、enumerate在线程中的作用 2、Map 函数 2.1、map()函数可以传多个迭代器对象 3、lambda表达式(匿名函数) 示例 4、sort函数和sorted函数 4.1、sort()函数 4.2、…

map和set的使用

关联式容器 在学习关联式容器之前&#xff0c;我们学习过的容器有vector、list、deque…这些容器称为序列式容器&#xff0c;单纯的存储数据存储的数据没有关联性。 即将学习的map 和set属于关联式容器&#xff0c;其里面存储的是<key, value>结构的键值对&#xff0c;…

制造知识普及(九)--企业内部物料编码(IPN)与制造商物料编码(MPN)

在日常的物料管理业务逻辑中&#xff0c;一物一码是物料管理的基本的业务规则&#xff0c;不管物料从产品开发还是仓库管理&#xff0c;甚至成本核算&#xff0c;都要遵循这个原则&#xff0c;才能保证产品数据的准确性&#xff0c;才具备唯一追溯的可行性。大部分企业都是这种…

某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏洞复现 [附POC]

文章目录 某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现0x06 修复建议某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏…

C#数据类型转换

代码&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace Test05 {class Program{static void Main(string[] args){double db 2008;//声明一个double类型变量db&#xff0c;并初始化为2008object obj db;//对db…

JAVA实现判断小程序用户是否关注公众号

本文主要描述了判断小程序用户是否关注公众号的逻辑实现及部分代码 首先阐述一下大致流程&#xff1a; 1、在将小程序和公众号绑定至同一个微信开发平台下&#xff1b; 2、后端拉取公众号已关注用户列表&#xff0c;并获取其中每一个用户的unionID&#xff0c; 建立已关注用户…

OCR调研

OCR调研 一、介绍 OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;是一种将图像中的文字转换为计算机可处理格式的技术。OCR技术经历了从传统OCR到基于深度学习的OCR的转变。深度学习OCR技术通过模拟人脑神经元结构处理文本和图像数据&am…

MATLAB - 强化学习(Reinforcement Learning)

系列文章目录 前言 一、什么是强化学习&#xff1f; 强化学习是一种以目标为导向的计算方法&#xff0c;计算机通过与未知的动态环境交互来学习执行任务。这种学习方法能让计算机在没有人工干预和明确编程的情况下&#xff0c;做出一系列决策&#xff0c;使任务的累积奖励最大化…

cmake 编译教程

参考链接&#xff1a;cmake使用详细教程&#xff08;日常使用这一篇就足够了&#xff09;_cmake教程-CSDN博客 一、只有一个源文件的程序编译 首先在当前目录下创建两个文件 hello.cpp CMakeLists.txt &#xff08;注意CMakeLists大小写&#xff0c;不要写错了&#xff09; …

推荐一个优秀的 .NET MAUI 组件库

目录 前言 组件介绍 组件展示 布局 按钮 复选框 进度条 导航栏 组件地址 最后 前言 .NET MAUI 的发布&#xff0c;项目中可以使用这个新的跨平台 UI 框架来轻松搭建的移动和桌面应用。 为了帮助大家更快地构建美观且功能丰富的应用&#xff0c;本文将推荐一款优秀…

AcCode核心思路

文章目录 在线OJ项目核心思路1. 项目介绍2.预备知识理解多进程编程为啥采用多进程而不使用多线程?标准输入&标准输出&标准错误 3.项目实现题目API实现相关实体类定义新增/修改题目获取题目列表 编译运行编译运行流程 4.统一功能处理 在线OJ项目核心思路 1. 项目介绍 …

有序转化数组(LeetCode)

题目 给你一个已经 排好序 的整数数组 和整数 、 、 。对于数组中的每一个元素 &#xff0c;计算函数值 &#xff0c;请 按升序返回数组 。 解题 在时间复杂度为解决问题 def sortTransformedArray(nums, a, b, c):def f(x):return a * x * x b * x cn len(nums)result…

4个从阿里毕业的P7打工人,当起了包子铺的老板

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247483727&idx1&sndb05d8c1115a4539716eddd9fde4e5c9&chksmc0e47813f793f105017fb8551c9b996dc7782987e19efb166ab665f44ca6d900210e6c4c0281&scene21#wechat_redirect 《网安面试指南》h…

学生公寓电费信息管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;公寓管理员管理&#xff0c;学生管理&#xff0c;楼层信息管理&#xff0c;用电情况管理&#xff0c;缴费清单管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;用电情况…

【数据结构】六、图:4.图的遍历(深度优先算法DFS、广度优先算法BFS)

三、基本操作 文章目录 三、基本操作1.图的遍历1.1 深度优先遍历DFS1.1.1 DFS算法1.1.2 DFS算法的性能分析1.1.3 深度优先的生成树和生成森林 1.2 广度优先遍历BFS1.2.1 BFS算法1.2.2 BFS算法性能分析1.2.3 广度优先的生成树和生成森林 1.3 图的遍历与图的连通性 1.图的遍历 图…

Nginx系列-Nginx Location匹配规则

文章目录 Nginx系列-Nginx Location匹配规则1. 语法基础2. 匹配规则2.1 精确匹配&#xff08;&#xff09;2.2. 最长前缀匹配&#xff08;^~&#xff09;2.3. 正则表达式匹配&#xff08;~和~*&#xff09;2.4. 普通前缀匹配&#xff08;无修饰符&#xff09;2.5. 默认匹配&…

贷齐乐hpp+php特性注入

文章目录 运行过程waf第一层waf拦截第二层waf拦截 数据库查询语句注入思路注入 运行过程 foreach ($_REQUEST as $key > $value) {$_REQUEST[$key] dowith_sql($value);}$request_uri explode("?", $_SERVER[REQUEST_URI]);if (isset($request_uri[1])) {$rewr…

OpenGL3.3_C++_Windows(34)

demo 1 Fresnel-Schlick PBR直接光源 顾名思义&#xff1a;直接光源指有光源直接照射到点p 的辐射强度&#xff0c;由于一个光源只会有一个光线wi影响点p&#xff0c;所以和之前的计算没什么差异对于影响p的光源&#xff0c;并不需要积分计算半球形辐照度&#xff0c;遍历每个…

redis面试(十)锁释放

自动释放 首先锁的释放分为两种&#xff0c;一种是自动释放&#xff0c;加入说加锁的线程宕机了不在了&#xff0c;我们之前说过这个。 那这个线程中的对redis这个锁不断刷新过期时间的看门狗逻辑就没有了&#xff0c;所以这个锁最多等待30s的时间就会自动过期删除&#xff0c…

为什么选择在Facebook投放广告?

2024年了你还没对 Facebook 广告产生兴趣&#xff1f;那你可就亏大了&#xff01; 今天这篇文章&#xff0c;我们会分享它对你扩大业务的好处。要知道&#xff0c;Facebook 广告凭借它庞大的用户群和先进的定位选项&#xff0c;已经是企业主们有效接触目标受众的必备神器。接下…