论文阅读笔记:Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels

news2024/11/24 14:11:14

论文阅读笔记:Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels

  • 1 背景
  • 2 创新点
  • 3 方法
  • 4 模块
    • 4.1 伪标签
    • 4.2 使用不可靠的伪标签
  • 5 效果
    • 5.1 与SOTA方法对比
    • 5.2 消融实验
    • 5.3 定性结果
  • 6 结论

论文:https://arxiv.org/pdf/2203.03884v2.pdf

代码:https://github.com/Haochen-Wang409/U2PL

1 背景

一种典型的解决方法是将伪标注赋值给没有标注的像素。为了缓解确认偏差问题,其中模型可能遭受不正确的伪标注,现有的方法提出以其置信度分数过滤预测。换句话说,只有高度自信的预测被用作伪标注,而模糊的预测被丢弃。然而,仅仅使用可靠的预测可能导致的一个潜在问题是某些像素在整个训练过程中可能永远无法学习。如图1中的椅子类,如果模型不能很好的预测这个类别,就很难为该类像素分配准确的伪标签,这可能导致训练不充分和类别不平衡,从这个角度出发,作者认为,为了充分利用未标记的数据,每个像素都应该被适当地利用。
在这里插入图片描述
如果将不可靠的预测作为伪标注会导致性能下降。在本文中,作者提出了一个使用不可靠伪标签的替代方法,称为U2PL。首先,作者观察到,一个不可靠的预测通常只在少数及各类而不是所有类之间发生混淆。以图2为例,具有白色十字的像素在摩托车和人身上得到相似的概率,但该模型非常确定该像素不属于汽车和火车。就这样的观察,作者将易混淆的像素重新考虑为那些不太可能的类别的负样本。具体来说,从未标记的图像中获得预测后,作者使用每个像素的熵作为度量,如图2。
在这里插入图片描述

2 创新点

提出将不可靠的伪标注作为距离远的类别的负样本。

3 方法

在这里插入图片描述
给定一个有标签的数据集 D l = { ( x i l , y i l ) } i = 1 N l D_l=\{(x_i^l,y_i^l)\}_{i=1}^{N_l} Dl={(xil,yil)}i=1Nl 和一个大很多的无标签数据集 D u = { ( x i u ) } i = 1 N u D_u=\{(x_i^u)\}_{i=1}^{N_u} Du={(xiu)}i=1Nu,目标是利用大量的无标签数据和较小的有标签数据来训练一个语义分割模型。

图3展示了 U 2 P L U^2PL U2PL 的总览,它遵循典型的自训练框架,具有相同框架的两个模型,分别命名为教师和学生。两种模型仅在更新权重时存在差异。学生模型的权重 θ s \theta_s θs 是按照通常的做法更新的,而教师模型的权重 θ t \theta_t θt 是根据学生模型权重的指数移动平均更新的。每个模型由一个基于CNN的编码器 h h h,一个带有分割头 f f f 的解码器和一个表示头 g g g 组成的。在每一步训练中,对 B B B 张有标签图像 B l B_l Bl B B B 张无标签图像 B u B_u Bu 进行等量采样的。对于每个未标记图像,首先将其带入到教师模型并得到预测,然后基于像素级熵,在计算等式中的无监督损失时忽略不可靠的像素级伪标注。最后用对比损失来充分利用无监督损失中排除的不可靠像素。优化目标是最小化总体损失,可以表述为:
在这里插入图片描述
式中 L s L_s Ls L u L_u Lu 分别表示应用于有标签图像的监督损失和无标签图像的无监督损失, L c L_c Lc 为充分利用不可靠伪标签的对比损失。 λ u \lambda_u λu λ c \lambda_c λc 是无监督损失和对比损失的权重。 L s L_s Ls L u L_u Lu 是交叉熵损失:
在这里插入图片描述
其中, y i l y_i^l yil 表示第 i i i 张有标注图像的人工标注掩码标签, y ^ i u \hat{y}_i^u y^iu 表示第 i i i 张无标注图像的伪标签。 f ◦ h f◦h fh h h h f f f 的复合函数。即先将图像输入 h h h 再输入 f f f 得到分割结果。 L c L_c Lc 是像素级 InfoNCE 损失,定义为:
在这里插入图片描述
其中 M M M 是锚点像素总数, z c i z_{ci} zci 表示 c c c 类第 i i i 个锚点的表示。每个锚点像素后跟一个正样本和N个负样本,其表示分别为 z c i + z_{ci}^+ zci+ z c i j − z_{cij}^- zcij z = g ◦ h ( x ) z=g◦h(x) z=gh(x) 为表示头 g g g 的输出。 < ⋅ , ⋅ > <·,·> <⋅,⋅> 是两个不同像素的特征之间的余弦相似度,其范围限制在[-1,1],因此需要温度因子 τ \tau τ。文中 M = 50 , N = 256 , τ = 0.5 M=50,N=256,\tau=0.5 M=50,N=256,τ=0.5

