Context Prior for Scene Segmentation--CVPR, 2020

news2024/10/7 14:24:15

Context Prior for Scene Segmentation–CVPR, 2020

文章目录

  • Context Prior for Scene Segmentation--CVPR, 2020

一、背景介绍

  • 问题:现阶段,不少语义分割方法所限于卷积结构,忽略了同类型的上下文之间的关系,但同一类别的相关性(类内上下文)和不同类之间的差异(类间上下文)使得特征表示更加鲁棒并减少可能类别的搜索空间。目前主要有两种改进方式:1.Pyramidbased aggregation method. 这类方法重视类内关系、忽视了类间关系。从而在困难样本上效果较差。2.Attention-based aggregation method. 由于缺乏明确的正则化约束,attention关于类内和类间的关系描述并不是很明确,这会导致选择不需要的上下文关系。

在这里插入图片描述

二、方法介绍

在这里插入图片描述

我们知道语义分割通常要通过特征提取网络如ResNet、HRNet等获得特征 X X X,然后经过一系列模块如ASPP等以及上采样得到最终的输出结果。有监督学习中,有着标签 L L L。作者这里在获得特征 X X X后,通过自行设计的Context Prior Layer来选择性地捕获类内和类间的上下文依赖,从而实现稳健的特征表示。这里就有一个急需解决的问题就是这个上下文先验也就是类内和类间信息如何获得?作者这里直接使用标签 L L L通过下采样和重构后获得 A (Ideal Affinity Map)来作为监督信息,使得特征通过aggregation、卷积层和Reshape操作得到的 P(Context Prior Map)能够学习到特征的类内和类间的关系。然后为了更好的去进行监督约束,提出了Affinity Loss。好了,下面就涉及三个部分:A的生成、Affinity Loss、如何从 X X X获取P。

1.A的生成

在这里插入图片描述

因为特征图 X X X大小 C 0 × H × W C_0 \times H \times W C0×H×W往往比标签L要小,故需要进行下采样操作。作者希望获得的A大小为 N × N , N = H × W N \times N, N=H\times W N×NN=H×W,A的值仅包含0和1,其中1表示行和列对应的像素点属于同一类,0表示行和列对应的像素点不属于同一类。作者这里先对下采样获得的特征图进行one hot编码,如原来有三类,分别为0, 1, 2就分别变为[1, 0, 0]、[0, 1, 0]、[0, 0, 1]。这里通过one hot编码后就得到了 H × W × C H \times W\times C H×W×C大小的 L ′ L' L。然后通过 A = L ′ L ′ T A=L'L'^T A=LLT就得到了最终的Ideal Affinity Map,这里的 L ′ L' L先通过reshape操作变成 N × C , N = H × C N\times C,N=H\times C N×CN=H×C,即变成了一个矩阵。如下图,矩阵 L ′ L' L的第i行都为第i个像素点的one hot编码,这两个一乘,只有第i个像素和第j个像素属于同一类才能为1,否则为0。这样我们便获得了A。

在这里插入图片描述

下图为可视化的A和P等
在这里插入图片描述

2.Affinity Loss

由于想要使用A来监督生成P,我们将A看为一个2分类的Ground Truth,P为我们获得的概率分布图。那么语义分割常用的监督函数为CE Loss,如下:

在这里插入图片描述

但是,该函数只考虑了先验图中的孤立元素,而忽略了与其它像素的语义相关性。为了解决这个问题,作者依据常用的语义分割指标Precision、Recall等设计出下列损失函数。

结合 L u , L g L_u,L_g Lu,Lg作者便设计出了最终的损失函数: L p = λ u L u + λ g L g L_p=\lambda_u L_u + \lambda_g L_g Lp=λuLu+λgLg

3.如何从 X X X获取P

通常情况下,我们通过卷积层等就能够获取P。有一个问题需要解决的便是,由于P需要学习到类内和类间的关系,故需要捕获更多的空间关系(即更大的感受野)。这就需要更大的卷积核(这里作者通过实验发现当大小为11时刚好合适,同时通过对比实验发现相较于其它聚合方式如ASPP等要更加优秀),而更大的卷积核则会带来更大的计算量。作者为了减少计算量,使用了深度可分离卷积。设计出Aggregation模块,如下:
在这里插入图片描述

