A Simple Semi-Supervised Learning Framework for Object Detection

news2024/11/29 20:48:33

1. Introduction

SSL的成功主要有以下两个方面:

(1)一致性正则化:如果对一个未标记的数据应用实际的扰动, 其预测结果不应该发生显著变化, 也就是输出具有一致性,通过在未标记数据上构造添加扰动后的预测结果 y~​ 与正常预测结果 y之间的无监督正则化损失项, 提高模型的泛化能力。关键思想是首先为未标记的数据生成人工标签,并训练模型在为未标记的数据提供保持语义的随机增强时预测这些人工标签。

(2)数据增强技术的发展

本文的工作:

利用深度SSL在图像分类方面的经验来解决SSL用于目标检测的问题。 提出了一个用于对象检测的SSL框架,该框架结合了自我训练(通过伪标签)和基于强数据增强的一致性正则化。 受NoisyStudent框架的启发,系统包含两个训练阶段。

NoisyStudent框架流程:Self-training with Noisy Student improves ImageNet classification论文解析-CSDN博客

(1)首先将在ImageNet上训练好的模型作为Teacher Network来训练Student Network
(2)再使用训练好的T网络(无噪音)来对另一个数据集[JFT dataset]生成尽可能准确的伪标签
(3)之后使用生成伪标签的数据集[JFT dataset]和ImageNet一起训练Student Network
(4)Student Network中增加了模型噪音(1)DropOut(2)随机深度和数据噪音:(1)对图片进行数据增强

(1)首先,我们会将Unlabeled images经过Teacher模型,生成伪标签(NMS之后置信度过滤完成的高精度伪标签),还会为增强之后的imasge生成增强伪标签

(2) 在第二阶段,对每个未标记的图像应用强数据增强,并使用标记数据和未标记数据及其在第一阶段生成的相应伪标签训练模型

(3)将数据增强后的images输入进入Student模型进行Predict,然后再与教师生成的伪标签(增强之后的)进行损失计算。学生模型逐步学习未标注数据中的特征,优化自己的权重。

半监督学习方法:

1、基于一致性正则化:使模型对输入数据的微小扰动保持一致的输出。MeanTeacher、UDA和MixMatch

2、基于伪标签:利用模型自身对无标签数据的预测结果作为“伪造”的标签,以此来扩充训练数据集noise -student、FixMatch(如果有时间把这几篇论文都看一下)

数据增强:适当的颜色变换和输入空间的几何变换是关键

全局水平翻转(弱增强)来构建一致性损失,强增强还未得到深入研究

3. Methodology

3.1Unsupervised Loss in SSL

3.2STAC

训练步骤:

1、在可用的标记图像上训练一个教师模型(参考noise -student模型)

2、对unlabelled images生成伪标签(经过NMS之后,且基于置信度的阈值过滤)

3、对未标记的图像应用强数据增强,并在应用全局几何变换时相应地增强伪标签(即边界框)

生成伪标签:基于Fast RCNN网络

教师模型包括了目标检测的关键组成部分:Backbone(主干网络,用于提取特征)、RPN(区域建议网络,用于生成候选框)、和 CLS 网络(分类网络,用于对候选框进行分类)。

伪标签生成和传统的分类任务不同。分类任务通常直接使用原始的预测概率(如 softmax 输出)来计算置信度分数,而在目标检测中,生成伪标签的置信度分数是通过 NMS 之后的边界框来确定的。NMS 后的分数是基于汇总多个 anchor 框的预测概率,而不是直接使用单个预测的原始概率

置信度:为了进一步减少错误检测,使用了基于置信度的阈值筛选(confidence-based thresholding),这是从 FixMatch 和 Noisy Student 方法中借鉴的。

无监督损失:

如果锚点与任何教师模型的CLS预测置信度分数高于阈值 τ的伪边界框相关联,则 qi∗为 1;否则为 0(即被视为背景)。

λu​:​ 是一个超参数,用于平衡有监督损失和无监督损失。在实验中,发现 λu​ 在区间 [1,2] 内表现良好。

数据增强策略:

(1)全局颜色变换(C)

(2)全局几何变换(G):x-y平移、旋转、x-y剪切