L c L_c Lc 通过增加 e < z c i , z c i + > / τ e^{<z_{ci},z_{ci}^+>/\tau} e<zci,zci+>/τ 从而增加了当前锚点和正样本之间的相似度,通过降低 e < z c i , z c i j − > / τ e^{<z_{ci},z_{cij}^->/\tau} e<zci,zcij>/τ从而降低了当前锚点和负样本之间的相似度。

4 模块

4.1 伪标签

为了避免过拟合错误的伪标注,我们利用每个像素概率分布的熵来过滤高质量的伪标注以进行进一步的监督。具体来说,将 p i j ∈ R C p_{ij}∈R^C pijRC 表示教师模型的分割头在第 i i i 个未标注图像的第 j j j 个像素处生成的softmax概率,其中 C C C 为类别数。其熵计算为:
在这里插入图片描述
其中 p i j ( c ) p_{ij}(c) pij(c) p i j p_{ij} pij 在第 c c c 维的值。

然后,定义在训练的第 t t t 个epoch上熵在前 α t \alpha_t αt 上的像素为不可靠的伪标注。这样不可靠的伪标注不具备监督资格。因此,定义第 i i i 个未标注图像的第 j j j 个像素处的伪标注为:
在这里插入图片描述
其中 γ t \gamma_t γt 表示第 t t t 个训练step的熵阈值。将 KaTeX parse error: Undefined control sequence: \* at position 40: ….flatten(), 100\̲*̲(1-\alpha_t)),其中 H H H 是像素熵图。np.percentile()的作用是取序列 H . f l t t e n ( ) H.fltten() H.fltten() 中的百分之 KaTeX parse error: Undefined control sequence: \* at position 4: 100\̲*̲(1-\alpha_t) 位数。

在训练过程中,未标注逐渐趋于可靠,基于这种直觉,作者每过一个epoch都要用线性策略调整不可靠像素的比例 α t \alpha_t αt
在这里插入图片描述
其中 α 0 \alpha_0 α0 初始比例且为 20%。

在获得可靠的伪标注之后,将它们纳入到无监督损失(3)中。该损失的权重 λ u \lambda_u λu 定义为当前小批量中熵小于 γ t \gamma_t γt 的像素的百分比的倒数乘以一个基础权重 η \eta η
在这里插入图片描述
其中 1 ( ⋅ ) 1(·) 1() 为指示函数, η \eta η 设置为 1。

4.2 使用不可靠的伪标签

在半监督学习任务重,丢弃不可靠的伪标注或降低其权重可以防止模型性能下降。遵循这一直觉,基于公式(6)过滤掉不可靠的伪标注。

然而,这种不可靠伪标注的忽视可能导致信息丢失,可见,不可靠的伪标注可以为更好的判别提供信息,如图2中白色十字就是典型的不可靠像素,它的分布显示了模型区分人和摩托车的不确定性。然而这种分布也证明了模型确定性,不会将该像素区分乘车,火车,自行车等类。这一特性为提出 U 2 P L U^2PL U2PL 使用不可靠的伪标注提供了主要启示。

U 2 P L U^2PL U2PL 的目标是利用不可靠的伪标注的信息进行更好的辨别,这与最近流行的对比学习范式在辨别表征上不谋而合。但由于半监督语义分割任务中标注图像的缺乏, U 2 P L U^2PL U2PL 建立在更复杂的策略之上。 U 2 P L U^2PL U2PL 有三个分量,分别是锚像素,正候选和负候选。这些分量是以采样的方式从某些集合中获得的,以减轻巨大的计算成本。接下来,将介绍如何选择(a)锚点像素(b)每个锚的正样本(c)每个锚的负样本。

