Rethinking Semantic Segmentation: A Prototype View 2022CVPR Oral

流行的语义分割方案的掩码解码策略(基于参数softmax或基于像素查询)视为可学习的类原型。本研究揭示了这种参数分割策略的几个局限性,并提出了一种基于不可学习原型的非参数替代方案。与之前的方法以完全参数化的方式为每个类学习单个权重/查询向量不同,我们的模型将每个类表示为一组、不可学习的原型,仅依赖于该类中几个训练像素的平均特征。这允许我们的模型通过优化嵌入像素和锚定原型之间的排列来直接塑造像素嵌入空间。它能够处理任意数量的类,具有恒定数量的可学习参数。

图1所示。不同的语义分割:(a-b)参数与(c)非参数。无论是使用(a)参数softmax还是(b)查询向量进行掩码解码,都可以被视为基于可学习原型的方法,以完全参数化的方式学习类原型。我们提出了一种非参数方案(c),该方案直接选择嵌入像素的子簇中心作为原型,并通过非参数最接近原型检索实现全像素预测。

文章主旨:

基于参数化范式的可学习原型的局限性是什么?如何解决这些限制?

三个局限性:首先,通常每个类只学习一个原型,不足以描述丰富的类内方差。其次,要将H×W×D特征张量映射到H×W×C掩码,至少需要D×C个参数进行原型学习。这损害了概括性,尤其是在词汇量大的情况下;例如,如果有800个类,D= 512,那么我们需要0.4M个可学习的原型参数。第三,交叉熵损失只优化类内和类间距离的相对关系,像素和原型之间的实际距离,即类内紧凑性,被忽略。

我们的模型有三个优点:首先,每个类都由一组原型抽象出来,很好地捕获了类的特征和类内方差。由于原型的含义清晰,可解释性也得到了增强——每个像素的预测可以直观地理解为其在嵌入空间中最近的类中心的参考。其次,由于非参数性质,提高了广义性。由于可学习的原型参数的数量不再局限于类的数量(即0 vs D×C),因此可以有效地处理大词汇的语义分割。第三,通过原型锚定的度量学习,将像素嵌入空间塑造成良好的结构,最终有利于分割预测。

基于原型的分类

设{pm}为代表其对应类{C}的一组原型,对于数据样本i,通过比较i与{pm}进行预测:

式中i和{pm}为数据样本和原型在特征空间中的嵌入,<. .>代表距离度量,通常设置为l2距离,但也可以应用其他接近度。

基于不可学习原型的非参数语义分割

首先采用一个编码器网络φ将输入图像h×w×3映射到H×W×D。然后引用了一组不可学习的原型,即{pc,k},它们完全基于类数据的子中心。每个类C由K个原型{pc,k}表示,原型pc,k确定为c类训练像素样本在嵌入空间φ中第K个子聚类的中心。这样,原型就可以在不引入φ之外的额外可学习参数的情况下有效地捕获相应类的特征属性。最终,每个像素i的类别预测是通过winner-take-all的分类来实现的:

