厦大纪荣嵘团队新作|OneTeacher: 解锁 YOLOv5 的正确打开方式

2023-11-01

Paper: https://arxiv.org/pdf/2302.11299.pdf

Code: https://github.com/luogen1996/OneTeacher

导读

大家从中也可以看到一个趋势,便是现在监督学习领域已经是非常饱和了,如果说都到 2320 年了,你还在想着如何一昧的涨点和刷榜,那可真是要好好的反思下自己了。以今天介绍的目标检测任务为例,常规的方法其实已经很难大规模提升性能了,通用的做法来来去去无非就是这些:

  • 整一些有的没的数据增强;
  • 考虑一下样本分赃的策略;
  • 换一个给力点的骨干大力出奇迹;
  • 加多几个像注意力这种闷骚点的结构;
  • 接一些解耦装置拆拆补补;
  • 改进一下损失函数加速收敛;
  • 还是搞点类似于 Rep 或者 提前多少个迭代关闭 Mosaic 的 tricks;
  • 再不济我们直接加大输入分辨率硬 train 一发行不行?

这种吃力不讨好的事情还是得留给大公司或大型科研机构去做吧,毕竟不是每个人都有那么多时间、精力和资源去做实验。此外,大家如果能从标签和资源高效的角度出发,考虑如何设计和创新已有的成熟框架,这对学术界(换个新颖点的故事包装下?)和工业界来说何尝不是一个双赢的局面。

要知道,在大多数实际应用场景中,由于涉及到任务本身数据资源的稀缺性,又或者出于隐私保护等方面的制约因素,很多情况下无法获取到大量数据的。再者说,诸如医疗影像这类数据,哪怕真能给你搞到大量样本,费时费力不说,你去哪找那么多砖家去帮你打标对吧?所以说如何在有限的资源条件下利用好已有的成熟框架去解决实际的问题这才是大多数人值得投入的方向。

动机

本文同样是围绕半监督目标检测(Semi-Supervised Object DetectionSSOD)进行展开。作者首先表明了现有的 SSOD 方法大都是基于 Faster R-CNN 等两阶段算法所设计的,这类方法通常都不够高效。而一种直白的首先替代方案必定是改换单阶段的目标检测方法,这类方法中最具代表性的网络必定是 YOLO,速度与精度的完美权衡者。

但单阶段算法应用到 SSOD 通常会引发两个关键问题,即

  • 低质量伪标签的局限性
  • 涉及多任务优化的冲突

针对以上两点,本文提出了一种名为 OneTeacher 的新型师生学习方法,它具备两种创新设计,即

  • 多视图伪标签优化 (Multi-view Pseudo-label RefinementMPR)
  • 解耦半监督优化 (Decoupled Semi-supervised OptimizationDSO)

具体地,MPR 通过增强视图细化和全局视图过滤提高了伪标签的质量,而 DSO 则通过结构调整和特定于任务的伪标签来处理联合优化冲突。此外,作者们还仔细修改了 YOLOv5 的实现,以最大限度地发挥 SSOD 的优势。最后,通过对 COCO 和 Pascal VOC 进行的大量实验,充分验证了所提方法不仅可以实现优于比较方法的性能(相对于 Unbiased Teacher 提高 15.0% 的 AP),而且可以很好地处理单阶段 SSOD 中的关键问题。下面让我们就这两个方法具体展开讲讲。

方法

Framework

上图为 OneTeacher 的整体框架图。可以看到,它是由两个具有相同配置的检测网络组成,即教师网络学生网络。其中,教师网络负责生成伪标签,而学生网络则根据伪标签与真实标签一起进行训练。为此,我们可以将学生网络的优化定义为如下形式:

其中  用于调节无监督学习占整体任务的贡献。在训练期间, 教师网络的参数  通过指数移动平均线( EMA) 从学生网络的  进行更新, 可以简单的表示为:

这里,  和  分别表示学习率和 EMA 系数。

注意,EMA 的使用是为了让教师网络在训练过程中生成稳定的伪标签,从而减轻伪标签偏差的影响。在实践中,教师网络可以看作是处于不同训练状态的学生网络的集合,也可以作为训练后的目标模型。

