【CVPR2022】Class Re-Activation Maps for Weakly-Supervised Semantic Segmentation

news2024/10/7 12:28:44

论文

标题:Class Re-Activation Maps for Weakly-Supervised Semantic Segmentation

收录:CVPR 2022

paper: https://arxiv.org/abs/2203.00962

code: https://github.com/zhaozhengChen/ReCAM

解读:https://zhuanlan.zhihu.com/p/478133151

https://mp.weixin.qq.com/s?__biz=MjM5MjgwNzcxOA==&mid=2247486185&idx=1&sn=1af2452dc2600cde9cf782d9534c7856&chksm=a6a1e4a091d66db62bc0d1bb0fdb58b927bad5059c6b6dff7cd96858e0ee18f9393873a82796&scene=178&cur_album_id=2116789972333658114#rd

本篇文章利用分类标签训练分类网络生成CAM出发,引出了使用BCE作为损失函数对于分类网络生成CAM的缺陷,并以此为基础,提出了一种结合BCE和SCE(即softmax 交叉熵,一般用于单标签图像分类)来训练分类网络的的方法。该方法极大程度的提升了CAM的质量。以CAM为基础生成的伪标签来训练的分割模型,最终在使用Deeplab v2的情况在VOC和MS COCO测试集上分别达到了68.2%和45.0的mIoU。当然在使用更好的框架和训练技巧后,VOC测试集的mIoU可以提升至72.2%。

摘要

提取类激活图(class activation maps, CAM)可以说是为弱监督语义分割(WSSS)生成 pseudo mask 的最标准步骤。然而,论文发现,在CAM中广泛使用的二进制交叉熵损失(Binary Cross-Entrop, BCE) loss 是导致 pseudo mask 效果不佳的症结所在。具体地说,由于BCE的 sum-over-class pooling 特点,每个像素CAM可以响应于在同一感受野中共同出现的多个类别。因此,给定一个类,它所激活的CAM像素可能错误地侵入属于其他类的区域,或者非激活的CAM像素实际上可能是类的一部分。为此,论文介绍了一种简单但效果惊人的方法:通过使用softmax cross-entropy loss(SCE)来重新激活用BCE收敛的CAM,称为ReCAM。给定一幅图像,使用CAM来提取每个单独类的特征像素,并将它们与类标签一起使用来学习另一个在backbone之后的具有SCE的全连接层。一旦收敛。就可以使用CAM相同的方法提取ReCAM。由于SCE的对比性(contrastive nature),像素响应被分成不同的类别,因此预期的掩码模糊性较小。

引言

Weakly-supervised semantic segmentation (WSSS) 旨在通过使用 "weak" labels,例如:随意的画一笔, bounding box, 或者image-level的标签去减少 "strong" 的标注,image-level的标签是最经济又最具挑战性的任务,因此也是本文的重点。一个比较通用的pipeline由以下三步组成:

  1. 使用image-level的标签去训练一个多分类模型。

  1. 使用例如 erosion 或者 expansion 的 potential refinement 策略为每一类提取class activation map(CAM)生成一个0-1mask。

  1. 使用生成的mask作为伪标签去训练一个基础的全监督语义分割网络。

影响最终分割模型性能的因素各有不同,但第一步的分类模型绝对是根本。我们经常观察到两个共同的缺陷:对于种类A的一个object 的CAM,他有:

  • 为A类激活但具有B类的实际标签的假阳性像素false positive pixels,其中B通常是A的混淆类而不是背景-语义分割中的特殊类。

  • 属于A类但是却被错误的贴上背景标签的 false negative pixels。

作者指出,当用具有Sigmoid激活函数的二进制交叉熵(Binary Cross-Entrop, BCE)损失来训练模型时,这些缺陷尤其明显。具体的说,sigmoid function是 ,其中 x代表每个单个类的预测分。 输出被喂给BCE函数去计算loss。此loss表示对应于x的错误分类的惩罚强度。因此,BCE损失不是类别互斥的——一个类别的错误分类不会惩罚其他类别的激活。这对于训练多标签分类器是必不可少的。因此,当从这些分类器中提取CAM的时候,我们可以看到这些缺点:不同的类别会共同激活一个区域,结果就是CAM中的false positive pixels。由于部分激活是共享的,所以对Tota lClass的激活是有限的(导致false negative pixels)。

动机

图1说明,使用BCE时CAM质量比不过使用SCE的质量,SCE的分类能力比BCE强。作者指出这是因为BCE的Sigmoid激活函数没有强制类独占学习,混淆了相似类之间的模型。

