霸榜COCO!DINO: 让目标检测拥抱Transformer

f40231c82fedb6f4884ae19183c8902e.gif

©作者 | 李峰

单位 | 香港科技大学博士生

研究方向 | 目标检测、多模态学习

PR 一下我们最近刷榜 COCO 的目标检测模型,DINO(DETR withImproved deNoising anchOr boxes),从三月初霸榜至今(7 月),该模型第一次让 DETR (DEtection TRansformer)类型的检测器取得了目标检测的 SOTA 性能,在 COCO 上取得了 63.3 AP 的性能,相比之前的 SOTA 检测器将模型参数和训练数据减少了十倍以上!

26fac52fc432ed8d3d0ae0ee3cf642d7.png

论文标题:

DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection

论文链接:

https://arxiv.org/abs/2203.03605

代码链接:

https://github.com/IDEACVR/DINO

920f6db0fca4bca55a6fbcdb3b398018.png

主要特性

  1. SOTA 性能:在大模型上以相对较小的数据和模型(~1/10 相比之前 SwinV2)取得了最好的检测结果。在 ResNet-50 的标准 setting 下取得了 51.3 AP。

  2. End2end(端到端可学习):DINO 属于 DETR 类型的检测器,是端到端可学习的,避免了传统检测器许多需要手工设计的模块(如 NMS)。

  3. Fast converging(收敛快):在标准的 ResNet-50 setting 下,使用 5 个尺度特征(5-scale)的 DINO 在 12 个 epoch 中达到 49.4 AP,在 24 个 epoch 中达到 51.3 AP。使用 4 个尺度特征(4-scale)的 DINO 达到了了类似的性能并可以以 23 FPS 运行。

4eab343f8b965498272022483d4d86f1.png

3cdffe5e5934963a24af99d2587ec68a.png


效果展示

▲ La La Land, trained on COCO

▲ 007, trained on COCO

c49af3aa01c89518b789cb53d8a41163.png


Motivation出发点

Transformer 如今被广泛应用于自然语言处理和计算机视觉,并在很多主流的任务上都取得了最好的性能。然而,在目标检测领域,DETR 这种基于 Transformer 的检测器虽然作为一种很有新意的检测器,但却没有作为一种主流的检测器得到广泛运用。例如,几乎所有的模型在 PaperWithCode 的榜单上都是使用传统的 CNN 检测头(如 HTC [1])。

因此,我们很感兴趣的事就是,DETR 这种简洁、端到端可学习的目标检测器,同时还有更强的模型 Transformer 的加持,能否无法取得更好的表现?

答案是肯定的。

5f012eeaf50514d1e52a52c88744ad3c.png


Background 背景简介

在做 DINO 之前,我们实验室的几个同学完成了 DAB-DETR [2] 和 DN-DETR [3],DINO 也是我们几个同学一起接着这两篇工作的一个延续,沿用了这些设计。

DAB-DETR 是在思考 DETR query 理解的问题。它直接把 DETR 的 positional query 显示地建模为四维的框四维的框 ,同时每一层 decoder 中都会去预测相对偏移量 并去更新检测框,得到一个更加精确的检测框预测

402 Payment Required

,动态更新这个检测框并用它来帮助 decoder cross-attention 来抽取 feature。

DN-DETR 是在思考 DETR 中的二分图匹配问题,或者说标签分配问题。我们发现 DETR 中的二分匹配在早期十分不稳定,这会导致优化目标不一致引起收敛缓慢的问题。因此,我们使用一个 denoising task 直接把带有噪声的真实框输入到 decoder 中,作为一个 shortcut 来学习相对偏移,它跳过了匹配过程直接进行学习 (详细理解在我之前的文章)。

这两篇文章让我们对 DETR 的理解加深了很多,同时也把 DETR 类型模型的效果做到了和传统 CNN 模型在收敛速度和结果上 comparable。如何进一步提高检测器性能和收敛速度?我们可以沿着 DAB 和 DN 去进一步思考:

  • DAB 让我们意识到 query 的重要性,那么如何学到更好的或者初始化更好的 query?

  • DN 引入了去噪训练来稳定标签分配,如何进一步优化标签分配?


6e5c8ee8d1a0e12639d2c926ba6a2103.png


Method方法简介

4ef0f06c8c980515df7958d5c8364ae0.png

▲ Framework

为了解决上面提到的问题,DINO 进一步提出了 3 个改进来进行优化,模型架构如上图所示。

5.1 Contrastive denoising(DN)

