[Semi-笔记] 2023_TIP

目录

  • 概要
  • 一:Conservative-Progressive Collaborative Learning(保守渐进式协作学习)
    • 挑战:
    • 解决:
  • 二:Pseudo Label Determination for Disagreement(伪标签分歧判定)
    • 挑战:
    • 解决:
  • 三:Confidence-based Dynamic Loss(基于置信度的动态损失)
    • 挑战:
    • 解决:
  • 实验结果
    • 消融实验
  • 小结
  • 论文地址
  • 代码地址

分享一篇2023年TIP的文章。

概要

伪标签在仅利用高质量伪标签利用所有伪标签之间始终存在权衡。针对这个问题,这篇文章提出了一种新颖的学习方法,称为保守渐进协作学习(CPCL),其中两个预测网络并行训练,并根据两个预测的一致和不一致来实现伪监督。一个网络通过交集监督寻求共同点,并接受高质量标签的监督,以确保监督更可靠;而另一个网络通过联合监督保留差异,并接受所有伪标签的监督,从而实现保守进化与渐进探索的协同。为了减少可疑伪标签的影响,根据预测置信度对损失进行动态重新加权。

一:Conservative-Progressive Collaborative Learning(保守渐进式协作学习)

挑战:

尽管半监督学习仍处于起步阶段,但已经完成了一些开创性的工作。熵最小化和一致性正则化是近年来提出的两种典型方法。熵最小化方法首先在标记图像上训练的模型,之后在未标记图像上预测生成伪标签,并使用扩展训练数据重新训练模型。一致性正则化方法旨在强制预测在各种扰动下的不变性,包括对输入图像、特征和网络的扰动。
在伪监督过程中,这两种方法都存在确认偏差,这是由伪标签的错误引起的。为了解决这个问题,有一些工作采用预测置信度作为选择可靠伪标签的指标虽然设置置信度阈值可以避免性能下降,但是很大一部分未标记的数据被浪费了

解决:

在这项工作中,提出了保守渐进协作学习(CPCL),它分别通过仅使用高质量伪标签的交叉监督使用大量伪标签的并集监督来训练两个并行网络,并实现保守的协作进化和渐进探索。两个网络具有相同的结构,但初始化不同。伪标签是根据两个网络对未标记图像的预测生成的。
具体来说,一个网络是保守的,由更可靠的“交叉”部分监督,而另一个网络是进步的,在“并集”部分的伪监督下探索不一致的预测。因此,两个网络在异构知识下进行训练,可以在一定程度上减少模型耦合问题。此外,预测置信度用于损失重新加权,以处理不可避免的噪声伪标签。具体框架如下:
在这里插入图片描述

其由两个平行的分支组成,一个是保守分支,另一个是进步分支
保守分支在交集伪标签的监督下,利用高质量的标签来确保更可靠的监督,而进步分支则在并集伪标签的监督下,实现对分歧部分的探索。每个分支中的分割网络共享相同的结构并具有不同的初始化。
通过输入两个未标记的图像 X1 和 X2,并利用强增强方法(例如 CutMix、CutOut 和 CowMix)生成增强图像 Xs。这篇文章采用CutMix,需要两个输入图像并基于随机掩模选择输出像素。
在这里插入图片描述

这就是CutMix的过程,a,b为两个输入图像,mask为随机生成的掩码。

在这里插入图片描述

通过将两个输入图像X1和X2进行CutMix后生成增强后的图像Xs

保守分支为例:
第一步:将三幅图像输入网络fθc(X),分割预测为Y1 cw、Y2 cw和Ycs。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二步:使用与输入相同的混合掩码进一步混合输出 Y1 cw 和 Y2 cw,结果为 Ycw。
在这里插入图片描述

这一步相当于对两个输入图像X1和X2的伪标签进行相同的CutMix操作,其中的混合掩码相同,便于和数据增强后的输入图像Xs生成的伪标签进行后续对比。

类似地,我们可以得到另一个分支的相应输出,分别记为Y1 pw、Y2 pw、Yps,以及混合输出Ypw。
伪标签的生成是基于一致和不一致的,并且都是像素级的。对于像素pi,如果Ycw的预测与Ypw的预测相同,则两个网络在pi处达成一致,否则彼此不一致。
在这里插入图片描述

其中 yi cw 是 Ycw 在 pi 处的预测,yi pw 是 Ypw 的相应预测。

