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

Deformable DETR:Deformable Transformers for End-to-End Object Detection论文学习

1. 为什么提出了Deformable DETR?

因为DETR本身的计算量大,收敛速度慢。其次是小目标检测效果差。主要原因是Attention模块每次只关注一小部分采样点,导致需要很多轮数才能学习到真实需要关注的目标。

Deformable DETR注意力模块只关注一个query周围的少量关键采样点集,采样点的位置并非固定,而是可学习的。同时,受到deformable convolution(可变性卷积)的启发,认为Attention模块也可以关注更灵活的采样点,让每个位置不必和所有位置交互计算,只需要和部分(学习来的,重要的部分)进行交互即可,进而提出deformable attention模块。

2. 模型架构图

在这里插入图片描述
论文的deformable attention 模块
在这里插入图片描述
再看看基础的backbone:

保留尺寸小的特征图有利于检测大目标,保留尺寸大的特征图善于检测小目标。为此,Deformable DETR提取4个尺寸下的特征图(DETR仅1个尺寸),特征提取过程如下图:
在这里插入图片描述

3. 相比于detr,主要的改进如下:

  1. 多尺度 feature map(参考上图最左侧)
  2. Encoder部分的Muti-Head Self-Attention改为Multi-Scale Deformable Self-Attention
  3. Dncoder部分的Muti-Head Attention改为Multi-Scale Deformable Cross-Attention
  4. 让检测头prediction heads预测边界框与参考点的相对偏移量,以进一步降低优化难度。
  5. 目标数上限从100提升至300,在最后预测的时候会选择top-k前100进行预测。

此处借鉴:https://blog.csdn.net/qq_51352130/article/details/142690269一张图,和detr的结构进行对比一波。
在这里插入图片描述
为什么Decoder中的Multi-Head Self-Attention模块不改成Multi-Scale Deformable Cross-Attention模块?

这儿有些懵,借用博客的解释:在交叉注意模块中,对象查询从特征映射中提取特征,其中的key是来自编码器的输出特征映射;在自注意模块中,对象查询相互交互,其中key是对象查询(key value的来源一般都是同一个)。而本文提出的可变形注意模块是将卷积特征图作为关键元素设计的,因为交叉注意模块使用了encoder的输出,encoder的输入是特征图,因此只需要修改交叉注意模块就可以了。

4. 实验分析

本文中,query是由二维参考点 p q p_q pq和content feature z q z_q zq组成。content feature用于生成参考点的偏移量 △ p m q k \vartriangle{p_{mqk}} pmqk和attention权重矩阵 A m q k A_{mqk} Amqk。此处的q指query,m指多头的头数,k指参考点个数。其中,参考点是由object query经过一个全连接和sigmoid函数得到。对于单尺度的计算公式如下:
在这里插入图片描述
当加入了多头后,计算公式如下:
在这里插入图片描述
查询情况的变化:
其次,为了进一步加快收敛,作者在query的初始化和优化方式上也进行了改进,query使用2维参考点初始化,并且每一层decoder都进行优化(论文中称为Iterative Bounding Box Refinement),再传递到下一层decoder。注意这里和下文优化query方式的不同点,此处每一层优化的只是参考点。参考点是用于 deformable convolution的。

在对公式进行一波对比,借用大佬的图:https://zhuanlan.zhihu.com/p/677614600
在这里插入图片描述
在这里插入图片描述

5. 两阶段detr

最后,作者提出了两阶段 Deformable DETR,先在第一阶段生成候选query(此时只有transformer encoder),每个像素值作为一个query,预测对应的bbox,然后选择分数较高的bbox作为第二阶段的query。

与Faster R-CNN + FPN相比,DETR需要更多的训练epoch来收敛,在检测小目标时性能更差。与DETR比较,Deformable DETR 使用10x更少的训练轮次实现了更好的性能表现(特别是在小物体上)。

在这里插入图片描述
上图中的表显示,Deformable Detr的效果优势,最后作者还测试了每一层decoder都进行优化方式和两阶段的Deformable Detr效果,效果确实不错。


http://www.kler.cn/a/449749.html

相关文章:

  • vue3入门教程:ref函数
  • 项目代码第6讲:UpdownController.cs;理解 工艺/工序 流程、机台信息;前端的“历史 警报/工艺 记录”
  • 【086】基于51单片机电子音乐门铃【Proteus仿真+Keil程序+报告+原理图】
  • 一篇文章学会HTML
  • JAVA:组合模式(Composite Pattern)的技术指南
  • C++ 杨辉三角 - 力扣(LeetCode)
  • 【从零开始入门unity游戏开发之——C#篇26】C#面向对象动态多态——接口(Interface)、接口里氏替换原则、密封方法(`sealed` )
  • Springboot项目本地连接并操作MySQL数据库
  • 数据结构概念介绍
  • Javascript数据结构——二叉树篇
  • 微信小程序xr-frame透明视频实现
  • 服务器证书原理
  • WebContainerapi 基础(Web IDE 技术探索 一)
  • DevOps工程技术价值流:制品库Nexus与Harbor的实战探索
  • 重温设计模式--适配器模式
  • Spring - 12 ( 7000 字 Spring 入门级教程 )
  • Echarts之yAxis属性超超超级详情版学习
  • 灵当CRM getMyAmbassador SQL注入漏洞复现
  • Unity3D VFX事件系统详解
  • 在 Docker 中部署 Jenkins,并完成项目的构建和发布
  • 【C#】List求并集、交集、差集
  • Postman接口测试工具使用详解
  • 中国信通院致信感谢易保全:肯定贡献能力,期许未来合作
  • 【QSS样式表 - ⑥】:QPushButton控件样式
  • nginx采用域名访问后台接口时报400
  • git管理