SCE鼓励改善 ground truth的分数,同时惩罚其他的。这对CAM有两个影响:

  • 减少不同类别间融合模型的假阳性像素 false positive pixels;

  • 鼓励模型探索特定于类的特征,以减少假阴性像素 false negative pixels。

图1. BCE和SCE的比较,在MS COCO 2014选single-label训练80class和5class分类器,SCE的分类能力都比BCE强。

通过观察分类网络生成的类激活图(CAM),可以发现,在CAM中通常会出现如图2所示的两种错误:

  1. False Negative(假负例):即会把一些不是背景的像素激活为背景;

  1. False Positive(假正例):即会把一些区域的像素激活为图像中存在的其他类别。

作者认为这是使用BCE作为损失函数来监督多标签分类任务的局限性。在BCE的这种多标签分类模式中,模型最终会把特征图全局平均池化得到的预测向量输入到sigmoid中,然后计算BCE损失。这种模式中,各个类别的预测是互不相关的(本质上就是多个独立二分类器集成)。就拿一个图片中存在摩托车和人两个类别而言,模型对于车的预测的错误不会影响到对于人的预测,反之亦然。因此,这导致了在进行CAM时,同一区域,两个类别的激活值都高,甚至错误类别的激活值高于正确类别的。这也是False Positive现象出现的原因。CAM只能发现目标最具判别力的部分的缘故,利用CAM作为监督信息训练出的语义分割网络始终与真正的ground truth作为监督信息的网络存在较大差距。(CAM通常只覆盖了对象中最具识别性的部分,在背景区域激活不正确,这可以分别概括为目标的激活不足背景的激活过度。)

因此,作者针对以上问题提出了在BCE的基础上加入SCE(即softmax来激活预测向量再送入交叉熵损失函数CE中,常用于单分类)来联合训练分类网络。

具体地说,当模型收敛于BCE时,对于图像中标注的每个独立类,作者通过normalized soft mask的格式提取CAM,即非hard thresholding。分别将所有 mask 应用于特征(即由backbone输出的 feature map block),每个mask “highlighting”用于特定类别分类的特征像素。这样,将多标签特征分解为一组单标签特征。因此,可以使用这些特征(和标签)来训练具有SCE的多类分类器,例如,通过在backbone之后插入另一完全连接层。SCE Loss可以惩罚任何由不良特征或不良mask引起的错误分类。然后,反向传播它的梯度也有助于这两点。一旦收敛,可以用与CAM相同的方式提取ReCAM。

图2. CAM中的两种错误以及ReCAM对其的改进。

方法

多标签的分类任务与单标签分类任务的结合。

图3. 使用ReCAM的pipeline。两个步骤:种子生成和掩码生成(4种方式)。

使用BCE进行多标签分类器的常规训练。论文使用ResNet50做BackBone提取特征f。再提取每个类的CAM,然后将其(作为归一化的软掩码)应用于特征图f,以获得类的特征。软掩码)在特征图f上,以获得特定类别的特征f_k。在下部分,使用fk和它的单一标签来学习 用SCE损失学习多类分类器。这个损失的梯度被 通过整个网络包括主干网进行反向传播。

图4. ReCAM框架图

算法流程

FC Layer-1 with BCE Loss. 在传统的CAM模型中,特征 f(x)首先通过 GAP 层,然后将结果馈送到FC层进行预测。因此,预测逻辑可以表示为:

然后,使用 z 和 image-level label y来计算BCE Loss。

Extracting CAM. 在给定特征 f(x) 和FC层的相应权重 w_k的情况下,我们提取每个单独类 k的CAM,如公式(2)所示。为简明起见,我们将记为

Single-Label Feature. 使用M_k作为soft mask 应用于 f(x) 去提取class-specific feature ,我们如下计算M_k和f(x) 的每个通道之间的逐元素乘法,

其中表示通过使用M_k 乘法之前和之后的单通道, c的范围从 1 到C ,C 代表feature map的通道数。feature map block (每个包含C个通道)对应于图3中的示例 f_1,f_2,f_3。

FC Layer-2 with SCE Loss. 每个 具有单个对象标签(即,其中第 k 个位置为 1的一个热标签)。然后,我们将其提供给FC第二层以学习多类分类器,因此我们有了新的预测逻辑x ,如下所示:

这里的 FC2和 FC1有相同的结构。通过这种方法,成功地将基于BCE的多标签图像模型转换为基于SCE的单标签特征模型。SCE loss公式为:

其中y[k]和 表示 y和 的第k 个元素,我们使用L_sce的梯度来更新包括backbone在内的模型。

其中 要在 BCE和SCE之间取得平衡。

Extracting ReCAM. 在重新激活之后,我们将图像 x 馈入其中以如下提取其每个类别 k 的 ReCAM,(消融实验见Table1)

