End-to-End Object Detection with Transformers

论文下载地址:  https://arxiv.org/abs/2005.12872

代码下载地址: https://github.com/facebookresearch/detr

摘要:该算法简化了目标检测算法的流程,同时将那些需要手动设计的技巧nms(极大值抑制)和anchor成功的删除掉,实现端到端自动训练和学习。DETR算法使基于集合的全局损失函数,通过二部图匹配和编码解码网络结构来强制进行唯一的预测。 给定一小组固定的经过学习的object queries(后面会讲到什么是object queries),DETR根据对象和全局图像上下文的关系,直接并行输出最终的预测集。 与许多其他检测算法不同,新模型在概念上很简单,不需要专门的库。经过COCO数据集测试,新算法在速度和精度上都比Faster-RCNN高。

网络整体流程:

如上图一所示,是该算法的整体计算流程。首先将图片传到CNN里面来提取特征信息,然后将提取到的特征降维展开传到Transfoemer里面,通过Transformer编码和解码的网络结构输出固定个数的预测结果。最后将得到的检测结果和GroundTruth进行二部图匹配计算loss。

Transformer网络结构:

如图2所示,是Transformer的整体网络结构,主要是由编码器和解码器两部分组成。如图3是编码器和解码器的详细网络结构,编码器由两部分组成自注意力和前馈神经网络层,解码器在编码器的基础上增加了编码-解码注意力层。这个是Transformer的整体结构上的理解,还想了解具体的细节可以去 https://zhuanlan.zhihu.com/p/48508221 大佬讲解的很详细。

 

二部图匹配:

二部图匹配就是将预测结果和Groundtruth进行匹配。本论文中网络输出的结果是固定为100个预测目标,并非这100个都会有预测结果,对于没有目标的预测值会输出为空标记,如图4左边。Groundtruth也会使用空标记来进行补齐,达到100个,如图4右边。然后这两个就会进行二部匹配。

如下图 4所示,左边表示的是网络预测结果,右边表示groundtruth结果。得到结果之后再通过贪心算法来进行二部图匹配得到匹配结果之后计算二部图loss。

网络结构详细介绍:

如下图5所示算法的详细网络结构,首先图片经过CNN提取特征,然后降维操作之后和位置编码信息进行sum操作,传到encoder里面,然后encoder将处理的结果传到decoder里面,同时将object queries也传到deconder里面进行处理,最后将decoder处理的结果通过FFN输出最后的检测结果。

Position encoding:

transformer模型的attention机制并没有包含位置信息,即一句话中词语在不同的位置时在transformer中是没有区别的,这当然是不符合实际的。因此,在transformer中引入位置信息相比CNN, RNN等模型有更加重要的作用。作者添加位置编码的方法是:构造一个跟输入embedding维度一样的矩阵,然后跟输入embedding相加得到multi-head attention 的输入。PE矩阵的计算方法如下图所示:pos表示词语在句子中的位置,d-model表示词向量的维度,i表示词向量的位置。

什么是object queries:

下图6就是表示的object queries。他表示的就是有N各不同的人从N个角度来向模型进行提问,当前位置是否有目标。在网络中的作用就是类似于给网络画重点,让网络着重关注这几个部分。

FFN网络结构:

FFN网络结构有三层FC层加RELU激活函数和线性函数组成。通过FFN网络结构输出目标的中心点的位置,boxes的长和宽通过线性函数输出预测的类别。

网络loss:

下图是二部图的匹配loss

下图表示的是检测框的iou-loss和L1-loss

下公式表示的是网络结构的loss,左边部分是二部图的匹配loss,右边部分表示的是检测框的loss。

检测结果:

从下图可以看出该算法在AP,AP50,APM和APl上取得了和那后的检测结果。但是该算法针对小目标检测效果并不理想,也是后续改进的一个方向。