SSL for One-stage Object Detection

众所周知,单阶段目标检测相比于两阶段目标检测方法的一个特点便是能够进行端到端优化,一步到位,一次性回归出对应的边框和类别信息。以 YOLOv5 为例,我们先来看下它的损失函数定义:

大体上就包含三部分,即

  • 分类损失  :计算针框与对应的标定分类是否正确
  • 定位损失  :预测框与标定框之间的误差
  • 置信度损失  : 计算网络的置信度

这块就不具体展开讲了,相信屏幕前的各位小伙伴都比我专业。此处我想表达的便是其实这里便涉及到一个多任务的联合优化问题。另一方面,对于无监督损失来说,一个直接的解决方案是选择高于固定阈值的预测边界框作为伪标签,可以表述为:

这里表示的是伪标签。好了,此处存在的一个潜在的问题便是单阶段检测中回归和分类之间的优化冲突。这个问题在半监督学习中变得愈发严重。主要原因便是与真实标签相比,伪标签的质量要低得多。同时,分类和回归对伪标签有不同的要求,现有方法大都是采用相同的阈值来筛选伪标签。

这一点我们在阿里的那篇 Efficient Teacher 中也提到过,作者采用的解决方案是通过设计一种伪标签选择策略即 PLA 方法,它可以依据 score 将伪标签自动地划分为可靠伪标签和不确定伪标签。

Decoupled semi-supervised optimization

为了缓解多任务优化冲突,本文为 OneTeacher 提出了一种新颖的解耦半监督优化方案,该方案通过简单的分支结构和任务特定的伪标记策略来解耦联合优化问题。以下是示意图:

如上图所示,对于每幅图像,我们将预测分支分解为两个独立的分支,然后得到用于分类和回归任务的预测张量。之后,我们便可以针对无监督损失执行任务特定的伪标记。具体来说,给定教师模型对未标记图像的预测,我们使用置信概率与最大分类 score 的乘积作为指标。基于这个指标,我们进一步设置了两个不同的阈值来选择用于回归和分类的伪标签。

在这里,作者按照 Unbiased Teacher 中的设置来丢弃边界框回归的无监督优化。这种任务特定的伪标签策略可以灵活调整不同任务的噪声程度,从而提高师生学习的效率。最后,在部署期间,我们还向模型添加了一个多标签分类任务,以更好的细化伪标签。

Multi-view Pseudo-label Refinement

对于像基于 Fater-RCNN 这类的两阶段 SSOD 方法来说,教师模型的预测会依次经过 RPN 和 ROI 的筛选,得到最终的伪标签集。这种 multi-stage 的选择在一定程度上可以保证伪标签的质量,但由于预测范式不同,这并不适用于单阶段模型。简单点理解就是,我们不能直接把它套上去。另一方面,单阶段模型的折衷方案是直接采用它们的置信度分数来确定伪标签,但这并不足以评估伪标签的质量。

为了解决这个问题,本文提出了一种新颖的多视图伪标签细化方案,该方案由两个主要过程组成,即

  • 增强视图细化
  • 全局视图过滤

MPR 的处理流程如下所示:

具体来说,给定一个未标记的图像,我们首先应用增强视图细化来调整其伪标签信息。如图所示,教师网络将预测伪标签的边界框及其翻转的增强视图。之后,通过 IoU 值对两个不同的边界框进行比较,并从两个视图中选择匹配的边界框。下面给出相应的示意图:

此外,为进一步从全局视图过滤中增强 MPR,本文还引入了一个额外的多标签分类,即利用教师网络输出图像级别的多类概率分布。如果特定类别的全局概率低于设定阈值,我们将过滤此类的伪边界框。此处假设的是局部伪边界框的类别识别应该与全局一致,否则这些伪边界框往往质量较差。

总的来说,所提出的 MPR 可以过滤大量低质量的边界框,也可以大大提高伪标签的质量。MPR 之后,我们应用特定于任务的阈值来选择最终的伪标签集进行后续的分类和回归任务。

Implementation on YOLOv5

