Context Prior for Scene Segmentation--CVPR, 2020

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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android12之如何查看hidl服务(一百五十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

软件项目管理需要具备哪些能力?

作为一名软件项目管理者,在处理许多事情时需要不断提高个人在数据分析处理、项目业务流程管理等各个领域的能力。当然作为过来人,我也很清楚很多软件项目管理新人也较为疑惑如何提高自己的能力和专业水平,以便提高工作效率。那我也想与大家唠…

开源反分裂与数字大同世界

这是一篇报告的读后感,这篇报告是由Linux基金会研究部门发布的,名为《助力全球协作——开源代码的领导者如何面对分裂的挑战》。 这份报告的主要内容包括: - 开源代码开发中的分裂及其利弊- 开源的国际化,以及项目领导者如何克服参…

Python3数据分析与挖掘建模(16)特征降维与特征衍生

1. 特征降维(PCA) 回顾知识点: 特征降维是指将高维特征空间的数据映射到低维空间的过程,以减少特征的数量并保留数据的主要信息。下面是特征降维的一般步骤: (1)求特征协方差矩阵&#xff1a…

可调电源LM317 的内部原理 - 特殊的电压跟随器

之前一直没想过这类LDO 内部是怎么整的,它似乎是用一个分压电路采集它输出的电压作为参考,然后却能把输出电压稳定下来,颇有种左脚踩右脚上天的意思。典型的LM317 电路如下: 如果是个普通的电压跟随器,无论是基于三极管…

牛客小白月赛56

今天无聊vp了一下 A.省略 B.最优肯定是全部都是1 C.直接统计每个余数下可以填多少个数&#xff0c;然后排序从小到大的排序输出即可 #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <queue> #inc…

【八大排序(六)】快排终极篇-快速排序非递归版

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:八大排序专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习排序知识   &#x1f51d;&#x1f51d; 快排非递归版 1. 前情回顾2. 快排非递归基…

windows10家庭版禁用Device/Credential Guard解决方案

文章目录 背景&#xff08;禁用的原因&#xff09;解决的方式方式一&#xff1a;通过Windows本身的功能设置禁用 ( 非家庭版的使用)1. 禁用Device Guard或Credential Guard&#xff1a;2. 关闭Hyper-V选项3. 重启电脑 方式二&#xff1a;通过命令关闭Hyper-V ( Windows 10家庭版…

java三大特性之【多态】

多态 1.1 概念1.2 实现条件1.3 方法重写&#xff08;override&#xff09;与方法重载&#xff08;overload&#xff09;1.4 向上转型1.5 向下转型 1.1 概念 同样的一个方法/行为&#xff0c;经过不同的对象&#xff0c;表现出不同的行为&#xff0c;这样的现象就称为多态。 举…

二叉搜索树之AVL树

目录 1.概念 2.定义 3.插入 4.旋转 1. 新节点插入较高左子树的左侧---右单旋 2. 新节点插入较高右子树的右侧---左单旋 3. 新节点插入较高左子树的右侧&#xff1a;先左单旋再右单旋【左右双旋】 4. 新节点插入较高右子树的左侧---右左&#xff1a;先右单旋再左单旋【右…

I.MX6ULL_Linux_驱动篇(37) linux系统定时器

定时器是我们最常用到的功能&#xff0c;一般用来完成定时功能&#xff0c;本章我们就来学习一下 Linux 内核提供的定时器 API 函数&#xff0c;通过这些定时器 API 函数我们可以完成很多要求定时的应用。 Linux内核也提供了短延时函数&#xff0c;比如微秒、纳秒、毫秒延时函数…

Car Guide

文章目录 科目一第一章 机动车驾驶证申领和使用规定第一节 驾驶证的许可&#xff1f;种类和有效期第二节 驾驶证的申领第三节 驾驶证的使用第四节 驾驶考试第五节 违法记分制度 第二章 交通信号第一节 交通信号灯第二节 交通标志第三节 交通标线第四节 交警手势 第三章 道路交通…

【编程语言 · C语言 · 递归函数】

递归函数 C 语言的函数都支持递归, 也就是说&#xff0c;每个函数都可以直接或者间接第调用自己。所谓的间接调用&#xff0c;是指在递归函数调用的下层函数中再调用自己。 递归关系图如下&#xff1a; 递归之所以能实现&#xff0c;是因为函数的每个执行过程在栈中都有自己的…

Redis从入门到精通之底层数据结构快表QuickList详解

文章目录 0.前言1. 快表的结构2. Redis 6.0 快表quicklist 基本结构2.1 成员变量2.1 主要操作2.1 推导结果 3. 快表的操作 3. 快表的优缺点3.1 优点&#xff1a;3.2 缺点&#xff1a; 5. Redis从入门到精通系列文章 0.前言 上个篇章回顾&#xff0c;我们上个章节&#xff0c;讲…

Win10 系统专业版远程桌面如何才能多用户同时登录使用?

环境&#xff1a; Win10专业版19041 RDPWrap-v1.6.2 dell5493笔记本 问题描述&#xff1a; Win10 系统专业版远程桌面如何才能多用户同时登录使用&#xff1f; 解决方案&#xff1a; 安装RDPWrap 1.关闭remote desktop services服务 安装RDP之前&#xff0c;要先关闭re…

Kuberentes,k8s诞生简介

一、前言 什么是k8s&#xff1f; Kuberentes 是基于容器的集群管理平台&#xff0c;它的简称&#xff0c;是K8S。有人说之所以叫k8s&#xff0c;是因为k到s中间有8个字母&#xff0c;因此叫k8s&#xff0c;也有人说&#xff0c;在使用k8s的安装配置流程中&#xff0c;共分为8…

验证attention是否在图像分类问题上起决定性作用

来源&#xff1a;投稿 作者&#xff1a;摩卡 编辑&#xff1a;学姐 Motivation 现阶段出现了大量的Transformer-style图像分类模型&#xff0c;并且这些模型在ImageNet上取得了不俗的成绩&#xff0c;这些Transformer-style模型将取得高性能的功劳归功于Multi-head attention注…

12.异常检测

12.1 异常检测的应用 异常检测最常见的应用是欺诈检测&#xff1b; 如果你有很多用户&#xff0c;每个用户都在从事不同的的活动&#xff0c;你可以对不同的用户活动计算特征变量&#xff0c;然后可以建立一个模型来表示用户表现出各种行为的可能性&#xff0c;用来表示用户行…

微服务 springcloud 05 hystrix框架,降级,可视化Hystrix dashboard 仪表盘,熔断

01.微服务宕机时&#xff0c;ribbon 无法转发请求 关闭 user-service 和 order-service 02.hystrix框架 03.创建hystrix项目&#xff0c;hystrix与ribbon经常一起出现 第一步&#xff1a;复制 sp06-ribbon 项目&#xff0c;命名为sp07-hystrix 选择 sp06-ribbon 项目&#…

高并发架构设计方法

我们知道&#xff0c;“高并发”是现在系统架构设计的核心关键词。一个架构师如果设计、开发的系统不支持高并发&#xff0c;那简直不好意思跟同行讨论。但事实上&#xff0c;在架构设计领域&#xff0c;高并发的历史非常短暂&#xff0c;这一架构特性是随着互联网&#xff0c;…