目标检测中的集合预测 (Set Prediction for Object Detection)

1 简介目标检测中的集合预测

常见的目标检测方法如Faster-RCNN,RetinaNet等都是通过预设anchor的方式进行预测,这种方式本质上就是类似滑动窗口的一种模式。而使用这种滑动窗口的方式其实是人为地给检测任务降低难度,这也确实是早期的传统方式做模式识别的一种主流方式。

而基于集合预测的方式就显得更简单粗暴了,输入一副图像,网络的输出就是最终的预测的集合(也不需要任何后处理)能够直接得到预测的集合就已经达到了检测的目的了。但这种方式从直觉上看会比基于滑动窗口的方式更难。基于滑窗的方式就像人为地给了一个梯子,帮助网络去越过障碍,而集合预测就更需要网络真正懂得图像的语义而直接越过障碍。

集合预测带来的最大好处就是训练与预测变成真正的端到端,无需NMS的后处理,十分方便。同时,也不用人为地预设anchor size/ratio 了。坏处就是这玩意儿能收敛吗?

2 非极大值抑制(NMS)

先简单介绍下NMS吧,一句话解释就是常见的检测方法会产生大量的冗余框,常用的去掉冗余框的方法就是NMS。如下图所示

在这里插入图片描述

每个框有一个分类置信度分数以及框的坐标。算法思路如下,每次从剩下的框中选择分数最大的框作为最终的一个输出并移除它,与该框IoU大于给定阈值的都从剩下的框中移除,一直重复此操作直到剩下的框全被移除。那么每次中间选择的最大分数的框就是最终结果。如果有多个类的话,每个类分开计算。

3 Relation Network

之前试图直接移除NMS的工作也有很多,这里选一个比较有代表性的简单说一下。Relation Network 结构如下

在这里插入图片描述

该文有两个点,一是使用relation模块来建模实例之间的关系,其实也就是类似Non-Local那一套。二是使用relation模块来消除NMS。这里仔细说下第二点吧。

仔细分析NMS算法的过程可以得到,NMS的过程其实用到了两个信息,一个是不同框之间的分数关系,二是不同框之间的几何关系。也就是说如果现在有个万能黑盒,给它输入分数关系与几何关系,那它也就应该可以有NMS的效果。因此作者在这里设计了一个二分网络,用来预测每个框它是否是重复框。输入有分数信息,该框的特征向量,以及该框的实际位置信息,输出就是该框是否为重复框的分数

[

0

,

1

]

\in[0,1]

[0,1]。网络结构如下

在这里插入图片描述

那训练的时候怎么决定谁才是非重复框,谁是重复框,也就是怎么给这个二分类网络分配GT呢?

这里是采用的动态分配的方式,过程如下:将所有预测框与所有GT框算IoU,对每个GT框选择IoU大于阈值的一些预测框,相当于根据IoU将预测框分为GT框数量个组,然后在每个组中选择预测分数最大的那个框为非重复框,其余全都为重复框。

在预测时需要将

s

0

s_0

s0,

s

1

s_1

s1乘起来作为该框的分数,一个质量好的框应该是

s

0

s_0

s0,

s

1

s_1

s1都要大。如果

s

0

s_0

s0较大,

s

1

s_1

s1较小,说明这很可能就是一个重复框,它们的乘积就很小,在输出最终结果的时候就会被排除,达到了NMS相同的作用。

4 DETR

DETR虽然不是最早预测集合的方式来检测,但应该是很有影响力的一篇文章了。介绍它之前先明确两中GT分配的方式,静态分配动态分配

静态分配就是常见的FasterRCNN,RetinaNet,FCOS等这些方法中分配的方式,即GT的分配不依赖于网络的输出。相反,依赖于网络的输出就是动态分配,像Relation Network中二分类网络那里的分配,以及DETR中的分配方式。

下面简单介绍下DETR,下面是DETR的结构图

在这里插入图片描述

transformer的后面的输出就是最终预测的结果,固定为100个预测结果也就说网络输出就是

100

×

4

100\times 4

100×4

100

×

(

C

+

1

)

100\times (C+1)

