参考:
DETR目标检测新范式带来的思考_zandaoguang的博客-CSDN博客
Propose
将transformer融入目标检测中,实现no anchor的简化操作。
Method:
LOSS:
DETR站在全局的视角,用二分图匹配算法(匈牙利算法)计算pred与gt之间的最佳匹配,从而实现label assignment
假设有固定N(N>物体类别数目),
可以用Hungarian algorithm优化。
其中c为物体类别,b为bbox。
本文与其他算法的不同是find one-to-one matching for direct set prediction without duplicates.
其中bbox loss是scale-invariant:
结构:
因为transformer是permutation-invariant的(对特征排列顺序不敏感或者说特征之间没有空间位置关系),所以此处加入了fixed的位置编码。
CNN输出的feature map: C X H X W, C = 2048, H,W = H_0/32, W_0/32
再经过1 X 1卷积降维,变成d X H X W --> d X HW
此处的object queries为N个不同的input embeddings(learnt positional encodings)为了预测N个不同类别。输出N个output embedding再独立每个bbox中预测是否有物体类别.
encoder层中包含self-attention
decoder中包含self-attention和cross-attention。
在全景分割中的结构:
一次细节 [1]:
object queries:是可学习的embedding,与当前输入图像的内容无关(不由当前图像内容计算得到)。论文中对不同object query在COCO数据集上输出检测框的位置做了统计,可以看不同object query是具有一定位置倾向性的。
随机初始化,并随着网络的训练而更新,隐式建模了整个训练集上的统计信息。其次,在目标检测中每个object query可以看作是一种可学习的动态anchor,可以发现,不同于Faster RCNN, 等方法在特征的每个像素上构建稠密的anchor不同,detr只用少量稀疏的anchor。
存在的问题:收敛速度慢、对小物体的检测性能不佳。