APC论文总结

news2024/10/7 5:50:57

论文详情

论文标题:APC: Adaptive Patch Contrast for Weakly Supervised Semantic Segmentation

论文作者:Wangyu Wu,Tianhong Dai,Zhenhong Chen,Xiaowei Huang,Fei Ma,Jimin Xiao

发表时间:2024

链接:https://arxiv.org/abs/2407.10649

摘要

弱监督语义分割(Weakly Supervised Semantic Segmentation, WSSS)仅使用图像级标签,因其成本效益高而备受关注。典型框架是使用图像级标签作为训练数据生成像素级伪标签,并对其进行精炼。最近,基于视觉Transformer(Vision Transformer, ViT)的方法在生成可靠的伪标签方面展现出优越的能力,尤其是在识别完整的目标区域时,相较于卷积神经网络(CNN)方法表现更佳。然而,目前的ViT方法在使用patch embedding时存在一些局限性,容易受到某些异常patch的主导影响,此外,许多多阶段方法训练时间长且耗时,因此缺乏效率。因此,本文提出了一种名为自适应Patch对比(Adaptive Patch Contrast, APC)的新型ViT弱监督语义分割方法,该方法显著增强了patch embedding的学习能力,从而提高了分割效果。APC通过自适应-K池化(Adaptive-K Pooling, AKP)层解决了之前最大池化选择方法的局限性。此外,我们提出了Patch对比学习(Patch Contrastive Learning, PCL),以增强patch embedding,从而进一步提升最终的分割结果。我们还改进了现有的无需类激活映射(CAM)的多阶段训练框架,将其转化为端到端的单阶段训练方法,从而提高了训练效率。实验结果表明,我们的方法在较短的训练时间内,在PASCAL VOC 2012和MS COCO 2014数据集上优于其他最新的弱监督语义分割方法,表现出更高的效果和效率。

背景

目前在弱监督语义分割领域常用的方法就是利用图片和类标签通过CAM产生伪标签,但是CAMs本身具有的在准确估计对象的形状和定位方面不准确的特点具有局限性。尽管在最近的工作中人们通过对CAM产生的伪标签优化、设计各种优化策略来增加最后生成的final pseudo的准确度,但是仍然无法摆脱CAM的这种限制。在这种情况下,一些研究者转向使用基于ViT-based的架构运用到弱监督语义分割任务中,例如:ViT-PCM、AFA等等。然而,目前基于全局最大池化来预测分数最高的Patch进而预测的方法可能会由于错误的分类而影响最终的结果,缺乏鲁棒性。所以在本文作者利用了一些方法解决这些问题。

动机

1.  现存的基于ViT的没有使用CAM的架构利用最大池化层将image embedding 与 softmax连接起来,产生不同类的分数,这样的方法缺乏鲁棒性。

2. 现存的基于ViT的没有使用CAM的架构通常包含多阶段的训练,这种方法使得训练过程的效率大大降低。

3. 随着模型中网络层数的增加可能会导致。

改进

1. 通过incorporating adaptive-k pooling,解决个别被错误分类的Patct对最后结果造成影响的问题。

2. 提出了一个对比学习的方法(Patch Contrastive Learning)的方法通过增加不同类别的patch之间的距离,减少同一类patch的距离,从而提高patch embedding的类内精致性和类间差异性,进一步提高伪标签的质量。

3. 提出了一个端对端的但阶段训练框架,解决了对阶段框架效率低下的问题,并且在分割任务下准确率优于其他方法。

方法

首先输入的图片被分割成s个Patch小块,具体如下:

Input image 

Input patch

其中

这里的d是预先设定的值,与选用的backbone有关,如果选用ViT-B/16那么d一般就为16。

然后这些patch会被送入ViT,输出是patch向量(patch embedding)F_{in}大小为s×e。

F_{in}接着被送入BiSLTM网络,被进一步优化,简要来说BiSLTM的作用是提升特征表示,使得能够捕捉水平和垂直方向的信息,输出的结果为F_{out}(与F_{in}大小相同)。

紧接着F_{out}作为三个分支的输入:

 1. 

Fout被输入到seg decoder中,seg decoder 的工作原理主要是将高层特征映射转换为更细致的分割图像。这个模块通常在语义分割任务中使用,旨在对每个像素进行分类。

主要通过上采样的方式增加特征图的分辨率,然后经过全连接层,使得对每个像素点可以做分类的预测,每个像素点都包含了所有类的分数,然后通过这些分数生成掩码。

