[Semi-笔记]Switching Temporary Teachers for Semi-Supervised Semantic Segmentation

目录

  • 概要
  • 创新一:Dual Temporary Teacher
    • 挑战:
    • 解决:
  • 创新二:Implicit Consistency Learning(隐式一致性学习)
    • 挑战:
    • 解决:
  • 实验结果
  • 小结
  • 论文地址
  • 代码地址

分享一篇2023年NeurIPS的文章。

概要

半监督语义分割中流行的师生框架,主要采用指数移动平均(EMA)来更新单个教师的权重。然而,EMA 更新提出了一个问题,即教师和学生的权重耦合,导致潜在的性能瓶颈。此外,当使用更复杂的标签(例如分割掩模)进行训练但注释数据很少时,这个问题可能会变得更加严重。本文介绍了双位教师,这是一种简单而有效的方法,采用双位临时教师,旨在缓解学生的耦合问题。临时老师轮班工作,逐步提高,始终防止师生关系过于亲密。具体来说,临时教师定期轮流生成伪标签来训练学生模型,并保持每个时期学生模型的独特特征。

创新一:Dual Temporary Teacher

挑战:

半监督语义分割中流行的师生框架主要采用指数移动平均(EMA)来基于学生的权重更新单个教师的权重。问题:教师与学生的权重正在耦合,从而导致潜在的绩效瓶颈。此外,当使用更复杂的标签(例如分割掩模)进行训练但使用很少的注释数据时,这个问题可能会变得更加严重。解决:双师制,旨在缓解学生耦合问题。
Mean Teacher使用学生模型的 EMA 权重更新教师模型,而不是从集成角度与学生模型共享权重。尽管这一师生框架展现了重大影响,但一个关键问题是耦合问题,其中紧密耦合的权重会降低性能

解决:

在半监督语义分割的背景下,我们的目标是减轻传统师生框架中采用的单个 EMA 更新例程引起的耦合问题 。在改进教师模型的关键因素中,我们主要注意到的是学生模型的多样性,我们努力通过建立学生模型的多样性增强教师模型的良性循环来防止随着训练的进行教师和学生模型变​​得过于相似。反过来,改进后的教师保留了学生的多元化观点,并有效地指导了学生模型。由于学生更新了每位 EMA 教师,由于整体效应,教师在学生多样化的同时得到了增强。强化后的教师模型随后可以向学生模型提供更精细的监督信号。
该文引入了一个简单而有效的框架——双教师:一种临时EMA教师模型交替生成伪标签来指导学生模型的方法;同时,学生模型使用其自身权重的指数移动平均值更新教师模型的权重。我们声称,引入额外的 EMA 教师可以通过提供独特且多样化的监督来促进学生的多元化。如图 所示,双教师由一对教师-学生模型组成,其中两个临时教师模型在训练过程中每个时期都会切换以教授单个学生模型。
在这里插入图片描述
与之前的研究类似,采用强增强图像作为学生模型的输入,采用弱增强图像作为教师模型的输入,以确保可靠的伪标签。然而,我们没有采用传统的依赖单一固定教师模型的师生框架,而是引入了每个时期交替激活的双临时教师,为学生模型提供了多样化的指导。临时 EMA 教师捕捉学生模型不断变化的时间知识,在不同的时间步上表现得像一个时间集合。

  • 强大的增强池

为了使学生模式更加多样化,我们不仅仅依靠 EMA 教师模式,尽管有交替的双教师。为了进一步确保多样性,我们通过在每个时期转移临时教师模型时改变应用于学生模型的强增强类型来提供多样性。我们通过构建预定义但非确定性的强增强池来实现这一点,包括精细类级别和粗略区域级别增强(即 ClassMix 和 CutMix)。每个训练时期从池中随机采样一个增强,限制连续时期不使用相同的增强。

  • 更新学生和教师

简而言之,临时教师模型的使用有助于将多样性引入学生模型,而学生模型获得的多样性特征有助于教师模型的增强。学生模型的目标函数定义如下:
在这里插入图片描述
在这里插入图片描述 (2)

其中 Bu 表示训练批次中未标记图像的数量,图像大小为 H ×W,第 i 个图像上的第 j 个像素,未标记输入应用强增强的学生模型的预测 pu ij,以及相应的伪标签 ˆyu ij来自教师模型。 λu 是一个标量超参数,用于调整无监督损失权重。
其中一名临时教师在每个时期交替激活,并通过 EMA 权重保留学生模型的特征。第 k 个临时教师 k ∈ {1, …, tn} 在每个 epoch 交替切换;第 k 个临时教师的参数 θk t 根据学生参数 θs 通过 EMA 通过式(2)进行更新。

创新二:Implicit Consistency Learning(隐式一致性学习)

挑战:

