点击上方“视学算法”,选择加"星标"或“置顶

重磅干货,第一时间送达

来自|arxiv  编译|机器之心

目标检测的「尽头」是语言建模?近日,Hinton 团队提出了全新目标检测通用框架 Pix2Seq,将目标检测视作基于像素的语言建模任务,实现了媲美 Faster R-CNN 和 DETR 的性能表现。

视觉目标检测系统旨在在图像中识别和定位所有预定义类别的目标。检测到的目标通常由一组边界框和相关的类标签来描述。鉴于任务的难度,大多数现有方法都是经过精心设计和高度定制的,在架构和损失函数的选择方面用到了大量的先验知识。

图灵奖得主 Geoffrey Hinton 和谷歌研究院的几位研究者近日提出了一个用于目标检测的简单通用框架 Pix2Seq。与显式集成相关任务先验知识的现有方法不同,该框架简单地将目标检测转换为以观察到的像素输入为条件的语言建模任务。其中,将对目标的描述(例如边界框和类标签)表示为离散 token 的序列,并且该研究还训练神经网络来感知图像并生成所需的序列。

论文地址:https://arxiv.org/abs/2109.10852

该方法主要基于一种直觉,即如果神经网络知道目标的位置和内容,那么就只需要教它如何读取目标。除了使用特定于任务的数据增强之外,该方法对任务做出了最少的假设。但在 COCO 数据集上的测试结果表明,新方法完全可以媲美高度专业化和优化过的检测算法。

Pix2Seq 框架

该研究提出的 Pix2Seq 框架将目标检测作为语言建模任务,其中以像素输入为条件。上图所描述的 Pix2Seq 架构和学习过程有四个主要组成部分,如下图 2 所示,包括:

  • 图像增强:在训练计算机视觉模型中很常见,该研究使用图像增强来丰富一组固定的训练样例(例如,随机缩放和剪裁)。

  • 序列构建和增强:由于图像的目标注释通常表征为一组边界框和类标签,该研究将它们转换为离散 token 的序列。

  • 架构:该研究使用编码器 - 解码器的模型架构,其中编码器感知像素输入,解码器生成目标序列(一次一个 token)。

  • 目标 / 损失函数:该模型经过训练以最大化 token 的对数似然。

基于目标描述的序列构建

在常见的目标检测数据集中,例如 Pascal VOC、COCO 等,图像中往往具有数量不一的目标,这些目标被表征一组边界框和类标签,Pix2Seq 将它们表示为离散 token 的序列。

类标签自然地被表示为离散 token,但边界框不是。边界框由其两个角点(即左上角和右下角)或其中心点加上高度和宽度确定。该研究提出离散化用于指定角点的 x、y 坐标的连续数字。具体来说,一个目标被表征为一个由 5 个离散的 token 组成的序列,即 [y_min, x_min, y_max, x_max, c],其中每个连续的角坐标被均匀地离散为[1, n_bins] 之间的一个整数,c 为类索引。该研究对所有 token 使用共享词表,因此词汇量大小等于 bin 的数量 + 类(class)的数量。边界框的这种量化方案使得在实现高精度的同时仅使用较小的词汇量。例如,一张 600×600 的图像只需要 600 个 bin 即可实现零量化误差。这比具有 32K 或更大词汇量的现代语言模型小得多。不同级别的量化对边界框的影响如下图 3 所示。

鉴于每个目标的描述表达为一个短的离散序列,接下来需要将多个目标的描述序列化,以构建一个给定图像的单一序列。因为目标的顺序对于检测任务本身并不重要,因此研究者使用了一种随机排序策略(每次显示图像时目标的顺序是随机化的)。此外,他们也探索了其他确定性排序策略,但是假设随机排序策略和任何确定性排序是一样有效的,给定一个可用的神经网络和自回归模型(在这里,网络可以学习根据观察到的目标来为剩余目标的分布建模)。

最后,因为不同的图像通常有不同的目标数量,所生成的序列会有不同的长度。为了表示序列的结束,研究者合并了一个 EOS token。