100×(C+1)的两个tensor,分别对应框的预测和类别的预测,C表示总共的类别数,+1是背景类。那怎么分配GT呢?强制让每个预测对应一个GT,多余的都对应到背景,这样就形成了一对一的对应关系,如果去枚举这个一一对应的关系,那么一定可以找到一个一种对应关系使得它们一一对应之后计算的loss最小。而求这个一一对应的方式可以不用枚举所有排列,而使用Hungarian算法高效得到。

在这里插入图片描述

其中的loss是三部分loss,分别是类别损失

L

c

l

s

L_{cls}

Lcls, 框的L1损失

L

b

b

o

x

L_{bbox}

Lbbox,框的IoU损失

L

g

i

o

u

L_{giou}

Lgiou.

这种动态分配的方式可以说是集合类预测方法的核心。

DETR的缺点,也是原作者在论文总结过,(1)收敛速度慢,需要很长时间训练(2)没有多尺度信息,小目标检测效果差。

5 最近的基于集合预测的方法

5.1 Deformable DETR

Deformable DETR我认为是直接正面解决DETR作者提出的问题的方法,借鉴了Deformable Convolution的思想应用到Attention中来。整体结构如下

在这里插入图片描述

最核心的改变就是改变了算Attention的方式,即文中提出的Deformable Attention Module。介绍这个之前看下原本Transformer中的Attention计算方式,如下式所示
在这里插入图片描述

z

q

z_q

zq对应query的向量,

q

q

q是个index,表示第

q

q

q个query,

x

k

x_k

xk是key的向量,

k

k

k也是index.在self-attention中的一般

z

=

x

z=x

z=x的,

M

M

M是多头attention的head数,

Ω

k

\Omega_k

Ωk是key的集合,对于图像特征来说它的大小就

H

W

HW

HW

W

m

x

k

