[迁移学习]UniDAformer域自适应全景分割网络

news2024/9/26 1:27:22

原文的标题为:UniDAformer: Unified Domain Adaptive Panoptic Segmentation Transformer
via Hierarchical Mask Calibration,发表于CVPR2023。

一、概述

        域自适应全景分割是指利用一个或多个相关域中的现成标注数据来缓解语义分割数据标注复杂的问题。本文提出了一种UniDAformer域自适应全景分割网络,其基于Transformer,可以用一个统一的架构同时实现域自适应实例分割语义分割

        通过引入分层掩膜校准(HMC),UniDAformer可以实现在线自我训练。本网络具有以下几个特点:

                ①使用一个统一架构实现域自适应全景分割

                ②减少了错误预测

                ③可以实现端到端的训练和推理

        相较于传统的域自适应网络(二分支,下图(a)),UniDAformer(单一分支,下图(b))仅需要一个单一网络即可实现域自适应分割的任务,极大的减少了训练和推理的难度(减少了一个分支的参数量)。

        本文涉及到三个领域:

                ①Panoptic Segmentation(全景分割):为每一个像素分配语义类别和唯一标识。

                ②Unsupervised Domain Adaptation(无监督域自适应,UDA):利用已标记的源于数据来学习未标记的目标域数据。

                ③Self-training(自训练):一种主流的无监督域自适应技术,具体做法是利用伪标签重新训练网络。