在训练过程中,为当前小批次中出现的每个类采样锚像素,将 c c c 类所有已标注的候选像素的特征集合记为 A c l A_c^l Acl
在这里插入图片描述
其中 y i j y_{ij} yij 是第 i i i 个标注图像的第 j j j 个像素的GT, δ p \delta_p δp 是正样本的阈值,设为0.3。 z i j z_{ij} zij 标注图像 i i i 的第 j j j 个像素的表示。对于无标签数据,对 A c u A_c^u Acu 可以计算为:
在这里插入图片描述
A c l A_c^l Acl 不同的是, A c u A_c^u Acu 中使用了基于等式(6)的伪标签 y ^ i j \hat{y}_{ij} y^ij。这意味着符合条件的锚点像素是可靠的,即 H ( p i j ) ≤ γ t H(p_{ij})≤\gamma_t H(pij)γt。因此,对于 c c c 类,所有合格锚点的集合为:
在这里插入图片描述
对于来自同一类别的所有锚点,正样本是相同的,是所有可能锚的中心:
在这里插入图片描述
同时,作者定义了一个二值化变量 n i j ( c ) n_{ij}(c) nij(c) 来识别图像 i i i 的第 j j j 个像素是否属于 c c c 类的负样本。
在这里插入图片描述
n i j l ( c ) n_{ij}^l(c) nijl(c) n i j u ( c ) n_{ij}^u(c) niju(c) 分别为标注和未标注图像 i i i 的第 j j j 个像素是否符合 c c c 类负样本的指导。

对于第 i i i 张标注图像,一个合格的 c c c 类负样本应该是:(a)不属于 c c c 类;(b)难以区分 c c c 类和它的GT类别。因此,引入像素级类别排序 O i j = a r g s o r t ( p i j ) O_{ij}=argsort(p_{ij}) Oij=argsort(pij)。显然有 O i j ( a r g m a x ( p i j ) ) = 0 O_{ij}(argmax(p_{ij}))=0 Oij(argmax(pij))=0 O i j ( a r g m i n ( p i j ) ) = C − 1 O_{ij}(argmin(p_{ij}))=C-1 Oij(argmin(pij))=C1
在这里插入图片描述
其中 r l r_l rl 为低排序阈值,设置为3。两个指标分别反应特征(a)和特征(b)。

这里就是把不是 c c c 类,但模型预测的 c c c 类的置信度在所有类的排名排前 r l r_l rl 的样本作为负样本。

对于第 i i i 个未标记图像,一个合格的 c c c 类的负样本应该:(a)不可靠;(b)可能不属于 c c c 类;(c)不属于最不可能的类。类似的,可以用 O i j O_{ij} Oij 来定义 n i j u ( c ) n_{ij}^u(c) niju(c)
在这里插入图片描述

其中 r h r_h rh 是高排序阈值,设置为20。最终 c c c 类的负样本采样如下:
在这里插入图片描述
由于数据集的长尾现象,部分类别的负候选在小批量中极少。为了保持稳定的负样本数量,作者采样一个类别内存库 Q c Q_c Qc(FIFO队列)。

算法伪代码如算法1。
在这里插入图片描述

5 效果

5.1 与SOTA方法对比

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

5.2 消融实验

通过像素级预测的熵值计算可信度,并利用不同可信度的像素进行消融实验。“Unrliable”表示从熵值最高的20%的像素中选择负样本,“Reliable”表示从最低的20%中选择,“All”表示不考虑熵的采样。实验证明不可靠伪标注确实有帮助。
在这里插入图片描述
低排名和高排名的阈值的消融实验。
在这里插入图片描述
各模块的消融实验。
在这里插入图片描述)
不可靠像素的初始比例的消融实验。
在这里插入图片描述

5.3 定性结果

通过对分割结果的可视化,发现本文方法在模糊区域(例如,不同对象之间的边界)上取得了更好的效果。
在这里插入图片描述