为了验证所提出的 OneTeacher 方法,作者进一步将其应用于 YOLOv5。前面我们提到,YOLOV5 和 现有的 SSOD 框架中使用的训练方法是冲突的,不像 Faster-RCNN 这样的两阶段检测网络的默认配置相对实现起来比较简单。下面我们简单分析下为什么会出现这种现象。

首先,YOLOv5 在训练时默认都会开启 Mosaic 和 Mixup 等增强,大家都知道这些均属于 strong 级别的增强,如果去掉的掉点会很严重,特别是针对从头训练一个预训练权重来说。既然如此,一个直接的想法就是保持原有的数据增强策略不变,并为学生网络也配置同等的数据扩充。那么问题来了,当我们把具备强扰动增强后的图像硬塞给教师模型时,不可避免地会产生较低质量的标签,换句话说便是不利于一致性学习。

因此,为了解决这个问题,作者将数据增强分为两组,即与边框相关和与边框无关的增强,如下表所示。

其中,box-relevant 的增强例如 Flip-lr\Mosaic\Scale Jitter 均可以有效增强边界框信息,同时对图像表示的影响较小。相反,box-inrelevant 的方法则不会影响到 GT,但会强烈扰乱图像内容,例如颜色变换和高斯模糊。

综合上述考虑,我们可以将保留框相关的方法作为教师的弱数据增强,同时使用框相关和框无关方法作为学生的强数据增强。这种策略可以最大限度地减少对教师网络的扰动,同时保留 YOLOv5 的原始设置。

与此同时,作者还为 YOLOv5 调整了一些师生学习中常见的超参数。比如,将伪标记的阈值降低到 0.4,这在两阶段 SSOD 方法中通常设置为高分值,例如达到 0.7。这种变化归因于单阶段检测中的噪声伪标签问题,其中模型通常无法在初始阶段提供高置信度的伪标签。

上图显示了对应的伪标签分布,结果表明 0.4 的阈值可以在伪标签的质量和数量之间实现良好的权衡(看红色部分)。同时,其他超参数如 Focal Loss 的权重 也将根据一阶段 SSOD 的训练状态设置。

实验

可以看到,对于 COCO 数据集来说,在仅用 1% 标注数据的前提下,有监督学习直接降低到 8.4% mAP,直白点就是基本学不到有用的知识。反观半监督学习的范式,本文方法比经典方法 UbTeacher 高出了几个点。另一方面,从 VOC 数据上的表现也不难看出,哪怕是应用全量数据,这一结论同样成立。

此表展示了不同容量下的模型表现。可以看出,增大网络规模对于本文所提方法同样适用,性能也会随之增长,尤其是规模越大,增益越显著。

表6展示了关于本文所提出的两个方法的相关消融实验,可以看到,MPR 和 DSO 并不是互斥的,可以有机的结合到现有的框架,帮助网络提升性能。

表7主要对控制分类和回归分支的两个超参数做了相应的消融。通过实验结果我们发现让分类分支占比较大整体的性能会更好。

表8为大家展示了 YOLOv5 的两种不同的数据增强设置。可以发现,与 UbTeacher 等双阶段 SSOD 方法中使用的默认增强方案相比,本文针对 YOLOv5 的新策略大大提高了模型性能,竟然提升了将近 13.5 mAP!

上图可视化了 OneTeacher 使用和不使用 MPR 生成的伪标签。从这些示例中,我们首先观察到 MPR 可以有效地过滤不正确的检测,例如 Exp.(b) 中的“餐桌”。同时,类别预测错误的伪边框也可以通过 MPR 进行细化,例如 Exp.(a) 中“时钟”的错误预测。总的来说,这些结果均很好地证实了 MPR 对低质量伪标签问题的有效性。

总结

针对双阶段 SSOD 方法效率过低的问题,本文提出了一种用于单阶段检测网络的新型师生学习范例——OneTeacher。同时,考虑到单阶段 SSOD 方法中存在的两个关键挑战,即低质量伪标记和多任务优化冲突,本文提出了相应的解决方案。