下图 4 展示了使用不同排序策略的序列构建过程。

架构、目标和推理

此处把从目标描述构建的序列作为一种「方言」来处理,转向在语言建模中行之有效的通用体系架构和目标函数。

这里使用了一种编解码器架构。编码器可以是通用的感知像素图像编码器,并将它们编码成隐藏的表征形式,比如 ConvNet (LeCun et al. ,1989; Krizhevsky et al. ,2012; He et al. ,2016) ,Transformer (Vaswani et al. ,2017; Dosovitskiy et al. ,2020) ,或者它们的组合(Carion et al. ,2020)。

在生成上,研究者使用了广泛用于现代语言建模 (Radford 等人,2018; Raffel 等人,2019) 的 Transformer 解码器。它每次生成一个 token,取决于前面的 token 和编码的图像表征。这消除了目标检测器结构中的复杂性和自定义,例如边界框提名(bounding box proposal)和边界框回归(bounding box regression),因为 token 是由一个带 softmax 的单词表生成的。

与语言建模类似,给定一个图像和前面的 token,Pix2Seq 被训练用来预测 token,其具有最大似然损失,即

其中 x 是给定的图像,y 和 y^~ 分别是相关的输入序列和目标序列,l 是目标序列长度。在标准语言建模中,y 和 y^~ 是相同的。此外,wj 是序列中为 j-th token 预先分配的权重。我们设置 wj = 1,something j,但是可以根据 token 的类型 (如坐标 vs 类 token) 或相应目标的大小来权重 token。

在推理过程中,研究者从模型似然中进行了 token 采样,即。也可以通过使用最大似然性 (arg max 采样) 的 token,或者使用其他随机采样技术来实现。研究者发现使用核采样 (Holtzman et al., 2019) 比 arg max 采样 (附录 b) 更能提高召回率。在生成 EOS token 时,序列结束。一旦序列生成,它直接提取和反量化了目标描述(即获得预测边界框和类标签)。

序列增强

EOS token 会允许模型决定何时终止,但在实践中,发现模型往往在没预测所有目标的情况下终止。这可能是由于:

  1. 注释噪音(例如,注释者没有标识所有的目标) ;

  2. 识别或本地化某些目标时的不确定性。因为召回率和准确率对于目标检测来说都很重要,一个模型如果没有很好的召回率就不可能获得很好的整体性能(例如,平均准确率)。

获得更高召回率的一个技巧是通过人为地降低其可能性来延迟 EOS token 的采样。然而,这往往会导致噪声和重复预测。

序列增强引入的修改如下图 5 所示,详细情况如下:

研究者首先通过以下两种方式创建合成噪声目标来增加输入序列:

  1. 向现有的地面真值目标添加噪声(例如,随机缩放或移动它们的包围盒) ;

  2. 生成完全随机的边框(带有随机相关的类标签)。值得注意的是,其中一些噪声目标可能与一些 ground-truth 目标相同或重叠,模拟噪声和重复预测,如下图 6 所示。

变化推理。使用序列增强,研究者能够大幅度地延迟 EOS token,提升召回率,并且不会增加噪声和重复预测的频率,因此,他们令模型预测到最大长度,产生一个固定大小的目标列表。当从生成的序列中提取边界框和类标签时,研究者用在所有真实类标签中具有最高似然的真实类标签替换噪声类标签。他们还使用选定类标签的似然作为目标的排名分数。

实验结果

研究者主要与两个被广泛认可的基线方法进行比较,分别是 Facebook AI 于 2020 年提出的 DETR 和更早期的 Faster R-CNN。

结果如下表 1 所示,Pix2Seq 实现了媲美这两个基线方法的性能,其中在小型和中型目标上的表现与 R-CNN 相当,但在大型目标上表现更好。与 DETR 相比,Pix2Seq 在中型和大型目标上表现相当或略差,但在小型目标上表现明显更好(4-5 AP)。

序列构成的消融实验