2. 

Patch Contrastive Learning

这个公式表示两个patch向量之间的距离,而且结果在1到-1之间,越接近-1说明这两个向量相距远。

这个公式的作用是归一化,作用是可以使得上面计算的结果可以控制在0-1之间。

同时,正如上面所说F_{out}其实就是每个patch对于每个类c的分数,所以作者设定了一个阈值\varepsilon来讲patch分为high confidence和low confidence,具体如下:

最后作者设置了一个loss函数实现对比学习:

 是high confidence patch的个数

是low confidence patch的个数

3. 

FW经过softmax函数归一化生成Z,Z表示每个patch对于所有类的预测分数,Z的大小为s×|C| 。

然后Z被分别输入到Patch To Pixel模块和Adaptive-k pooling模块中

Patch To Pixel模块的作用就是通过得到的Z细化产生分割掩码

Adaptive-k pooling的作用就是优化Patch To Pixel的过程

Patch To Pixel

已知输入Z的大小为s×e然后同样经过上采样增加特征图的分辨率

最后细化的结果就作为掩码

然后这个掩码的结果与之前seg decoder生成的掩码有一个二元交叉熵损失。

Adaptive-k pooling

Adaptive-k pooling通过选取每个类别下的k个patch的平均值,最为该图像的预测分数。

算法如下:

模型的输出Z替代了传统的 max pooling 层,将每个类别多个 patch 的预测分数映射为图像级别的类别预测。

并且这里的K是自适应变化的,具有灵活性,并且更具鲁棒性。

总结

在这项工作中,我们提出了一种APC(Adaptive Patch Contrastive)方法,用于弱监督语义分割,而不依赖于类激活图(CAM)。与之前的方法不同,APC 通过自适应 K 池化来选择 k 个 patch,将 patch 级别的分类映射到图像级别分类,从而缓解了潜在误分类的 patch 问题。此外,我们还提出了patch 对比学习(PCL),以进一步增强 patch 的特征表示。在同一类别中,PCL 的目标是减少高置信度 patch 之间的距离,并增加高置信度 patch 与低置信度 patch 之间的距离。通过将这两部分结合,我们的方法在仅使用图像级标签的弱监督语义分割任务中实现了最先进的结果。

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

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

相关文章

股票期货高频数据获取方法

导语:在量化交易领域,获取高质量的股票期货高频数据是进行有效分析和策略开发的基础。本文从专业量化角度出发,介绍了几种获取股票期货高频数据的方法。一、使用专业数据供应商1. 【推荐】**银河数据库(yinhedata.com)…

【Blender Python】6.修改物体模式

概述 Blender对象共有6种编辑模式,物体模式、编辑模式、雕刻模式、顶点绘制、权重绘制和纹理绘制。 在Blender Python中通过bpy.ops.object的mode_set()方法可以修改物体的编辑模式。只需要传入相应的mode参数就行了。 让物体进入编辑模式 >>> bpy.ops.…

leetcode 力扣算法题 快慢指针 双指针 19.删除链表的倒数第n个结点

删除链表的倒数第N个结点 题目要求题目示例解题思路从题目中的已知出发思考寻找目标结点条件转换核心思路 需要注意的点改进建议 完整代码提交结果 题目要求 给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。 题目示例 示例 1&#xff1…

libcurl网络协议库使用Demo

目录 1 libcurl简介 2 libcurl编译 3 使用步骤 4 函数说明 4.1 全局初始化函数 curl_global_init 4.2 全局释放函数 curl_global_cleanup 4.3 libcurl库版本 curl_version 4.4 开启会话 curl_easy_init 4.5 结束会话 curl_easy_cleanup 4.6 设置传输选项 curl_easy_se…

最新版快递小程序源码 独立版快递系统 附教程

懂得都懂,现在电商平台退换货量大,快递需求量大,对接物流一个单子4块到6块之间 其中间是例如润 其余的 就不说了吧 互站上买的源码 分享一下 还有个方法赚钱就是 拼多多退货自己邮寄 5块钱 运费自己填写12元 白捡7元美滋滋 源码下载&…

Vivado - JTAG to AXI Master (GPIO、HLS_IP、UART、IIC)

1. 简介 本文分享 JTAG to AXI Master IP Core 的使用教程。 此 IP 用于 AXI 接口向设计输入数据,或者读取数据。通过 Tcl 控制台编写命令来驱动此 IP,通过 JTAG 即可进行操作,而这个 IP 则在 AXI 端口上驱动 AXI 事务。由于这个核心没有自…

