《Cross-Image Pixel Contrasting for Semantic Segmentation》论文解读

news2024/11/14 21:35:20

期刊:TPAMI

年份:2024

摘要

研究图像语义分割问题。目前的方法主要集中在通过专门设计的上下文聚合模块(如空洞卷积、神经注意力)或结构感知的优化目标(如iou样损失)挖掘"局部"上下文,即单个图像中像素之间的依赖关系。然而,它们忽略了训练数据的“全局”上下文,即不同图像之间像素之间的丰富语义关系。受最近无监督对比表示学习进展的启发,本文提出一种像素级对比算法PiCo,用于全监督学习环境下的语义分割。其核心思想是强制属于相同语义类的像素嵌入比来自不同语义类的嵌入更相似。通过明确探索以前很少研究的标记像素的结构,提出了一种用于语义分割的像素级度量学习范式。所提出的训练算法与现代分割解决方案兼容,在测试期间没有额外的开销。实验表明,通过著名的分割模型(即DeepLabV3、HRNet、crnet、SegFormer、Segmenter、MaskFormer)和骨干(即MobileNet、ResNet、HRNet、MiT、ViT),所提出算法在不同的数据集(即Cityscapes、ADE20 K、PASCAL-Context、COCO-Stuff、CamVid)上带来了一致的性能提升。期望这项工作将鼓励社区重新思考当前语义分割事实上的训练范式。

Introduction

动机

  1. 利用全局上下文信息来改善语义分割的性能。
  2. 通过像素级的对比学习,促使同一类别的像素在嵌入空间中更紧凑,不同类别的像素更分散。
  3. 提出一种新的训练算法,与现代分割解决方案兼容,且在测试期间没有额外的开销。

主要贡献

  1. 提出一种有监督的逐像素对比学习语义分割方法。它将当前的图像训练策略提升到图像间、像素到像素的范式。其本质是通过充分利用标记像素之间的全局语义相似性来学习像素语义嵌入空间。
  2. 开发了一种区域记忆,以更好地探索巨大的视觉数据空间,并支持进一步计算像素到区域的对比度。该方法结合像素到像素的对比度计算,利用像素之间以及像素与语义区域之间的语义相关性。
  3. 不是选择随机像素样本进行密集度量学习,而是可以通过更好的示例采样和合成策略提供更强大的分割模型。

Method

2.1 前置知识

无监督对比学习:无监督对比学习是一种自监督学习方法,它通过学习数据的内在结构和模式来表示数据,而不需要依赖于外部的标签信息。这种方法的核心思想是通过对比正样本(相似的数据点)和负样本(不相似的数据点)来学习区分不同数据点的特征表示。损失函数设计用来拉近正样本对之间的距离,同时推远负样本对之间的距离。

其中 v^{+} 表示 I 的正样本的特征嵌入,N_{I}包含所有负样本的嵌入,'·' 表示内部(点)乘积,𝜏 > 0 是缩放距离分布的温度超参数。 

记忆库:在无监督对比学习中,"记忆库"(Memory Bank)是一种关键机制,用于存储训练过程中遇到的样本的特征表示,以便在计算对比损失时使用。记忆库存储了大量样本的特征向量,这些特征向量通常由编码器网络生成,编码器网络负责将输入数据映射到特征空间。在每次迭代中,记忆库用于提供负样本,即与当前锚点(anchor)样本不同但同时参与损失函数计算。这有助于模型学习区分不同类别或不同实例的特征表示。

由于一次训练迭代中可用的负样本数量可能受到批处理大小的限制,记忆库允许模型在每次迭代中访问更多的负样本,从而提高学习效率。

2.2 监督对比分割

2.2.1 像素级交叉熵损失

一种常用的损失函数,用于训练卷积神经网络(CNN)或其它类型的神经网络,以预测图像中每个像素的类别标签。

