Pix2seq:应用于目标检测的语言建模框架

Pix2seq

论文原文:https://arxiv.org/abs/2109.10852

参考:https://zhuanlan.zhihu.com/p/414791567

Abstract

Pix2seq将目标检测视为一个以观察到的像素输入为条件的语言建模任务。

目标描述(例如边界框和类别标签)以离散标记的序列形式表达,并训练一个神经网络来感知图像并生成所需的序列。我们的方法主要基于这样的直觉,即如果神经网络知道对象的位置和类别,那么我们只需要教它如何解读它们。

Pix2seq架构

Pix2seq基于这样一种直觉,即如果神经网络知道对象在哪里以及是什么,我们只需教会它读取它们。通过“描述”对象的学习,模型可以学会将“语言”与像素观察结果联系起来,从而得到有用的对象表示。给定一张图像,Pix2seq模型产生与对象描述相对应的离散token序列。如下图所示。

image-20231106163701374

将目标检测视为在像素输入的条件下进行的语言建模任务,模型架构和损失函数通用而且相对简单,并未针对检测任务进行专门设计(泛用性好)。

使用Pix2Seq进行检测任务

首先提出了一种量化和序列化方案,将边界框和类别标签转化为离散token 的序列。

然后,我们利用编码器-解码器架构来感知像素输入和生成目标序列。

目标函数简单地是在像素输入和之前的token 的条件下,使token 的最大似然。

虽然架构和损失函数都不针对任务进行特定假设(不假设关于目标检测的先前知识,如边界框),但我们仍然可以通过一种序列增强技术来纳入任务特定的先验知识,该技术在训练期间改变输入和目标序列。

Pix2seq系统由四个主要组件组成

image-20231106164737104
  • 图像增强: 在训练计算机视觉模型时,常用图像增强技术来丰富固定的训练样本集合(例如随机缩放和裁剪)。

  • 序列构建与扩充:由于图像的目标注释通常表示为一组边界框和类别标签,我们将其转换为一系列离散的标记。

  • 架构(Architecture):我们使用了编码器-解码器模型,其中编码器感知像素输入解码器逐个令牌地生成目标序列

  • 目标/损失函数(Objective): 模型的训练目标是最大化在图像和前面的标记条件下的标记对数似然函数(使用softmax交叉熵损失)。

在常见的目标检测数据集中,图像中的目标数量是可变的,通常表示为一组边界框和类别标签。在Pix2Seq中,我们将其表示为离散化的令牌序列。

具体而言,一个目标被表示为一个由五个离散化的令牌组成的序列,即[ymin, xmin, ymax, xmax, c],其中每个连续的角点坐标被均匀离散化为[1, nbins]的整数,c为类别索引。

使用一个共享的词汇表来表示所有令牌,因此词汇表的大小等于bin数量加类别数量。这种边界框的量化方案使我们能够在实现高精度的同时使用一个较小的词汇表。例如,对于一个600×600的图像,只需要600个bin即可实现零量化误差。不同量化水平对边界框的排列的影响如下图所示。

image-20231106165814110

将每个目标描述表示为一个简短的离散序列后,我们需要将多个目标描述序列化为给定图像的单个序列。由于对于检测任务本身来说,对象的顺序不重要,我们使用随机排序策略(每次显示图像时随机调整目标的顺序)。

最后,由于不同图像通常具有不同数量的目标,生成的序列长度也会有所不同。为了表示序列的结束,我们因此使用了一个EOS(end of sequence)令牌。不同排序策略下的序列构建过程如下图所示。

image-20231106165910271

架构

我们使用编码器-解码器架构。编码器可以是一个通用的图像编码器,它感知像素并将其编码为隐藏表示,例如ConvNet,Transformer或者它们的组合。对于生成,我们使用Transformer解码器。它每次生成一个令牌,以前面的令牌和编码的图像表示为条件。这消除了现代目标检测器中架构的复杂性和定制性,例如边界框提议和回归,因为令牌是从具有softmax的单一词汇表中生成的。

目标

目标与语言建模类似,给定一张图像和前面的令牌,Pix2Seq被训练为预测令牌,使用最大似然损失,即,