W^{'}_{m}x_k

Wmxk就是相应的value了.

A

m

q

k

A_{mqk}

Amqk就是第

q

q

q个query对应的第

k

k

k个key的score

[

0

,

1

]

\in[0,1]

[0,1].而Deformable Attention计算如下

在这里插入图片描述

可以看到不同点每个query只会attend到

K

K

K个key了。由原本的attention计算公式可以知道,每个位置计算的结果其实就是对

W

m

x

W^{'}_{m}x

Wmx重新加权的结果,这其实就包括两个部分,一是权值,即query看到的位置相应权重是多少,也对应着Attention score map,二是需要对哪些位置加权,原本的Attention是对所有位置进行加权,但是,无论从最终attention score map的结果来看还是直觉上都说明每个位置需要看到的数量是很有限的,大部分的attention score map的值都是0。基于这两点呢,作者就设计一个网络去预测这两个部分,于是上式中的

A

m

q

k

,

Δ

p

m

q

k

A_{mqk},\Delta p_{mqk}

Amqk,Δpmqk都是通过网络学出来的,其中的

p

q

p_q

pq表示

z

q

z_q

zq对应位置坐标,是二维的,也就说

Δ

p

m

q

k

\Delta p_{mqk}

Δpmqk是相对

p

q

p_q

pq的offset,从直觉上来看也一个query往往也更可能看到离自己不太远的key。上式的实现过程图大致如下

在这里插入图片描述

论文中K设的4,所以

K

<

<

H

W

K << HW

K<<HW,这样自然就可以将多尺度加进来,公式如下

在这里插入图片描述

与单尺度相比就是使得每个query能够看到不同scale下的key,总共就是

L

K

LK

LK个。比起

H

W

HW

HW还是小很多的。从总体结构图中也可以看到每个点信息都是来自不同尺度的特征图。

在decoder中的attention有一些不同。

decoder中的self-attention保持不变,cross-attention将采用上式的多尺度attention,但是这里的query有些不一样,是没有坐标的,所以对应的位置用一个全连接层去预测出来。其余就与上式一样的了。另外,由于deformable attention module 是根据参考点来选择对应的key的,作者认为在预测的时候预测相对位置偏移会加速收敛。也就是相对decoder的

p

q

p_q

pq.最终的框计算如下

在这里插入图片描述

其中

b

q

x

,

b

q

y

,

b

q

w

,

b

q

h

b_{qx},b_{qy},b_{qw},b_{qh}

bqx,bqy,bqw,bqh是网络的输出,它是相对于位置

p

^

q

x

,

p

^

q

y

\hat{p}_{qx},\hat{p}_{qy}

p^qx,p^qy的,

σ

=

s

i

g

m

o

i

d

(

x

)

\sigma=sigmoid(x)

σ=sigmoid(x).以上就该文的核心内容。文章中还有两个进一步地改进版本,这里简单说下

Iterative Bounding Box Refinement:由于decoder一般有多层,而输入的

p

^

q

\hat{p}_{q}

p^q是个参考位置,因此这里可以迭代的去使用上一层decoder预测出的位置。

Two-Stage Deformable DETR:第一阶段是使用transformer的encoder每个位置都去预测一个位置,也同样使用Hungarian算法去分配GT。第二阶段就可以选择Top score的位置作为一个proposal,并作为decoder的输入。同时也应用上上面的Iterative Bounding Box Refinement。

主要结果如下

在这里插入图片描述

很好的解决的DETR作者提出的两个问题,同时也基本保持的原DETR的结构,所以说是直接正面解决DETR作者的两个问题的很好的方法。

5.2 Rethink Transformer-based Set Prediction for Object Detection

这篇也是作者相应的实验分析DETR模型的不足而做出对应的改进。主要有两点造成了模型的优化问题:(1)Hungarian算法分配的loss (2)Transformer中的cross-attention的瓶颈。

针对第一点作者做的如下实验:使用已经训练好的模型去指导GT的分配与原本的模型进行比较,结果如下图
在这里插入图片描述
在模型早期,原本的模型的GT分配就是约等于随机分配的,这确实造成了早期训练时的不稳定性。(我觉得动态分配的GT都有早期不稳定的问题。)
针对第二点做的实验就是计算cross-attention map的负熵(用来表示attention map 的稀疏性)的变化,结果如下
在这里插入图片描述
可以看到,在整个过程不论是那个layer的稀疏性都是在一直变化的,所以作者认为cross-attention部分是影响DETR模型优化的主要原因。

针对第二点作者直接去掉Transformer的Decoder部分,并在FCOS的网络上加以改进,总体结果图如下,TSP-FCOS、TSP-RCNN分别对应两个模型
在这里插入图片描述
输入给Encoder的是什么呢?对于TSP-FCOS是一系列的FoI(Feature of Interest)就是些特征向量,这里的Classification有个监督信息,使用的是FCOS中的GT分配策略,即该点如果落在了正确feature level的GT框内则为正样本,FoI Select会选择出预测分数最高的前700个feature作为feature points。而相应 的TSP-RCNN则使用的FasterRCNN中的RPN分配GT的策略,然后也选前700个proposals作为feature points.

对应的最后面的set prediction的loss有些不一样,对于TSP-RCNN模型仍然沿用Faster-RCNN中的GT分配策略。对于TSP-FCOS使用改进的Hungarian loss分配,即在原来的Hungarian loss上添加约束,一个GT要分配给该点的前提是该点必须在正确的feature level上且该点必须在GT内,然后再在这个前提下利用Hungarian loss进行分配。(相当于添加了一个局部的先验约束)。

主要实验结果如下
在这里插入图片描述
作者对cross-attention是主要瓶颈的结论还是很有道理的。

5.3 SparseRCNN

5.4 OneNet

5.5 End-to-End Object Detection with Fully Convolutional Network

5.6 UP-DETR

5.7 End-to-End Object Detection with Adaptive Clustering Transformer

参考文献

[1] Relation Networks for Object Detection

[2] End-to-End Object Detection with Transformers

[3] DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION

[4] Rethinking Transformer-based Set Prediction for Object Detection

[5] Sparse R-CNN: End-to-End Object Detection with Learnable Proposals

[6] OneNet: End-to-End One-Stage Object Detection by Classificaion Cost

[7] End-to-End Object Detection with Fully Convolutional Network

[8] UP-DETR: Unsupervised Pre-training for Object Detection with Transformers

[9] End-to-End Object Detection with Adaptive Clustering Transformer

版权声明:本文为CSDN博主「请痛捶我」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wd18508423052/article/details/111686666

请痛捶我

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

SSD网络及代码理解

写在前面:在读了SSD的论文之后,完整的看了一遍SSD的代码,有了许多体会,以此记录自己的学习过程。 论文传送门:SSD: Single Shot MultiBox Dete