(3)Box-level transformation

4.Experiments

当使用更多的标记训练数据和更复杂的数据增强策略时,训练时间越长,模型的性能越好

使用τ =0.9和λu =2进行所有实验,我们降低阈值τ =0.5以提高伪标签的召回率

5. Ablation Study

5.1. Data Augmentation

数据增强策略在具有少量label标记的数据上表现比较好;当使用所有标记数据进行训练时,网络明显不适合增强策略,但是可以通过增加训练时常来解决这个问题。

5.2Size of Unlabeled Data

STAC从更大规模的未标记训练数据中表现更好

5.3λu and τ

5.4. Quality of Pseudo Labels

实验发现,提高伪标签的质量(不同的数据增强方法训练)其实效果不是特别明显

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

景区客流统计合理控制游客人数,预防意外发生

随着制造业的不断发展,工厂的管理和安全问题日益受到关注。为了提升生产效率和保障安全,许多工厂开始采用客流计数器系统。这种系统通过实时监测和控制车间内的人员数量,确保不超过安全规定,预防事故发生。本文将详细介绍工厂客流…

正则表达式以及密码匹配案例手机号码脱敏案例

目录 正则表达式 什么是正则表达式 语法 定义变量 test方法 exec方法 replace方法 match方法 修饰符 元字符 边界符 单词边界 字符串边界 边界符:^ 边界符:$ 量词 * ? {n} {n,} {n,m} 字符类 []匹配字符集合 .匹配除换行符之外的…

面向对象编程中类与类之间的关系(一)

目录 1.引言 2."有一个"关系 3."是一个"关系(继承) 4.“有一个”与“是一个”的区别 5.not-a关系 6.层次结构 7.多重继承 8.混入类 1.引言 作为程序员,必然会遇到这样的情况:不同的类具有共同的特征,至少看起来彼…

【zotero7】茉莉花抓取文献失败解决方案

1、先安装好茉莉花 工具 ----》设置按钮–》从github上下载 xpi文件 2. 配置茉莉花 选择设置–》看到茉莉花–》红色字体 pdftk下载链接: https://www.pdflabs.com/tools/pdftk-server/ 3.打开插件 --》扩展插件 刷新

如何从PPT中导出600dpi的高清图

Step1. 修改PPT注册表 具体过程,参见如下链接:修改ppt注册表,导出高分辨率图片 Step2. 打开PPT,找到自己想要保存的图,选中图像,查看图像尺寸并记录 Step3. 重新新建一个PPT,并根据记录的图片…

C语言 | Leetcode C语言题解之第518题零钱兑换II

题目&#xff1a; 题解&#xff1a; int change(int amount, int* coins, int coinsSize) {int dp[amount 1];bool valid[amount 1];memset(dp, 0, sizeof(dp));memset(valid, false, sizeof(valid));dp[0] 1;valid[0] true;for (int i 0; i < coinsSize; i) {for (in…

rhcsa 第二次作业

# tee:编辑文件&#xff1a;编辑文件的同时&#xff0c;标准输出也会有内容显示 # | 管道符&#xff1a;将多个命令连接起来执行&#xff0c;将|左边的命令的运行结果&#xff0c;传递给右边的命令 # ls -l | tee a.txt # >&#xff1a;输出重定向 # 使用输出…

信创环境模拟:X86架构下部署搭建aarch64的ARM虚拟机

在真实系统为x86架构下&#xff0c;搭建arm64的虚拟开发环境。在该环境中直接下载打包项目依赖的python运行环境。 前言 随着国家信创环境的要求普及&#xff0c;基本和国家沾边的政企事业单位都换成了信创环境&#xff0c;即ARM64的cpu服务器&#xff0c;而且该类服务器是不…

Cesium基础-(Entity)-(Box)

** 里边包含Vue、React框架代码详细步骤、以及代码详细解释 ** 3、Box 盒子 以下是 BoxGeometry 类的属性、方法和静态方法,以表格形式展示: 属性 属性名类型默认值描述minimumCartesian3盒子的最小 x, y, 和 z 坐标。maximumCartesian3盒子的最大 x, y, 和 z 坐标。vertex…