好了,我们获得了P,那么这个学习到的P该如何和我们的特征图 X X X进行交互呢?作者这里采用的是直接相乘然后concatenate在一起,最后通过卷积和上采样操作等得到最终的语义分割输出。使用下列损失函数进行约束。其中 L s , L a , L p L_s, L_a, L_p Ls,La,Lp分别表示main segmentation loss, auxiliary loss, and affinity loss functions。这个损失函数中前两个是正常语义分割有的损失,最后一个是作者提出的损失。

在这里插入图片描述

下面我们来看一下相乘这个操作,即论文中的
在这里插入图片描述
在这里插入图片描述

下面我们简单看一下Y这个操作。

4.Y操作

我们已经知道P大小为 N × N , N = H × W N\times N,N=H\times W N×NN=H×W X ~ \widetilde{X} X 大小为 C 1 × H × W C_1\times H \times W C1×H×W。我们先将 X ~ \widetilde{X} X 通过reshape操作变成 C 1 × N C_1\times N C1×N大小的矩阵。那么 Y Y Y操作就如下所示。

在这里插入图片描述

由于P是通过sigmoid函数获得,值在0到1之间,可能为小数。选取第(i,j)点特征值 P i j P_{ij} Pij,可以理解为第i个像素和第j个像素同属于一个类别的概率。这样就有点像attention操作里面的加权求和,只不过这里的权重有着 A A A这个先验约束。这样的加权求和有一种偏向性,使得属于同一类别的特征值放大、不属于同一类别的特征值缩小甚至变成0。

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

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

相关文章

快速部署合同管理模板:低代码实现高效率

在现代商业环境中,合同管理是企业日常运营中至关重要的一环。合同是企业与外部实体之间约定的法律文件,合够帮助企业有效管理合同的全生命周期,包括合同创建、审批、签署、执行和归档,以提高合同管理的效率和准确性。 随着企业数…

软件测试面试题(大全)

1.B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行,可以实现跨平台,客户端零维护,维护成本低,但是个性化能力低,响应速度较慢 C/S响应速度快,安全性强,一般应用于局域网中,因…

【操作系统】操作系统最全的总结,5万字干货

文章目录 前言搞清楚几个问题 一、认识操作系统二、计算机硬件三、进程和线程1、进程2、进程模型3、进程的创建4、进程的终止5、进程的层次结构6、UNIX 进程体系7、Windows 进程体系8、进程状态9、进程的实现10、线程11、线程的使用12、经典的线程模型13、线程系统调用14、POSI…

Revit轴网问题:创建标高看不到原来的轴网和轴网转化

一、Revit中创建的标高看不见原先的轴网怎么解决 (1)在Revit中绘制的轴网会默认超过最高标高一定距离,若新绘制的标高会在这距离之上,进入新绘制的“标高3”平面会发现看不到(1至6号轴网)。 (2)进入东立面,拖动轴网往上移动即可。 进入南、北…

MySQL 读写分离代理(Mycat2)

作者:田逸 作者亲自尝试过的开源MySQL读写分离工具有Amoeba、MySQL Proxy、Mycat等,经过仔细测试对比,在某个实际项目中选用Mycat作为MySQL数据库读写分离的代理工具。Mycat当前的最新版本为Mycat2,可从http://dl.mycat.org.cn/2…

60、基于51单片机无线蓝牙温度上下限控制加热系统设计(程序+原理图+PCB源文件+Proteus仿真+参考论文+开题报告+任务书+元器件清单等)

摘 要 随着人们生活水平的提高,对生活环境的要求也越来越高,家用电器越来越趋向于自动控制控制乃至于智能控制,针对目前家庭的实际需要,自动控制水温报警系统比较方便实用,本文就通过51系列单片机来实现一种家用自动控…

VS2013 如何创建动态库和使用

创建动态库具体的步骤是:(以DLL为例) 1、创建一个win32项目 2、选择应用程序类型:DLL; 附加选项:导出符号,勾上; 3、点击完成,就会生成动态库 4、 由于是导出库&#xf…