image-20231106170528298

其中 x 是给定图像,y 和 y~\tilde{y} 是输入和与 x 相关的目标序列,L 是目标序列长度。 y 和 y~\tilde{y} 在标准语言建模设置中是相同的,但它们也可以不同(如我们后来的增强序列构造)。此外,wj 是序列中第 j 个标记的预先分配的权重。我们设置 wj = 1, ∀j,但是可以根据标记的类型(例如,坐标标记与类标记)或相应对象的大小来对标记进行加权。

推理

在推理阶段,我们从模型的似然中抽取令牌,即P(yj |x, y1:j−1)。这可以通过选择具有最大似然的令牌(argmax抽样)或使用其他随机抽样技术来实现。我们发现使用nucleus抽样(Holtzman et al., 2019)比argmax抽样具有更高的回收率。当生成EOS令牌时,序列结束。生成序列后,提取和去量化对象描述(即获取预测的边界框和类别标签)就变得简单明了。

序列增强以整合任务先验

EOS 令牌(标记)允许模型决定何时终止生成,但在实践中我们发现模型往往会在没有预测所有对象的情况下完成。这可能是由于 1) 注释噪声(例如,注释者未识别所有对象),以及 2) 识别或定位某些对象的不确定性。虽然这只会对整体性能产生很小的影响(例如,平均精度为 1-2%),但它对召回率的影响较大。为了鼓励更高的召回率,一种技巧是通过人为降低其可能性来延迟 EOS 令牌的采样。然而,这通常会导致嘈杂和重复的预测。在某种程度上,精确度和召回率之间的这种困难权衡是我们的模型与任务无关、不知道检测任务本身的结果。为了缓解这个问题,我们简单地引入了序列增强技术,从而结合了有关该任务的先验知识。传统自回归语言模型(即没有序列增强)中的目标序列 y~\tilde{y} 与输入序列 y 相同。并且序列中的所有标记都是真实的(例如,从人类注释转换而来)。通过序列增强,我们在训练期间增强输入序列以包括真实的和合成的噪声标记。我们还修改目标序列,以便模型可以学习识别噪声标记而不是模仿它们。这提高了模型针对噪声和重复预测的鲁棒性(特别是当 EOS 令牌被延迟以增加召回率时)。由序列增强引入的修改如下图所示。

image-20231107105249912

: 带有/不带有序列增强的语言建模示意图。通过序列增强,输入标记被构建为包括真实对象(蓝色)和合成噪声对象(橙色)。对于噪声对象,模型被训练为将它们识别为“噪声”类,并且我们将“n/a”标记(对应于噪声对象的坐标)的损失权重设为*,因为我们不希望模型模仿它们。*

修改序列建构

首先,我们通过以下两种方式创建合成噪声物体来增强输入序列:1)对现有的真实物体添加噪声(例如,随机缩放或移动它们的边界框),2) 生成完全随机的边界框(配以随机关联的类别标签)。值得注意的是,这些噪声物体中的一些可能与真实物体相同或重叠,模拟嘈杂和重复的预测,如下图所示。在合成和离散化噪声物体之后,我们将它们附加在原始输入序列的末尾。至于目标序列,我们将噪声物体的目标标记设置为“噪声”类(不属于任何真实类别标签),将噪声物体的坐标标记设置为“n/a”,其损失权重设置为零,即在公式1 中,设置image-20231107105032028

image-20231107105453018

修改推理

通过序列增强,我们能够大幅度延迟EOS标记,提高召回率,而不增加嘈杂和重复预测的频率。因此,我们让模型预测到最大长度,从而得到一个固定大小的物体列表。当我们从生成的序列中提取边界框和类别标签列表时,我们将“噪音”类别标签替换为具有全部实际类别标签中最高可能性的真实类别标签。我们将所选类标记的可能性作为(排名)对象的分数。


Basic Information:

  • Title: PIX2SEQ: A LANGUAGE MODELING FRAMEWORK FOR OBJECT DETECTION (PIX2SEQ:一种用于目标检测的语言建模框架)

  • Authors: Ting Chen, Saurabh Saxena, Lala Li, David J. Fleet, Geoffrey Hinton

  • Affiliation: Google Research, Brain Team (谷歌研究,Brain团队)

  • Keywords: object detection, language modeling, neural network, Pix2Seq framework (目标检测,语言建模,神经网络,Pix2Seq框架)

  • URLs: Paper, GitHub