如果网络的两个预测彼此一致,则特定像素的伪标签很容易确定。它被确定为该像素处的预测
在这里插入图片描述
其中 li a 是像素 pi 处一致部分 La 的伪标签。然而,确定不一致部分 Ld 的逐像素伪标签要复杂得多,因为两个网络的预测不同。我们没有选择具有更高置信度的预测,而是根据类别分歧指标来确定伪标签,获得一致部分和不一致部分的伪标签(这将在下面详细阐述)。利用 La 和 Ld 混合Union Lunion 的伪标签
在这里插入图片描述

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

交集 Linter 的伪标签直接使用 La 生成。最后,将交集和并集伪监督分别应用于保守分支和渐进分支。

最后仅将网络保留在保守分支中以在推理模式下生成分割预测。

二:Pseudo Label Determination for Disagreement(伪标签分歧判定)

挑战:

典型且可行的方法是选择置信度较高的预测作为伪标签。然而,这种方法只关注精确像素的信息,这是有限的。

解决:

为了处理同一像素上两个预测之间的不一致,引入了一种基于类不一致指标的不一致部分的伪标签确定方法。转向整个预测的类别分歧指标,从宏观角度来看待。具体来说,构造一致性矩阵 M ∈ RC×C,如下图所示,并据此计算类别不一致指标 I。 I 较高的语义类别是困难类别,更容易引起混乱。像素pi处的伪标签,其中yi cw 不等于 yi pw,被确定为具有较高分歧指标的预测,以实现对具有强烈好奇心的分歧部分的渐进式探索。
在这里插入图片描述

协议矩阵的图示。 mj,k 是 yi cw 为 cj 且 yi pw 为 ck (j, k ∈ [1, C]) 的像素数,C 是类别数。当 j = k 时,两个预测一致,否则不一致。

基于类不一致指标的伪标签确定算法如算法1所示。
在这里插入图片描述

算法流程:
基于类分歧指标的伪标签判定算法
输入:保守分支Ycw的预测输出和进步分支Ypw的输出
输出:不一致部分 Ld 的伪标签
1.计算一致性矩阵M ∈ RC×C
2.计算类间分歧指标 I
3.确定像素pi处的伪标签
返回:Ld

这里针对第2步计算类间分歧指标作出自己的理解:
首先计算的一致性矩阵,mj,k 是保守分支预测 yi cw 为 j 类并且 进步分支预测yi pw 为 k 类的像素数量
根据类间分歧第一个公式 Ij 为例:
分子为mj,j 表示保守分支和进步分支预测相同的类的像素数量,分母则是总和,如果两个分支预测相同的数量占比大的话,则Ij 最终较小;

举例:二分类问题,预测相同的数量为10预测不同的数量为1,则10/(10+1),接近于1。最后计算的I j 值小。
如果预测相同的数量为1,预测不同的数量为10,则1/(1+10),接近于0,最后计算的I j 值大。
因此I 较高的语义类别是困难类别
在第3步确定像素pi处的伪标签时,如果Ij大于Ik 则选择I j 。因为这里需要的是不一致部分的伪标签。

三:Confidence-based Dynamic Loss(基于置信度的动态损失)

挑战:

前面方法获得了未标记数据的伪标签。然而,噪声标签是不可避免的,并且生成的伪标签总是存在一些错误,因为它是由算法而不是人类自动注释的。许多研究探索了图像去噪算法,与图像噪声不同,伪标签噪声难以建模或去噪。

解决:

为了解决这个问题,提出了基于置信度的动态损失来处理不可靠的伪标签。与置信阈值相反,置信阈值需要预定义阈值并且无法充分利用所有未标记的数据,我们利用置信度来重新加权损失。逐像素预测置信度定义为最大 softmax 概率。令bi c 表示保守分支在第i个像素处的预测置信度,类似地,进步分支的预测置信度表示为bi p 。因此,基于置信度的动态权重定义为:
在这里插入图片描述

理解:第二行最后的Yi cw 逼近Li d,证明保守分支的预测趋近于不一致部分,代表bi c在该像素的预测置信度较低,则给这个像素的权重置为bi c,降低低置信度伪标签的影响。

因此,降低了低置信度的可疑伪标签的影响。未标记数据 LU 的重新加权损失定义为

在这里插入图片描述
其中li inter和li union是Linter和Lunion在第i个像素处的伪标签,fi θ(Xs)是分割网络在第i个像素处对未标记图像Xs的输出,CE(· ) 是交叉熵损失函数。根据动态的基于置信度的权重,对每个像素的损失进行重新加权。

也就是保守分支只使用高置信度的像素进行CE损失学习,进步分支则对高低置信度的像素都进行学习。其权重也是用的动态基于置信度的权重,对每个像素的损失进行重新加权。

