目标检测文章阅读(一)《End-to-end Object Detection with Transformer》

目标检测文章阅读(一)

文章《End-to-end Object Detection with Transformer》
code: https://github.com/facebookresearch/detr

Introduction

本篇文章是比较有影响力的DETR,开End-to-end object detection之先河。
之前的object detection的model,ex. Fast-RCNN,YOLOv2,RetinaNet等都会通过对数据集的先验知识来设计一些proposal, anchors, window centers,然后通过一些后处理的方法,ex.NMS, 来消除一些临近的重复预测框。因为有后处理以及需要借助一些对数据集的先验知识, ex.数据集object的size等,之前的model并不是end-to-end的framework并且需要手动设计proposals以及后处理。本文提出的DETR是direct set prediction,是end-to-end的framework并且不需要手动设计proposal以及后处理,framework如下图所示:主体部分是CNN+Transformer,本文中所用为ResNet+standard Transformer,CNN提取的feature送入Transformer的encoder-decoder结构,输出的box再经过双向的matching来将box唯一地对应到ground truth(此操作应该是与传统的pipline是相同的)。得益于Transformer的global self-attention机制,DETR在COCO数据集的large object的效果要远远优于Fast-RCNN,但是在small object上的效果不如Fast-RCNN,一个可能的解释是,精心设计过的Fast-RCNN中的FPN提供了多尺度的信息,DETR在后续的改进中可能可以借鉴这种思想来提高对small object的效果。最终在整个COCO数据集上的AP因为large object的巨大提升是超过Fast-RCNN的。另外,通过在pre-trained Transformer上训练一个head network,DETR可以在语义分割任务上也超过有竞争力的一个baseline。
在这里插入图片描述
Transformer相比于LSTM以及RNN,最大的优点在于全局计算以及完美记忆,因此更适合长序列。

Method

DETR结构以及很多实现细节,笔者未完全理解,在精读code后再补充

Loss

因为每一个预测框需要唯一地分配一个ground truth的框,所以首先需要确定这个对应关系,即min下述loss
在这里插入图片描述
L m a t c h L_{match} Lmatch的定义如下,注意这里有object的box的loss才和预测框有关系,没有object的loss是一个常数且为了平衡正负样本的关系,其权重降低10。
在这里插入图片描述
确定好预测框和ground truth框的对应关系后,优化框以及预测分类的loss如下:这里loss和上面 L m a t c h L_{match} Lmatch很像,其实分类的交叉熵loss本质上带log,但是文中提到经验上 L m a t c h L_{match} Lmatch不带log效果更好
在这里插入图片描述
L b o x L_{box} Lbox分为两部分,一部分是坐标的L1 loss,但是文中提到对于large object和small object,L1的绝对值代表的误差程度是不一样的,所以加了iou loss
在这里插入图片描述
iou loss是generalized IoU,B代表smallest box containing b σ ( i ) b_{\sigma(i)} bσ(i), b i ^ \hat{b_i} bi^ (GIoU参考GIoU)
在这里插入图片描述

DETR

首先经过CNN backbone出C*H*W的feature tensor,这里C=2048(笔者很少见到这么大的C,一般见到的最大也是512),然后经过1*1 conv(降维)将C=2048降到d维。然后经过标准的Transformer。这里的batch操作,因为每张image size不同,所以需要对小的image padding,这里的做法是以batch内最大image的H和W最大尺寸,对其他图片padding 0。Transformer结构如下:详情参考代码
在这里插入图片描述
在这里插入图片描述

FFN

feed-forward networks,本文中用了3层感知机+ReLu/1层 linear layer,输出为center, width, height/class,其中因为设置输出N个预测框,一般N大于image中实际的object,所以有些框的class被设为null,这相当于传统目标检测中的background class。

Auxiliary decoding losses

参考《Character-level language modeling with deeper self-attention》,笔者理解后补充

Datasets

COCO 2017 detection and panoptic segmentation datasets
118k images for training/5k images for validation
平均一张图7个instances,最多一张图有63个instances

Experiments

实现细节:AdamW,weiht decay=1e-4, CNN initial lr=1e-5, Transformer initial lr=1e-4,CNN weights are pre-trained ImageNet weights, Transformer weights are initialized with Xavier Init,Transformer dropout=0.1, scale and random crop aug。

表一表明DETR相比于Fast-RCNN,在large object上有很大提升,在small object上不如Fast-RCNN。
在这里插入图片描述
Transformer不同encoder layer层数的ablation study
在这里插入图片描述
下图是encoder后的几个typical pixel的self-attention map,可以看出已经将不同object分开了。
在这里插入图片描述
decoder缓和了需要NMS的gap
在这里插入图片描述
decoder的attention map更多侧重于object的边界,这是make sense的,因为要预测object的边界框
在这里插入图片描述
不同positional embedding的ablation study
在这里插入图片描述
loss的ablation study
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值