以上损失函数公式存在两个问题:i)独立验证每个像素的分割预测,而忽略了像素之间的关系。因此,模型可能会遇到难以识别视觉证据较弱或属于小物体的像素。ii) 由于 softmax 的使用,损失仅取决于 logits 之间的相对关系,不能直接监督学习的表示 。

这两个问题很少被注意到;只有少数结构感知损失被设计用来解决:i),通过考虑相邻像素的成对亲和力,优化交叉过并测量,ii)最大化groundtruth和预测映射之间的区域互信息。

然而,这些替代损失只考虑图像中像素之间的依赖性(即局部上下文),而不考虑图像中像素之间的语义相关性(即全局结构)。 

2.2.2 Pixel-to-Pixel对比

通过像素级的对比学习来探索训练数据中的全局语义结构,从而正则化分割嵌入空间的优化。这样,同一类别的像素嵌入会被拉近,而不同类别的像素嵌入则会被推远。

对于一个锚点像素 𝑖,其真实语义标签为 \overline{c} ,正样本是其他属于类别\overline{c} 的像素,负样本则是属于其他类别 C\setminus \overline{c}的像素。

其中P_{i}N_{i}分别表示正样本和负样本的像素嵌入集合,𝜏 是温度参数,用于控制分布的平滑程度。 正/负样本和锚点 i 不限于来自同一图像,这种基于像素到像素对比度的损失设计的目的是通过将同一类像素样本拉近并推开不同的类样本来学习嵌入空间。

与传统的像素级分类损失(如交叉熵损失)不同,像素到像素的对比损失不仅考虑了单个像素的分类准确性,还考虑了像素之间的全局语义关系。

像素级交叉熵损失和对比损失是互补的;前者让分割网络学习对分类有意义的判别像素特征,而后者有助于通过显式探索像素样本之间的全局语义关系来规范嵌入空间,从而提高类内紧凑性和类间可分离性。因此整体训练目标是:

如图所示,LSEG学习到的像素嵌入变得更紧凑,比仅使用LCE学习的像素嵌入更好。这表明,通过享受一元交叉熵损失和成对度量损失的优势,分割网络可以生成更多的判别特征,从而产生更有希望的结果。 

(左)交叉熵损失;(右)Pixel-to-Pixel对比损失

 2.2.3 Pixel-to-Region对比

"Pixel-to-Region Contrast"(像素到区域对比)是PiCo算法的一个重要组成部分,旨在通过利用图像中像素和区域(语义区域)之间的关系来提升语义分割的性能。

像素到区域对比是一种正则化技术,它不仅考虑像素级别的对比,还考虑像素与其所属语义区域之间的关系

为了有效地进行像素到区域的对比,论文中提出了一种记忆库的设计,用于存储像素和区域的特征表示。记忆库包含两部分:像素队列和区域记忆库。

  • 像素队列为每个类别维护了一个固定大小的像素特征集合,这些像素是从最新的小批量样本中随机选取的。
  • 区域记忆库存储了每个图像中每个语义类别的区域特征,这些特征是通过平均池化同一图像中所有标记为该类别的像素嵌入得到的。

在计算像素到区域的对比损失时,属于同一类别的区域嵌入被视为正样本,而其他类别的区域嵌入被视为负样本。

动机:由于在密集预测设置中存在大量的像素样本,其中许多是冗余的(例如,从同一物体区域中采样的像素),直接存储所有训练像素样本会大大降低学习过程的速度。因此,通过维护像素队列和区域记忆库,可以更有效地利用数据。

2.2.4 Hard Example Sampling

硬样本采样的目的是在训练过程中专注于那些难以正确分类的样本,即“硬”样本,从而提高模型对困难案例的学习能力。

硬样本采样策略

  • Hardest Example Sampling(最硬样本采样):选择与锚点像素在特征空间中最相似的负样本和最不相似的正样本。
  • Semi-Hard Example Sampling(半硬样本采样):选择与锚点像素相似度处于中间水平的样本,避免使用最容易和最困难的样本。
  • Segmentation-Aware Hard Anchor Sampling(分割感知硬锚点采样):将分类错误的像素作为硬锚点,并在损失计算中给予更多关注。

