字节跳动 AI Lab 提出多模态模型:X-VLM,学习视觉和语言多粒度对齐( 二 )


与之前的做法不同 , 本文中作者提出X-VLM , 以统一的方式利用上述数据高效地学习多粒度的视觉和语言对齐 , 能够避免高开销的目标检测过程 , 也不局限于学习图像级别或物体级别的对齐 。 具体来说 , 作者提出可以使用基于VisionTransformer的patchembeddings来灵活表示各种粒度大小的视觉概念 , 如图1(c)所示:例如 , 视觉概念“backpack”由2个patch组成 , 而视觉概念“mancrossingthestreet”由更多的patch组成 。
因此 , X-VLM学习多粒度视觉和语言对齐的秘诀在于:
1)使用patchembeddings来灵活表示各种粒度的视觉概念 , 然后直接拉齐不同粒度的视觉概念和对应文本 , 这一过程使用常用的对比学习损失、匹配损失、和MLM损失优化;
2)更进一步 , 在同一张图片中 , 给出不同的文本 , 要求模型能预测出对应粒度的视觉概念的坐标 , 以边界框坐标的回归损失和交并比损失优化 。 实验证明 , 这种预训练方法十分高效 , 模型规模无需很大 , 预训练数据无需很多 , X-VLM就能在下游多种多模态理解/生成任务上获得非常优秀的表现 。
方法字节跳动 AI Lab 提出多模态模型:X-VLM,学习视觉和语言多粒度对齐
文章图片
X-VLM由一个图像编码器 , 一个文本编码器 , 一个跨模态编码器组成 。
图2左侧给出了视觉概念(可以是物体/区域/图片)的编码过程:该图像编码器基于VisionTransformer , 将输入图片分成patch编码 。 然后 , 给出任意一个边界框 , 灵活地通过取框中所有patch表示的平均值获得区域的全局表示 。 再将该全局表示和原本框中所有的patch表示按照原本顺序整理成序列 , 作为该边界框所对应的视觉概念的表示 。 通过这样的方式获得图片本身(I)和图片中视觉概念(V1 , V2 , V3)的编码 。 与视觉概念对应的文本 , 则通过文本编码器一一编码获得 , 例如图片标题、区域描述、或物体标签 。
X-VLM采用常见的模型结构 , 其不同之处在于预训练的方法 。 作者通过以下两类损失进行优化:
第一 , 在同一张图片中 , 给出不同的文本 , 例如:T(text)、T1(text1)、T2(text2)、T3(text3) , 要求模型预测图片中对应视觉概念的边界框:
xjcls是跨模态编码器在[CLS]位置的输出向量 。 Sigmoid函数是为了标准化预测的边界框 。 Ground-truthbj对应了 , 依次是标准化后的的中心横坐标、中心纵坐标、宽、高 。 最后 , 该损失是边界框坐标的回归损失(L1)和交并比损失(GIoU)之和 。 作者认为在同一张图片中 , 给不同文字 , 要求模型预测出对应的视觉概念 , 能使模型更有效地学习到多粒度的视觉语言对齐 。 该损失也是首次被使用在多模态预训练中 。
第二 , 使用patchembeddings来灵活表示各种粒度的视觉概念 , 然后直接优化模型去拉齐不同粒度的文本和视觉概念 , 包括了物体/区域/图片与文本的对齐 。 作者使用多模态预训练中常见的三个损失优化 , 依次是:
1)对比学习损失:
字节跳动 AI Lab 提出多模态模型:X-VLM,学习视觉和语言多粒度对齐
文章图片
yv2t , yt2v∈Rbszxbsz是ground-truth相似度,对角线为1 , 其余为0 。
pv2t,pt2v∈Rbszxbsz是模型基于文字编码器输出和图像编码器输出所计算的相似度 。
2)匹配损失:
字节跳动 AI Lab 提出多模态模型:X-VLM,学习视觉和语言多粒度对齐
文章图片
pmatch是基于跨模态编码器计算 , 预测所给对是否匹配(换句话说 , 0/1分类) 。 对于每对正例 , 作者采样一对负例 。
3)MaskedLanguageModeling损失:
字节跳动 AI Lab 提出多模态模型:X-VLM,学习视觉和语言多粒度对齐