Refining ReCAM (Optional).

分析

来源https://mp.weixin.qq.com/s?__biz=MjM5MjgwNzcxOA==&mid=2247486185&idx=1&sn=1af2452dc2600cde9cf782d9534c7856&chksm=a6a1e4a091d66db62bc0d1bb0fdb58b927bad5059c6b6dff7cd96858e0ee18f9393873a82796&scene=178&cur_album_id=2116789972333658114#rd

1)为什么加入SCE后要优于只使用BCE?

作者花了很多的篇幅来解释这一点。具体来说就是通过分析BCE的损失函数与SCE的损失函数的梯度来证明。SCE在模型预测正例与负例的的概率相近时会梯度较大,鼓励模型偏向预测正例而抑制负例的预测。而BCE则不然,此时,模型的梯度很小,模型倾向于不更新参数。这其实本质上就是sigmoid函数和softmax函数的区别。以上就解释了为什么加入SCE后能够减少图2中的False Positive现象。

2)为什么要将原始CAM与特征图相乘?

翻看实验,可以发现在MS COCO上没有使用这一操作,只在VOC上用了这一操作。MS COCO是直接将特征图 f 直接copy三份送入FC2中。这样效果更好。文中也没有给出明确的解释。

个人认为,这种相当于一种先验信息的加权,告诉分类器哪些区域的响应值应该重点关注,以此作为分类的依据。这种做法显然我觉得是能够提升分类的性能的。同时也能够降低那些False Positive现象。因为CAM中如果用错位激活成了别的类别的话,会在相乘后在SCE的监督下重点被改正。但是,我认为这样的做法会导致False Negative的现象得不到改善。因为分类器只需要依靠这些区域就能分类了,就不用再去注意其他的非判别性区域了,因此,那些非判别性区域就很有可能会被激活成背景。

综上,这种相乘的做法优势和劣势并存,需要结合具体情况使用。

实验

消融实验

比较实验

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

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

相关文章

mx-font

Abstract 短镜头字体生成(FFG)方法必须满足两个目标:生成的图像既要保留目标字符的底层全局结构,又要呈现多样化的局部参考风格。现有的FFG方法旨在通过提取通用表示样式或提取多个组件样式表示来分离内容和样式。然而,以往的方法要么无法捕捉不同的本地风格,要么无法推广到…

初识系统移植

系统移植简单来说就是将准备好的内核(OS)移植到一台主机或者开发板中,类似于器官移植,将准备好的器官移植到人体中。 为什么需要系统移植? 没有内核的情况下,上层如果要控制硬件只能将C语言代码先编译成二…

【C++】栈和队列(stackqueue)介绍,实现,oj

🍅一文包教会,不再赘述栈最基本的结构和性质(栈的基本介绍在这里) (队列基本介绍和实现),博主主页还有很多栈和队列oj题哦~ 目录 ☃️1.stack_list 🐝1.1 介绍 🐝1.2 stack和list实…

人工智能|HCIA-AI V3.0(一)——人工智能概览

文章目录一 AI、机器学习、深度学习的关系二 AI的三个方面的应用2.1 计算机视觉2.2 语音处理2.3 自然语言处理三、争议四、未来展望一 AI、机器学习、深度学习的关系 人工智能:是研究、开发用于模拟、延伸和扩展人的智能的理论、方法及应用系统的一- 门新的技术科学。 机器学习…

【蓝桥杯集训15】求最短路存在负权边——spaf算法(3 / 4)

——SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称 单源最短路,且图中没有负环就可以用spfa 目录 spaf求最短路模板 852. spfa判断负环 341. 最优贸易 - spfa 双向建图 3305. 作物杂交 - spaf求最短路模板 只有当一个点的前驱结点更新了,…

多线程共享数据结构的无锁释放

目录背景问题共享结构的无锁释放对比ref-cntrcuepoch-based reclamhazard pointer: 冒险指针结构原理正确性保证范例参考背景 多线程共享一个数据结构。 共享数据结构,可以做到节约内存。 但是多线程共享,可能会有问题,比如同步的问题。 问…

(Android-RTC-9)PeerConnectionFactory

开篇前瞎扯。很久没发技术文章了,此文一直放着草稿箱没有完成,感觉自己在家庭和工作中找到了拖延的借口,开始慢慢变得懒惰了,那是万万不行的。恰逢2023开年ChatGPT的爆火,更让我这些普通程序员危机感瞬间飙升&#xff…

安全规约第一章

文章目录传统密码和现代密码的区别古典密码近代密码现代密码定义模型证明现代密码学CryptographyCryptanalysisCryptosystemScheme如何定义算法步骤第一步,搞清楚安全服务目标第二步,计算过程中需要几方的参与需要几个算法描述它算法命名谁来运行哪一个算…