下图 7a 探索了坐标量化对性能的影响。在这一消融实验中,研究者考虑使用了 640 像素的图像。该图表表明量化至 500 或以上 bin 就足够了,500 个 bin(每个 bin 大约 1.3 个像素)时不会引入显著的近似误差。事实上,只要 bin 的数量与像素数(沿着图像的最长边)一样多,就不会出现由边界框坐标量化导致的显著误差。

训练期间,研究者还考虑了序列构成中的不同目标排序策略。这些包括 1)随机、2)区域(即目标大小递减)、3)dist2ori(即边界框左上角到原点的距离)、4)类(名称)、5)类+区域(即目标先按类排序,如果同类有多个目标,则按区域排序)、6)类+dist2ori。

下图 7b 展示了平均精度(AP),7c 展示了 top-100 预测的平均召回率(AR)。在精度和召回率这两方面,随机排序均实现了最佳性能。研究者推测,使用确定性排序,模型可能难以从先前流失目标的错误中恢复过来,而使用随机排序,则可以在之后检索到它们。

增强的消融实验

研究者主要使用的图像增强方法是尺度抖动(scale jittering),因此比较了不同的尺度抖动强度(1:1 表示无尺度抖动)。下图 8a 展示了模型在没有合适尺度抖动时会出现过拟合(即验证 AP 低但训练 AP 高)。研究者预计,强大的图像增强在这项研究中非常有用,这是因为 Pix2Seq 框架对任务做了最小假设。

研究者还探究了「使用和不使用序列增强训练」的模型性能变化。对于未使用序列增强训练的模型,他们在推理过程中调整 EOS token 似然的偏移量,以运行模型做更多预测,从而产生一系列召回率。如下图 8b 所示,在无序列增强时,当 AR 增加时,模型会出现显著的 AP 下降。使用序列增强时,模型能够避免噪声和重复预测,实现高召回率和高精度。

解码器交叉注意力地图的可视化

在生成一个新的 token 时,基于 Transformer 的解码器在前面的 token 上使用自注意力,在编码的视觉特征图上使用交叉注意力。研究者希望在模型预测新的 token 时可视化交叉注意力(层和头的平均值)。

下图 9 展示了生成前几个 token 时的交叉注意力图,可以看到,在预测首个坐标 token(即 y_min)时,注意力呈现出了非常强的多样性,但随后很快集中并固定在目标上。

研究者进一步探索了模型「通过坐标关注指定区域」的能力。他们将图像均匀地划分为 N×N 的矩形区域网格,每个区域由边界框的序列坐标制定。然后在读取每个区域的坐标序列之后,他们将解码器的注意力在视觉特征图上实现可视化。最后,他们打乱图像的像素以消除对现有目标的干扰,并为了清晰起见消除了 2%的 top 注意力。

有趣的是,如下图 10 所示,模型似乎可以在不同的尺度上关注制定区域。

点个在看 paper不断!

