当前位置: 首页 > news >正文

基于Transformer的目标检测算法学习记录

前言

本文主要通过阅读相关论文了解当前Transformer在目标检测领域的应用与发展。
谷歌在 ICLR2020 上提出的 ViT(Vision Transformer)是将 Transformer 应用在视觉领域的先驱。从此,打开了Transformer进入CV领域的桥梁,NLP与CV几有大一统之趋势。

俗语云:万事开头难,尽管Transformer在CV领域的研究仍处于开始阶段,但伴随着研究者们夜以继日,前仆后继的不断深入,Transformer在CV领域的研究已经颇有成效,尤其是目标检测领域,随着2020 年 Carion 等人提出了一种新型的 Transformer 目 标检测框架DETR(Detection Transformer),为 Transformer 在目标检测任务中的应用奠定了重要的基础,后续出现了大量基于 DETR 的改进算法。

今天我们便围绕着Transformer在目标检测领域的研究工作展开学习。

Transformer 与 CNN 相结合

CNN 是基于临近像素具有较大相似性这一假设而形成的归纳偏置,局部性是它的典型特征,而Transformer 则对特征进行全局交互,因此,二者特征学习的方式和特征编码的内容有较大的差异。换言之,CNN侧重于局部特征的获取,而Transformer则在全局特征表达桑颇具心得。
因此,将 Transformer 和 CNN 相结合是提高模型特征提取能力的有效手段,下面从结构融合、特征融合和机理融合三个层面介绍 Transformer 和 CNN 结合的方法。

结构融合

旨在通过对多个模块进行有效的组合形成新的网络结构。

MobileViT将 Transformer 视为一个模块,集成到卷积神经网络中,使模型同时具备局部性和全局性。

MPViT采用多路并行的 Encoder 和卷积实现全局特征和局部特征的共享,达到了 SOTA 性能。

特征融合

该方式从特征层面入手,一般采用并行分支结构,融合 CNN 和 Transformer 提取到的特
征来增强特征表达能力。
Peng 等人(2021)提出的Conformer模型设计了并行的 CNN 和 Transformer分支,采用桥接模块实现特征融合。将 Conformer 作为 Backbone,在 COCO 上的 mAP 达到了 44.9%。

DeiT 结合知识蒸馏的思想,通过将 CNN 学习到的特征引入到 Transformer的训练过程中,实现两种特征的融合。

机理融合

结构融合与特征融合通过串行或并行的方式实现 Transformer 与 CNN 的结合,但注意力
机制和卷积仍然是不同的两个部分,没有充分的利用它们之间的相关性,而机理融合通过深入挖掘二者之间的内在联系,合理的集成注意力和卷积。

ACmix深入分析了自注意力与卷积特征提取机理的相似性,通过共享特征映射参数实现自注意力和卷积的机理融合,ACmix 同时具有局部性和全局性,在迁移至目标检测任务中时,在 COCO 上的 mAP 达到了 51.1%。

小结

Transformer 骨干网络通过自注意力编码图像全局特征,为检测器提供了高质量中间特征,其全局建模能力是 CNN 所不具备的。

但其仍存在许多问题:

  1. Transformer骨干的研究尚处于起步阶段,仍然存在计算量大、丢失细节信息等问题,目前,针对这些问题的改进主要围绕注意力机制展开,如:通过限制注意力作用范围以及下采样输入序列来降低计算量;通过解耦注意力机制来避免因合并操作丢失细节信息。此外,对Transformer 多尺度特征的设计和利用也是解决信息丢失的重要方法。
  2. 虽然 Transformer骨干提高了各种检测器的性能,但 CNN 的局部信息提取能力同样是 Transformer所欠缺的,并且在小样本训练时 CNN 更具优势,因此,Transformer 和 CNN相结合是研究的趋势,除了结构融合和特征融合这种较为直观的结合方式,进一步探究注意力和卷积的特征提取机制,挖掘其中的相似性,在机理层面实现二者的融合也取得了很好的效果。

在这里插入图片描述

预处理层

预处理层的主要功能包括数据增强和特征预学习。其中,数据增强通过引入多种变换在原训练集的基础上生成更多虚假样本,丰富了样本的多样性,有助于提高模型的泛化能力和检测性能;特征预学习通过 CNN 对原始输入图片做初步的特征提取,在增强特征的同时降低了后续编码器模块的输入分辨率,减少了计算量。

序列化层