6 结论

类似于在线难负样本挖掘。

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

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

相关文章

北京崇文门中医院贾英才主任:战胜头晕,重获“清醒人生”

头晕&#xff0c;这个看似常见却又恼人的症状&#xff0c;常常让患者的生活陷入困境。在北京崇文门中医院&#xff0c;有个叫贾英才的医生&#xff0c;他凭借医术&#xff0c;给不少头晕患者带去了希望。 北京崇文门中医院贾英才主任在医学领域辛勤耕耘多年&#xff0c;对于头晕…

ubuntu20从docker安装到制作自己的镜像使用记录

ubuntu20从docker安装到制作自己的镜像使用记录 第一章&#xff1a;配置环境 1.ubuntu20 2.docker镜像18.04 3.参考&#xff1a;https://www.runoob.com/docker/docker-tutorial.html 第二章&#xff1a;安装docker 一、安装docker 参考1&#xff1a;Ubuntu安装docker并运…

Spring Cloud微服务项目文件上传/下载

在现代的微服务架构中&#xff0c;文件上传与下载是常见的需求&#xff0c;尤其是在需要处理大量文件数据的系统中。Spring Cloud 提供了灵活的工具和组件&#xff0c;使得在微服务中实现文件上传和下载变得高效而简便。 本文博主将详细介绍如何在 Spring Cloud 微服务项目中实…

【Kubernetes】k8s集群之Pod容器资源限制和三种探针

目录 一、Pod容器的资源限制 1.资源限制 2.Pod 和容器的资源请求与限制 3.CPU 资源单位 4.内存资源单位 二、Pod容器的三种探针 1.探针的三种规则 2.Probe支持三种检查方法&#xff1a; 一、Pod容器的资源限制 1.资源限制 当定义 Pod 时可以选择性地为每个容器设定所…

成都数字产业中心崛起,树莓集团如何加速国际数字影像产业园的全球步伐?

在数字化浪潮的推动下&#xff0c;成都数字产业中心近年来强势崛起&#xff0c;展现出令人瞩目的发展态势。据统计&#xff0c;过去五年间&#xff0c;成都数字产业的年均增长率超过了 20%&#xff0c;这一数据充分证明了其强大的发展动力。而在这片充满活力与创新的土地上&…

数据结构 JAVADS ——部分栈题目分享 (持续更新版)

前言 大概十天前,笔者更新了如何手搓一个简易的栈 入门数据结构JAVA DS ——手搓 栈-CSDN博客 在本篇博客中,笔者就分享几个题目,这同样是一个持续 更新的博客,但是我不保证更新频率就是了 哈哈! 那么我们就来看题目吧 第一题 1.小蓝的括号串1 - 蓝桥云课 (lanqiao.cn) …

如何在 Windows 上设置 MacOS 云主机

在Windows上设置MacOS云主机实际上涉及在Windows环境中模拟或远程管理MacOS系统&#xff0c;因为直接在Windows上运行MacOS作为云主机的主操作系统是不可能的&#xff0c;因为MacOS是为苹果硬件设计的。不过&#xff0c;有几种方法可以实现类似的功能&#xff1a; 1. 使用虚拟机…

Haskell HTTP请求:如何解读响应状态

在互联网技术领域&#xff0c;HTTP请求是客户端与服务器之间通信的基础。无论是网页浏览、API调用还是网络服务的交互&#xff0c;HTTP协议都扮演着核心角色。在本文中&#xff0c;我们将探讨如何在Haskell编程语言中发起HTTP请求&#xff0c;并重点介绍如何解读HTTP响应状态。…

学懂C++ (二十一):高级教程——深入C++多线程开发详解

C多线程开发详解 多线程编程是现代应用程序开发中不可或缺的一部分。C11引入了对多线程的支持&#xff0c;使得程序员能够更方便地利用多核处理器&#xff0c;提高程序的性能和响应能力。本文将全面而深入地探讨C的多线程相关概念&#xff0c;包括线程的创建与管理、互斥量…

PDF怎么在线转Word?介绍四种转换方案

