目标检测序列化 Pix2Seq: A Language Modeling Farmework for Objection Dection 论文笔记


写在前面
  好久都没写论文相关的博客了,最近苦于调参。抽空看了一下这篇有新意的论文。将之前目标检测的通用范式:预测回归框的位置,变成直接预测目标的位置。论文框架简单,很管用。

一、Abstract

  本文提出了一种简单通用的目标检测框架,核心是将目标检测视为一种语言建模任务,即采用类似语言编码的序列词来表示 Bounding boxes 和 类别标签。创新点主要来源于:如果神经网络知道目标在哪以及目标类型,那么就仅仅需要让模型知道如何输出它们(神经网络的泛化性)。在 COCO 数据集上,不使用特定类型的数据增强,本文提出的算法能与高度定制化/优化的算法相抗衡。

二、引言

  先概括一下目标检测的意义,目的,然后对现有的方法进行总结,指出不足:高度定制化和复杂性使得这些方法很难整合到更大的系统中,并且很难泛化更一般化的人工智能中去。
  本文提出一种新方法,模型通过学习描述目标就能学会定位到目标,从而输出目标的位置。模型框架图如下:

在这里插入图片描述
给定一幅图片,模型输出与目标描述(Bounding boxes 和类别标签)相一致的序列词。模型的框架和损失函数都是简单且通用的,也不需要特定的模块设计。由于本文提出的框架提供了一个类似语言的交互,因此很容易整合到其他任务中去。

  核心段落——为了用 Pix2Seg 解决目标检测,首先 提出了一种量化和序列化计划:将 Bounding boxes 和类别标签转化为序列词,然后利用编码-解码网络感知像素输入以及产生目标序列。虽然所有的框架和损失函数都是任务无关的,但是仍然可以将其整合到特定任务中。与 Faster R-CNN 和 DETR 相比,在 COCO 数据集上的表现是相当优秀的。通过进一步的预训练模型,性能还能得到提高。

三、提出的 Pix2Seq 框架

在这里插入图片描述
  模型主要由四大部分组成:

  • 图像增强模块:随机尺度缩放、裁剪等常用的图像增强方式;
  • 序列构建 & 增强模块:将 Bounding boxes 和 Class labels 转化为序列词;
  • 结构:采用编码-解码结构,编码器感知像素,解码器输出目标序列,一次输出一个 Token。
  • 目标损失函数:Softmax cross-entropy loss。

3.1 从目标描述中构建序列

  类别标签本身就是用词来表示的,但是 bouding boxes 不是,因此需要将其转化为 一组五个词的序列,例如: [ y m i n , x m i n , y m a x , x m a x , c ] [y_{min},x_{min},y_{max},x_{max},c] [ymin,xmin,ymax,xmax,c] c c c 为目标类别。其中每一个坐标都被归一化到 [ 1 , n b i n s ] [1,n_{bins}] [1,nbins] 之间( n b i n s n_{bins} nbins 格子数量)。词之间共享词表,因此词表长度等于 n b i n s n_{bins} nbins 加上类别的数量。相对来说,这种词表长度较小,例如 600x600 图像仅仅需要 600 个格子就能实现零误差,所以看得出来,这个词表确实比较小了。不同水平的量化格子效果如下图所示:

在这里插入图片描述
  可能一幅图像中存在多个检测目标,因此目标的顺序采用随机策略确定,作者也试过其他排序,但是随机的还是最好的(如下图所示)。同时,由于不同的图像有着不同数量的目标,因此最终的输出会有不同的长度,为了解决该问题,插入一个 EOS 词(0),表示检测结束。

在这里插入图片描述

3.2 架构、目标以及推理

3.2.1 架构

  采用编码-解码架构,编码器为通用的图像编码器来感知像素并将其编码入隐藏表示中,例如 ConvNet 网络等。对于解码器,本文采用的是 Transformer解码器,根据感知到的词和编码的图像表示,利用 sofrmax 对输出的向量进行过滤,一次产生一个词。相对而言,没有 proposals 和 回归分支。

3.2.2 目标

  Pix2Seq 旨在预测出正确的词,因此,训练目标为最大化可能概率:
maximize ⁡ ∑ j = 1 L w j log ⁡ P ( y ~ j ∣ x , y 1 : j − 1 ) \operatorname{maximize} \sum_{j=1}^{L} \boldsymbol{w}_{j} \log P\left(\tilde{\boldsymbol{y}}_{j} \mid \boldsymbol{x}, \boldsymbol{y}_{1: j-1}\right) maximizej=1LwjlogP(y~jx,y1:j1)
其中, x x x 为所给图像, y y y y ~ \tilde{y} y~ 为相应的输入和目标序列, L L L 是目标序列的长度。 w j {w}_{j} wj 为序列中第 j j j 个词的权重,这里所有词的权重都设为 1。但对于不同的词,比如坐标或者类别词,它们的权重是不相同的。

3.2.3 推理

  在推理阶段,从模型的输出中进行采样。采样方式有最大值采样 argmax 等。本文通过消融实验发现使用原子级别的采样相比于最大值采样有着更高的召回率。一旦序列词开始产生,直接进行提取和定量。