序列化层的主要功能为:将图像输入划分为词向量序列并进行位置编码。一般的序列划分方式在输入的全局范围内进行划分,序列中的全部词向量通过注意力机制进行直接的交互,而以 Swin Transformer 为代表的窗口机制则是一种局部方式,位于同一窗口或组别中的词向量可在后续层中进行局部的交互;由于Transformer 缺乏位置感知能力,所以通过位置编码为模型显式的添加位置信息,位置编码方式主要分为绝对位置编码和相对位置编码,绝对位置编码只考虑了词向量在序列中的位置信息,相对位置编码则考虑了序列中词向量对之间的相对位置关系。

编码器层

一般采用标准 Transformer 编码器结构,通过注意力机制对序列化特征进行交互。自注意力机制通过计算词向量之间的相关性得到注意力分布,基于注意力分布实现特征的加权聚合。该层是特征学习环节的重要组成部分。

采样层

采样层主要负责特征重构以及特征采样和合并。其中,如果后续检测层沿用了基于 CNN 的目标检测模型的检测网络,则需要将序列特征重构为空间特征图,再将其馈入到检测网络中。特征的采样和合并主要有两方面的功能:减少序列中的词向量个数,从而减少计算量以及处理 Transformer 层级特征,例如配合FPN等多尺度特征融合技术或 ResNet残差链接思想进一步的增强和利用层级特征。

检测层

检测层旨在根据多个尺度的特征对图像中目标的位置和类别信息进行处理和预测。检测层的实现方式主要有两类:第一类,传统的基于 CNN 的目标检测模型的检测网络。第二类,基于解码器结构的目标估计,如 DETR 中的目标查询机制,通过目标查询向量与图像特征进行交互,抽取潜在的目标位置信息和类别信息,然后采用全连接网络预测目标信息,形成检
测结果。

在这里插入图片描述

相关文章:

基于Transformer的目标检测算法学习记录

前言 本文主要通过阅读相关论文了解当前Transformer在目标检测领域的应用与发展。 谷歌在 ICLR2020 上提出的 ViT(Vision Transformer)是将 Transformer 应用在视觉领域的先驱。从此,打开了Transformer进入CV领域的桥梁,NLP与CV几…...

嵌入式学习笔记——使用寄存器编程实现按键输入功能

文章目录前言模块介绍原理图编程思路前言 昨天,通过配置通用输出模式,实现了LED灯的点亮、熄灭以及流水等操作,解决了通用输出的问题,今天我们再借用最常见的输入模块,按键来实现一个按键控制LED的功能,重…...

打卡小达人之路:Spring Boot与Redis GEO实现商户附近查询

在当今社会,定位服务已经成为了各种应用的重要组成部分,比如地图、打车、美食等应用。如何在应用中实现高效的附近商户搜索功能呢?传统的做法是将商户的经纬度信息存储在关系型数据库中,然后使用SQL查询语句实现附近商户搜索功能。…...

Apache HTTP Server <2.4.56 mod_proxy_uwsgi 模块存在请求走私漏洞(CVE-2023-27522)

漏洞描述 Apache HTTP Server 是一个Web服务器软件。 该项目受影响版本存在请求走私漏洞。由于mod_proxy_uwsgi.c 中uwsgi_response方法对于源响应头缺少检查,当apache启用mod_proxy_uwsgi后,攻击者可利用过长的源响应头等迫使应转发到客户端的响应被截…...

JUC并发编程设计模式