PDF怎么在线转Word&#xff1f;在数字化办公时代&#xff0c;文档的互换性变得尤为重要。PDF格式因其跨平台兼容性和版面固定性而广受欢迎&#xff0c;但有时我们可能需要将PDF文件转换为Word文档&#xff0c;以便进行编辑或进一步处理。以下是四种常见的在线PDF转Word的方法&a…

大数据湖体系规划与建设方案(51页PPT)

方案介绍&#xff1a; 大数据湖通过集中存储各种类型的数据&#xff08;包括结构化、半结构化和非结构化数据&#xff09;&#xff0c;提供了更加灵活、可扩展的数据处理和分析能力。其核心理念是“存储一切&#xff0c;分析一切&#xff0c;创建所需”&#xff0c;即将所有数…

【论文复现】Transformer

Transformer 前言网络架构数据处理词嵌入向量位置编码 模型定义多头注意力机制编码器Encoder解码器Decoder 前言 Transformer应用范围非常广泛&#xff0c;涵盖了自然语言处理、时间序列数据预测、图像处理等领域。由于笔者之前都是应用&#xff0c;但是对于原理并没有深刻理解…

树莓派Pico 2,RP2350 现已发售!

https://www.bilibili.com/video/BV1n5YeeMETu/?vd_sourcea637ced2b66f15709d16fcbaceeb47a9 我们很高兴地宣布推出Raspberry Pi Pico 2&#xff0c;我们的第二代微控制器板&#xff1a;采用了由我们自主设计的新款高性能安全型微控制器 RP2350。 Raspberry Pi Pico 2&#…

5 种经过验证的查询翻译技术可提高您的 RAG 性能

如何在用户输入模糊的情况下获得近乎完美的 LLM 性能 欢迎来到雲闪世界。你认为用户会向 LLM 提出完美的问题&#xff0c;这是大错特错。如果我们不直接执行&#xff0c;而是细化用户的问题&#xff0c;结果会怎样&#xff1f;这就是查询转换。 我们开发了一款应用程序&#x…

查看DrawCall流程 Unity工具 Frame Debug

切换帧率 基础面板 可以看到 我们可以通过切换面板 看DrwaCall产生 MainTex 就是材质了 如何优化&#xff1f; 合批 就会一次性直接渲染

双端队列Deque

Deque&#xff08;双端队列&#xff09;是一种允许在两端都进行插入和删除操作的线性数据结构。它在 Java Collections Framework 中作为一个重要的接口&#xff0c;具有以下结构特点&#xff1a; 1. 双端操作 两端插入和删除&#xff1a;与传统队列&#xff08;只能在一端入…

迭代次数顺序的双重性

(A,B)---6*30*2---(0,1)(1,0) 收敛误差为7e-4&#xff0c;收敛199次取迭代次数平均值&#xff0c; 让A是4a1&#xff0c;4a2&#xff0c;…&#xff0c;4a16&#xff0c;B全是0得到迭代次数的顺序就是1&#xff0c;2&#xff0c;…&#xff0c;16. 但是如果让训练集A-B矩阵的高…

kafka-go使用:以及kafka一些基本概念说明

关于kafka 作为开发人员kafka中最常关注的几个概念&#xff0c;是topic,partition和group这几个概念。topic是主题的意思&#xff0c;简单的说topic是数据主题&#xff0c;这样解释好像显得很苍白&#xff0c;只是做了个翻译。一图胜前言&#xff0c;我们还是通过图解来说明。…

PDF密码移除技巧: 五大 PDF 密码移除器

如果您想解密或删除 PDF 密码&#xff0c;该怎么办&#xff1f;PDF 是一种经常用于商业的格式&#xff0c;您可以在培训、教育和商业场合使用它。添加这些 PDF 文件的密码可以保护您的安全和隐私。因此&#xff0c;有很多 PDF 都用密码加密&#xff0c;当您想要查看这些 PDF 时…

PTrade常见问题系列22

反馈定义的上午7点执行run_daily函数&#xff0c;但是每周一上午都没法正常执行&#xff1f; 1、run_daily函数加载在initialize函数中&#xff0c;执行后才会创建定时任务&#xff1b; 2、由于周末会有例行重启操作&#xff0c;在重启以后拉起交易时相当于非交易日启动的交易…