DN 的去噪训练里面引入的噪声样本都是正样本来进行学习,然而模型不仅需要学习到如何回归出正样本,还需要意识到如何区分负样本。例如,DINO 的 decoder 中用了 900 个 query,而一张图中一般只会有几个物体,因此绝大部分都负样本。

18e0477c02fa154470a60fe7c33bd27e.png

因此,我们设计了训练模型识别负样本的方法,如上图所示,我们对 DN 进行了改进,不仅要回归真实框,还需要辨别负样本。对于 DN 的输入当对真实框加入了较大噪声时,我们就认为其为负样本,在去噪训练中会被监督不预测物体。同时,这些负样本恰好是在真实框附近的,因此是相对很难区分难的负样本,让模型得以学习的正负样本的区分问题。

5.2 Mix query selection

在大部分 detr 模型中,query 是从数据集中学习出来的,并不和输入图片相关。为了更好得初始化 decoder query,deformable detr [4] 提出用 encoder 的 dense feature 中预测出类别和框,并从这些密集预测中选出一些有意义的来初始化 decoder feature。

然而,这种方式并没有在后来的工作中得到广泛运用,我们对这种方式进行了一些改进并重新强调其重要性。在 query 中,我们实际更关心 position query,也就是框。同时,从 encoder feature 中选取的 feature 作为 content query 对于检测来说并不是最好的,因为这些 feature 都是很粗糙的没有经过优化,可能有歧义性。例如对“人”这个类别,选出的 feature 可能只包含人的一部分或者人周围的物体,并不准确,因为它是 grid feature。

因此,我们对此进行了改进,让 query selection 只选择 position query,而利用可学习的 content query。

5.3 Look forward twice

这个方法对 decoder 的梯度传播进行了一些优化,这里就不展开讲了,可以到我们的 paper 进一步阅读。

784c9d9f3de7802be6a405700c8d4ab8.png


总结

我们希望 DINO 能给大家带来一些启示,它具有 SOTA 的性能,端到端优化的简洁,以及快速收敛、训练和 inference 快等多个优点。

同时也希望 DETR 类型的检测器得到更多人的运用,让大家意识到 DETR 类型的检测器不仅是一种 novel 的方法,同时也具拥有强健的性能。

outside_default.png

参考文献

outside_default.png

[1] HTC https://arxiv.org/abs/1901.07518

[2] DAB-DETR https://arxiv.org/abs/2201.12329

[3] DN-DETR https://arxiv.org/pdf/2203.01305.pdf

[4] https://arxiv.org/abs/2010.04159

更多阅读

0a1e0abe79f9fcd191e68a1c4b4e4186.png

b4cc547f2150c4c9ddc2c5fbfd11c920.png

533fbff6b5ead342974e8afa3958bd78.png

09b4f782376bd411ea6a066497a0a76e.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

7bcee1800a95d341df77e1d8f06bbe93.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

5699c1b686d327b49911b086b7f963b2.jpeg

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,Grounding DINO是一种结合了DINO和基于Transformer的检测器的模型,用于开放式目标检测。它的输入是图像和文本,输出是多个[物体框,名词短语]对。具体来说,Grounding DINO使用DINO模型对图像和文本进行编码,然后使用基于Transformer的检测器对编码后的特征进行检测,最终输出[物体框,名词短语]对。 下面是一个简单的示例代码,演示如何使用Grounding DINO进行开放式目标检测: ```python import torch from torchvision.models.detection import fasterrcnn_resnet50_fpn from transformers import ViTFeatureExtractor, ViTForImageClassification from transformers.models.dino.modeling_dino import DINOHead # 加载预训练的DINO模型和ViT模型 dino = ViTForImageClassification.from_pretrained('facebook/dino-vit-base') dino_head = DINOHead(dino.config) dino_head.load_state_dict(torch.load('dino_head.pth')) dino.eval() vit_feature_extractor = ViTFeatureExtractor.from_pretrained('google/vit-base-patch16-224') # 加载预训练的Faster R-CNN检测器 model = fasterrcnn_resnet50_fpn(pretrained=True) model.eval() # 输入图像和文本 image = Image.open('example.jpg') text = 'a person riding a bike' # 对图像和文本进行编码 image_features = vit_feature_extractor(images=image, return_tensors='pt')['pixel_values'] text_features = dino_head.get_text_features(text) image_embedding, text_embedding = dino(image_features, text_features) # 使用Faster R-CNN检测器进行目标检测 outputs = model(image_embedding) boxes = outputs[0]['boxes'] labels = outputs[0]['labels'] # 输出[物体框,名词短语]对 for i in range(len(boxes)): print([boxes[i], labels[i]]) ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值