解决:

我们从一致性正则化的角度引入了另一种隐式集成学习来增强我们的学生模型。在[14,38,10]的推动下,我们鼓励层子集在学生模型中活跃,并且所有这些子模型做出一致的预测。与之前的研究[38, 2]相比,在同一模型中的完整模型和子模型之间强制执行一致的预测,我们在学生模型和完整教师模型的子模型之间强制执行一致性。我们通过多功能随机深度 [14] 在学生模型中构建子模型,适用于从 CNN 模型到基于 Transformer 的模型。因此,学生模型通过以下目标函数进行训练:
在这里插入图片描述

其中~θs表示学生模型的子模型参数,下降率为τ,B是训练批次中的图像数量。请注意,我们只对教师和学生模型的输入应用弱增强,这与等式 1 不同。 3,我们分别向学生模型提供强增强输入,向教师模型提供弱增强输入。最后这个loss配合Lunsup来更新学生模型。

实验结果

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

小结

该文引入了一种新颖的双教师框架来解决广泛使用的师生框架中由 EMA 更新引起的耦合问题。从隐式集成学习的角度提出了一种简单而有效的方法,而不是依赖于显式集成的现有解决方案。
(1)缓解传统师生框架中使用的单一EMA更新例程所引起的耦合问题。努力防止教师和学生模式变得过于相似,建立一个良性循环,在这个循环中,学生模式的多样性增强了教师模式。
(2)经过改进的教师保留了学生的不同观点,并有效地指导了学生模式。由于学生更新了每一位EMA老师,由于合奏效应,老师在使学生多样化的同时得到了增强。强化的教师模型随后可以向学生模型提供更精细的监督信号。

论文地址

pdf地址

代码地址

https://github.com

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

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

相关文章

python 利用xpath 爬取一周天气

