文章目录
paper
code
Abstract
我们提出了Pix2Seq,一个简单而通用的目标检测框架。与现有的明确集成有关任务的先验知识的方法不同,我们将对象检测作为一种基于观察到的像素输入的语言建模任务。对象描述(例如,边界框和类标签)被表示为离散标记的序列,我们训练神经网络来感知图像并生成所需的序列。我们的方法主要是基于直觉,如果神经网络知道物体在哪里和是什么,我们只需要教它如何读取它们。除了使用特定于任务的数据增强之外,我们的方法对任务进行了最小的假设,但与高度专业化和优化的检测算法相比,它在具有挑战性的COCO数据集上取得了具有竞争力的结果。
Introduction
视觉对象检测系统旨在识别并定位图像中所有预定义类别的对象。所检测到的对象通常由一组边界框和相关的类别标签来描述。由于该任务具有一定的难度,大多数现有的方法都是经过精心设计且高度定制的,在架构选择和损失函数方面有着大量的先验知识。例如,许多架构是为使用边界框而设计的(例如,使用区域提议和 RoI 池化(吉尔希克等人,2014;赫等人,2017))。还有一些则与使用对象查询进行对象绑定有关(卡里翁等人,2020)。损失函数通常会根据边界框的使用情况进行相应的调整,例如框回归(Szegedy 等人,2013 年;林等人,2017 年 b),基于集合的匹配(厄汉等人,2014 年;卡里翁等人,2020 年),或者通过引入特定的性能指标,如边界框的交并比(雷扎托菲等人,2019 年)。尽管现有的系统在众多领域都有应用,从自动驾驶汽车(孙等人,2020 年),到医学图像分析(贾格等人,2020 年),再到农业(萨等人,2016 年),但其专业化和复杂性使得它们难以整合到更大的系统中,或者推广到与通用智能相关的更广泛的任务集合中。
本文提出了一种新的方法,其基于这样一种直觉:如果神经网络能够了解物体的位置和类型,我们只需教它读出这些信息即可。通过学习“描述”物体,该模型能够学会将“语言”建立在像素观察的基础上,从而形成有用的物体表示。这是通过我们的 Pix2Seq 框架实现的(见图 1)。给定一张图像,我们的模型会生成一系列离散的标记,这些标记对应于物体描述(例如,物体边界框和类别标签),类似于图像描述系统(Vinyals 等人,2015b;Karpathy & Fei-Fei,2015;Xu 等人,2015)。本质上,我们将物体检测视为一个基于像素输入的语言建模任务,其模型架构和损失函数是通用且相对简单的,而不是专门为检测任务专门设计的。因此,可以很容易地将该框架扩展到不同的领域或应用中,或者将其纳入支持通用智能的感知系统中,从而为广泛的视觉任务提供语言接口。
为了使用 Pix2Seq 来完成检测任务,我们首先提出了一种量化和序列化方案,该方案将边界框和类别标签转换为一系列离散的标记序列。然后,我们利用编码器-解码器架构来感知像素输入并生成目标序列。目标函数仅仅是基于像素输入和前序标记的标记的最大似然值。尽管该架构和损失函数均与任务无关(不假设关于对象检测的先验知识,例如边界框),但我们仍可以通过下面提出的序列增强技术将任务特定的先验知识纳入其中,该技术在训练过程中会改变输入和目标序列。通过大量的实验,我们证明了这种简单的 Pix2Seq 架构在 COCO 数据集上能够取得与高度定制化且成熟的方法(包括 Faster R-CNN(Ren 等人,2015 年)和 DETR(Carion 等人,2020 年))相当的竞争性结果。通过在更大的对象检测数据集上预训练我们的模型,其性能可以进一步提高。
The PIX2SEQ FRAMEWORK
在提出的Pix2Seq框架中,我们将对象检测作为语言建模任务,以像素输入为条件(图1)。该系统主要由四个部分组成(图2):
• 图像增强:在训练计算机视觉模型时,这是一种常见的做法,我们会使用图像增强技术来丰富一组固定的训练样本(例如,通过随机缩放和裁剪)。
• 序列构建与增强:由于图像的对象注释通常以一组边界框和类别标签的形式表示,所以我们将其转换为一系列离散的标记。
• 架构:我们使用编码器-解码器模型,其中编码器感知像素输入,而解码器生成目标序列(一次生成一个标记)。
• 目标/损失函数:该模型通过最大化基于图像和前序标记的标记的对数似然值来训练(采用 softmax 跨熵损失)。
在常见的目标检测数据集(如 Pascal VOC(埃弗金顿等人,2010 年)、COCO(林等人,2014 年)和 OpenImages(库兹涅索娃等人,2020 年))中,图像中的目标数量是变化的,它们以一组边界框和类别标签的形式呈现。而在 Pix2Seq 中,我们将它们表示为一系列离散的标记序列。
SEQUENCE CONSTRUCTION FROM OBJECT DESCRIPTIONS
虽然类别标签通常以离散的标记形式呈现,但边界框并非如此。边界框是由其两个角点(即左上角和右下角)确定的,或者由其中心点加上高度和宽度来确定。我们提议将用于指定角点(类似地,对于高度和宽度,如果使用其他框格式,则也是如此)坐标的连续数字进行离散化处理。具体而言,一个对象被表示为一个由五个离散标记组成的序列,即[ymin, xmin, ymax, xmax, c],其中每个连续的角点坐标都被均匀地离散化为介于[1, nbins]之间的整数,而 c 是类别索引。我们为所有标记使用一个共享词汇表,因此词汇表的大小等于分箱数加上类别数。这种对边界框的量化方案使我们能够使用较小的词汇表同时实现高精度。例如,一个 600×600 的图像仅需要 600 个分箱就能实现零量化误差。这比现代语言模型的词汇表大小(如 32K 或更高)要小得多(Radford 等人,2018 年;Devlin 等人,2018 年)。不同量化等级对边界框位置的影响情况如图 3 所示。
对于每个对象描述,我们都将其表示为一个简短的独立序列。接下来,我们需要将多个对象描述串起来,形成给定图像的单一序列。由于对于检测任务本身而言,对象的顺序并不重要,所以我们采用了随机排序策略(每次展示图像时随机改变对象的顺序)。我们还探索了其他确定性排序策略,但假设在具备强大神经网络和自回归建模能力的情况下(在这种情况下,网络能够学习根据已观察到的对象来建模剩余对象的分布),随机排序的效果与任何确定性排序一样好。
最后,由于不同的图像通常包含不同数量的对象,生成的序列长度也会不同。为了表示序列的结束,我们因此引入了 EOS 标记。不同排序策略下的序列构建过程如图 4 所示。
ARCHITECTURE, OBJECTIVE AND INFERENCE
将我们从对象描述中构建的序列视为一种“方言”,我们转向在语言建模中有效的通用架构和目标函数.
Architecture
我们采用了编码器-解码器架构。编码器可以是一个通用的图像编码器,它能够感知像素并将其编码为隐藏表示,例如卷积神经网络(LeCun 等人,1989 年;克里泽夫斯基等人,2012 年;何等人,2016 年)、转换器(瓦斯维尼等人,2017 年;多索维茨基等人,2020 年)或它们的组合(卡里翁等人,2020 年)。对于生成任务,我们使用一个转换器解码器,它在现代语言建模中被广泛使用(拉德福德等人,2018 年;拉菲尔等人,2019 年)。它一次生成一个标记,基于前面的标记和编码的图像表示进行生成。这消除了现代对象检测器(例如边界框提议和回归)架构中的复杂性和定制性,因为标记是通过单个词汇表使用 softmax 生成的。
Objective
与语言建模类似,Pix2Seq被训练来预测标记,给定图像和之前的标记,具有最大的似然损失,即:
其中 x 是给定的图像,y 和 y˜ 分别是与 x 相关联的输入序列和目标序列,L 是目标序列的长度。在标准的语言建模设置中,y 和 y˜ 是相同的,但它们也可以不同(如我们在后续的增强序列构建中所描述的那样)。此外,wj 是序列中第 j 个标记的预先设定权重。我们设定 wj = 1,对于所有的 j,但也可以根据标记的类型(例如,坐标标记与类别标记)或相应对象的大小来给标记赋予权重。
Inference
在推理阶段,我们从模型似然性中抽取标记,即 P(yj |x, y1:j−1)。这可以通过选取似然性最大的标记(即最大值抽样)来实现,或者使用其他随机抽样技术。我们发现使用核抽样(霍尔特泽曼等人,2019 年)比最大值抽样(附录 C)能获得更高的召回率。当生成结束标记(EOS)时,序列即结束。一旦生成了序列,提取并去量化对象描述(即获得预测的边界框和类别标签)就变得很简单了。
SEQUENCE AUGMENTATION TO INTEGRATE TASK PRIORS
EOS 代币使模型能够决定何时停止生成过程,但在实际应用中,我们发现模型往往会在未完全预测所有对象的情况下结束生成。这可能是由于以下原因造成的:1)标注噪声(例如,标注者未能识别所有对象),以及2)在识别或定位某些对象时存在不确定性。虽然这仅对整体性能产生很小的负面影响(例如,在平均精度方面为 1-2%),但它对召回率的影响更大。为了提高召回率,一种方法是通过人为降低 EOS 令牌的出现概率来延迟其采样。然而,这往往会导致预测的不准确和重复。在一定程度上,这种在精确率和召回率之间进行的艰难权衡是由于我们的模型不具有特定任务的针对性,不了解检测任务本身所导致的。
展示带有/不带有序列增强的语言建模示例。在有序列增强的情况下,输入的标记会被构造为包含真实物体(蓝色)和合成噪声物体(橙色)。对于噪声物体,模型会经过训练来将其识别为“噪声”类别,并且我们将“n/a”标记(对应于噪声物体的坐标)的损失权重设为零,因为我们不想让模型模仿它们。
为了缓解这一问题,我们简单地引入了一种序列扩充技术,从而将关于任务的先验知识融入其中。在传统的自回归语言建模中(即未进行序列扩充的情况下),目标序列 y˜ 与输入序列 y 相同。并且序列中的所有标记都是真实的(例如,是从人工标注转换而来的)。通过序列扩充,我们在训练过程中对输入序列进行了扩充,使其包含真实的和合成的噪声标记。我们还修改了目标序列,以便模型能够学会识别噪声标记,而不是模仿它们。这提高了模型对有噪声和重复预测的鲁棒性(特别是在 EOS 标记延迟以提高召回率的情况下)。序列扩充所引入的修改如图 5 所示,并在下面进行详细说明。
Altered sequence construction
我们首先创建了合成噪声对象,以两种方式来扩充输入序列:1)对现有的真实对象添加噪声(例如,随机调整其边界框的大小或位置),以及 2)生成完全随机的边界框(并随机关联类别标签)。值得注意的是,这些噪声对象中的一些可能与某些真实对象相同或重叠,从而模拟出有噪声且重复的预测结果,如图 6 所示。
在对噪声对象进行合成和离散化处理后,我们将其添加到原始输入序列的末尾。对于目标序列,我们将噪声对象的目标标记设置为“噪声”类别(不属于任何真实的类别标签),并将噪声对象的坐标标记设置为“n/a”,其损失权重设为零。
Altered inference
通过序列增强技术,我们能够显著推迟结束标记(EOS)的出现时间,从而在不增加噪声和重复预测频率的情况下提高召回率。因此,我们让模型预测到最长长度,从而生成一个固定大小的对象列表。当我们从生成的序列中提取边界框列表和类别标签时,我们会将“噪声”类别标签替换为在所有真实类别标签中可能性最高的真实类别标签。我们将选定类别标记的似然性用作(排序)得分来评估对象。
EXPERIMENTS
EXPERIMENTAL SETUP
我们在 MS-COCO 2017 检测数据集(Lin 等人,2014 年)上对所提出的方法进行了评估,该数据集包含 118,000 张训练图像和 5,000 张验证图像。为了与 DETR 和 Faster R-CNN 进行比较,我们在最后一个训练周期的验证集上报告了平均精度(AP),这是一个涵盖多个阈值的综合指标。我们采用了两种训练策略:1)在 COCO 上从头开始训练,以便与基准方法进行公平比较,以及 2)预训练+微调,即在更大的对象检测数据集(即 Objects365,Shao 等人,2019 年)上预训练 Pix2Seq 模型,然后在 COCO 上微调该模型。由于我们的方法包含了对象检测任务的零归纳偏差/先验知识,因此我们预期第二种训练策略会更优。
对于从头开始的训练,我们遵循(Carion 等人,2020 年)的方法,使用 ResNet 框架(He 等人,2016 年),随后是 6 层的 Transformer 编码器和 6 层的(因果)Transformer 解码器(Vaswani 等人,2017 年)。我们将图像进行缩放(保持固定的比例),使较长的一边为 1333 像素。对于序列构建,我们使用 2000 个量化区间,并且每次展示一张图像时都会随机排列物体的顺序。我们向真实物体中添加噪声物体,使得每张图像总共包含 100 个物体,因此序列长度为 500。该模型以 128 的批次大小进行 300 个周期的训练。
对于基于 Objects365 数据集的预训练工作,我们采用了与上述类似的设置,但存在一些差异。值得注意的是,我们不再使用 1333×1333 的大图像尺寸,而是采用了 640×640 的较小图像尺寸,并且以 256 的批次大小对模型进行 400K 步的预训练。需要指出的是,由于使用了较小的图像尺寸,这个预训练过程甚至比从头开始训练还要快。在对 COCO 数据集进行微调时,只需要较少的轮次(例如 20 到 60 轮)就能获得良好的结果。而且在微调时我们也可以使用更大的图像尺寸。由于使用了更大的预训练数据集,我们还尝试使用更大的视觉转换器模型(Dosovitskiy 等人,2020 年)。
关于这两种训练策略的更多细节可在附录 B 中找到。至于消融实验,我们使用具有较小图像尺寸(最长边为 640)的 ResNet-101 主干网络,并且从头开始训练模型 200 个周期。
MAIN COMPARISONS
Training from scratch on COCO
我们主要与两个广为认可的基准模型进行比较:DETR 和 Faster R-CNN。DETR 和我们的模型在架构上较为相似,但我们的 Transformer 解码器无需学习“对象查询”或为框回归和分类分别设置独立的头,因为我们的模型通过单一的 softmax 函数就能生成不同类型的标记(例如,坐标标记和类别标记)。Faster R-CNN 是一种成熟的方法,具有诸如特征金字塔网络(FPN)等优化架构(Lin 等人,2017a)。Faster R-CNN 通常比 DETR 或我们的模型训练所需的epochs 更少,这可能是因为它在架构本身中明确地将任务的先验知识纳入其中。因此,我们还纳入了一个改进的 Faster R-CNN 基准,即(Carion 等人,2020)中的 Faster R-CNN+,其中 Faster R-CNN 模型使用 GIoU 损失(Rezatofighi 等人,2019)进行训练,训练时采用随机裁剪增强,并采用长达 9 周的训练计划。
结果列于表 1 中,其中每个部分都对同一 ResNet“框架”下的不同方法进行了比较。总体而言,Pix2Seq 的表现与两个基准方法相当。我们的模型在小型和中型物体上与 Faster R-CNN 的表现相当,但在大型物体上表现更佳。与 DETR 模型相比,我们的模型在大型和中型物体的识别上表现相当或略逊一筹,但在小型物体的识别上则表现显著更优(平均精度高出 4-5 个百分点)。
Pretrain on Objects365 and finetune on COCO
如表 2 所示,Object365 预训练的 Pix2Seq 模型在各种模型大小和图像大小下表现均十分出色。最佳性能(图像大小为 1333)为 50 AP,比从头开始训练的最佳模型高出 5%,即使在图像大小为 640 时,其性能依然表现良好。值得注意的是,使用较小的图像尺寸进行预训练,预训练+微调的过程比从头开始训练要快,并且泛化能力更强。这两个因素对于训练更大、更出色的模型至关重要。
ABLATION ON SEQUENCE CONSTRUCTION
图 7a 探讨了坐标量化对性能的影响。在本次消融实验中,我们考虑的图像最长边长为 640 像素。图表显示,将量化范围设置为 500 个区间或更多是足够的;使用 500 个区间时,每个区间大约有 1.3 个像素,这不会引入显著的近似误差。实际上,只要区间数量与图像最长边上的像素数量相同(即图像最长边上的像素数量),那么由于边界框坐标的量化而产生的误差应该是不会很大的。
在训练过程中,我们还考虑了序列构建时的不同对象排序策略。这些策略包括:1)随机排序;2)面积排序(即按对象大小降序排列);3)dist2ori 排序(即边界框左上角与原点的距离);4)类别排序;5)类别+面积排序(即首先按类别对对象进行排序,如果存在同一类别的多个对象,则按面积进行排序);以及 6)类别+dist2ori 排序。图 7b 展示了平均精度(AP),图 7c 展示了前 100 个预测的平均召回率(AR)。在精度和召回率方面,随机排序都表现出了最佳性能。我们推测,采用确定性排序方式时,模型可能难以从之前遗漏对象的错误中恢复过来,而采用随机排序则仍有可能在之后找回这些对象。
在此,我们研究了序列扩充(即添加噪声对象)对两种模型训练策略的影响:1)在 COCO 数据集上从头开始训练;2)先在 Objects365 上进行预训练,然后在 COCO 上进行微调。训练从头开始且未进行序列扩充的结果如图 8 所示,我们发现,如果不进行序列扩充,在推理过程中延迟 EOS 标签的采样(通过似然偏移),平均精度(AP)只会略有下降,但最优 AP 的召回率会显著下降。表 3 展示了预训练+微调设置下的类似结果(我们将结束标签的损失权重设为 0.1,而非调整其似然偏移),我们发现,如果不进行序列扩充,AP 不会受到显著影响,但召回率会显著下降。此外,还值得注意的是,序列扩充主要在微调过程中有效。
VISUALIZATION OF DECODER’S CROSS ATTENTION MAP
在生成新令牌时,变压器解码器会对前面的令牌进行自注意力处理,并对编码后的视觉特征图进行交叉注意力处理。在这里,我们将交叉注意力(经过层和头的平均处理)可视化为模型预测新令牌的过程。图 9 展示了在生成前几个令牌时的交叉注意力图。可以看到,在预测第一个坐标令牌(即 ymin)时,注意力非常多样化,但随后很快集中并聚焦于对象上。
RELATED WORK
Object detection
现有的目标检测算法在选择架构和损失函数时会融入对任务的明确先验知识。为了预测一组边界框,现代检测器的架构会专门设计以生成大量的候选方案(吉尔希奇,2015;雷等人,2015;蔡和瓦斯孔塞洛斯,2018)、锚点(林等人,2017b)或窗口中心(田等人,2019;周等人,2019)。非最大值抑制(博德拉等人,2017)通常被用于防止重复预测。而 DETR(卡里翁等人,2020)避免了复杂的边界框提案和非最大值抑制,但它仍然需要一组学习的“对象查询”,特别是用于对象绑定。这些检测器都需要分别为回归边界框和类别标签设置子网络(或额外的层)。Pix2Seq 通过拥有一个通用的图像编码器和序列解码器,以及一个单一的 softmax 来生成坐标标记和类别标签,从而避免了这些复杂性。
除了架构之外,现有的检测器的损失函数也是针对匹配边界框而高度定制的。例如,损失函数通常基于边界框回归(Szegedy 等人,2013 年;林等人,2017 年 b),交并比(Rezatofighi 等人,2019 年),以及基于集合的匹配(厄汗等人,2014 年;刘等人,2016 年;雷蒙等人,2016 年;斯图尔特等人,2016 年;卡里翁等人,2020 年)。Pix2Seq 避免了专门的损失函数,表明使用 softmax 交叉熵的简单最大似然目标也能很好地发挥作用。
我们的工作也与物体检测中的循环模型有关(Stewart 等人,2016 年;Park 和 Berg,2015 年;Romera-Paredes 和 Torr,2016 年;Salvador 等人,2017 年;Ren 和 Zemel,2017 年),在这些模型中,系统会逐个对象地进行预测。正如上述所述,这些方法中的架构和损失函数通常都是针对检测任务进行定制的。此外,这些方法并非基于 Transformer 模型,并且尚未在更大的数据集上与现代基准进行过比较评估。
Language modeling
我们的研究受到了现代语言模型近期取得的成功的启发(拉德福德等人,2019 年;拉菲尔等人,2019 年;布朗等人,2020 年)。尽管最初是为自然语言设计的,但其背后的原理已被证明能够对各种序列数据进行建模,例如机器翻译(苏斯克维等人,2014 年;巴丹纳乌等人,2014 年)、图像描述(维尼亚尔斯等人,2015 年 b;卡帕斯蒂亚与费伊-菲,2015 年;许等人,2015 年)以及其他许多领域(维尼亚尔斯等人,2015 年 a;黄等人,2018 年;拉梅什等人,2021 年;陈等人,2021 年)。我们的研究丰富了这一成果,并表明它甚至适用于非序列数据(通过将一组对象转换为一系列标记)。我们为我们的模型增加了输入和目标序列,以纳入任务特定的先验知识;类似的序列破坏方案已在语言模型中使用过(德文林等人,2018 年;克拉克等人,2020 年),并且与噪声对比学习(古特曼与海维拉宁,2010 年)以及 GAN 中的判别器(古德费洛等人,2014 年)有一些相似之处。
CONCLUSION AND FUTURE WORK
本文介绍了 Pix2Seq,这是一种简单但通用的对象检测框架。通过将对象检测视为一种语言建模任务,我们的方法大大简化了检测流程,消除了现代检测算法中的大部分专业化内容。我们认为,我们的框架不仅适用于对象检测,还可以应用于其他可以通过相对简洁的离散标记序列来表示输出的视觉任务(例如关键点检测、图像描述、视觉问答)。为此,我们希望将 Pix2Seq 扩展为一种通用且统一的接口,用于解决各种各样的视觉任务。
我们方法的一个主要局限性在于,对于较长的序列,自回归模型的计算成本较高(尤其是在模型推理过程中)。为解决这一问题,可以采取以下实际措施:1)在生成结束标记时停止推理(例如,在 COCO 数据集中,平均每个图像有 7 个对象,因此所需的标记数量相对较少,大约为 35 个),2)将其应用于离线推理或在线场景(在这些场景中,感兴趣的对象相对稀少,例如通过语言描述定位特定对象)。然而,未来的工作需要进一步改进,以使其适用于实时对象检测应用。另一个局限性在于,目前 Pix2Seq 的训练方法完全依赖于人工标注,通过减少这种依赖性,可以使模型从更多的未标注数据中受益。