点击上方“”,选择加""或“”
重磅干货,第一时间送达
写在前面
视觉语言预训练提高了许多下游视觉语言任务的性能,如图形检索、基于图片的问答或推理。一些朋友想问,除了使用更大的模型/更多的数据/技能在公共学术任务中刷指标外,
为此,字节跳动 AI Lab Research 团队提出了X-VLM,首次提出学习多粒度视觉和语言对齐。实验表明,这种预训练方法非常高效,模型规模不大,预训练数据不多, 仅216M参数量的X-VLM在广泛的多模态任务中,如图像文本检索、基于图片的问答或推理、视觉定位、图片描述生成等,都能取得优异的表现。目前,X-VLM 在字节跳动的真实应用场景中,已经超越了业界常用的多个模型,完成了在线服务,服务于今日头条等业务。相关论文已被接受ICML 2022接收。
论文:https://arxiv.org/abs/2111.08276代码:https://github.com/zengyan-97/X-VLM
比如,,能够为图片生成更正确地描述物体与物体之间关系的句子,应用于字节跳动的公益项目。有视觉障碍的赵先生经常用今天的头条新闻来了解时事新闻。他一直期待着:我希望像普通人一样‘看’所有的信息。” 今日头条三分之二以上的信息内容有图片。为了解决视障人士的阅读问题,今日头条App最近应用了 X-VLM 可自动识别图片并对其进行描述的生成能力。
为了让他们看每一张照片,我们做了一点改进
此外,X-VLM大力智能学习灯的自动批改功能也采用了理解和生成能力。下图显示了补充短语题型和模型预测的结果:
大力智能学习灯具有自动解题功能,深受家长好评,仍在不断优化。
研究背景
现有的多模态预训练模型大致分为两类:
1)依靠目标探测器提取基于物体(如汽车、人、树、背包)的特征来表示图片。这种方法可以学习物体级别的视觉和语言对齐,如图1所示(a)所示。这些方法要么直接使用预训练的目标检测器,要么将目标检测过程合并到多模态预训练中;
2)用 ResNet 或者 Vision Transformer 编码整个图片,只学习图片和文本之间的对齐,如图1所示(b)所示。
这两种方法都有一些问题。首先,基于目标检测的方法会识别图片中所有可能的物体,其中有些与配对文本无关。此外,该方法提取的基于物体的视觉特征可能会丢失物体之间的信息(可视为上下文信息)。此外,这种方法只能识别有限类型的物体,我们很难提前定义合适的物体类别。而第二种方法则比较简单直接,但是较难学习到细粒度的视觉和语言对齐,例如:物体级别的对齐。这种细粒度的对齐关系细粒度对齐关系的视觉推理 (visual reasoning) 和视觉定位 (visual grounding) 任务很有帮助。
事实上,对于多模态预训练,模型使用有以下公共数据:1)图片和图片标题;2)区域标记,如图1中的文本 “man crossing the street” 与图片中的特定区域有关。然而,之前的工作粗略地将区域标记与整个图片对齐;3)物体标签,如 “backpack,这些标以前的工作用来训练目标探测器。
与之前的做法不同,作者在本文中提出。具体来说,作者提出可以基于 Vision Transformer 的 patch embeddings 灵活表达各种粒度的视觉概念,如图1所示(c)例如,视觉概念 “backpack” 由2个patch组成,而视觉概念 “man crossing the street” 由更多的patch组成。
因此,X-VLM学习多粒度视觉和语言对齐的秘诀是:
,对比学习损失、匹配损失、和MLM损失优化;
非常高效,模型规模不需要很大,预训练数据X-VLM 能在下游多模态理解/生成任务中取得优异的表现。
方法
图2左侧给出视觉概念 (可以是物体/区域/图片)的编码过程:该图像编码器基于Vision Transformer,分成输入图片patch编码。然后,给出任何边界框,灵活地通过取框中的所有边界框patch该区域的全局表示表示平均值。然后将整体表达和原框中的一切patch作为边界框对应的视觉概念,表示按原始顺序排列成序列。通过这种方式获得图片本身(I)以及图片中的视觉概念(V1,V2,V3)编码。与视觉概念相对应的文本通过文本编码器逐一编码,如图片标题、区域描述或物体标签。
X-VLM采用常见的模型结构,其区别在于预训练方法。作者优化了以下两种损失:
首先,在同一张图片中,给出不同的文本,例如:T(text)、T1(text1)、T2(text2)、T3(text3)模型预测图片中对应视觉概念的边界框:
xjcls是跨模态编码器 [CLS] 位置的输出向量。Sigmoid 函数是标准化预测的边界框。Ground-truthbj对应了,其次是标准化后的中心横坐标、中心纵坐标、宽度和高度。最后,损失是边界框坐标的回归损失(L1)和交并比损失(GIoU)之和。
第二,使用patch embeddings灵活表达各种粒度的视觉概念,然后直接优化模型,拉出不同粒度的文本和视觉概念,包括对象/区域/图片和文本的对齐。作者利用多模态预训练中常见的三种损失优化,其次是:
1)比较学习损失:
yv2t,yt2v∈ Rbszxbsz是ground-truth相似度, 对角线为1,其余为0。
pv2t, pt2v∈ Rbsz x bsz是基于文本的模型编码器输出和图像编码器输出所计算的相似度。
2)匹配损失:
pmatch是基于跨模态编码器计算,预测所给 对是否匹配(换句话说,0/1分类)。对于每对正例,作者采样一对负例。
3)Masked Language Modeling损失:
T(估计值)中的一些词已经被随机替换成了 [MASK],pj(V, T(估计值))是跨模态编码器在词tj位置的输出向量所计算的词表概率分布。
实验
作者使用多模态预训练中常见的中等规模的4M和16M图片数据集进行实验,如下表所示:
其中,标注(# Ann)是区域标注和物体标签的总和。可以看出,有些数据集没有图片标题,例如Visual Genome(VG),有些数据集没有图片标注,例如CC-3M/12M。
表2展示了在图像文本检索任务 (MSCOCO和Flickr30K) 上的表现。即使,之前的方法在更大量的内部数据上预训练或者模型规模更大,在4M图片数据集下训练的X-VLM就已经可以超过之前的方法。
表3展示了在视觉推理 (VQA2.0和NLVR2)、视觉定位 (RefCOCO+) 、图片描述生成 (COCO Caption) 上的模型表现。为了公平的对比,X-VLM 沿用了之前工作的 fine-tune 方法,没有进行额外的调整。结合表2和表3,可以看出,相比之前的方法,X-VLM支持更多种类的下游任务,并且在这些常见的视觉语言任务上都取得了十分优秀的表现。
总结和讨论
在本文中,作者提出了X-VLM以学习多粒度的视觉和语言对齐,能够避免高开销的目标检测过程,也不局限于学习图像级别或物体级别的对齐。
1)基于 patch embeddings 灵活表示各种粒度的视觉概念,然后直接拉齐不同粒度的视觉概念和对应文本;
2)更进一步,在同一张图片中,给出不同的文本,要求模型能预测出对应视觉概念的坐标。实验证实这种预训练方法十分高效。
在实验部分,作者使用常用的4M和16M数据,训练总参数量216M的 X-VLM ,就能超过更大规模的模型或使用大量预训练数据的模型,在下游多种多模态理解/生成任务上取得非常优秀的表现。并且,字节跳动的工程师们也把 X-VLM 用在了真实的业务场景上,例如:为视障人群描述图片内容,小学生作业的自动批改。实际上,X-VLM 还十分擅长细粒度的 retrieval,visual grounding 等任务。
目前,X-VLM 的代码已开源,也欢迎大家扫下方二维码在自己的任务上做fine-tune体验。
*本文系视学算法获授权刊载,观点仅为作者所有。
— —
点个在看 paper不断!