需求: 爬取 中国天气网指定城市一周的天气,以天津为例 实现: 1,先找到一周的数据位置。 divs html.xpath("//div[classhanml]") 2,再遍历每天。 trs div.xpath("./div/div[2]/table//tr[position…

PC发送指令给单片机控制LED(与上一篇文章相反)

此时要重新配置寄存器 ,实现电脑往单片机传输数据 1、配置SCON寄存器的REN 即 REN 1 2、有TI(发送中断)就有RI(接收中断) 3、优化 发现发送 o 时,D5亮灯会有延迟 下面就是做到真正的无延迟的全双工通信 …

day11 基础函数(二)

知识回顾 ```python # 函数:封装具有某种功能的代码块 函数的定义 def 函数名(): 代码 函数名() # 函数调用 实参:相当于变量值(演员) 形参:相当于变量名(角色) 必须参数(位置参数) 就是必须按照正确的顺序将实参传入到函数中,实参和形参个数必须一一对应 默认参数 de…

深入理解计算机系统 家庭作业 2.85

A 7111.01.11*V E2,M1.11,f0.11 位表示: exp:10000...001其中0有k-2个.frac:1100...000其中0有n-2个 B 有个默认条件就是E>n, En,M1.111...(小数部分n个1),f0.1111(n个1),V exp:111...11其中1有n-1个.frac:111...111其中1有n个 C有个默认条件就是没有符号位.最小的规格…

JS详解-设计模式

工厂模式: 单例模式: // 1、定义一个类class SingleTon{// 2、添加私有静态属性static #instance// 3、添加静态方法static getInstance(){// 4、判断实例是否存在if(!this.#instance){// 5、实例不存在,创建实例this.#instance new Single…

Android 关于apk反编译d2j-dex2jar classes.dex失败的几种方法

目录 确认路径正确直接定位到指定目录确定目录正确,按如下路径修改下面是未找到相关文件正确操作 确认路径正确 ,即d2j-dex2jar和classes.dex是否都在一个文件夹里(大部分的情况都是路径不正确) 直接定位到指定目录 路径正确的…

第12届蓝桥杯省赛 ---- C/C++ C组

文章目录 1. ASC2. 空间3. 卡片4. 相乘5. 路径6.时间显示7.最少砝码8. 杨辉三角形9. 左孩子右兄弟 第12届蓝桥杯省赛&#xff0c;C/C C组真题&#xff0c;第10题不是很清楚&#xff0c;题解不敢乱放&#x1f601;&#x1f601;&#x1f601; 1. ASC 额。。。。 #include <i…

Java NIO Selector选择器源码分析

文章目录 前言Selector类结构Selector抽象类AbstractSelectorSelectorImplWindowsSelectorImpl三种SelectionKey集合 前言 Java NIO&#xff08;New I/O&#xff09;的Selector选择器是一个用于多路复用&#xff08;Multiplexing&#xff09;的I/O操作的关键组件。它允许一个单…

【题目】【网络系统管理】2021年全国职业院校技能大赛模块B--样题(九)

2021年全国职业院校技能大赛 网络系统管理&#xff08;样题9&#xff09;模块B&#xff1a;Windows环境 全国职业院校技能大赛执委会.技术专家组 2021年03月 竞赛简介 请认真阅读以下指引&#xff01; 比赛共4个小时&#xff0c;你必须自行决定如何分配你的时间。 当比赛结…

java-权限修饰符、代码块

一、权限修饰符概念 权限修饰符是用来控制一个成员被访问的范围&#xff0c;可以用来修饰成员变量、方法、构造方法、内部类 二、权限修饰符的分类 举例&#xff1a; 1、private 2、空着不写 3、protected 4、public 三、权限修饰符的使用规则 实际开发中&#xff0c;一般使…

Vue2和3中的插槽区别及其简单案例

vue中的插槽是什么&#xff0c;官方解释是: Vue 实现了一套内容分发的 API&#xff0c;这套 API 的设计灵感源自 Web Components 规范草案&#xff0c;将 <slot> 元素作为承载分发内容的出口… vue2插槽和vue3插槽基本概念是一致的&#xff0c;也是匿名插槽、具名插槽、…

meshgrid如何生成网格

这里举个生成4*4的网格&#xff0c;在目标检测里常用到。 生成的坐标为4 import torch torch.arange(4) tensor([0, 1, 2, 3]) 使用meshgrid生成y、x轴坐标 import torch yv, xv torch.meshgrid([torch.arange(4),torch.arange(4)]) print(yv,xv) tensor([[0, 0, 0, 0], …

Mahalanobis距离(马氏距离)的本质

马氏距离是加权 ℓ 2 \ell_2 ℓ2​范数的特例。 马氏距离是一种基于样本分布的距离&#xff0c;加权矩阵是样本或总体协方差矩阵的逆&#xff0c;其本质为去相关数据标准化&#xff0c;通过数据变换&#xff0c;消除样本中不同特征维度间的相关性和量纲差异。

新概念英语1:Lesson 19 学习笔记

新概念英语1&#xff1a;Lesson 19 学习笔记 What’s the matter? 相当于What’s wrong?或Tell me what’s wrong.这个句型通常用来询问发生了什么事。通常用于询问对方是否有问题或烦恼。它的意思是"有什么事吗&#xff1f;"或“怎么啦”。 这个短语的语气通常…

电子台账:用控件颜色提高工作效率和数据质量

目录 1 前言 2 用页签颜色表示月度数据锁定状态 3 模板制作中定位数据源表格及其行列 3.1 鼠标移过水平过滤模板 3.2 鼠标移过垂直过滤模板 4 数据抓取过程对账页和源单元格同时染色 5 数据溯源过程&#xff0c;对企业数据源单元格染色 6 用键盘进行数据编辑后 1 前言 …

第九题:最大间隙

题目描述 给定一个序列 a1,a2,⋯ ,an。其中 a1≤a2≤⋯≤an。 相邻两个数之间的差&#xff08;后一个数减前一个数&#xff09;称为它们的间隙。 请问序列中最大的间隙值是多少&#xff1f; 输入描述 输入的第一行包含一个整数 n&#xff0c;表示序列的长度。 第二行包含…

第1个Django应用及Django的请求处理

Python学习之路系列文章目录 python面向对象之警察与匪徒火拼场景模拟python面向对像之第二次笔记Django环境搭建及测试第1个Django应用及Django的请求处理 第1个Django应用及Django的请求处理 Python学习之路系列文章目录一、PyCharm创建django项目二、创建app什么是app怎么创…

JavaScript权威指南(第7版) 笔记 - 扩展操作符总结

扩展操作符 ... &#xff0c;不是真正意义上的JavaScript操作符。 let str "0123ABC" console.log(typeof ...str);// Uncaught SyntaxError: Unexpected token ... 上面的第2行代码会报错&#xff0c;扩展操作符 ... 只能在数组字面量、对象字面量、函数调用中使…

C语言中的字符与字符串:魔法般的函数探险

前言 在C语言的世界里&#xff0c;字符和字符串是两个不可或缺的元素&#xff0c;它们像是魔法般的存在&#xff0c;让文字与代码交织出无限可能。而在这个世界里&#xff0c;有一批特殊的函数&#xff0c;它们如同探险家&#xff0c;引领我们深入字符与字符串的秘境&#xff0…

Pytorch register_forward_hook()

一、hook的意义&#xff1a; 在不改动网络结构的情况下获取网络中间层输出。 没有使用hook的时候&#xff0c;想要得到conv2的输出&#xff0c;就要将在forward函数中经过conv2后的结果保存下来&#xff0c;然后和最终结果一起返回。 import torch import torch.nn as nn im…