一、保护性暂停 1.1 定义 即Guarded Suspension,用在一个线程等待另一 个线程的执行结果 要点 ● 有一个结果需要从一个线程传递到另一 个线程,让他们关联同一一个GuardedObject ● 如果有结果不断从一个线程到另一个线程那么可以使用消息队列(生产者…...

HTTPS加密解析

日升时奋斗,日落时自省 目录 1、加密解释 2、对称加密 3、非对称加密 4、证书 HTTPS(HyperText Transfer Protocol over Secure Socket Layer)也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层 HTTP协议内容都是按…...

Python每日一练(20230309)

目录 1. 删除有序数组中的重复项 ★ 2. 二叉树的最小深度 ★★ 3. 只出现一次的数字 II ★★ 🌟 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 专栏 1. 删除有序数组中的重复项 给你一个有序数组 nums ,请你原地删除重复出现的元素…...

哈希表题目:数组的度

文章目录题目标题和出处难度题目描述要求示例数据范围解法思路和算法代码复杂度分析题目 标题和出处 标题:数组的度 出处:697. 数组的度 难度 4 级 题目描述 要求 给定一个非空且只包含非负数的整数数组 nums\texttt{nums}nums,数组的…...

初识rollup 打包、配置vue脚手架

rollup javascript 代码打包器,它使用了 es6 新标准代码模块格式。 特点: 面向未来,拥抱 es 新标准,支持标准化模块导入、导出等新语法。tree shaking 静态分析导入的代码。排除未实际引用的内容兼容现有的 commonJS 模块&#…...

软考网络工程师证书有用吗?

当然有用,但是拿到网络工程师证书的前提是对你自己今后的职业发展有帮助,用得到才能对你而言发挥它最大的好处。软考证书的具体用处:1.纳入我国高校人才培养和教学体系目前,软考已经被纳入高校人才培养和教学体系。在很多高校中&a…...

postgresql 自动备份 bat实现

postgres数据据备分,用cmd命令有些烦,写了个bat实现 BAT脚本中常用的注释命令有rem、@rem和:: rem、@rem和::用法都很简单,直接在命令后加上要注释的语句即可。例如下图,语言前加了rem,运行BAT时就会自动忽略这个句子。需要注释多行时,每行前面都要加上rem、@rem和::。…...

gdb:在命令行中会莫名暂停;detach-on-fork

这个没有捕获到断点的原因是,可能是多线程的问题,需要设置: set detach-on-fork off On Linux, if you want to debug both the parent and child processes, use the command: set detach-on-fork on/off on 默认设置,gdb会放弃子线程(或者父线程,受follow-fork-mode的…...

【3.9】RedisAOF日志、字符串、操作系统进程管理

4. 进程管理 进程、线程基础知识 什么是进程 我们编写的代码只是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着 CPU 会执行程序中的每一条指令,…...

安装mayavi的成功步骤

这篇文章是python 3.6版本,windows系统下的安装,其他python版本应该也可以,下载对应的包即可。 一定不要直接pip install mayavi,这个玩意儿对vtk的版本有要求。 下载whl包 搞了很久不行,咱也别费那个劲了&#xff0…...

vue+echarts.js 实现中国地图——根据数值表示省份的深浅——技能提升

最近在写后台管理系统&#xff0c;遇到一个需求就是 中国地图根据数值 展示深浅颜色。 效果图如下&#xff1a; 直接上代码&#xff1a; 1.html部分 <div id"Map"></div>2.css部分——一定要设置尺寸 #Map {width: 100%;height: 400px; }3.js部分 …...

[oeasy]python0104_指示灯_显示_LED_辉光管_霓虹灯

编码进化 回忆上次内容 x86、arm、riscv等基础架构 都是二进制的包括各种数据、指令 但是我们接触到的东西 都是屏幕显示出来的字符 计算机 显示出来的 一个个具体的字型 计算机中用来展示的字型 究竟是 如何进化的 呢&#xff1f;&#x1f914;&#x1f914; 模拟电路时…...

Easy Deep Learning——卷积层

为什么需要卷积层&#xff0c;深度学习中的卷积是什么&#xff1f; 在介绍卷积之前&#xff0c;先引入一个场景 假设您在草地上漫步&#xff0c;手里拿着一个尺子&#xff0c;想要测量草地上某些物体的大小&#xff0c;比如一片叶子。但是叶子的形状各异&#xff0c;并且草地非…...

深入分析@Bean源码

文章目录一、源码时序图二、源码解析1. 运行案例程序启动类2. 解析AnnotationConfigApplicationContext类的AnnotationConfigApplicationContext(Class<?>... componentClasses)构造方法3. 解析AbstractApplicationContext类的refresh()方法4. 解析AbstractApplicationC…...

Web Components学习(1)

一、什么是web components 开发项目的时候为什么不手写原生 JS&#xff0c;而是要用现如今非常流行的前端框架&#xff0c;原因有很多&#xff0c;例如&#xff1a; 良好的生态数据驱动试图模块化组件化等 Web Components 就是为了解决“组件化”而诞生的&#xff0c;它是浏…...

Element-UI实现复杂table表格结构

Element-UI组件el-table用于展示多条结构类似的数据&#xff0c;可对数据进行排序、筛选、对比或其他自定义操作。将使用到以下两项&#xff0c;来完成今天demo演示&#xff1a;多级表头&#xff1a;数据结构比较复杂的时候&#xff0c;可使用多级表头来展现数据的层次关系。合…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...