Hinton大神团队最新力作|Pix2Seq|目标识别的语言建模框架|超越DETR、Faster R-CNN


注:个人水平有限,如有错误(以下内容加入自己的理解),敬请批评指正。

Pix2Seq论文解读

论文原文链接:https://arxiv.org/pdf/2109.10852.pdf

摘要

Pix2Seq特点:

  1. 一个简单的生成式框架,可用于目标检测。
  2. 将目标检测当作一个语言建模任务,仅仅需要图像像素作为输入。
  3. 无需特定任务的数据集增强,仅需要少量的任务假设,就可以在COCO数据集上取得优秀的结果。
  4. 将常见的目标检测参数,如bounding boxes和class labels,当作离散标识序列处理,根据图像输出期望的序列。

(刚开始感觉这里应该讲的具体点,应该说出具体比别的方法精度高出多少,转念一想,最大的价值在于"看图说话"实现目标检测,将整体思想放在首页也就无可厚非了。下面的第一张图是Pix2Seq框架图解,第二张图是Pix2Seq和Faster R-CNN以及DETR的比较)

在这里插入图片描述

1.介绍

目标检测系统的任务是在一张图像中识别和定位预定义好的物体种类,并且使用bounding boxes和class labels描述物体位置和种类。目前,主流的方法是作者们”绞尽脑汁“选择网络结构、损失函数,例子数不胜数,你们自己看。方法的特殊性和复杂性,增加了此类方法整合入庞大系统的难度,这样搞,通用智能何时才能实现?(通用智能肯定是多模态的智能,要将cv、nlp等整合起来)

晴天霹雳一声响,Pix2Seq来了,Pix2Seq来了!

Pix2Seq是一个框架,将图像任务转化为基于像素的语言建模任务,这样就可以给很多视觉任务提供语言接口。为了使用这个框架进行目标检测,要分两步
在这里插入图片描述

  1. 将bounding boxes和class labels转化成离散标识序列。
  2. 利用encoder-decoder框架识别像素输入,输出目标序列。

目标函数很简单,就是标识的极大似然。尽管框架和损失损失函数无需目标检测的先验知识,在训练过程中仍然可以利用数据提高效果。经过广泛的实验,我们证明Pix2Seq在COCO数据集上,和Faster R-CNN以及DETR相比是有优势的。

2.Pix2Seq框架

Pix2Seq框架主要有4个组成部分:
在这里插入图片描述

  • 图像增强:增强训练数据
  • 序列构造和增强:将bounding boxes和class labels转化成离散标识序列
  • 架构:使用encoder-decoder模型,encoder识别像素输出,decoder产生目标序列
  • 目标函数/损失函数:最大化标识的对数似然

2.1 从物体描述中构造序列

在常见的物体检测数据集中,如Pascal VOC、COCO和OpenImages,图像有数量不等的物体,表示为边界框和类标签的集合。在Pix2Seq中,我们将它们表示为离散的标记序列。
虽然类标签可以自然地表达为离散的标记,但bounding boxes却不是。一个边界框是由它的两个角点(即左上角和右下角),或者由它的中心点加上高度和宽度决定的。我们建议将用于指定角点的x、y坐标的连续数字离散化(如果使用其他盒子格式,高度和宽度也类似)。具体来说,一个物体被表示为五个离散标记的序列,即[ymin, xmin, ymax, xmax, c],其中每个连续的角坐标被统一离散为[1, nbins]之间的整数,而c是类别索引。我们对所有标记使用一个共享词汇,所以词汇量等于bin的数量+类的数量。这种边界框的量化方案使我们能够在使用小词汇量的同时实现高精确度。例如,一个600×600的图像某个维度只需要600个bin就可以达到zero quantization误差。这比现代语言模型中32K或更大的词汇量要小得多。下图说明了不同的量化水平对边界框的放置的影响。
在这里插入图片描述
随着每个物体描述被表达为一个短的离散序列,我们接下来需要将多个物体描述序列化,形成一个给定图像的单一序列。由于物体的顺序对检测任务本身并不重要,我们使用随机排序策略(每次显示图像时随机排序物体)。我们还探索了其他确定的排序策略,但我们假设,如果有一个强大的神经网络和自回归模型,随机排序将和任何确定的排序一样好用(在这里,神经网络可以在观察物体基础上学习对剩余物体的分布进行建模)
最后,由于不同的图像往往有不同数量的物体,生成的序列将有不同的长度。因此,为了表示一个序列的结束,我们加入了一个EOS标记(我猜EOS应该指的是end of sequence,类似于EOF end of file)。下图显示了不同排序策略下的序列构建过程
在这里插入图片描述

2.2 架构、目标函数和推理

将我们从对象描述中构建的序列视为一种 “方言”,我们现在来看下在语言建模中一直有效的通用架构和目标函数。
架构:
我们使用一个编码器-解码器架构。编码器可以是一个普通的图像编码器,可以感知像素并将其编码为隐藏的表征,如ConvNet、Transformer或它们的组合。对于生成阶段,我们使用一个Transformer解码器,广泛用于现代语言建模。它以前面的标记和编码的图像表示为条件,一次生成一个标记。这消除了现代物体检测器架构中的复杂性和特殊性,例如,bounding
box proposal和回归,因为标记是由一个具有softmax的单一的词汇表生成的。
目标函数:
与语言建模类似,Pix2Seq被用来预测标记,给定一个图像和前面的标,并使用最大似然损失,即
在这里插入图片描述
其中 x x x是一个给定的图像, y y y y ^ \widehat y

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

机器视觉全栈er

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

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

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

打赏作者

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

抵扣说明:

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

余额充值