本文正在参加 人工智能创作者扶持计划
提及到计算机视觉的目标检测,我们一般会最先想到卷积神经网络(CNN)
,因为这算是目标检测领域的开山之作了,在很长的一段时间里人们都折服于卷积神经网络在图像处理领域的优势;再后来,随着图像领域的大神不断出现,结构简单且速度精度均有提升的目标检测网络也逐渐问世,并且版本的更迭使其应用优势越来越大,最有代表性的是YOLO
,目前仍是目标检测的热门。然而,人们对于目标检测的方法仍然进行不断探索,今天就通过一篇基于Transformer
的目标检测方法的论文,带领大家换个角度去看待目标检测问题。
Transformer
Transformer
是第一个完全依赖于自注意力机制来计算其输入和输出的表示的转换模型。Transformer
的本质上是一个 Encoder-Decoder
架构。左边的是编码器结构,右边的是解码器结构。结构示意图如下。
DETR
DETR的简介
DETR
即Detection Transformer
,是Facebook AI
的研究者提出的Transformer
的视觉版本,可以用于目标检测,也可以用于全景分割。这是第一个将Transformer
成功整合为检测pipeline
中心构建块的目标检测框架。与之前的目标检测方法相比,DETR
有效地消除了对许多手工设计的组件的需求,例如非最大抑制、Anchor
生成等。
DETR的流程
-
通过一个CNN对输入图片抽取特征,然后将特征图降维,加上位置编码拉直输入Transformer。
-
Transformer Encoder部分就是使得网络更好地去学习全局的特征;
-
使用Transformer Decoder以及Object Query从特征中学习要检测的物体;
-
将Object Query的结果和真值进行二分图匹配(Set-to-Set Loss),最后在匹配上的结果上计算分类Loss和位置回归Loss。
DETR的结构
DETR
的网络结构如上图所示,由四个主要模块组成:backbone,编码器,解码器以及预测头
。其中backbone
是一个卷积网络,提取特征并将其降维到d×HW
。spatial positional encoding
将位置信息编码到特征中,使得模型能够更好地理解物体之间的空间关系。DETR
使用了两个Transformer
模块,分别作为编码器和解码器。其中编码器用于处理输入特征,解码器用于处理输出特征。DETR
使用了一个全连接层来进行分类。
下面具体介绍一下各个模块的作用。
backbone
DETR
使用ResNet
作为backbone
提取图片特征,同时会使用一个1×1的卷积进行降维到d×HW。因为transformer的编码器模块只处理序列输入,所以后续还需要把CNN特征展开为一个序列。
spatial positional encoding
式中,PE为二维矩阵
,大小跟输入embedding的
维度一样,行表示词语,列表示词向量;pos
表示词语在句子中的位置;dmodel
表示词向量的维度;i
表示词向量的位置。因此,上述公式表示在每个词语的词向量的偶数位置添加sin变量
,奇数位置添加cos变量
,从而来填满整个PE矩阵
,然后concatenate
送到编码器中。简要概括就是将位置信息编码到特征中,使得模型能够更好地理解物体之间的空间关系。
transformer
DETR使用了两个Transformer模块,分别作为编码器和解码器。其中编码器用于处理输入特征,解码器用于处理输出特征。结构图如下:
与原始Transformer
的不同之处在于,DETR
在每个解码器层并行解码N个对象,由于解码器也是排列不变的,N个输入嵌入必须是不同的,以产生不同的结果。这些输入嵌入是习得的位置编码,我们称之为object queries
,与编码器类似,我们将它们添加到每个注意层的输入中。
N个object queries
由解码器转换为output embedding
。然后,它们被FFN
独立解码为盒坐标和类标签,产生N个最终预测。该模型使用它们之间的成对关系对所有对象进行全局推理,同时能够使用整个图像作为上下文。
FNN
最后的 Bounding Box FFN
是由具有ReLU激活函数
的3层线性层计算的。
Class FFN
是由一个线性层计算的。
FFN
预测框标准化中心坐标,高度和宽度,使用softmax
函数激活获得预测类标签。所以DETR
使用了一个全连接层来进行分类。
二分图匹配
DETR预测了一组固定大小的 N = 100 个边界框,为了解决预测框和真实标注框匹配的问题,使用匈牙利算法进行二分图匹配,即对预测集合和真实集合的元素进行一一对应,使得匹配损失最小。
该算法实现预测值与真值之间最优的匹配,并且是一一对应,不会多个预测值匹配到同一个ground truth上。假设预测结果是100个,那么标注信息也要是100个,标注如果小于100就用无物体信息去填充。
LOSS函数
分类损失:交叉熵损失函数
检测框位置损失:L1损失和IOU损失的加权和,且Iou的计算采用了GIOU损失
DETR的优势
DETR
相对于Faster-RCNN
具有更简单的架构,更小的网络(参数方面),更高的吞吐量和更快的训练。此外,DETR是基于Transformer架构的,该架构自2017年以来已经“革命化”了自然语言处理。其中一个主要优点是其全局计算和完美记忆,这使得它们比RNN更适合处理长序列。
总结
这篇论文主要介绍了一种名为“DEtection TRansformer”(DETR)
的新框架,它使用了一种基于集合的全局损失,通过二分图匹配强制进行唯一预测,并使用transformer编码器-解码器
架构。DETR可以在挑战性的COCO物体检测数据集上展示与Faster RCNN基线相当的准确性和运行时性能。此外,DETR可以轻松地推广到以统一的方式生成全景分割。
其它
论文中还提到了其他的,比如目标检测的实现细节之类的,以及其在不同数据集上的实现效果,感兴趣的可以自己去看一下论文。