二、模型&方法

        1.损失函数

        源域记作:D_s=\{(x_s^i,y_s^i)\};目标域记作D_t=\{x_t^i\}交叉熵损失函数可以定义为:L_{sup}=l(G(x_s),y_s)(仅使用源域进行训练)

        2.无监督训练

        整个无监督训练分为两个数据流:使用动量模型G^m校准伪模板;使用校准后的模型G进行无监督训练(使用自训练损失函数l_{self})。

        具体做法为:

                ①将未标记的图片x_t输入动量模型G^m中,生成一组伪掩码\hat{y}_{t}

                ②将伪掩码\hat{y}_t发送到HMC模块(分层掩码校准模块,Hierarchical Mask Calibration)中,生成校准后的伪掩码\hat{y}_{​{t}'},HMC模块会由粗到精校准伪掩码;

                ③将图像x_t校准后的伪掩码\hat{y}_{​{t}'}进行扩充(变形、裁切、缩放等),得到x_{aug}\hat{y}_{​{aug}'}

                ④使用自训练损失函数L_{self}来训练模型G

        其中动量模型G^m\theta G^m \leftarrow \gamma \theta G^m + (1-\gamma)\theta G\gamma为动量系数。

        3.分层掩码校准(HMC)

        HMC将物体和其预测(things and stuff predictions)统一视为掩码,并由粗到细对每层的掩码进行校正。校准分为三个阶段:区域超像素像素

                ①区域校准(Region-wise Calibration)

                通过重新加权类别概率来调整掩码类别;其使用的公式为:

                        \hat{c}_t ^k = \underset{c}{argmax} (w^{(c,k)}\bigotimes p^c);其中p^c为类别概率,\bigotimes为逐元素乘,w^{(c,k)}表示每个伪掩膜的概率的校准权重(对应第c类),权重w的计算公式为:

                        w^{(c,k)}=Softmax(-||v^k_r-\delta^c ||_1);其中,v_r^k区域特征向量\delta^c为特征向量第c质心\delta ^c距离||\; ||_1为L1距离。

                        其中区域特征向量v_r^k使用全局平均池化GAP,将特征掩码\hat{M}内的特征汇聚成区域向量v_r^k,公式如下:

                        v_r^k = GAP(\hat{M} \bigotimes f_t^k),其中f_t^k\in R^{E\times H \times W}

                        其中质心\delta^c的计算公式为:

                        \delta^c=\frac{\sum_{x_t \in D_t}\sum_{k \in K}v_m^r\cdot \mathbb{I}(\hat{c}=c)}{\sum_{x_t \in D_t}\sum_{k \in K}\mathbb{I}(\hat{c}^k=c)};其中\mathbb{I}指示函数,当向量v_m^k属于c类时返回1,不属于时返回0;

                        可以使用动量模型更新质心:

                        \delta^c \leftarrow {\gamma}' \delta^c + (1-{\gamma}')\delta_*^c;其中{\gamma}'为更新系数。

                ②超像素校准(Superpixel-wise Calibration)

                利用超像素黏附周围物体的边界特征来调整掩码性状;首先计算图片x_t超像素图M^I(其中包含I个超像素M^i),然后选择原始掩码\hat{M}_t^k中的超像素来生成修正后的掩码M_{sp}^k,可以表述为公式:

                M_{sp}^k=\bigcup_{i\in I}^{}M^{(i)} \cdot \mathbb{I}(A^{(i)}>0);该公式会选出与掩码模型重叠的超像素,工作模式如下图的(b)、(c)所示:

                ③像素校准(Pixel-wise Calibration)

                引入像素级分类信息,使用像素级投票机制调整掩膜边界;如上图中的(d)所示,当超像素M_{sp}^k中多数像素的特征向量与伪掩码总体类别不一致时,抛弃该超像素。可以表述为公式:

                \underset{c}{arg}min(||v_p^{(k,j)}||-\delta^c)=c_t^{​{k}'}

三、网络优化

        自训练损失函数L_{self}可以表示为:L_{self}=l(G(x_{aug}),\hat{y}' _{aug});其中l为匈牙利损失函数。

        总体损失函数由最小化监督损失函数L_{sup}非监督损失函数L_{self}共同决定。可以表述为:

                \underset{a}{arg}minL_{sup}+L_{self}

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

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

相关文章

python环境部署

一、源码安装 1.安装依赖软件包 安装开发工具包 [rootlocalhost ~]# yum groupinstall "Development Tools" -y [rootlocalhost ~]# [rootlocalhost ~]# yum -y install zlib-devel bzip2-devel openssl-devel sqlite-devel readline-devel libffi-devel官网下…

pytorch打印模型结构和参数

两种方式 当我们使用pytorch进行模型训练或测试时,有时候希望能知道模型每一层分别是什么,具有怎样的参数。此时我们可以将模型打印出来,输出每一层的名字、类型、参数等。 常用的命令行打印模型结构的方法有两种: 一是直接prin…

[已解决]大数据集群CPU告警问题解决

大数据集群CPU告警问题解决 问题 6台机器的 CPU总是连续超过90% 思路 调整yarn资源 常见的是调整容器虚拟 CPU 内核 yarn.nodemanager.resource.cpu-vcores 根据集群具体的CPU核数规划 我另外调整了两个参数 最小容器虚拟 CPU 内核数量 yarn.scheduler.minimum-allocati…

中科院上高院,协鑫,和数“能源数字化智能管控”合作项目开启

10月27日,上海和数软件有限公司与协鑫综合能源服务有限公司、中国科学院上海高等研究院签署了《关于“能源数字化智能管控”开发与应用框架合作协议》。 这也标志着新疆协鑫智慧能源有限公司数字化智能提升项目——数字孪生项目正式启动。 根据协议,三方…

Flash Attention 的优点以及Softmax 归一化系数解释

文章:FLASHATTENTION: Fast and Memory-Efficient Exact Attention with IO-Awareness 原始Attention 计算使用gpu存储标准流程 涉及两个gpu存储器: 1)SRAM(static Random Access Memory):静态随机存取存储器 2&…

Python Django 之全局配置 settings 详解

文章目录 1 概述1.1 Django 目录结构 2 常用配置:settings.py2.1 注册 APP:INSTALLED_APPS2.2 模板路径:TEMPLATES2.3 静态文件:STATICFILES_DIRS2.4 数据库:DATABASES2.5 允许访问的主机:ALLOWED_HOSTS 1 …

【C】柔性数组

柔性数组 也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。 例如: 柔性数组的特点 结构中的柔性数组成员前…

tab切换样式

一、样式一 <view class"tabs"><view class"tab" :class"{active: active index}" v-for"(item, index) in tabs" click"active index">{{item.label}}</view></view> data(){return {active: 0…

Codeforces Round 905 (Div. 3)

目录 A. Morning B. Chemistry C. Raspberries D. In Love E. Look Back F. You Are So Beautiful G1. Dances (Easy version) G2. Dances (Hard Version) A. Morning time limit per test 2 seconds memory limit per test 256 megabytes input standard input …

重磅新闻-国内首家八类网线认证分析仪上市了

伴随USA对国内某些敏感企业的非常不友好&#xff0c;设置层层障碍&#xff0c;技术堡垒。使得一些网线基础制造研发、线缆线束厂、汽车生产生产厂、军工用途的线缆品质的认证、以及相关高校的研发受到了不同的程度的阻碍。重磅消息&#xff0c;国内首家八类网线认证测仪-维信仪…

Vue前后端分离的低代码开发框架

目录 项目简介 平台特性 1.构架特性 2.功能特性 技术栈 1.后端技术栈 2.前端技术栈 2.1 Vue2技术栈 2.2 Vue3技术栈 3.数据库支持 部署方式 项目简介 JNPF开发平台是一个基于SpringBootVue3的全栈开发平台&#xff0c;采用微服务、前后端分离架构。前后端封装了上千…

【多线程相关其一】Python并发编程

1.为什么要引入并发编程 场景1&#xff1a;一个网络爬虫&#xff0c;按顺序爬取花了1个小时&#xff0c;采用并发下载减少到20分钟。 场景2&#xff1a;一个APP应用&#xff0c;优化前每次打开页面需要3秒&#xff0c;采用异步并发提升到每次200毫秒 引入并发&#xff0c;就是…

Centos系统安装阿里云盘+简单使用

GitHub地址&#xff1a; 1、安装阿里云盘 wget https://github.com/tickstep/aliyunpan/releases/download/v0.2.7/aliyunpan-v0.2.7-linux-amd64.zip unzip aliyunpan-v0.2.7-linux-amd64.zip mv aliyunpan-v0.2.7-linux-amd64 /usr/local/aliyunpan ln -s /usr/local/aliyu…

安装Jdk 报错 ,Java SE Development Kit 8 Update 202(64-bit)安装完毕之前,向导被中断

具体原因没有找到&#xff0c;估计是由于jdk 没有删干净导致的&#xff0c;我的处理方法是&#xff0c;将 Java的注册表全然后手动安装 Jdk和导入注册表&#xff08;在同事那里获取jdk文件 压缩包&#xff0c;并将 java的注册表导出&#xff0c;放在自己电脑上使用。&#xff0…

动手学深度学习——第七次学

LeNet&#xff08;LeNet-5&#xff09;由两个部分组成&#xff1a; 卷积编码器和全连接层密集块 卷积把高宽不断变小&#xff0c;把通道数逐渐增多&#xff0c;&#xff08;最后高宽会变成&#xff0c;通道会变得很大&#xff0c;然后做全连接进行输出&#xff09;通道信息可以…

Leetcode—1488.避免洪水泛滥【中等】

2023每日刷题&#xff08;十四&#xff09; Leetcode—1488.避免洪水泛滥 算法思想 将晴天的日期全部记录在set<int> sun中使用unordered_map<int, int> lakeRainy来记录每个湖泊上一次下雨的日期遇到晴天时先不用管抽哪个湖当下雨时&#xff0c;湖泊已经装满水时…

QT5 通过 webview2 加载网页

官方文档参考&#xff1a;https://learn.microsoft.com/zh-cn/microsoft-edge/webview2/get-started/win32 Webview2依赖的头文件和库 头文件主要为&#xff1a;WebView2和WixLibrary&#xff0c;存储在include/external 库主要为&#xff1a;WebView2LoaderStatic.lib和W…

C++——类和对象(构造函数与析构函数)

构造函数与析构函数 本章思维导图&#xff1a; 注&#xff1a;本章思维导图对应的Xmind文件和.png文件都已导入到”资料“中 1. 构造函数 以前&#xff0c;我们写一个Date类一般是这么写的&#xff1a; class Date { public :void Init(int year, int month, int day){_year…

Unity Animator cpu性能测试

测试案例&#xff1a; 场景中共有4000个物体&#xff0c;挂在40个animtor 上&#xff0c;每个Animator控制100个物体的动画。 使用工具&#xff1a; Unity Profiler. Unity 版本&#xff1a; unity 2019.4.40f1 测试环境&#xff1a; 手机 测试过程&#xff1a; 没有挂…