cvpr 2024|从未标注数据中重生标注特征,用于半监督语义分割
bigegpt 2025-05-08 16:52 5 浏览
研究背景
随着深度学习在语义分割领域的应用日益广泛,对数据标注的需求也急剧增加。然而,高质量的像素级标注是一项耗时且成本高昂的任务。为了缓解这一问题,半监督语义分割(SSSS)方法被提出,该方法利用有限的标注数据和大量未标注数据来训练模型。然而,现有方法普遍存在标注数据主导训练过程的问题,导致未标注数据的伪标签质量不高,进而影响整体性能。
研究意义
本研究旨在解决半监督语义分割中标注数据主导训练过程的问题,通过从未标注数据中重生标注特征,提高伪标签的质量,进而提升模型的整体性能。该研究对于减少语义分割任务对标注数据的依赖、降低标注成本具有重要意义,并有望推动半监督学习在更多领域的应用。
文献综述
语义分割
语义分割是一项密集的预测任务,要求模型具有类别感知能力。近年来,基于视觉变换器(ViT)的方法在语义分割领域取得了显著进展,这些方法通过捕捉长距离依赖关系提高了分割性能。然而,在半监督设置下,这些方法由于具有较弱的归纳偏差且依赖于大量训练数据,因此难以取得与全监督学习相同的性能。
半监督语义分割
现有的半监督语义分割方法主要分为两类:基于教师-学生的框架和基于交叉伪监督的框架。这些方法通常将标注数据和未标注数据的训练过程分离,导致标注数据主导训练过程,未标注数据的伪标签质量不高。此外,一些研究探索了将ViT应用于半监督语义分割,但这些方法大多只是简单地将ViT作为CNN的补充,没有充分发挥ViT的潜力。
具体方法
本研究提出了一种名为AllSpark的方法,通过从未标注数据中重生标注特征来解决标注数据主导训练过程的问题。AllSpark方法的核心是一个通道级交叉注意力机制,该机制利用标注数据特征作为查询,未标注数据特征作为键和值,通过计算相似度矩阵来重建标注特征。为了进一步扩大未标注特征空间,研究还引入了一个语义记忆(S-Mem)来存储之前的未标注特征,并通过通道级语义分组策略来更新S-Mem。
图1:训练数据流对比
- 说明:图1展示了传统方法与AllSpark方法在训练数据流上的对比。(a) 传统方法:特点:标签数据和未标签数据的训练流是分开的。问题:标签数据主导训练过程,导致未标签数据生成的伪标签质量低,进而影响最终结果。(b) AllSpark方法:特点:通过未标签数据重生标签数据特征,使标签数据训练流中引入多样性。优势:缓解了标签数据主导的问题,有助于提升模型性能。
图2:AllSpark核心思想
- 说明:图2通过示意图展示了AllSpark的核心思想,即利用未标签数据的特征来重生标签数据的特征。过程:标签数据特征作为查询(Query)。未标签数据特征作为键(Key)和值(Value)。通过计算相似度矩阵,强调最相似的未标签数据特征通道来重构标签数据特征。结果:重生的标签数据特征既精确又具有多样性。
图3:AllSpark模块概述
- 说明:图3展示了AllSpark模块在一般分割模型中的位置及其组成部分。位置:AllSpark模块位于编码器和解码器之间。组成:通道交叉注意力:核心部分,用于利用未标签数据重生标签数据特征。语义记忆:存储之前的未标签数据特征,以扩大特征空间。通道语义分组策略:用于更新语义记忆,确保每个类别有足够的语义信息。
该公式定义了半监督语义分割的基本损失函数,包括监督损失(L_s)和无监督损失(L_u)。N_L 和 N_U 分别是标记数据和未标记数据的数量。L_{CE} 表示交叉熵损失,p_l^i 和 y^i 分别是标记数据的预测和真实标签,p_u^j 和 \hat{y}^j 分别是未标记数据的预测和伪标签。
公式2,在通道交叉注意力机制中,标记数据的隐藏特征 h_l 作为查询(q),未标记数据的隐藏特征 h_u 分别作为键(k)和值(v)。w_q, w_k, w_v 是对应的变换权重。
公式3,计算通道交叉注意力机制的输出。首先计算查询 q 和键 k 的点积,并通过实例归一化 ψ 和缩放因子 \sqrt{d_k} 进行归一化,然后应用 softmax 函数 σ 得到注意力权重,最后与值 v 相乘得到输出。
图4:语义记忆与通道语义分组
- 说明:图4详细展示了语义记忆(S-Mem)的结构和通道语义分组策略。语义记忆:结构:按类别划分的队列,存储每个类别的特征通道。作用:提供丰富的未标签数据特征,用于重生标签数据特征。通道语义分组策略:过程:计算未标签数据特征通道与概率图之间的相似度,根据相似度将通道分组并加入语义记忆的对应类别槽中。结果:确保语义记忆中每个类别都有足够的准确特征。
表1:PASCAL VOC 2012原始数据集上的比较
- 内容:该表展示了在PASCAL VOC 2012原始数据集上,不同方法在不同标注数据量(1/16、1/8、1/4、1/2和全量)下的mIoU(平均交并比)性能。
- 关键发现:AllSpark在所有标注数据量下均取得了最高的mIoU,表明其在不同标注数据稀缺程度下均能有效提升性能。相较于其他最先进的方法(如UniMatch),AllSpark在全量标注数据下提升了约2.12%的mIoU,显示出显著的性能优势。
表2:Cityscapes数据集上的比较
- 内容:该表比较了在Cityscapes数据集上,不同方法在不同标注数据量下的mIoU性能。
- 关键发现:AllSpark在所有标注数据量下均表现优异,且在全量标注数据下达到了81.39%的mIoU,超过了其他所有方法。相较于次优方法(如CFCG),AllSpark在全量标注数据下提升了约0.8%的mIoU。
表3:PASCAL VOC 2012增强数据集上的比较
- 内容:该表展示了在PASCAL VOC 2012增强数据集上,不同方法在不同标注数据量下的mIoU性能,同时包含了使用与U2PL相同划分方法的结果。
- 关键发现:AllSpark在所有划分协议下均取得了最高的mIoU,进一步证明了其有效性。在使用与U2PL相同的高质量标注数据时,AllSpark的性能增益更为显著,达到了约0.47%的平均mIoU提升。
表4:COCO数据集上的比较
- 内容:该表比较了在COCO数据集上,不同方法在不同标注数据量下的mIoU性能。
- 关键发现:AllSpark在所有划分协议下均超过了其他方法,显示了其在处理大规模和多样化数据集时的强大能力。在最稀缺的标注数据量下(1/512),AllSpark仍然实现了34.10%的mIoU,相较于次优方法(如LogicDiag)有约1.03%的提升。
图5:标签特征通道重生前后对比
- 说明:图5通过可视化对比了标签特征通道在通过AllSpark模块重生前后的变化。重生前:标签特征通道主要关注相似的区域。重生后:标签特征通道开始关注不同的对象或上下文,表现出更高的多样性和精确性。意义:这种变化有助于缓解标签数据主导的问题,提升模型的泛化能力。
图6:相似性引导的通道分组策略的有效性
- 内容:此图展示了使用相似性引导的通道分组策略(CSG)与盲目地将所有通道添加到语义记忆(S-Mem)中的比较。
- 解释:x轴:类别。y轴:被选中并添加到相应类别槽的通道数量。结果:使用CSG策略时,每个类别的通道数量更加均衡,且整体性能优于盲目添加通道的方法(如表5所示,CSG带来了0.79%/0.64%的性能提升)。
表5:PASCAL VOC 2012数据集上AllSpark组件的有效性
- 内容:该表分析了AllSpark中不同组件(通道级交叉注意力机制CCA、语义记忆S-Mem和通道语义分组策略CSG)对性能的影响。
- 关键发现:通道级交叉注意力机制是AllSpark的核心,它显著提升了基线方法的性能(约8.06%)。语义记忆和通道语义分组策略进一步提升了性能,分别带来了约0.85%和0.79%的mIoU增益。当所有组件结合使用时,AllSpark相较于基线方法提升了约9.70%的mIoU,证明了其各个组件的有效性和必要性。
图7:语义记忆的部分可视化
- 内容:此图展示了语义记忆(S-Mem)中存储的部分特征通道。
- 解释:每个图像表示一个通道。通过在未标记的训练数据上运行推理,可以将原始图像放在每个通道下方以便更好地可视化。整体而言,S-Mem存储了与类别槽相关的准确特征,不仅扩大了与当前标记数据相同类别的未标记特征空间,还包含了作为计算相似度矩阵时负样本的其他类别特征。
表6:不同分割骨干网络在PASCAL VOC 2012数据集上的消融实验
- 目的:验证AllSpark模块在不同分割骨干网络上的表现,以及与其他SOTA方法的对比。
- 结果:当使用ResNet101+DeepLabV3+作为骨干网络时,AllSpark的表现(77.92 mIoU)优于其他SOTA方法(如CCVC的74.40 mIoU,DGCL的77.14 mIoU,UniMatch的77.19 mIoU)。当切换到SegFormer-B4/B5作为骨干网络时,其他SOTA方法的性能有所下降,而AllSpark的性能也有所下降,但仍然优于其他方法。这表明AllSpark与更强的骨干网络结合时仍能保持优势,但CNN骨干网络由于其有限的感受野,在AllSpark框架下表现较差。
图8:Transformer与CNN特征通道的比较
- 内容:此图比较了Transformer和CNN在处理大型对象(如汽车)时的注意力图。
- 解释:Transformer:能够捕捉到更广泛的上下文信息,注意力分布更加均匀。CNN:注意力图往往优先于少数显著的局部部分(如车轮),这可能导致在处理由AllSpark模块处理特征时,错误地查询到属于不同对象相似部分的通道(如飞机起落架的车轮),从而引入不必要的噪声和性能下降。
相关推荐
- 得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践
-
一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...
- warm-flow新春版:网关直连和流程图重构
-
本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...
- 扣子空间体验报告
-
在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...
- spider-flow:开源的可视化方式定义爬虫方案
-
spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...
- solon-flow 你好世界!
-
solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...
- 新一代开源爬虫平台:SpiderFlow
-
SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...
- 通过 SQL 训练机器学习模型的引擎
-
关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...
- 鼠须管输入法rime for Mac
-
鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...
- Go语言 1.20 版本正式发布:新版详细介绍
-
Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...
- iOS 10平台SpriteKit新特性之Tile Maps(上)
-
简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...
- 程序员简历例句—范例Java、Python、C++模板
-
个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...
- Telerik UI for iOS Q3 2015正式发布
-
近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...
- ios使用ijkplayer+nginx进行视频直播
-
上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...
- IOS技术分享|iOS快速生成开发文档(一)
-
前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...
- macOS下配置VS Code C++开发环境
-
本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- httperror403.14-forbidden (63)
- logstashinput (65)
- hadoop端口 (65)
- dockernetworkconnect (63)
- esxi7 (63)
- vue阻止冒泡 (67)
- c#for循环 (63)
- oracle时间戳转换日期 (64)
- jquery跨域 (68)
- php写入文件 (73)
- java大写转小写 (63)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)