首先,针对第一个问题,OneTeacher 应用了一种称为多视图伪标签优化的新颖设计,以提高从微观到宏观视图的伪标签质量。其次,OneTeacher 采用解耦半监督优化方案,通过分支结构和特定于任务的伪标记来解决多任务优化冲突。最后,通过对 YOLOv5 的一系列改进策略,充分发挥了 OneTeacher 的性能。实验结果表明,OneTeacher 在不同设置下大大优于传统监督和半监督方法,也证实了其对上述单阶段 SSOD 关键问题的有效性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

厦大纪荣嵘团队新作|OneTeacher: 解锁 YOLOv5 的正确打开方式 的相关文章

  • Apriori算法详解之【二、伪代码和例子】

    上一篇文章中对Apriori算法进行了简单的描述 Apriori算法详解之 一 相关概念和核心步骤 http blog csdn net lizhengnanhua article details 9061755 现在用伪代码实现 及对经典
  • LeetCode 700. 二叉搜索树中的搜索

    给定二叉搜索树 BST 的根节点 root 和一个整数值 val 你需要在 BST 中找到节点值等于 val 的节点 返回以该节点为根的子树 如果节点不存在 则返回 null 示例 1 输入 root 4 2 7 1 3 val 2 输出
  • Android菜单创建和使用

    Menu分类 1 选项菜单 OptionMenu 选项菜单是一个应用的主菜单项 用于放置对应用产生全局影响的操作 创建菜单 右键res gt New gt Android Resource Directory gt Resource typ
  • GridLayoutManager这么用,你可能还真没尝试过

    前言 Android学习PDF 架构视频 面试文档 源码笔记 阅读本文之前 你需要的一些知识储备 对View的绘制流程有一些简单的了解 Canvas的简单实用 RecyclerView GridLayoutManager的使用 目录 外链图
  • git vscode使用Gitlens

    1 与仓库建立连接 点击remotes的加号 gt 输入仓库名称 gt 输入仓库https或ssh https设置免密登录 2 将本地文件夹推送到远程服务器 点击云 3 拉取远程服务器的同步代码 和上图一样 不过云变成了加载按钮