面试题之- null和undefined的区别

前言 首先undefined和null都是基本数据类型,这两个基本数据类型分别都只有一个值,就是undefined和null。 undefined代表的含义是未定义,null代表的的含义是空对象,一般变量声明了但是还有没有定义的时候会返回undefined&#xf…

每日学习一个数据结构-默克尔树(Merkle Tree)

文章目录 概述特征构建过程使用场景示例总结 设计目的一、提高数据验证效率二、增强数据安全性三、适用于分布式系统 底层原理一、数据块划分与哈希计算二、二叉树的构建三、默克尔树的应用与优势 更新机制 概述 默克尔树(Merkle Tree),也称…

cnn突破六(四层bpnet网络公式)

四层bpnet网络反向传播公式推导: X【196】-》HI【128】/HO【128】-》H2I【60】/H2O【60】-》YI【10】/YO【10】, 期望是d【10】 X,HI之间用w1【196,128】 HO,H2I之间用w12【128,60】 H2O,YI之间用w2【…

Zabbix 企业级应用(Zabbix Enterprise Application)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

【AI学习】Mamba学习(三):离散化SSM的矩阵计算

SSM离散化表示 除了连续的输入之外,还会通常碰到离散的输入(如文本序列)。所以SSM需要离散化形式,就是下面公式2和3。 SSM离散化过程 但是好奇这个离散化过程是如何进行的? 《一文通透想颠覆Transformer的Mamba:从SSM、HiPPO、…

【NIO基础】NIO(非阻塞 I/O)和 IO(传统 I/O)的区别,以及 NIO 的三大组件详解

目录 1、NIO 2、NIO 和 IO 的区别 1. 阻塞 vs 非阻塞 2. 一个线程 vs 多个连接 3. 面向流 vs 面向缓冲 4. 多路复用 3、Channel & Buffer (1)Channel:双向通道 (2)Buffer:缓冲区 (3)ByteBuffer&#xff…

GO网络编程(五):海量用户通信系统3:整体框架与C/S通信总体流程【重要】

这个系统其实是尚硅谷的老韩讲的(尚硅谷网络编程项目),但是他讲得很碎片化,思路不够清晰,时间又长,所以要掌握还是挺难的。如果你听了他的视频,不去梳理系统业务流程,不去看代码就往…

云计算身份认证与访问控制(Cloud Computing Identity Authentication and Access Control)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

支持向量机(SVM)基础教程

一、引言 支持向量机(Support Vector Machine,简称SVM)是一种高效的监督学习算法,广泛应用 于分类和回归分析。SVM以其强大的泛化能力、简洁的数学形式和优秀的分类效果而备受机器学 习领域的青睐。 二、SVM基本原理 2.1 最大间…

watch命令:周期执行指定命令

一、命令简介 ​watch ​命令用于周期性地执行指定的命令,并显示其输出结果。 ‍ 二、命令参数 2.1 命令格式 watch [选项] 命令2.2 选项 ​-n, --interval​: 指定更新间隔时间(以秒为单位)。默认间隔时间为 2 秒。​-d, --difference…

数学与生活

多学科交叉 信号处理 小波 经济 政策 计算机 统计 信号处理与市场分析 经济与数据分析 政策与统计 过去的数学家没有一个是纯粹的数学家;生活中各方面工程的,物理的,天文,地理的,赌博,政治的&#xff1b…

删除AlibabaProtect

首先管理员运行cmd 然后执行下行 sc delete AlibabaProtect重启电脑,再删除该文件夹C:\Program Files (x86)\AlibabaProtect

prometheus学习笔记之PromQL

prometheus学习笔记之PromQL 一、PromQL语句简介 官方文档:https://prometheus.io/docs/prometheus/latest/querying/basics/ Prometheus提供⼀个函数式的表达式语⾔PromQL (Prometheus Query Language),可以使⽤户实时 地查找和聚合时间序列数据&…

vSAN04:vSAN远程数据存储挂载、双节点集群介绍/安装/组件读写/高级配置/故障处理方式

目录 vSAN远程数据存储挂载双节点vSAN集群介绍双节点vSAN集群安装双节点vSAN集群的组件读写方式双节点vSAN的高级配置双节点vSAN故障处理方式 vSAN远程数据存储挂载 在同一个vCenter下的VSAN集群可以互相挂载对方VSAN存储,以达到提高资源利用率的目的。 一个集群最…