通过专注于硬样本,模型可以学习到更加鲁棒的特征表示,从而在面对具有挑战性的场景时表现更好。

2.2.5 Hard Negative Example Synthesis

硬负样本合成的目的是在训练过程中增加模型学习的难度,通过引入难以区分的负样本来推动模型学习更鲁棒的特征表示。在对比学习中,负样本的选择对于模型学习至关重要。硬负样本是那些在特征空间中与锚点样本相似度较高的样本,这些样本对于模型的区分能力提出了更高的要求。

硬负样本的合成机制

  • 负负合成(Negative-Negative Synthesis):通过随机选择负样本对,进行凸线性组合来生成新的负样本。
  • 负锚合成(Negative-Anchor Synthesis):将锚点样本与选定的负样本进行线性混合,生成更具挑战性的负样本。

合成的硬负样本在损失函数中作为负样本参与计算,增加了损失函数的复杂性,促使模型在优化过程中更加关注特征的区分度。

2.3 Detailed Network Architecture

对于小批量中的每个训练图像 I,利用特征提取器 f_{EXT} 将其投影到密集嵌入 I 中,然后将其输入分割头 f_{SEG} 进行掩码预测(即 Y),由交叉熵损失 (L^{CE}) 监督,以及用于像素对比度的投影头 f_{PROJ} (L^{NCE})。此外,维护内存库M,设计硬示例采样和合成策略来寻找更多信息样本,以实现有效的对比学习。

Feature Extractor (f_{EXT}):特征提取器用于将输入图像 𝐼 映射到密集的特征表示 𝐼,其维度为 𝐻×𝑊×𝐷,其中 𝐻×𝑊 是特征图的空间尺寸,𝐷 是特征维度。常见的CNN或Transformer骨干网络可以用于实例化 f_{EXT}

segmentation Head (f_{SEG}):分割头f_{SEG} 将特征表示 𝐼 映射到一个类别分数图 𝑌,其维度为 𝐻×𝑊×∣𝐶∣,其中 ∣𝐶∣ 是类别的数量。这个分数图表示了每个像素属于各个类别的置信度。

Projection Head (f_{PROJ}):投影头 f_{PROJ} 用于将每个高维像素嵌入 𝑖 映射到一个低维的 l_{2}-​归一化特征向量,用于计算对比损失 L^{NCE}f_{PROJ} 通常由几个1x1的卷积层、批量归一化(BN)和ReLU激活函数组成。在推理时,f_{PROJ} 被移除,不会引入任何额外的计算成本。

Memory Bank (M):记忆库 𝑀 由两部分组成,分别存储像素嵌入和区域嵌入。对于每个训练图像,我们为每个类采样 V = 10 像素。对于每个类,我们将像素队列的大小设置为 T = 10 N。对于大规模或词汇表的数据集,例如 COCO-Stuff 和 ADE20 K,我们将 T 设置为固定数量的(即 10,000),记忆库在训练后被丢弃,不参与推理过程。

Joint Loss (L^{SEG}):联合损失 L^{SEG} 结合了表示学习和度量学习的优势,用于更显著的分割特征学习。它结合了像素级交叉熵损失 L^{CE} 和对比损失 L^{SEG},通过一个可调节的系数 𝜆 来平衡两种损失。

总的来说

  • 通过特征提取器得到特征,并通过分割头得到像素级别的预测,将其预测与Grounding Truth比较计算交叉熵损失。
  • 通过特征提取器得到特征,并通过投影得到低维特征向量,将分类错误的像素作为硬锚点,从记忆库中选择与当前锚点像素相似的负样本,以及不相似的正样本,使用采样得到的锚点、正样本和负样本,计算像素级的对比损失。
  • 使用联合损失反向传递更新网络,并合成新的负样本。
  • 在每次训练迭代中重复上述损失计算和参数更新步骤,直到模型在验证集上的性能不再提升或达到预定的迭代次数。

