End-to-End Object Detection with Transformers 论文解读笔记
(由于是视频解读的学习,所以草稿很多)
视频来源 :https://www.youtube.com/watch?v=T35ba_VXkMY
简介 :对象检测指的是检测图像中对象的位置和类型。而本文提出了一种简单的Transformer框架来解决对象检测的问题。
首先,图像通过CNN产生一系列的图像特征编码。通过CNN,图像的尺寸被压缩,但是特征通道数被增加。之后,图像特征被输入到transformer中,并输出一系列识别框的包围盒和框内对象的类型(包含空类型)组成的对。

对象的结构如下草图所示:首先是存在概率c,即该识别框存在的概率;当概率为0时,这个输出被视为空,即无效识别框。其次则是包围框的位置和大小b。

二分匹配
输出框的位置,大小都是问题,本文通过一个bipartitl matching loss来解决这个问题,即二分匹配损失。这可以有效防止对同一对象的重复检测。
首先需要明确的是:输出的最大数量是固定的。若groundtruth小于最大数量,则使用空对象来填充。

要完成groundtruth和预测结果之间的loss值计算,首先要解决的是这两者之间的匹配问题。这需要通过二分匹配来解决。而损失值的计算则是要在最佳的匹配结果下进行的。匹配问题可以通过匈牙利算法解决。

参数优化公式如下,其目的是获得一组神经网络参数,能最小化最优匹配下的差异值。公式(2)则解释了loss函数是如何计算的。其中Lbox代表着包围盒差异计算公式,这在下方亦列出,其由一个包围盒的IOU损失和一个L1的概率损失组成。



网络架构细节
backbone部分将图像转化为多尺度的特征图,并在展平后结合位置信息放入Transformer的encoder中。

Transformer的好处是可以通过注意力机制聚合其它位置的信息,并输出该位置对应的编码。

之后,将结合了全局各位置信息的编码作为侧输入放入Transformer decoder中作为判断用的条件信息。decoder的初始输入为一个n个初始化的包围盒序列,其中内容是随机的。而输出的内容会根据encoder输入的条件信息来调整。

实际上,初始输入并非完全随机的,它遵循一定的规律(可以理解为每个输入都对图像的不同区域感兴趣),且会在每一层之间根据encoder输入的图像条件信息进行调整,使其更接近最终输出的包围盒。

结果:可以看出自注意力机制在对象的分隔上起到了很好的作用。对于有遮挡关系的对象,自注意力机制也能理解到未被遮挡的关键的部位,并给出对应的包围盒(图2蓝色的部分)。在这种框架下,实际上也可以做到像素级别的分割。