四个模型(CV、CA、左转CT、右转CT)的交互式多模型系统,介绍与MATLAB例程

文章目录 引言一、模型概述1.1 连续变量模型&#xff08;CV&#xff09;1.2 离散变量模型&#xff08;CA&#xff09;1.3 左转控制器&#xff08;CT&#xff09;1.4 右转控制器&#xff08;CT&#xff09; 二、交互式多模型系统2.1 系统架构 三、MATLAB实现3.1 MATLAB代码3.2 代…

软硬链接_动静态库

软硬链接 软链接创建 硬链接创建 软链接是独立文件&#xff08;独立inode号&#xff09; 硬链接不是独立文件&#xff08;inode和目标相同&#xff09; 如何理解软硬链接 软链接有独立inode&#xff0c;软链接内容上&#xff0c;保存的是文件路径 硬链接不是独立文件&#xf…

labelimg使用教程

快捷键 W&#xff1a;调出标注的十字架&#xff0c;开始标注 A&#xff1a;切换到上一张图片 D&#xff1a;切换到下一张图片 del&#xff1a;删除标注的矩形框 CtrlS&#xff1a;保存标注好的标签 Ctrl鼠标滚轮&#xff1a;按住Ctrl&#xff0c;然后滚动鼠标滚轮&#xff0c;…

Java | Leetcode Java题解之第517题超级洗衣机

题目&#xff1a; 题解&#xff1a; class Solution {public int findMinMoves(int[] machines) {int tot Arrays.stream(machines).sum();int n machines.length;if (tot % n ! 0) {return -1;}int avg tot / n;int ans 0, sum 0;for (int num : machines) {num - avg;s…

鸿蒙UI系统组件18——模态交互框(ModelDialog)

1、概 述 模态&#xff08;Modal&#xff09;指的是UI组件或视图的一种状态。在模态组件消失前&#xff0c;用户只能对处于模态的组件或视图进行响应&#xff0c;不能操作其他非模态的组件或视图。 ArkUI中可通过使用AlertDialog、CustomDialog、ActionSheet、Popup、Menu、C…

力扣题86~90

题86&#xff08;中等&#xff09;&#xff1a; python代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def partition(self, head: Optional[Li…

JavaEE初阶---网络原理/UDP服务器客户端程序

文章目录 1.网络初识2.网络编程2.1TCP/UDP区别介绍2.2UDP的socket api使用2.3UDP协议里面的服务器客户端程序 1.网络初识 网络和计算机类似&#xff1a;都是属于军用》民用&#xff1b; 网络诞生于美苏争霸时期&#xff0c;当时就感觉核战争一触即发&#xff0c;形式非常严峻…

.NET 8 中的 Mini WebApi

介绍 .NET 8 中的极简 API 隆重登场&#xff0c;重新定义了我们构建 Web 服务的方式。如果您想知道极简 API 的工作原理以及它们如何简化您的开发流程&#xff0c;让我们通过一些引人入胜的示例来深入了解一下。 .NET 极简主义的诞生 想想我们曾经不得不为一个简单的 Web 服务…

在 Kakarot ZkEVM 上使用 Starknet Scaffold 构建应用

Starknet 和 EVM 我们所知的智能合约世界一直围绕着以太坊虚拟机&#xff08;EVM&#xff09;&#xff0c;其主要语言是 Solidity。 尽管 Starknet 通过 STARKs 为以太坊开辟了新的可能性&#xff0c;但其缺点是它有一个不同的虚拟机 (CairoVM)&#xff0c;这要求开发者学习 …

多态的体现

多态&#xff1a;当不同的对象去完成某个行为时会产生出不同的状态多态体现&#xff1a; 在代码运行时&#xff0c;当传递不同类对象时&#xff0c;会调用对应类中的方法。 public class Animal {String name;int age;public Animal(String name, int age){this.name name;t…

docker安装、设置非sudo执行、卸载

安装 sudo snap install docker 设置docker非sudo执行 sudo groupadd docker sudo usermod -aG docker $USER newgrp docker sudo chown root:docker /var/run/docker.sock 卸载docker 1.删除docker及安装时自动安装的所有包 apt-get autoremove docker docker-ce docker-…