Conclusion

在本文中,我们提出了一种新的监督学习范式用于语义分割,它享受一元分类和结构化度量学习的互补优势。通过逐像素的对比学习,它研究了训练像素之间的全局语义关系,引导像素嵌入到跨图像的类别判别表示,最终提高分割性能。实验表明,在不同的语义分割基准上,该算法比基于fcn或基于transformer的分割器实现了一致的性能改进。我们的算法在各种密集预测任务中显示出巨大的潜力,例如姿态估计和身体解析。它也带来了新的挑战,特别是在智能数据采样和生成、度量学习损失设计、训练期间的类再平衡和多层特征对比方面。考虑到过去几年里大量的技术突破,我们期待在这些方向上出现一阵创新的热潮。

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

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

相关文章

【图解大数据技术】流式计算:Spark Streaming、Flink

【图解大数据技术】流式计算:Spark Streaming、Flink 批处理 VS 流式计算Spark StreamingFlinkFlink简介Flink入门案例Streaming Dataflow Flink架构Flink任务调度与执行task slot 和 task EventTime、Windows、WatermarksEventTimeWindowsWatermarks 批处理 VS 流式…

Lottery 分布式抽奖(个人向记录总结)

1.搭建(DDDRPC)架构 DDD——微服务架构(微服务是对系统拆分的方式) (Domain-Driven Design 领域驱动设计) DDD与MVC同属微服务架构 是由Eric Evans最先提出,目的是对软件所涉及到的领域进行建…

jenkins系列-05-jenkins构建golang程序

下载go1.20.2.linux-arm64.tar.gz 并存放到jenkins home目录: 写一个golang demo程序:静态文件服务器:https://gitee.com/jelex/jenkins_golang package mainimport ("encoding/base64""flag""fmt""lo…

搜索引擎中的相关性模型

一、什么是相关性模型? 相关性模型主要关注的是query和doc的相关性。例如给定query,和1000个doc,找到哪个doc是好query最相关的。 二、为什么需要相关性模型? 熟悉es的应该都熟悉BM25相关性算法。它是一个很简单的相关性算法。我…

【Linux】权限管理与相关指令

文章目录 1.权限、文件权限、用户文件权限的理解以及对应八进制数值表示、设置目录为粘滞位文件类型 2.权限相关的常用指令susudochmodchownchgrpumaskwhoamifile 1.权限、文件权限、用户 通过一定条件,拦住一部分人,给另一部分权利来访问资源&#xff0…

【node-RED 4.0.2】连接 Oracle 数据库踩坑解决,使用模组:node-red-contrib-agur-connector

关于 Oracle Oracle 就好像一张吸满水的面巾纸,你稍一用力它就烂了。 一、发现的问题 1.为什么需要 Oracle Instant Client && 不能使用 rpm 安装的原因 我们在使用 node-red 的 node-red-contrib-agur-connector 插件模组时,需要用到 Oracl…

QML界面控件加载与显示顺序