利用标记数据的训练是采用传统的监督方式。
在这里插入图片描述
总损失:将监督训练和无监督训练的分离损失合并到整个训练目标中
在这里插入图片描述

实验结果

在这里插入图片描述

消融实验

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

当不采用基于置信度的动态损失时,使用不重新加权的交叉熵损失函数。可以看出,所提出的三个模块都是有效的。针对噪声标签,提出了基于置信度的动态损失。由于引入动态损失,mIoU
分别增加了 2.37% 和 1.70%。交叉监督的改进更加明显,因为一致部分的伪标签的确定是像素级的,更容易受到噪声标签的影响。

在这里插入图片描述

同时研究了针对分歧部分的不同伪标记策略并分析了定量结果。比较了四种相关策略,包括基于像素置信度(较高和较低)和类混淆(较高和较低)的伪标记,逐像素置信度表示确切像素的不确定性。
1.具有较高置信度的伪标记是常见的保守策略。然而,当与交叉口伪监督合作时,改进不太明显,因为两者都表现得保守。
2.基于较低置信度的探索是渐进的,但它更可能受到逐像素噪声的影响。所提出的动态损失可以在一定程度上减少影响,其mIoU达到74.30%。
3.与像素级置信度不同,类级混淆可以从宏观角度衡量语义歧义。混淆度较低的伪标记与基于较高置信度的伪标记类似,但在类别级别,四种比较策略中性能最差(74.17 mIoU)。
4.由于以强烈的好奇心探索困难的语义类,即混淆度较高的伪标签可能有助于模型进行局部优化,因此在 CPCL 中使用的所提出的策略取得了更好的性能。

在这里插入图片描述
该方法在低数据情况下的性能优势是显而易见的。可以有效减少对标记数据的需求。

小结

这篇文章提出保守渐进协作学习(CPCL),不仅可以利用高质量标签的优势,还可以充分利用大量低质量的未标记的数据。在低数据量情况下也同时表现突出。

论文地址

pdf地址

代码地址

https://github.com

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

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

相关文章

利用python进行接口测试及类型介绍