随机推荐

  • ubuntu 安装qq

    先装deepin sudo apt get install y build essential git cd git clone https github com wszqkzqk deepin wine ubuntu git cd dee
  • java POI导出excel画斜线

    想要实现这样的效果 1 HSSF画斜线 wps可打开 office老版本可打开 Workbook workbook new HSSFWorkbook Sheet sheet workbook createSheet sheetName sh
  • 修改编码为gb2312

    1 MySQL输入命令 show variables like char 出现 ERROR 2006 HY000 MySQL server has gone away No connection Trying to reconnect Co
  • c++ - 第25节 - STL之空间配置器

    目录 1 什么是空间配置器 2 为什么需要空间配置器 3 SGI STL空间配置器实现原理 4 STL空间配置器的使用 1 什么是空间配置器 空间配置器 顾名思义就是 为各个容器高效的管理空间 空间的申请与回收 在默默地工作 虽然在常规使用
  • 无webshell的UDF提权

    1 导入udf提权 因为已经是mysql的root了 所以肯定考虑用udf直接提权 现在本地虚拟机测试成功了再跑去测试目标机器 这样子安全点 首先在虚拟机搭建wamp环境 用手里的一个可以执行成功的udf提权的网马 将dll文件导入到win
  • FPGA Altera相关软件基本用法

    Quartus II 13 1 基本用法 1 配置 1 Assignments gt Device 配置FPGA主芯片 Unused pins 输入三态 Dual Purpose Pins 设置为IO口 2 PIN Planner对需要的p
  • 机器学习和人工智能方法在CADD中的应用

    综述 众所周知 由于疾病的生物学复杂性 药物研发是一个风险高 周期长的过程 为了快速高效地设计和开发新药 将计算机模拟技术引进研发的各个阶段 形成了目前药物研发领域不可或缺的手段 计算机辅助药物设计 CADD 近年来 使用大数据和人工智能算
  • android 多产品项目搭建与变体的使用

    由于公司产品的复杂性 连带着项目也跟着复杂起来 这时候也接触到了android的build 变体的使用 在这里记录一下这个过程 最初查看关于这一块的资料是在android的官网上看得 地址如下 配置 build 变体 Android 开发者
  • 什么是事件循环 Event Loop

    一 什么是事件循环 事件循环 Event Loop 是单线程的JavaScript在处理异步事件时进行的一种循环过程 具体来讲 对于异步事件它会先加入到事件队列中挂起 等主线程空闲时会去执行事件队列 Event Queue 中的事件 如此反
  • 【不忘初心】Windows11 22000.194 RTM X64 四合一[纯净精简版][2.59G](2021.10.11)

    此版可正常更新补丁 WIN11全新的UI界面出炉 可以说这一次Windows 11全新升级 无论是从Logo上还是UI界面设计 都有很大的变化 母版来自MSDN WIN11 22000 194 为了保证稳定初心的系统全部都是离线精简和优化
  • Matlab:绘制正弦曲线与余弦曲线

    Matlab 绘制正弦曲线与余弦曲线 目录 绘制正弦曲线与余弦曲线 结果显示 实现代码 绘制正弦曲线与余弦曲线 结果显示 实现代码 清空窗口 clear 清空工作区 clc 清空命令行窗口 绘制sin函数 一个区间 x 2 pi 0 1 2
  • Minio大文件上传、文件秒传、断点续传

    初步流程 选择上传文件 gt 提取md5 gt 请求后端校验此md5的文件是否已经上传过 gt 如果有上传就返回信息告诉前端上传完成 秒传 gt 如果没有则根据此md5获取已上传的分片有哪些 未上传的分片有多少个就返回多少个上传url 如何
  • Spring Boot代码结构

    14 组织你的代码 Spring Boot不需要使用任何特殊的代码结构 然而 这里有一些有用的最佳实践 14 1 使用 default 包 当类没有包含package声明时 它被认为处于default package下 通常不推荐使用def
  • 解决 Android 开发过程中 出现 Duplicate class(包冲突)

    1 现在大部分的项目都是支持 Androidx 的 所以出现 Duplicate 的时候 先把 gradle properties 文件中添加参数 支持使用AndroidX android useAndroidX true android
  • 右移和与上&0xff作用

    tmp gt gt 8 0xff 以下是阅读他人文章后 个人对计算 tmp gt gt 8 0xff 的理解 将tmp转为二进制数 6322040 gt 11000000111011101111000 向右移16位 清掉该16位 且左边用0
  • zabbix安装报错:The frontend does not match Zabbix database.

    The frontend does not match Zabbix database 出现此错误为导入数据到数据库zabbix时 对应的mysql版本号与当前不相符 相关代码为 zcat usr share doc zabbix serv
  • 华为OD机试 - 括号匹配(Java)

    题目描述 给定一个字符串 里边可能包含 三种括号 请编写程序检查该字符串中的括号是否成对出现 且嵌套关系正确 若括号成对出现且嵌套关系正确 或该字符串中无括号字符 输出 true 若未正确使用括号字符 输出 false 实现时 无需考虑非法
  • php 7 node.js 并发,PHP7+Swoole、Node Express、Sails、Beego、ThinkPHP 并发性能测试

    最近由于产品业务出现请求瓶颈 需要更换产品框架 针对现在集中主流方案进行了逐一测试 服务器硬件配置 2 核 2G虚拟机 10000请求 500并发测试结果如下 性能测试结果 1 Nodejs Express测试结果如下 大约每秒处理2100
  • Z变换零极点与收敛域的关系

    原文地址 Z变换零极点与收敛域的关系 作者 沙拉酱 Z变换零极点与收敛域的关系 序列的ZT存在零点和极点 这是因为序列的ZT同信号的LT一样都是复变函数 区别只是自变量名称不同 因此其零点和极点的定义与LT的零点与极点的定义相同 在z平面上
  • 厦大纪荣嵘团队新作|OneTeacher: 解锁 YOLOv5 的正确打开方式

    Paper https arxiv org pdf 2302 11299 pdf Code https github com luogen1996 OneTeacher 导读 大家从中也可以看到一个趋势 便是现在监督学习领域已经是非常饱和了