一、QML界面控件加载顺序 QML在界面加载时的顺序和我们认知的有很大的不同,有时候会对我们获取参数以及界面实现造成很大的困扰 1、加载顺序 import QtQuick 2.12 import QtQml 2.12 import QtQuick.Window 2.12 import QtQuick.VirtualKeyboard 2.4Window {id: …

Oracle使用fetch first子句报错:ORA-00933 SQL命令未正确结束

问题背景 今天在统计终端厂商告警次数Top10的时候使用SQL查询使用到了fetch first子句,结果执行报错:ORA-00933 SQL命令未正确结束。 报错原因 Oracle数据库中,使用 FETCH FIRST 子句需要启用 Oracle 12c 及以上版本。如果在较低版本的 Or…

德迅与DSV携香港蝴蝶效应集团,创半导体与新能源汽车物流新篇章

在全球经济一体化的大背景下,物流行业作为连接生产与消费的重要纽带,正迎来前所未有的发展机遇。特别是在半导体产业和新能源汽车领域,物流服务的专业性和高效性已成为企业竞争力的重要体现。近日,国际物流巨头德迅(Kuehne Nagel International)与全球汽车行业供应链物流专家D…

GitHub+Picgo图片上传

Picgo下载,修改安装路径,其他一路下一步! 地址 注册GitHub,注册过程不详细展开,不会的百度一下 地址 新建GitHub仓库存放图片 生成Token令牌 点击头像,点击Settings 滑到最后 过期时间:No expi…

用HTML和CSS实现提示工具(tooltip)及HTML元素的定位

所谓提示工具,是指将鼠标移动到某个HTML元素(工具)时会显示一些提示内容(提示文本),而鼠标移出工具元素的范围时提示文本就消失了。考虑到提示文本元素应当在鼠标进入工具元素时显示,鼠标离开工…

网络安全防御【防火墙NAT智能选举综合实验】

目录 一、实验拓扑图 二、实验要求 三、实验思路 四、实验步骤 1、FW2的网络相关配置: 2、路由器需要增加的(接口)命令配置 3、新增加的PC、client、sever的IP地址配置: 4、多对多的NAT,并且需要保留一个公网I…

LeetCode 3011.判断一个数组是否可以变为有序

注:这个题目有序的意思是“升序” 解法一:bubblesort O(nlogn) 核心思想:冒泡每次会将一个数归位到最后的位置上,所以我们如果碰到无法向右交换的数字,即可return false class Solution { public:// 返回一个十进制…

链接追踪系列-05.mac m1 安装es+kibana

运行启动脚本: docker run -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -d -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" \-v /Users/jelex/dockerV/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml …

初涉项目架构

初涉项目架构 了解传统项目与互联网项目的区别 传统项目指OA、HR、CRM这种,互联网项目则是常见的app 首先是受众(服务对象)不同,传统项目是面向公司、学校等群体,互联网项目则是面向全体网民 两种对象数量不同&#x…

使用Java连接星火认知大模型:一个实际案例解析

引言: 随着人工智能技术的快速发展,认知大模型如星火在自然语言处理、语音识别等领域发挥着越来越重要的作用。本文将通过一个实际的Java代码示例,详细讲解如何使用Java连接星火认知大模型,并处理其响应。 1.导入依赖&#xff1…

Github 2024-07-13 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-13统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3TypeScript项目2Go项目2Java项目2Rust项目1非开发语言项目1Solidity项目1从零开始构建你喜爱的技术 创建周期:2156 天Star数量:25…

如何在 Android Studio 中导出并在 IntelliJ IDEA 中查看应用的 SQLite 数据库

在 Android 应用开发过程中,调试和查看应用内的数据库内容是常见的需求。本文将介绍如何使用 Android Studio 导出应用的 SQLite 数据库,并在 IntelliJ IDEA 中查看该数据库。 步骤一:在设备上运行您的应用 首先,确保您的应用已…

T113-i系统启动速度优化方案

背景: 硬件:T113-i + emmc 软件:uboot2018 + linux5.4 + QT应用 分支:longan 问题: 全志T113-i的官方系统软件编译出的固件,开机启动时间10多秒,启动时间太长,远远超过行业内linux系统的开机速度,需要进一步优化。 T113-i 优化后启动速度实测数据 启动阶段启动时间(…

本地部署 EVE: Unveiling Encoder-Free Vision-Language Models

本地部署 EVE: Unveiling Encoder-Free Vision-Language Models 0. 引言1. 快速开始2. 运行 Demo 0. 引言 EVE (Encoder-free Vision-language model) 是一种创新的多模态 AI 模型,主要特点是去除了传统视觉语言模型中的视觉编码器。 核心创新 架构创新&#xff…