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

标题: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由以下三步组成:
使用image-level的标签去训练一个多分类模型。
使用例如 erosion 或者 expansion 的 potential refinement 策略为每一类提取class activation map(CAM)生成一个0-1mask。
使用生成的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所示的两种错误:
False Negative(假负例):即会把一些不是背景的像素激活为背景;
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的现象得不到改善。因为分类器只需要依靠这些区域就能分类了,就不用再去注意其他的非判别性区域了,因此,那些非判别性区域就很有可能会被激活成背景。
综上,这种相乘的做法优势和劣势并存,需要结合具体情况使用。
实验
消融实验




比较实验


相关文章:

【CVPR2022】Class Re-Activation Maps for Weakly-Supervised Semantic Segmentation
论文标题:Class Re-Activation Maps for Weakly-Supervised Semantic Segmentation收录:CVPR 2022paper: https://arxiv.org/abs/2203.00962code: https://github.com/zhaozhengChen/ReCAM解读:https://zhuanlan.zhihu.com/p/478133151https:…...

PMP项目管理项目运行环境
目录1 概述2 事业环境因素和组织过程资产3 组织系统3.1 概述3.2 组织治理框架3.2.1 治理框架3.2.2 项目治理3.3 管理要素3.4 组织结构类型3.4.1 组织结构类型3.4.2 项目管理办公室1 概述 项目所处的环境可能对项目的开展产生有利或不利的影响,这些影响的两大主要来…...
Vue 3.0 渲染函数 【Vue3 从零开始】
Vue 推荐在绝大多数情况下使用模板来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript 的完全编程的能力。这时你可以用渲染函数,它比模板更接近编译器。 让我们深入一个简单的例子,这个例子里 render 函数很实用。假设我们要生成一些…...

西电软件体系结构核心考点汇总(期末真题+核心考点)
文章目录前言一、历年真题二、核心考点汇总2.1 什么是软件体系架构?(软件体系结构的定义)2.2 架构风格优缺点2.3 质量属性2.4 质量评估前言 主要针对西安电子科技大学《软件体系结构》的核心考点进行汇总。 【期末期间总结资料如下】 针对西电计科院软件工程专业大三《软件体…...

SRS源码分析-SDP内容解析
前言 在学习SRS的RTC模块之前,首先来分析下SRS在将rtmp推流转成rtc流,通过浏览器拉取webrtc流场景下产生的SDP内容 SDP格式介绍 SDP数据是文本格式,由多个 <key><value> 表达式构成,<key>的值只能是一个字符…...
HTML 颜色
HTML 颜色 HTML 颜色采用的是 RGB 颜色,是通过对红 (R)、绿 (G)、蓝 (B) 三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB 即是代表红、绿、蓝三个通道的颜色。 Color Values HTML 颜色由一个十六进制符号来定义,这个符…...
MySQL高可用架构之InnoDB Cluster部署
MySQL高可用架构之InnoDB Cluster部署InnoDB Cluster适用场景准备工作安装MySQL Shell使用MySQL Shell搭建InnoDB Cluster初始化第一个实例创建InnoDB Cluster添加副本实例创建相关用户MySQL Router部署安装MySQL Router引导MySQL Router启动MySQL Router环境准备 主机名IPOS版…...

Linux安装minio单机版
说明:因为前面记录了一下minio的使用,这里说一下minio的安装,只是单机版哦 环境准备:Linux系统 说明图: 1.创建文件夹命令 我的是安装在/usr/local 文件夹下面的创建文件夹命令 #进入目标文件夹 cd /usr/local#创建…...
网络总结知识点(网络工程师必备)四
♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,树高千尺,落叶归根人生不易,人间真情 目录 前言 71.NAPT有什么特点? 72.ARP欺骗解决方法...
数据结构——第三章 栈与队列(5)
共用栈和双队列1.共用栈2.双端队列栈与队列的本章小节1.共用栈 在实际应用中,有时一个应用程序需要多个栈,但这些栈的数据元素类型相同。假设每个栈都采用顺序栈,由于每个栈的使用情况不尽相同,势必会造成存储空间的浪费。若让多…...
CSDN竞赛第33期题解
CSDN竞赛第33期题解 1、题目名称:奇偶排序 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。(奇数和偶数的顺序根据输入的数字顺序排 列) #include<bits/stdc.h> using namespace std; t…...

农产品销售系统的设计与实现
技术:Java、JSP等摘要:这篇文章主要描述的是农产品蔬菜在线销售系统的设计与实现。主要应用关于JSP网站开发技术,并联系到网站所处理的数据的结构特点和所学到的知识,应用的主要是Mysql数据库系统。系统实现了网站的基本功能&…...

C语言-基础了解-08-C判断
C判断 一、C判断 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。 C 语言把任何非零和非空的值假定为 true,把零或 null 假…...

用数组名作函数参数的详解,以及形参实参采用数组名,形参实参采用指针变量的几种情况解析
关于地址,指针,指针变量可以参考我的这篇文章: 地址,指针,指针变量是什么?他们的区别?符号(*)在不同位置的解释?_juechen333的博客-CSDN博客https://blog.csd…...

k8s中的PV和PVS
前言:容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)…...

【云原生】Gateway网关选型
网关一般分为流量网关和业务网关,流量网关负责接入所有的流量,并分发给不同的子系统,那在具体的业务接入之前,还有一层业务网关。流量网关提供全局性的、与后端业务应用无关的策略,例如 HTTPS证书卸载、Web防火墙、全局…...

QML Button详解
1.Button简介 Button表示用户可以按下或单击的按钮控件。按钮通常用于执行一个动作,或回答一个问题。典型的按钮有确定、应用、取消、关闭、是、否和帮助。 Button继承自AbstractButton,提供了以下几种信号。 void canceled() //当按…...
【编程实践】什么是好/坏代码?非程序员的示例
What is good/bad code? An illustrated example for non-programmers 什么是好/坏代码?非程序员的示例 目录 What is good/bad code? An illustrated example for non-programmers什么是好/坏代码?非程序员的示例 So what is ‘Bad Code’, as a layperson?那么,作为…...

一个简单的Sublime设置
问题 如果读者熟悉我,应该会发现我经常使用 VSCode 作为主力编辑器,但随着我安装的 VSCode 的插件逐渐增加,我发现对于部分较小的任务使用 VSCode 过于笨重,比如简单的 Markdown 文件编辑工作。 在经过一系列寻找后,…...

c语言经典例题-选择结构程序设计进阶
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 快递费用计算: 题目: 代码思路: 代码表示: 计算一元二…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...