文|GlobalTrack
源|极市平台
本文提出了一种将四个看似不同的视觉任务(目标检测,实例分割,关键点检测,图像描述)统一在单个像素到序列界面中的方法。
论文链接:
https://arxiv.org/pdf/2206.07669v2.pdf
源码链接:
https://github.com/google-research/pix2seq
简介
训练能够执行无数个任务的单个神经网络模型是迈向通用人工智能的重要一步。在NLP领域,许多NLP相关任务都可以统一在大型语言模型下进行。主要原因是这些任务可以用相同的界面表示。而相似的方法目前在计算机视觉只能用于图像描述和图像问答任务,主要是因为输出是自然语言形式的,主题的计算机诗句任务有不同的输出,不能像NLP有类似的表示。
本文提出了一种将四个看似不同的视觉任务(目标检测,实例分割,关键点检测,图像描述)统一在单个像素到序列界面中的方法。本文方法是对在目标检测任务中使用的Pix2Seq模型到一系列任务的扩展。
本文框架
令牌化的统一接口
一般认为不同的计算机视觉输出是完全不同的。比如本文关注的四个任务:目标检测任务需要模型产生对所有物体的包围框,且没有重复。实例分割任务需要模型产生对每一个物体的密集像素掩码。人体关键点检测需要模型生成与人体部位上的标志的特定位置相对应的点。图像描述需要模型产生与图像对应的自然语言描述。
本文方法提出一种对于四个关注任务的序列接口,即所有任务的描述和输出都表示为若干离散令牌组成的序列。
目标检测:一个物体由五个离散令牌表示,。每次训练样本时多个物体随机采样序列化后形成最终令牌。
实例分割:这里预测实例掩码的多边形描述,并将多边形描述为一序列的坐标,并将坐标转为离散令牌。这里每次采样训练图片对应的开始点的开始令牌是随机的。如果存在相同实例的多个多边形,通过一个分割令牌聚集每个多边形的表示序列。
关键点检测:类似地,这里也是用一系列坐标表示关键点检测结果,。这里为了简洁省略了关键点类别标签。如果某个关键点被遮挡,相应的坐标令牌被一个特别的令牌取代。
图像描述:直接预测离散的文本令牌。
统一的架构和损失函数
这里使用常用的encoder-decoder架构,包括一个图像编码器和一个序列解码器。图像编码器接收像素信息映射到隐藏的表示,一般用CNN,Transformer或组合架构。
与Pix2Seq方法只关注单一任务不同的是,解码器以一个任务的prompt为条件,直接为单个目标检测任务产生输出token,以便模型可以产生适应于关注任务的输出。在训练期间,模型将prompt和期望的输出连接到单个序列中,利用token加权方案确保解码器只被训练来预测期望的输出,而不是prompt令牌。在推理过程中,prompt是给定的,并且是固定的,所以解码器只需要产生序列的其余部分。类似于Pix2Seq方法,训练目标是最大化基于图像的令牌和之前的令牌的似然性。
多个任务的训练
这里给出两种不同任务训练数据合并的方法:
数据混合。合并不同任务的图像和相应输出序列。优点是构建很简单,但很难加入图像增广。
批混合。采样不同任务的图像,经适合当前任务的增广处理,合并令牌化的输出序列得到图像-序列对。这种方法可以独立地为了一个任务计算损失和梯度,并以合适的权重融合不同任务的梯度。
本文方法考虑使用批混合策略。
推断
在推理阶段,在序列的开头给出一个prompt,然后从模型的似然分布中采样令牌。令牌得到后就可以为每个任务解码。
实验
表1给出了实验结果。比较的模型包括:单一模型:模型用相同的架构和损失函数在单一任务上训练,每个任务有自己的网络权重。多任务模型:单一的网络权重用于全部四个任务。结果表明本文方法可以在每一个任务上与baseline相比都能取得有竞争力的结果(甚至是较小图像尺寸输入条件下)。
图4给出了如何选择合适的各任务损失函数加权系数。这里使用贪心策略。图4(a)给出了搜素目标检测与实例分割间权重比例的搜索结果。可以看出在一个较广的范围内,两个任务的性能都接近峰值。之后实验简单选择2:8的权重比例。加入图像描述任务后,在9:1的权重比例下是对当前任务是较合适的。加入关键点检测后发现权重能设置的较小,这里选择为0.01。
部分图片可视化结果:
后台回复关键词【入群】
加入卖萌屋NLP、CV、搜推广与求职讨论群