[迁移学习]DA-DETR基于信息融合的自适应检测模型

原文标题为:DA-DETR: Domain Adaptive Detection Transformer with Information Fusion;发表于CVPR2023

一、概述

        本文所描述的模型基于DETR,DETR网络是一种基于Transformer的目标检测网络,详细原理可以参见往期文章:[自注意力神经网络]DETR目标检测网络。本文在DETR模型的基础上,引入了信息融合机制,可以有效的实现从有标记的源域无标记的目标域之间的转移。

        相较于传统的两段式网络(Two-Stage;如Faster RCNN),DETR可以通过CNN骨干网络获得低层次的定位特征(如对象周围的边缘)通过Transformer Head获得全局像素间的关系和高级语义特征。融合这两种不同层次的信息可以有效的解决域自适应问题。

        本文创造性的提出了CTBlender(CNN-Transformer Blender)的概念。其原理是使用Transformer Head中的高级语义特征有条件的调节CNN主干中的低级特征。CTBlender由两个组件构成:

                ①分裂-合并融合(split-merge fusion;SMF):将CNN特征分为多个具有不同语义的组;再通过Transformer捕获这些语义信息;然后将这些通过并排合并(便于不同组之间有效的通信)

                ②多尺度聚合融合(scale aggregation fusion;SAF):通过融合多尺度特征的语义信息和本地化信息来聚合SMF获得的特征。