3.3 将序列增强集成到任务先验信息中

  由于 EOS 词的存在,模型可以在没有预测所有目标的情况下完成输出。主要原因可能是标注存在噪声或者不能识别/定位到所有目标。虽然这一操作对精度影响较小,但是对召回率影响较大。一种解决方法是人工干预 EOS 的概率来延迟采样到 EOS 词上,但会引入噪声以及可能的重复预测。因此,作者设计了一种序列增强技术,旨在引入先验信息。在训练过程中增强输入序列,使其同时包含真实的和合成的噪声词。同时对目标序列也进行修改,使其能够学习识别出噪声而不是拟合噪声。

在这里插入图片描述

3.3.1 可选的序列构建

  如上图所示,通过两种方式制造合成的噪声目标:1、在现有的 GT 目标里面添加噪声,比如随机尺度缩放或者偏移;2、产生更加复杂化的随机 boxes。如下图所示:

在这里插入图片描述
那些产生的噪声序列标签为 “noise” 类别,相应的坐标词为 ‘“ n / a n/a n/a”,这些噪声的权重赋值为 0,即 w j = 1 [ y ~ j ≠ ‘ ‘ n / a " ] \boldsymbol{w}_{j}=\mathbb{1}\left[\tilde{\boldsymbol{y}}_{j} \neq ``\mathrm{n} / \mathrm{a} "\right] wj=1[y~j=n/a"]

3.3.2 可选的推理

  在引入序列增强的情况下,使得模型直接预测最大长度的固定序列,然后将其中的 “noise” 标签转化为最大可能性值对应下的真实类别标签,最后根据排序分数选取类别词。

四 实验

4.1 实验步骤

  数据集:MS-COCO 2017,评估指标:Mask AP。两种训练方式:1、参数随机抓取;2、预训练模型在 Objects365 上,在 COCO 上微调。
  采用 ResNet 作为图像 backbone,6 层的 Transformer 编码器和 6 层的 Transformer 解码器。最长边 1333 像素,2000 个量化格子,每次随机采样目标序列,添加噪声使得序列长度包含 100 个目标,序列长度 500 (400 坐标 + 100 类别),batch_128,epoch_300。
  预训练 Objects365,设置图像输入尺寸 640x640,400K,batch_256。在微调时,只训练 20-60 个 epoch。
  消融实验:ResNet-101,长边尺寸 640,epoch_200。

4.2 主要比较

在这里插入图片描述
在这里插入图片描述

4.3 序列构建时的消融实验

在这里插入图片描述

4.4 序列增强下的消融实验

在这里插入图片描述

4.5 解码器注意力图的可视化分析

在这里插入图片描述

五、相关工作

5.1 目标检测

  点评一下之前工作的缺点以及指出本文的优点。

5.2 语言建模

  本文提出的方法可以很好地应用到其他任务上。

六、结论与展望

  本文提出 Pix2Seq 用于目标检测,简单且实用,除去了特定化的结构。本文的框架可以很好地整合到其他视觉任务中,例如关键点检测、图像字幕、视觉问答等。
  主要缺陷在于自回归模型对于长序列来说成本仍较大。可能的解决方法:当 ending 词产生时,停止推理;应用离线推理或目标数量较小时的在线推理。将来需要使得模型更快,最好能用于实时的目标检测。另外一个缺陷在于 Pix2Seq 是基于人类标注的标签,通过减少这种依赖性(弱\无监督方式),使得模型能够从更多的无标签数据中获益。

附录

A 坐标的量化和定量代码

在这里插入图片描述

B 训练细节

在 COCO 数据集上随机抓取参数训练

  ResNet,6层 encoder,6层 decoder,256 维度,8 注意力头,采用带有随机裁剪的尺度抖动数据增强,范围 [ 0.1 , 3 ] [0.1,3] [0.1,3],0.5 的概率颜色扭曲,2000 个网格。AdamW优化器,学习率 0.003,权重衰减 0.05,10 个 warmup,训练过程中学习率呈线性衰减。

在 Objects 数据集上预训练

  只采用尺度抖动,范围 [ 0.3 , 2 ] [0.3,2] [0.3,2] 用于 ViT backbone, [ 0.9 , 1.2 ] [0.9,1.2] [0.9,1.2] 用于 ResNet,没有颜色扭曲。学习率 0.001,权重衰减 0.05。Cosine 学习率衰减策略,20K 个 warmup。

C 推理时的消融(最大采样 vs. 原子采样)

在这里插入图片描述

D 坐标词的相似性可视化分析

在这里插入图片描述

E 用给定的坐标引导注意力的能力

在这里插入图片描述

F 在编码器交叉注意力上的更多可视化结果

在这里插入图片描述

G 解码结果可视化

  在 COCO 验证集上的可视化,每个例子中都包含大量的目标。

在这里插入图片描述
写在后面
  这篇博文写了一个下午和晚上,终于草草结束了,有机会再回来补一下细节部分。这篇文章总体来说还是值得一看的,思路很新颖,估计以后也会成为目标检测或者分割类任务的标杆了~

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乄洛尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值