DEFORMABLE DETR详解

Deformable DETR针对DETR的收敛速度慢和小物体检测性能低的问题进行了优化,通过关注关键采样点减少计算复杂性并提升小物体检测效果。其核心思想是引入可变形注意力模块,只关注目标周围的关键点,通过学习偏移量来优化特征采样。在多尺度特征图上应用此模块,结合迭代边界框细化和两阶段检测机制,提高了检测性能和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.解决问题

  • DETR需要比现有的目标检测器更长的训练时间来收敛。 
  • DETR在检测小物体方面的性能相对较低,并且无法从高分辨率特征地图中检测到小物体。
  • 可变形卷积可以识别重要特征,但是无法学习重要特征之间的联系

        transformer组件在处理图像特征图中的不足。在初始化时,注意模块对特征图中的所有像素施加了几乎一致的注意权重。长时间的训练周期是为了学习注意权重,以关注稀疏的有意义的位置。另一方面,transformer编码器中的注意权值计算是二次计算w.r.t.像素数。因此,处理高分辨率的特征映射具有非常高的计算和内存复杂性。

2.核心思想

        Deformable DETR,它的注意模块只关注一个目标周围的一小部分关键采样点。Deformable DETR可以获得比DETR(特别是在小物体上)更好的性能,在训练时间少10×的时期。 

3.实施细节

        可变形注意模块无论特征图的空间大小如何,都只关注参考点周围的一小组关键采样点(reference point)。通过为每个queries只分配少量固定数量的keys,可以缓解收敛性和特征空间分辨率的问题。 

        对于初始化,首先初始化采样附近的n个点(默认为4),即认为附近的点的特征对该点的关系最强,但是一定是吗?不一定,那么我们可以通过网络学习,偏移到关系最强的点。但是神经网络学习到的偏移不一定是小数,怎么办呢?那么我们就可以通过周围的点进行插值得到该点的特征。

 公式详解:

         表示初始的采样的关键点,表示偏移量,表示特征的权重,即表示特征映射,

表示queries与keys的点乘,即注意力,其中都是通过z_{q}全连接而来。

        如下图所示, z_{q}表示特征图上的原始特征,经过全连接层做特征映射,同时采样出3个采样点。同时z_{q}经过全连接层可得到注意力权重(qk)

  Multi-scale Deformable Attention Module. 

为输入的多尺度特征映射(特征金字塔),其中。表示尺度信息,为每个queries的参考点的归一化坐标,即因为有多个尺度,需要将绝对坐标转为相对坐标,则应用多尺度可变形注意模块为

        外部的m表示多头注意力机制,L表示特征金字塔的维度,作者可能认为不同尺度同一位置的特征相似,因此,做相加操作。K表示采样的特征点

4.整体架构

         对于输入图片,首先经过Multi-scale Deformable self-Attention选取特征点,并做特征映射,生成向量,对于位置编码,有两种,一种是在相对位置编码加上绝对level级别编码,另外一种是加入可学习的level编码。然后输入decoder中,对于decoder,首先初始化300个初始化向量,经过self-Attention的处理,然后与ecoder特征做注意力运算,最后做预测。

 5.预测头的设置

        Iterative Bounding Box Refifinement. 建立了一种简单有效的迭代边界框细化机制,以提高检测性能。在这里,每个解码器层根据上一层的预测来细化边界框。        

        Two-Stage Deformable DETR. 在原始的DETR中,解码器中的对象查询与当前图像无关。受两阶段目标探测器的启发,我们探索了可变形DETR的一种变体,用于生成区域建议作为第一阶段。生成的区域建议将被输入解码器作为对象查询以进一步细化,形成一个两阶段可变形的DETR。
        在第一阶段,为了实现高召回率的建议,多尺度特征图中的每个像素都将作为一个对象查询。然而,直接将对象查询设置为像素会给解码器中的自注意模块带来不可接受的计算和内存成本,其复杂度随着查询的数量呈二次增长。为了避免这个问题,我们去掉了解码器,并形成了一个仅限编码器的可变形的DETR,用于区域提案的生成。在它中,每个像素被分配为一个对象查询,它直接预测一个边界框。得分最高的边界框被选为区域提案。在将区域提案提交到第二阶段之前,不应用NMS。

 

### 关于复现Deformable DETR模型实现和设置 #### 1. 准备环境 为了成功复现 Deformable DETR 模型,首先需要准备合适的开发环境。建议使用 Anaconda 创建独立的 Python 环境以管理依赖项。 ```bash conda create -n deformable_detr python=3.8 conda activate deformable_detr ``` 安装必要的软件包,包括 PyTorch 及其对应的 CUDA 版本: ```bash pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113 ``` #### 2. 获取源代码 访问官方 GitHub 仓库获取最新版本的 Deformable DETR 实现[^1]。克隆项目到本地计算机上: ```bash git clone https://github.com/fundamentalvision/Deformable-DETR.git cd Deformable-DETR ``` #### 3. 安装依赖关系 按照 README 文件中的说明安装所需的 Python 包。通常这可以通过运行以下命令完成: ```bash pip install -r requirements.txt ``` #### 4. 数据集下载与预处理 根据具体需求选择合适的数据集(如 COCO),并遵循文档指南进行数据集的下载和预处理操作。确保数据路径配置正确以便后续训练过程能够顺利读取图像文件及其标注信息。 #### 5. 训练模型 调整配置参数后启动训练脚本,在此之前可能还需要指定 GPU 设备编号等选项。例如: ```bash python main.py --coco_path /path/to/coco/ ``` 通过上述步骤应该能够在个人机器上重现 Deformable DETR 的基本功能。需要注意的是实际效果可能会因硬件条件差异而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樱花的浪漫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值