03_Apache Pulsar的Local与分布式集群构建、Pulsar的分布式集群模式、Pulsar的分布式集群模式构建\启动\测试

1.3.Apache Pulsar的Local与分布式集群构建 1.3.1 Apache Pulsar的Local模式构建 1.3.1.1.Apache Pulsar的Local模式基本使用 1.3.2.Apache Pulsar的分布式集群模式 1.3.2.1.安装zookeeper集群 1.3.3.Apache Pulsar的分布式集群模式构建 1.3.4.Apache Pulsar的分布式集群模式启…

Sparx Systems Pro Cloud Server crack

Sparx Systems Pro Cloud Server crack 云服务器 添加了新的“OSLC会话超时”设置,以配置OSLC用户将注销的最长非活动时间。 改进了对重复SQL列名的处理。 FLS:为“组”添加了对其他Microsoft Active Directory名称格式的支持。 云配置客户端 在扩展服务…

香橙派5使用NPU加速yolov5的实时视频推理(二)

三、将best.onnx转为RKNN格式 这一步就需要我们进入到Ubuntu20.04系统中了,我的Ubuntu系统中已经下载好了anaconda,使用anaconda的好处就是可以方便的安装一些库,而且还可以利用conda来配置虚拟环境,做到环境与环境之间相互独立。…

SpringCloud Alibaba入门

作为微服务刚入门的小白,不足之处请多多指教 1. Cloud Alibaba简介2.Nacos简介和下载3.Nacos安装4.Nacos之服务提供者注册5.Nacos之服务消费者注册和负载6.Nacos服务注册中心对比提升7.Nacos之服务配置中心8.Nacos之命名空间分组和DataID三者关系9.Nacos之DataID配…

如何写好单测

1、为什么要写单测? 单测即单元测试(Unit Test),是对软件的基本组成单元进行的测试,比如函数、过程或者类的方法。其意义是: 功能自测,发现功能缺陷自我Code Review测试驱动开发促进代码重构并…

File、递归、IO流(一)、IO流(二)

目录 ​File类概述 File类的常用API 判断文件类型、获取文件信息 创建文件、删除文件功能 遍历文件夹 方法递归 递归的形式和特点 递归的算法流程、核心要素 递归常见案例 递归的经典问题 非规律化递归案例-文件搜索 非规律化递归案例-啤酒问题 字符集 常见字符集…

美团二面经历——如何设计一个百万人抽奖系统?

文章目录 导图V0——单体架构V1——负载均衡V2——服务限流防止用户重复抽奖拦截无效流量服务降级和服务熔断V3 同步状态V4线程优化V5业务逻辑V6流量削峰通用思路单一职责URL动态加密静态资源——CDN服务限流数据预热削峰填谷导图 导图按照由浅入深的方式进行讲解,架构从来不是…

西电计算机组成原理(计组)核心考点汇总(期末真题+核心考点)

文章目录前言一、真题概览1.1 计组1历年真题1.2 计组2历年真题二、知识点说明2.1 计组12.1.1 冯诺依曼计算机组成和特点2.1.2 复杂指令系统计算机和特点2.1.3 精简指令系统计算机的特点2.1.4 指令长度的影响因素2.1.5 控制器2.1.6 微指令特性2.2 计组22.2.1 SMP特点与优点2.2.2…

QML动态对象管理

QML中有多种方式来动态创建和管理QML对象: Loader (加载器)Repeater(复制器)ListView,GridWiew,PethView(视图) (之后会介绍)使用加载器&#xff…

剖析G1 垃圾回收器

简单回顾 在Java当中,程序员在编写代码的时候只需要创建对象,从来不需要考虑将对象进行释放,这是因为Java中对象的垃圾回收全部由JVM替你完成了(所有的岁月静好都不过是有人替你负重前行)。 而JVM的垃圾回收由垃圾回收器来负责,在…

刷题记录:牛客NC200179Colorful Tree 奇奇怪怪的dfs序

传送门:牛客 题目描述: A tree structure with some colors associated with its vertices and a sequence of commands on it are given. A command is either an update operation or a query on the tree. Each of the update operations changes the color of a specifi…

论文阅读 - End-to-End Wireframe Parsing

文章目录1 概述2 L-CNN2.1 整体架构2.2 backbone2.3 juction proposal module2.4 line sample module2.5 line verificatoin module3 评价指标参考资料1 概述 本文是ICCV2019的一篇论文,核心是提出了一种简单的end-to-end的two-stage的检测图像中线段的方法。同时&…