DETR-series
DETR系列
进化的流程(目标检测)
- DETR→ deformable DETR → DAB-DETR → DINO → HIPT(WSI)
- 其中deformable DETR是由 deformable convolution 的启发设计而来
Deformable convolution
Overview
- 传统的卷积都是固定形状的,对于某些与卷积形状不符的物体识别率较低。难以适应物体的尺度,姿态和形状变化
- 提出了两个新模块
- 可变形卷积
- 可变ROI
- 他们可以直接替换现在体系下的CNN模块,并使用标准反向传播算法进行端到端的训练
Contribution
Deformable convolution
- 使用一个标准卷积和一个 偏移量学习, 通过一个并行的卷积层从前一层的特征途中即时学习得到的。网络根据输入动态变化形状
- 可能学习到小数,因此通过双线性插值对特征进行采样
Deformable ROI Pooling
- 在每一层pooling前为每个单元增加一个学习的偏移量
- 偏移量由一个全连接层生成,输入是标准ROI池化的特征。对于非刚性物体尤其有用
- 进一步提出了一个适用于R-FCN的位置敏感版本
Experiment & Result
- 自适应感受野:deformable 的 reception field与物体尺寸有关,证明网络学习了根据图像内容进行调整
- 稳定由于标准卷积和固定扩展率的卷积
DETR
Problem
- 传统的目标检测一样基于先验知识的anchor box或proposal
- 需要NMS进行后处理
- 对超参数敏感
Method
提出了一个端到端的学习方法,将目标检测视为一个 set prediction 问题,直接输出一个包含所有物体预测结果的无序集合
Architecture
- CNN backbone: 使用一个常规的CNN来提取图像的2D feature map
- Transformer Encoder-Decoder
- Encoder: 利用self-attention处理CNN图像的特征,捕捉图像的全局上下文信息
- Decoder:接受一小组 固定的,学习的位置编码,成为 object queries. Encoder 通过?self-attention和对编码器输出的注意力机制,并行将查询解码成最终的物体预测结果
Key Design
- Set-based Loss with Biparitte Matching
- 模型输出一个固定大小的预测集合,大于图中实际物体的数量
- 使用匈牙利算法,在模型和预测图之间寻找成本最低的二分图匹配,保证了每个真实物体只被分给了唯一的预测结果
- Hungarian los:类别预测损失和边界框损失的线性组合,结合了L1 损失和尺度不表的GIOU 损失
Results
- 对大物体效果更优,对小物体的效果较差。
- 需要更长的训练周期
- 有优秀的可拓展性
Deformable DETR
Problem
- 针对DETR的收敛速度满和小物体检测性能有限的问题,引入了一种新的 Deformable Attention Module,提升了训练效率和检测精度的同时保留了端到端的简洁设计
- 除此以外,DETR需要巨大的计算和内存开销
Method
- Deformable Attention Module
- 让注意力机制的query 只关注feature map上的一小组围绕某个参考点的关键采样点;而不是关注查询和所有像素直接的关系
- 对于每个查询特征,通过一个线性变换预测少量采样点的2D offset. 注意力模块只在这些“参考点+偏移量”决定的稀疏位置上进行特征采样和加权聚合,而不是在整个特征图上进行.
- 将注意力计算的复杂度和特征图的大小解耦;变成了 线性复杂度,从而高效处理高分辨率feature map;一开始关注稀疏的点,使模型的收敛速度也大大加快
- Multi-scale deformable attention
- 将deformable attention扩展到多尺度特征图上,允许一个query同时从不同分辨率的特征图中得到关键点
- 有效融合多尺度信息, 无需使用 FPN等复杂结构
- 将院DETR编码器中的self-attention换成 multi-scale deformable attention; 内部的self-attention保持不变
- 参考点机制:decoder中的object query会预测一个2D参考点,作为deformable attention的中心;同时边界框也变为相对于参考点的偏移量;加速了收敛
探索了两种变体:
- Iterative bounding box refinement: 解码器的每一层都会在前一层的bounding 框上进行优化,逐层细化结果
- 两阶段DETR:
- 一个encoder only的阶段来生成高质量的proposals
- 之后将这些候选区域作为object 送入第二阶段的decoder进行精细化处理
Results
- 提升收敛速度
- 提升小物体检测性能
- 更高的效率和整体精度
DAB-DETR
Problem
- 收敛慢的问题存在,conditional DETR,Deformable DETR 引入显式的空间先验加速收敛,但是仍然存在核心缺陷:
- 忽略了物体的尺度信息: 只将query与一个2D 为支点(x,y) 关联,忽略了物体的宽度和高度;导致注意力先验是各向同性的。无法适应不同形状和尺寸的物体
Method
- 将锚框作为query (Anchor Boxes as Queries):
- query 不是高维向量,而是4D的锚框坐标通过一个positional encoding和 小型MLP生成;提供了更明确,更丰富的先验信息
- 逐层动态更新锚框
- 在每个decoder层;预测一个对于当前层锚框的偏移量。用来更新锚框,并作为下一层的输入
- 宽高限制的注意力机制
- 使用锚框的w 和 h调整位置注意力图:将原本的原型高斯注意力先验调整为能够匹配物体真实形状的椭圆形
- 注意力温度系数调优
- 相比于NLP中的T=10000,在视觉任务中T=20是一个更好的选择
DINO
All articles on this blog are licensed under CC BY-NC-SA 3.0 CN unless otherwise stated.