[细读经典]Megatron论文和代码详细分析(1)

[细读经典]Megatron论文和代码详细分析(1) 导航: 迷途小书僮:[细读经典]Megatron论文和代码详细分析(2)102 赞同 41 评论文章正在上传…重新上传取消 前言 作为一款支持multi-node,multi-GPU的可以直接用来训练GPT3等世界上超大规模的自然…

【C++学习】VScode配置C/C++开发环境

VSCode是一个高级编辑器,只能用来写C/C/Python/Java等代码,不能直接编译这些代码。所以,我们需要搭建编译和调试环境,本文以C/C为例,使用MinGW-w64,将其移植到Windows平台的一个gcc编译器。下面具体介绍如何…

基于Java蜀都天香酒楼网站系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

第二章_基于redis实现分布式锁

基本实现 借助于redis中的命令setnx(key, value),key不存在就新增,存在就什么都不做。同时有多个客户端发送setnx命令,只有一个客户端可以成功,返回1(true);其他的客户端返回0(false…

微信小程序WE分析----事件分析

目录 web分析-小程序 事件分析概述 1.新增事件管理 事件参数说明 (1) 填写事件配置 (2)小程序添加上报代码:将上报代码添加到小程序中 (3)测试事件数据上报:测试事件上报的数据是否正确。 属性管理 字典管理 新增事件分析 创建事件分析 添加事件指…

Java+Swing+mysql员工工资管理系统2.0

JavaSwingmysql员工工资管理系统2.0 一、系统介绍二、功能展示1.用户登陆2.主页3.员工工资查询4.员工工资添加5.员工工资修改6.员工工资删除 三、系统实现1.salary.java 四、其它系统五、获取源码 一、系统介绍 该系统实现了简单的增删查改、用户登陆、员工工资查询、员工工资…

美联储缩表意味着什么?

What does the Feds balance sheet reduction mean? 这里的表是资产负债表,Balance sheet. 美联储(Federal Reserve)作为全球影响力最大的央行,其在货币政策上做出的一些调整,可能就会引起全球经济和金融市场动荡&am…

项目测试排期的正确方法是什么?

测试排期是项目排期里面的一部分,所以了解项目排期对整体产品的全貌会有一个宏观的认知,甘特图能很好的体现项目排期,里面包含了参与角色和每个角色对应的排期。项目参与者和项目责任人都可以清晰的看到项目当前进展和项目耗时等。 甘特图可…

智能监控系统:在线培训考试系统的保障

随着互联网技术的不断发展,越来越多的培训机构和教育机构采用在线学习和考试的方式进行教学。然而,考试中的作弊问题也随之产生,给教育质量和学术诚信带来了挑战。为了解决这一问题,许多在线培训考试系统引入了智能监控系统。 智…

邓铎:探索书法艺术的新境界

中国书画院院士邓铎,是一位在书法艺术领域拥有深刻理解和丰富实践经验的老者。他的作品随心所欲,个性鲜明,具备独特的审美品味和艺术手法,更有重要的理论创新,让书法艺术大放光彩。 邓铎的书法作品在形式上追求“形似象…

【无标题】面试常考算法(3):二叉树遍历(创建、遍历、销毁)

这部分不够熟悉的话,面试直接递归就行。不过实际中虽然递归在某些情况下可以提供简洁和优雅的解决方案,但可能占用大量的内存空间和导致额外时间开销,所以还是尽量使用非递归。因为每次递归调用时,函数的局部变量和参数都需要在栈…

迭代器模式(十九)

相信自己,请一定要相信自己 上一章简单介绍了访问者模式(十八), 如果没有看过, 请观看上一章 一. 迭代器模式 引用 菜鸟教程里面迭代器模式介绍: https://www.runoob.com/design-pattern/iterator-pattern.html 迭代器模式(Iterator Pattern&#xff…

实战:私有化部署ngin+文件步骤记录

这里写目录标题 背景准备总结 背景 出差到某国企进行私有化部署,一波三折。没想到是那种最麻烦的部署,导入文件需要刻光盘,进入电脑房需要上交手机,不允许有人以及拍摄设备,内部有监控摄像头。 有问题怎么办&#xf…