式中,i表示像素i的l2归一化嵌入,距离测度<>定义为负余弦相似度,即<i,p>=−iTP(因为已经归一化,所以余弦相似度直接是两个向量点积

我们首先定义像素i在C类上的概率分布:

像素级距离si,c∈[−1;1]计算为类c到最近原型的距离。给定每个像素的groundtruth类i,即ci,交叉熵损失可以用于训练:

上式可以看作是将像素i推得更靠近其对应类的最近原型(而不是更靠近其对应类,仔细体会这句话),并且远离其他不相关类的接近原型。然而,仅仅采用这样的培训目标是不够的,原因有二(很值得学习与思考)。首先,式子只考虑像素-类的距离,而没有处理类像素-原型的关系。例如,对于判别表示学习,期望像素i进一步靠近类ci的某个原型(即特别适合的模式),并且远离类ci的其他原型(即其他不相关但在类内的模式)。其次,由于像素-类之间的距离是在所有类之间归一化的,因此交叉熵只优化了类内和类间距离之间的相对关系,而不是直接正则化像素与类之间的余弦距离。例如,当像素i的类内距离相对小于其他类间距离时,得到的惩罚较小,但类内距离可能仍然较大。

有点抽象,大白话就是1交叉熵没有考虑和proto之间的关系,2只保证了类间的分散,没有保证类内的紧凑

类内在线聚类策略+两个额外的训练目标

我们采用在线聚类方法进行原型选择和分配:将同一类中的像素样本分配给属于该类的原型,然后根据分配更新原型。在线聚类使我们的方法可扩展到大量数据,而不是离线聚类,需要在整个数据集上进行多次特征计算。

我们的目标是将N个像素i映射到c类的K个原型。我们将这个像素到原型的映射表示为Lc:K×N,其优化是通过最大化像素嵌入Xc:D×N和原型pc,k :D×K之间的相似性来实现的:

聚类是对每个类别单独进行的处理,前两个约束保证每个c类内的像素点只能匹配到一个prototype,第三个约束是鼓励所有的像素点均匀匹配到各个prototype,避免许多个像素点几乎都匹配到同一个prototype上了,强制每个原型在批次中平均至少被选择N/K次。

设计的Lppc损失则是在同一个类内,不同prototype之间的分散(其实是原型之间的交叉熵);Lppd损失着眼于同一个簇内,像素点与prototype的紧凑性优化.

对于提取特征的网络则还是常规SGD更新。Prototype是不可学习的,采用的动量更新的方式,在每个iteration中,将同属于每个prototype的所有像素的特征做一个平均,然后将它更新到所处的prototype上。

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

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

相关文章

ubuntu22.04编译安装tesseract

1、 为什么用自己编译安装&#xff0c;而不采用apt安装&#xff1f; 由于tesseract有很多依赖包&#xff0c;直接用deb包或者rpm包等安装包安装很复杂&#xff0c;不一定能成功安装。 2、安装基本的依赖包 sudo apt update sudo apt install g autoconf automake libtool pkg…

Docker-Compose一键部署项目

Docker-Compose一键部署项目 目录 Docker-Compose一键部署项目介绍部署Django项目项目目录结构 docker-compose.ymlnginx的default.conf文件后端Dockerfile文件mysql.env一键部署DNS域名解析引起的跨域问题 介绍 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的…

新手向导:掌握Axure RP的第一步

其实很多时候&#xff0c;我们很容易把教程做得太复杂&#xff0c;让学生失去重点被复杂的理论吓到。入门基础的时候只需要先弄清楚两个核心内容&#xff0c;学起来就容易多了:一是简单了解这个软件&#xff0c;二是学习这个软件的基本操作。所以如果你问我什么是好的 Axure RP…

【QCustomPlot实战系列】QCPGraph折线图的渐变

包含折线图渐变效果以及QCPAxisTickerDateTime的使用 static QBrush GenerateLinearBrush(Qt::Orientation orientation) {qreal x 1;qreal y 0;if (orientation Qt::Vertical) {x0;y1.5;}QLinearGradient gradient(0, y, x, 0);gradient.setCoordinateMode(QLinearGradie…

软件需求管理规程(DOC原件)

软件需求管理规程是确保软件开发过程中需求清晰、一致、可追踪的关键环节&#xff1a; 明确需求&#xff1a;项目初期&#xff0c;与利益相关者明确项目目标和需求&#xff0c;确保需求完整、无歧义。需求评审&#xff1a;组织专家团队对需求进行评审&#xff0c;识别潜在风险和…

huggingface加速下载模型

文章目录 所需环境huggingface-cli 用法登录token 获取 huggingface 镜像huggingface 缓存hf-transfer 拉满下载带宽如果开了的话&#xff0c;记得关掉科学上网&#xff01;&#xff01;&#xff01; 所需环境 python huggingface-cli 用法 huggingface-cli的更多用法点击这…

基于SpringBoot+IDEA+Mysql开发的在线课程教育平台

基于SpringBootIDEAMysql开发的在线课程教育平台 项目介绍&#x1f481;&#x1f3fb; 项目背景描述 随着信息技术的迅猛发展和互联网的普及&#xff0c;传统教育模式正面临着前所未有的挑战和机遇。为满足广大用户对于灵活、便捷、高效学习方式的需求&#xff0c;我们决定开发…

Redis 内存碎片是什么?如何清理?

Redis 内存碎片相关的问题在得物、美团、阿里、字节、携程等公司的后端面试中都曾出现过&#xff0c;还是建议认真准备一下。即使不是准备面试&#xff0c;日常开发也是能够用到的&#xff01; 什么是内存碎片? 你可以将内存碎片简单地理解为那些不可用的空闲内存。 举个例子&…

PMP认证有什么好处?

一般这些人适合去考PMP认证&#xff1a; 想要通过资质进行晋升的人群&#xff1a; 比如说在项目相关的助理岗位&#xff0c;企业中的项目人才需求依旧是很大的&#xff0c;项目助理如果想要达到项目经理或者项目主管的提升&#xff0c;就需要让公司对自己的项目管理能力认同才…

基于Java的旅游景区网站系统(springboot+vue)

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…

泰迪智能科技携手广州番禺职业技术学院共建上进双创工作室

为充分发挥校企双方的优势&#xff0c;促进产教融合&#xff0c;发挥职业教育为社会、行业、企业服务的作用&#xff0c;为企业培养更多高素质、高技能的应用型人才的同时也为学生实习、就业提供更大空间。6月26日&#xff0c;“泰迪广州番禺职业技术学院上进双创工作室签约授牌…

【吊打面试官系列-MyBatis面试题】MyBatis 框架的缺点?

大家好&#xff0c;我是锋哥。今天分享关于 【MyBatis 框架的缺点&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; MyBatis 框架的缺点&#xff1f; 1、SQL 语句的编写工作量较大&#xff0c;尤其当字段多、关联表多时&#xff0c;对开发人员编写 SQL 语句的功底…

[Go Web] Kratos 验证码业务

文章目录 1.环境准备2.验证码服务2.1 kratos 初始化验证码服务项目2.2 使用 Protobuf 定义验证码生成接口2.3 业务逻辑代码实现 1.环境准备 protoc和protoc-gen-go插件安装和kratos工具安装 protoc下载 下载二进制文件&#xff1a;https://github.com/protocolbuffers/protobu…

【Python机器学习】自动化特征选择——基于模型的特征选择

基于模型的特征选择使用一个监督机器学习模型来判断每个特征的重要性&#xff0c;并且仅保留最重要的特征。用于特征学习的监督模型不需要与用于最终建模的模型相同。特征选择模型需要为每个特征提供某种重要性度量&#xff0c;以便用这个度量对特征进行排序。决策树和基于决策…

基于YOLOv10的车辆统计跟踪与车速计算应用

文章目录 1、前言2、安装运行环境3、下载v10s模型4、代码实现5、代码详读5.1、导入必要的库5.2、识别车辆5.3、读取视频文件5.4、创建视频写入器5.5、车速计算5.6、统计车辆5.7、应用跟踪5.8、视频处理 6、目标检测系列文章 1、前言 在智能交通系统&#xff08;ITS&#xff09…

基于单片机和LabVIEW 的远程矿井水位监控系统设计

摘要 &#xff1a; 针 对 现 有 矿 井 水 位 监 控 系 统 存 在 结 构 复 杂 和 不 能 远 程 监 控 的 问 题 &#xff0c; 设计了基于单片机和&#xff2c;&#xff41;&#xff42;&#xff36;&#xff29;&#xff25;&#xff37; 的远程矿井水位监控系统 &#xff0c; 详…

密码管理器大比拼:哪款更适合你?(KeePass、Bitwarden、LastPass、1Password和Dashlane对比)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 密码管理器 📒🎯 对比🎯 付费情况🎯 安全性🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 随着互联网的发展和网络安全问题的日益突出,密码管理器已经成为保障个人和企业信息安全的重要工具。本文将详细对比市面…

Dataease安装,配置Jenkins自动部署

Dataease安装&#xff0c;配置Jenkins自动部署 一.安装Dataease 安装前准备&#xff1a;1.Ubuntu20.04 LTS国内源安装指定版本Docker 2.docker-compose安装 下载离线安装的安装包&#xff0c;下载地址&#xff1a;https://community.fit2cloud.com/#/download/dataease/v1-…

人工智能AI风口已开:如何赋予UI设计与视频剪辑新生命

随着科技的浪潮不断向前推进&#xff0c;人工智能&#xff08;AI&#xff09;正以惊人的速度重塑着我们的世界&#xff0c;特别是在创意产业的核心领域——UI设计与视频剪辑中&#xff0c;AI正逐步成为驱动行业创新与变革的关键力量。在这个AI技术全面开花的新时代&#xff0c;…

C++学习笔记---串口通信

串口基础知识 DB9针的RS-232串口&#xff0c;分别是公头、母头&#xff0c;这两种串口可以连接在一起。DB9针的串口信号脚编号及信号脚的具体含义如下 串口通信可以使用3根线完成&#xff0c;对应信号脚分别是&#xff1a;2接收、3发送、5地线。对此&#xff0c;有个简单的记法…