前言 其实我觉得接口测试很简单,比一般的功能测试还简单(这话我先这样说,以后可能会删O(∩_∩)O哈!),现在找工作好多公司都要求有接口测试经验,也有好多人问我(也就两三个人&#x…

python离线安装依赖库 依赖库版本

问题:python开发过程中,下载安装某一功能模块,常常需要各种依赖库支持。如果在线安装,则非常方便简单,但往往需要离线下载所需的依赖库。但各种依赖库存在许多版本,如何准确快速知道我们所需要的依赖库呢&a…

解决微信小程序代码包大小限制方法

1 为什么微信小程序单个包的大小限制为 2MB 微信小程序单个包的大小限制为 2MB 是出于以下几个考虑: 保证小程序的启动速度:小程序的启动速度是影响用户体验的关键因素之一。如果包太大,会导致小程序启动时间过长,从而影响用户体…

node安装

这里写目录标题 https://nodejs.cn/ https://registry.npmmirror.com/binary.html?pathnode/ https://registry.npmmirror.com/binary.html?pathnode/v11.0.0/

初识CSS样式 与 文本背景样式

目录 前言: 1.什么是CSS: 2.关于css的主要特性: 2.1层叠性: 2.2继承性: 2.3优先级: 2.4.CSS的组成结构: 3.css样式的三种写法: 3.1内联样式: 3.1.2存在的优点和缺点: 3.2内部样式表: 3.2.2存在的优点和缺点:…

JAVA 100道题(11)

11.使用ArrayList存储一组整数,并编写一个方法打印所有偶数。 它使用ArrayList来存储一组整数,并编写一个方法来打印所有的偶数。 java复制代码 import java.util.ArrayList; public class Main { public static void main(String[] args) { // 创建一个…

[蓝桥杯 2019 省 A] 修改数组

题目链接 [蓝桥杯 2019 省 A] 修改数组 题目描述 给定一个长度为 N N N 的数组 A [ A 1 , A 2 , A 3 , . . . , A N ] A [A_1, A_2, A_3, ...,A_N] A[A1​,A2​,A3​,...,AN​],数组中有可能有重复出现的整数。 现在小明要按以下方法将其修改为没有重复整数的…

Java实现Cache Aside Pattern 例子

简单的Java实现Cache Aside pattern &#xff1a; import java.util.HashMap; import java.util.Map;public class CacheAsidePattern {// 模拟数据库或其他数据源static class Database {private static Map<String, String> data new HashMap<>();static {data…

CAN总线Stuff Error

CAN总线Stuff Error&#xff0c;即填充错误&#xff0c;指的是在使用位填充编码的位流中&#xff0c;出现了第六个连续相同的位电平。这种错误通常发生在位填充机制被用于CAN总线通信中&#xff0c;以确保数据传输的正确性和稳定性。以下是一些可能导致Stuff Error的原因&#…

每日三个JAVA经典面试题(十九)

1.Java Concurrency API 中的 Lock 接口(Lock interface)是什么&#xff1f;对比同步它有什么优势&#xff1f;Java并发API中的Lock接口提供了一种比传统synchronized块或方法更灵活、更强大的线程同步机制。Lock接口允许更细粒度的锁控制&#xff0c;通过它可以实现更复杂的线…

一、rv1126开发之视频输入和视频编码

RV1126 H264/HEVC编码流程 一、RV1126编码的流程图&#xff1a; 二、每个代码模块详细讲解 2.1. VI模块的创建 VI模块的初始化&#xff1a;关键在于VI_CHN_ATTR_S结构体&#xff0c;这个结构体是VI设置的结构体。这个结构体的成员变量包括&#xff1a;pcVideoNode&#xff0…

php实现二进制权限控制示例,二进制权限控制实现思路,二进制权限控制逻辑,二进制权限控制好处,二进制权限控制弊端,二进制权限控制存权限查权限

背景:在群里看到大佬们分享这个知识点自己实操了一下做了个总结 1.二进制权限控制实现原理思路及逻辑 对于二进制权限控制,一个常见的做法是将权限用一个整数表示,然后将这个整数转换为二进制进行存储和查找。以下是一种简单的实现思路: 存储权限信息: 将权限信息转换为…

震惊!!!原来这就是操作系统

震惊!!!原来这就是操作系统 一:什么是操作系统1:管理2:操作系统的组成 二:进程:1:概念2:进程的管理方式2.1:描述2.2:组织 一:什么是操作系统 CPU,内存,硬盘…这些都是硬件,而操作系统就是软件,可以让计算机按照一定的规则进行执行. 软件是一组指令的集合, 1:管理 **操作系统…

flask之请求钩子

请求钩子是通过装饰器的形式实现&#xff0c;Flask支持如下四种请求钩子&#xff1a; 1、before_first_request: 在第一次请求处理之前先被执行 2、before_request: 在每次请求前执行 3、after_request: 在每次请求处理之后被执行 接受一个参数&#xff1a;视图函数的响应在…

[力扣 129]求根节点到叶节点之和

题目描述&#xff1a; 思路&#xff1a; 可以采用递归回溯。递归访问左->右->根节点并记录路径。到叶节点后&#xff0c;计算数字并相加。 代码&#xff1a; class Solution:def sumNumbers(self, root: TreeNode) -> int:res 0path []def backtrace(root):nonl…

Python如何行转列代码

在Python中&#xff0c;如果你想要对数据框&#xff08;DataFrame&#xff09;中的某一列进行操作&#xff0c;你可以使用Pandas库&#xff0c;这是处理数据时常用的一个库。以下是一个简单的例子&#xff0c;展示了如何对DataFrame中的某一列进行操作&#xff1a; 首先&#…

anuglar中获取iframe对象, 用iframe进行postMessage通信

如果你想在 Angular 中获取 iframe 对象并确保 iframe 加载完成后调用 postMessage 发送消息&#xff0c;可以按照以下步骤进行操作&#xff1a; 在 HTML 模板中&#xff0c;使用 ngIf 来控制 iframe 的显示与隐藏&#xff0c;并为 iframe 添加一个标识符&#xff08;例如 #my…

ISBN号码

题目描述 每一本正式出版的图书都有一个 ISBN 号码与之对应&#xff0c;ISBN 码包括 99 位数字、11 位识别码和 33 位分隔符&#xff0c;其规定格式如 x-xxx-xxxxx-x&#xff0c;其中符号 - 就是分隔符&#xff08;键盘上的减号&#xff09;&#xff0c;最后一位是识别码&…

Autosar Crypto Driver学习笔记(二)

文章目录 Crypto DriverFunction definitionsGeneral APICrypto_InitCrypto_GetVersionInfo Job Processing InterfaceCrypto_ProcessJob Job Cancellation InterfaceKey Management InterfaceKey Setting Interface密钥设置接口Crypto_KeyElementSetCrypto_KeySetValid Key Ex…

【GameFramework框架内置模块】11、网络(Network)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群&#xff1a;398291828 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a;…