Hinton团队CV新作:用语言建模做目标检测,性能媲美DETR相关推荐

  1. 图灵奖大佬Hinton团队CV新作:用语言建模做目标检测,性能媲美DETR

    来源:机器之心 目标检测的「尽头」是语言建模?近日,Hinton 团队提出了全新目标检测通用框架 Pix2Seq,将目标检测视作基于像素的语言建模任务,实现了媲美 Faster R-CNN 和 DET ...

  2. 目标检测的尽头是语言建模?Hinton团队提出Pix2Seq,性能媲美DETR

    ©作者 | 机器之心编辑部 来源 | 机器之心 目标检测的「尽头」是语言建模?近日,Hinton 团队提出了全新目标检测通用框架 Pix2Seq,将目标检测视作基于像素的语言建模任务,实现了媲美 Fa ...

  3. 使用合成数据集来做目标检测:目标检测的介绍

    作者:Sergey Nikolenko 编译:ronghuaiyang 来源:AI公园 导读 本文讨论使用生成数据集来做目标检测的一些基础概念. 今天,我们开始一系列专门讨论一个特定的机器学习问题,这 ...

  4. 比Tiny YOLOv3小8倍,性能提升11个点,4MB的网络也能做目标检测

    在本文中,来自滑铁卢大学与 Darwin AI 的研究者提出了名为 YOLO Nano 的网络,他们通过人与机器协同设计模型架构大大提升了性能.YOLO Nano 大小只有 4.0MB 左右,比 Ti ...

  5. 干货|使用合成数据集来做目标检测

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨Sergey Nikolenko 来源丨AI公园 编辑丨极市平 ...

  6. lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测

    文章目录 1 频率 1.1 频率定义 1.2 频率的计算公式 1.3 频率单位换算 1.4 频率概念使用范畴 1.5 频率的具体使用场景 2 光 2.1 光的定义 2.2 光的传播速度 3 激光 3. ...

  7. CV:基于深度学习实现目标检测之GUI界面产品设计并实现图片识别、视频识别、摄像头识别(准确度非常高)

    CV:基于深度学习实现目标检测之GUI界面产品设计并实现图片识别.视频识别.摄像头识别(准确度非常高) 目录 GUI编程设计界面 产品演示 GUI编程设计界面 产品演示 视频演示:https://bl ...

  8. CV之OD:计算机视觉之目标检测(Object Detection)方向的简介、使用方法、案例应用之详细攻略

    CV之OD:计算机视觉之目标检测(Object Detection)方向的简介.使用方法.案例应用之详细攻略 目录 OD目标检测的简介 1.Selective Search for Object Re ...

  9. 收藏 | 使用合成数据集做目标检测

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者:Sergey Nikolenko 编译:ronghuaiyang    |    AI公园 AI博士笔记 ...

最新文章

  1. oracle统计每日归档大小,Oracle查询最近几天每小时归档日志产生数量的脚本写法...
  2. python计算矩阵方程_python/sympy求解矩阵方程的方法
  3. julia example_使用Julia中的Example的sign()函数
  4. python中str函数_python字符串str的常用函数
  5. 百度 | 2022年科技趋势预测
  6. 数字图像处理_05_(图像锐化与边缘检测——Premittt算子、Roberts算子、Sobel算子、Scharr算子、Laplacian算子、LoG算子、Canny算子)
  7. php 验证码数字英文的,PHP 创设扭曲英文验证码
  8. wetool个人版_淘客干货:用了3年的wetool也没能幸免
  9. 打火机与公主裙剧中的爱心
  10. 郭德纲最新相声:韩国学艺
  11. 关于如何解释机器学习的一些方法
  12. 学渣的刷题之旅 leetcode刷题 88. 合并两个有序数组
  13. 云智慧智能研究院:2022年智能运维发展八大趋势
  14. python3 scrapy爬取智联招聘存mongodb
  15. AST还原功能说明文档
  16. 股票入门:什么是股票指数,什么是大盘指数
  17. 植物大战僵尸java 7723_植物大战僵尸BT版
  18. 2021计算机科学专业世界排名重磅出炉!今年排名大洗牌
  19. 压缩解压zip文件包
  20. 安卓手机测评_安卓游戏最新测评

热门文章

  1. GIS 相关知识扫盲
  2. 必须掌握的八个DOS命令 [转]
  3. 【通俗理解线性代数】 -- 内积与相关
  4. 【数据结构】双链表的应用
  5. c语言将字母与数字分开存放,2017年计算机二级《C语言》考前提分试题及答案9...
  6. ef关联多实体查询_Mybatis基本知识十二:关联关系查询之延迟加载:侵入式延迟加载...
  7. centos yum mysql-devel 5.5_CentOS 6.5下yum安装 MySQL-5.5全过程图文教程
  8. 如何打造高质量的机器学习数据集?这份超详指南不可错过
  9. GAN性能不稳?这九大技术可“镇住”四类缺陷
  10. 明晚8点直播 | Transformer新型神经网络在机器翻译中的应用