论文简要 :

  • 本文提出了Pix2Seq,一种简单且通用的目标检测框架。与现有方法明确地整合任务的先验知识不同,我们将目标检测视为一种基于观察像素输入的语言建模任务。目标描述(如边界框和类别标签)被表示为离散令牌序列,我们训练一个神经网络来感知图像并生成所需的序列。通过教会神经网络如何读取目标的位置和类别,我们的方法在挑战性的COCO数据集上取得了与高度专门化和优化的检测算法相媲美的结果。

背景信息:

  • 论文背景: 视觉目标检测系统旨在识别和定位图像中预定义类别的所有对象。大多数现有方法在架构和损失函数的选择上具有大量的先验知识,例如,许多架构针对使用边界框进行了优化,损失函数也经常针对边界框进行了定制。然而,这些专门化和复杂的方法往往难以集成到更大的系统中,或者推广到与通用智能相关的更广泛的任务领域。

  • 过去方案: 许多现有的目标检测方法在设计上高度定制,并且在架构和损失函数的选择上具有大量的先验知识。这些方法通常针对使用边界框进行了优化,并且损失函数也针对边界框进行了定制。然而,这些专门化和复杂的方法往往难以集成到更大的系统中,或者推广到与通用智能相关的更广泛的任务领域。

  • 论文的Motivation: 本文的动机是基于这样的直觉:如果神经网络知道对象的位置和类别,我们只需要教它如何读取这些信息。通过学习“描述”对象,模型可以学习将“语言”与像素观察结果关联起来,从而得到有用的对象表示。为了实现这一目标,本文提出了Pix2Seq框架,将目标检测视为一种基于像素输入的语言建模任务,模型架构和损失函数相对简单且通用,不需要专门为检测任务进行工程化。因此,可以将该框架轻松扩展到不同的领域或应用,并将其纳入支持通用智能的感知系统,为各种视觉任务提供语言接口。

方法:

  • a. 理论背景:

    • 本文介绍了Pix2Seq,这是一个将目标检测任务视为语言建模问题的框架。作者提出将目标描述表示为离散标记的序列,并训练神经网络根据像素输入生成这些序列。该方法基于这样一个思想,即如果网络知道对象的位置和内容,它只需要学会如何读取它们。作者强调他们的框架对任务的假设要求很少,并且在COCO数据集上与专门的检测算法相比取得了竞争性的结果。
  • b. 技术路线:

    • Pix2Seq框架包括四个主要组件:图像增强、序列构建和增强、架构以及目标/损失函数。图像增强用于丰富训练样本,而序列构建涉及将对象注释转换为离散标记的序列。架构是一个编码器-解码器模型,其中编码器感知像素输入并将其编码为隐藏表示,而解码器根据前面的标记和编码的图像表示逐个生成目标序列。目标函数是最大化标记在图像和前面的标记条件下的对数似然。

结果:

  • a. 详细的实验设置:

    • 实验中使用的模型包括R101、R50-DC5和R50-DC5。
    • 模型使用ResNet骨干网络进行训练,后跟6层Transformer编码器和6层(因果)Transformer解码器。
    • 图像被调整大小,使得较长的一边为1333像素。
    • 序列构建使用2000个量化区间,并随机排列每个图像中的对象。
    • 添加噪声对象到真实对象中,每个图像总共添加100个对象,序列长度为500。
    • 模型训练300个epochs,批量大小为128。
  • b. 详细的实验结果:

    • 在MS-COCO 2017检测数据集上评估了所提出的方法。
    • 采用两种训练策略:在COCO上从头开始训练和在Objects365上进行预训练+微调,然后在COCO上进行微调。
    • 使用平均精度(AP)指标将结果与Faster R-CNN和DETR基线进行比较。
    • Pix2Seq模型在不同阈值和目标尺寸下与基线相比取得了竞争性的结果。
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2023-2024 Guijie Wang
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信