二、模型&方法

        1.Deformable-MSA

        DETR采用“编码器-解码器”模式,对于给定的图像x,先由骨干网络G生成特征向量f,然后通过Transformer对其进行编解码,Transformer由多头注意力模块组成,可以定义为公式:

                MSA(z_q,f)=\sum^H_{h=1}P_H[\sum SA_{hqk} \cdot {P_H}'f_k];其中MSA是由H个单头注意力构成,z_qf_k表示查询元素和关键元素,P_H \in R^{d \times d_h}{P_H}' \in R^{d \times d_h}为可学习的投影权重,而SA_{hqk}一种缩放的点注意力(将查询和键值映射到输出中),可以描述为公式:

                SA_{hqk} \propto exp(\frac{Z_q^TU_m^TV_mf_c}{\sqrt{d_h}});其中U_m,V_m均为可学习权重。

        本文提出了一种Deformable-Transformer(可变形Transformer)来代替传统的Transformer,这种结构拥有更快的收敛速度,其可以表述为:

                 D-MSA(Z_q,p_q,f)=\sum^H_{h=1}P_H[\sum_kSA_{hqk}\cdot {P_H}'f(p_q+\delta p_{hqk})];其中\delta p_{hqk}为第k个采样点的偏移量,SA_{hqk}为关注权重,改结构可以有效的缓解DERT收敛慢的问题,同时可变形的特点也适合从骨干网络中融合多尺度特征结构。

        2.网络结构

        网络总体结构如上图所示,整个网络可以被描述为公式:

                L_{det}=l(T(G(x_s)),y_s);其中x_s为源域图像,y_s为源域标签,G为骨干网络,T为DERT Head,l为匈牙利损失函数。

        从结构图可以看出,与传统DERT相比,其最大的区别是加入了CTBlender模块用于进行非监督的域适应训练。故其用于监督学习的分支①与传统DERT相同,通过将损失函数L_{det}前向传递即可完成训练。

        对于无监督训练,CTBlender以源图目标图的CNN的多尺度特征向量f^l(l=1,2,3,4)和Transformer编码的语义向量p^l(l=1,2,3,4)作为输入,CTBlender的输出将作为鉴别器(Discriminator)的输入,计算得出用于域间对齐的对抗损失函数L_{adv},可以表述为公式:

                L_{adv}=E_{(f,p)}\in D_s log C_d(H(f,p))+E_{(f,p)}\in D_t log(1-C_d(H(f,p)));其中f=G(x),p=E(G(x))G是骨干网络函数,E为Transformer编码器函数,H为CTBlender函数C_d为鉴别器。

        DA-DERT的总体优化函数可以描述为:\underset{C_d}{max}\, min L_{det}(G,T)-\lambda L _{adv}(H,C_d)

        3.CTBlender

        CTBlender由两个模块组成:SMF(负责混合CNN和Transformer的特征)和SAF(负责融合不同尺寸的加权特征图),其具体结构如下:

                ①SMF

                 由于SMF对每层的操作都是一样的,原文选择l=1时的数据进行展示。首先将CNN的特征图f^1和Transformer的语义特征p^1拆分(split)为多个组,(f^1p^1沿着通道均分为K个组)并通过空间(Spatial-wise)和通道(Channel-wise)两个方向进行融合;融合后的特征与信道进行合并(merge)。

                空间融合:分裂的p^1特征首先进行归一化,然后通过可学习权重图对偏置图(bias map)进行重加权,可以描述为公式:

                        \hat{p}^1_{ks}=f_s(w_s \cdot GN(p_k^1)+b_s);其中f_s()的输出范围限定在[0,1]

                通道融合:分裂的p^1通过全局池化进行压缩,然后通过可学习权重图对偏置图(bias map)进行重加权,可以描述为公式:

                        \hat{p}^1_{kc}=f_s(w_c \cdot GAP(p_k^1)+b_c);其中GAP为全局平均池化(Global Average Pooling),f_s()的输出范围限定在[0,1]

                利用上面求出的权重\hat{p}^1_{ks}\hat{p}^1_{kc}在对应的方向上对分裂后的特征图f_k^1进行重新加权,得到加权后的特征图\hat{f}_k^1,然后沿着通道方向对\hat{f}^1_k进行K次混洗(shuffle),将混洗后的特征图融合为\hat{f}^1

                ②SAF

                 将SMF得到的多尺度加权特征图组\hat{f}=\{\hat{f}^l\}^L_{l=1}通过全局平均池化(GAP)压缩为向量组u=\{u^l\}^L_{l=1}。首先通过逐元素求和的方法将通道方向的向量求和为u_m;然后通过全连接层将向量u_m和对应的权重向量\alpha^l连接(\alpha^l \in R^{c \times 1 \times 1});最后将文本信息嵌入到向量V_a中,可描述为公式:V_a=\sum^L_{l=1}\hat{f}^l \cdot \alpha^l

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

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

相关文章

如何用PHP获取各大电商平台的数据

PHP获取API数据是指使用PHP语言从web服务中提取数据。API是指应用程序接口,它允许应用程序之间进行交互和通信,并且允许一个应用程序从另一个应用程序获取数据。PHP是一种网站开发语言,它可以使用多种方式来获取API数据。 在PHP中&#xff0…

前端基础之BOM和DOM

目录 一、前戏 window对象 window的子对象 navigator对象(了解即可) screen对象(了解即可) history对象(了解即可) location对象 弹出框 计时相关 二、DOM HTML DOM 树 查找标签 直接查找 间…

Python安装教程

1 安装python环境 1.1 下载python 首先打开http://www.python.org (这个是python官网)下载配置环境。点击上方 downloads,选择对应的系统的版本就行,这里以windows64系统为例。 点击之后,可以看到很多版本,这里我选择…

创建超过1G内存大小的程序

正常情况一个进程最大占用内存为1G一下&#xff0c;如果程序有需求要使用超过1G大小的程序&#xff0c;可进行如下操作 VS修改设置&#xff1a;属性--->链接器--->系统--->启用大地址 【选择是】 测试申请堆内存代码 #include <stdlib.h> #include <stdio…

在NISQ小型计算机上执行大型并行量子计算的可能性

简介 Steve White提出了密度矩阵重整化群&#xff08;DMRG&#xff09;的基本思想&#xff0c;即纠缠是一种有价值的资源&#xff0c;可以用来精确或近似地描述大量子系统。后来&#xff0c;这一思想被理解为优化矩阵积状态&#xff08;MPS&#xff09;的算法&#xff0c;支持…

21.13 Python 实现端口流量转发

端口流量转发&#xff08;Port Forwarding&#xff09;是一种网络通信技术&#xff0c;用于将特定的网络流量从一个端口或网络地址转发到另一个端口或地址。它在网络中扮演着一个非常重要的角色&#xff0c;在Python语言中实现端口转发非常容易。 如下这段代码实现了一个基本的…

Linux -------------------设置防火墙和SELinux

&#xff08;一&#xff09;防火墙概述 防火墙的概念&#xff1a;防火墙是一种非常重要的网络安全工具&#xff0c;它是网络安全的重要组成部分&#xff0c;用于保护计算机网络免受未经授权的访问、恶意攻击和数据泄漏等威胁等。 防火墙的特点 防火墙通常具备以下几个特点。 …

【C语言】备战校赛Day1

日期:11.1 星期二 L1-001 Hello World 题目描述 这道超级简单的题目没有任何输入。 你只需要在一行中输出著名短句“Hello World!”就可以了。 输入样例: 无 输出样例: Hello World! 解题代码 int main() {printf("Hello World!");return 0; } 该题较为简单,但要注…

基于Tensorflow卷积神经网络玉米病害识别系统(UI界面)

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 Tensorflow是一个流行的机器学习框架&#xff0c;可用于训练和部署各种人工智能模型。玉米病害识别系统基于Tensorf…

[idea]关于idea开发乱码的配置

在JAVA开发中&#xff0c;一般统一设置为UTF-8的编码&#xff0c;包括但不限于开发工具、日志架构、虚拟机、文件编码等。常见配置如下&#xff1a; 1、IDEA工具 在idea64.exe.vmoptions、idea.exe.vmoptions中添加&#xff1a; -Dfile.encodingUTF-8 2、JAVA 运行在window…

chat2db初步使用和体验AI

今天下载chat2db体验了下将主要功能和使用截图总结下&#xff1a; 功能&#xff1a; 1.传统客户端能使用的功能基本都有&#xff0c;并且增加了导出excel等便捷的能力。 2.报表功能&#xff1a; 可以根据查询结果进行对应报表可视化显示 3.AI解析sql 可以根据输入的汉语例如…

开源的网站数据分析统计平台——Matomo

Matomo 文章目录 Matomo前言一、环境准备1. 整体安装流程2.安装PHP 7.3.303.nginx配置4.安装matomo4.1 访问安装页面 http://192.168.10.45:8088/index.php4.2 连接数据库4.3 设置管理员账号4.4 生成js跟踪代码4.5 安装完成4.6 警告修改4.7 刷新页面&#xff0c;就可以看到登陆…

软件测试报告所需周期和费用简析

软件测试报告是在软件开发和测试过程中生成的重要文档之一。它提供了对软件系统经过全面测试后的状态和质量的详细描述&#xff0c;以记录软件测试的过程和结果。 生成一个完整的测试报告需要根据软件项目的规模和复杂性来确定时间。较大规模和复杂的软件项目可能需要更长的时…

【错误解决方案】ModuleNotFoundError: No module named ‘feather‘

1. 错误提示 在python程序中&#xff0c;尝试导入一个名为feather的模块&#xff0c;但Python提示找不到这个模块。 错误提示&#xff1a;ModuleNotFoundError: No module named feather 2. 解决方案 出现这种情况&#xff0c;有可能是因为你还没有安装这个模块&#xff0c;…

Flutter 小技巧之不一样的思路实现炫酷 3D 翻页折叠动画

今天聊一个比较有意思的 Flutter 动画实现&#xff0c;如果需要实现一个如下图的 3D 折叠动画效果&#xff0c;你会选择通过什么方式&#xff1f; 相信可能很多人第一想法就是&#xff1a;在 Dart 里通过矩阵变换配合 Canvas 实现。 因为这个效果其实也算「常见」&#xff0c;…

使用 PyTorch 构建自定义 GPT

一、介绍 介绍大模型&#xff0c;首先考虑一下使用 ChatGPT、Bing Chat 或 Bard 。您是否想过拥有自己的 ChatGPT 会是什么样子&#xff1f;想象一下创建自己的 GPT 模型的兴奋程度。这确实是一种难以置信的感觉&#xff01; 为了开始构建自定义 GPT 的旅程&#xff0c;让我们仔…

MATLAB和S7-1200PLC OPC通信(激活S7-1200PLC OPC UA服务器)

MATLAB和SMART PLC OPC通信请参考下面文章博客: MATLAB和西门子SMART PLC OPC通信-CSDN博客文章浏览阅读123次。西门子S7-200SMART PLC OPC软件的下载和使用,请查看下面文章Smart 200PLC PC Access SMART OPC通信_基于pc access smart的opc通信_RXXW_Dor的博客-CSDN博客OPC是…

通讯网关软件032——利用CommGate X2OPC实现OPC客户端访问Modbus TCP设备

本文介绍利用CommGate X2OPC实现OPC客户端连接Modbus TCP设备。CommGate X2OPC是宁波科安网信开发的网关软件&#xff0c;软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示&#xff0c;SCADA系统上位机、PLC、设备具备Modbus TCP通讯接口&#xff…

机器学习2:决策树--基于信息增益的ID3算法

1.决策树的简介 建立决策树的过程可以分为以下几个步骤: 计算每个特征的信息增益或信息增益比,选择最优的特征作为当前节点的划分标准。根据选择的特征将数据集划分为不同的子集。对每个子集递归执行步骤 1 和步骤 2,直到满足终止条件。构建决策树,并输出。基于信息增益的…

k8s调度约束

List-Watch Kubernetes 是通过 List-Watch的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 List-Watch机制 工作机制&#xff1a;用户通过 kubectl请求给 APIServer 来建立一个 Pod。APIServer会将Pod相关元信息存入 etcd 中…