从2021年年初开始,以CLIP为代表的多模态预训练模型在各种多模态相关的任务中表现超乎大家想象,无论是传统的多模态理解任务,还是最近比较火热的AIGC任务,发展到现在,基于CLIP的工作层出不穷,包括在CV领域也衍生出许多优秀的工作。
今天开始,小源将带大家进入多模态专题的学习,一起了解多模态相关的那些知识。
广义来说,多模态的概念包含内容很多。从人类感知世界的角度来看,主要的方式就是视觉,嗅觉,听觉等等。其中语音,文字和图像是最重要的传播载体,这三个领域的研究也都在这几年得到了快速的发展,对应于深度学习中的语音,NLP以及CV方向;从数据来源的角度来看,来自不同传感器的数据也可以叫多模态。
随着网络的发展,各种短视频以及电商平台越来越多,存在丰富的各种模态数据(文本、图片、语音、视频等),单一的文字或图像,已经不能完整地描述图文、视频信息。如何将这些信息关联起来,从海量大数据中挖掘出知识显得非常关键。针对深度学习中研究较多的,就是图文多模态。
图文多模态其实也不是一个新的概念,在上个世纪就研究的比较多,在进入DeepLearning 阶段之后,促进多模态快速发展的因素主要包括如下:
(1)更多的算力(GPU, TPU)
(2)更大规模的多模态数据集
(3)强大的视觉特征抽取能力
(4)强大的文本特征抽取能力
在NLP里以bert为代表的大模型表现出惊人的效果后,预训练模型在各个领域呈现出百花齐放的局面,大家期望通过上游预训练的方式,让模型能够在海量的无标注代价数据中自动学到一些有用的特征(知识),进而在下游一些提供增益,来一定程度解决小样本问题以及长尾问题。而所谓的预训练,就是让大模型能够尽量吃更多的数据,通过自监督的方式来学习,在下游使用时使用模型蒸馏或者模型量化的手段来迁移到下游任务中。
随着NLP领域预训练大模型表现的强大能力,近几年,CV领域的预训练模型也开始受到关注。模型规模从最开始的千万规模到10亿规模乃至更大的百亿模型,训练方法也从全监督到弱监督,再到目前流行的多种自监督方法。
从两个领域的发展趋势来看,二者越来越凸显出趋同化,尤其是VIT结构出现并慢慢取代视觉卷积结构之后。而多模态作为两个领域的连接桥梁,势必会得到快速发展。
前面说过,多模态就是尝试让不同模态的数据能够相互关联,互相作用,其他互补促进的效果。从任务本身来说,其大概有三个核心:
(1)多模态表征
多模态表征学习是指通过利用多模态之间的互补性, 剔除模态间的冗余性, 从而学习到更好的特征表示。
(2)多模态对齐
多模态对齐主要是辨别来自两个或两个以上的不同模态的元素之间的关系,将它们映射到共同表示空间中,在该空间中求相似度分数进行特征对齐。
(3)多模态融合
多模态融合指综合来自两个或多个模态的信息以进行预测的过程,实现信息补充,拓宽输入数据 所包含信息的覆盖范围,提升预测结果的精度,提高预测模型的鲁棒性。
与CV或者NLP类似,多模态同样也包含上游和下游两个阶段,上游就是多模态预训练,下游是一些和多模态有关的具体任务,比如跨模态检索,VQA, Visual Grouding, ImageCaptioning等等。而以CLIP为代表的模型就是上游的多模态理解预训练模型。
(1)多模态预训练
具体来说,上游预训练阶段本质上是一种表征学习的阶段,通过使用一些自监督的pretask来帮助模型学习更好的跨模态表征,让具有相同语义的不同模态信息的表征能够尽量距离相近。一般有两种结构来实现这种表征,一类是单塔(单流)结构,一类是双塔(双流)结构,如图所示:
其中单塔中比较有代表性的工作包括VILT, Osca等等,双塔中则以CLIP, ALIGN等为代表。两者结构不同,使用的自监督方式也不太一样,双塔主要以跨模态对比学习来实现,而单塔多以ITM或者MLM来作为pretask。这样也导致两种结构各自的特点,双塔由于两个模态的特征编码器(Encoder)相互独立,只在loss上有交互,因此使用方便,且效率高,但是由于缺少足够的跨模态融合,在一些VQA等任务中表现一般;而单塔则相反,其有足够的模态交互,因此适合进行VQA等任务,但是在跨模态检索时效率低。
当然,最近也有工作尝试将两种结构混合,提出了单双塔混合结构,其目的是让模型既能高效处理跨模态检索任务,又能够很好的用来做VQA, ImageCaptioning等任务。其具体架构就是就是分为两阶段,第一阶段是双塔,第二阶段是单塔,如图所示:
这种单双塔混合结构主要以ALBEF和BLIP为代表,其一共三个编码器提取特征,一个图像编码器,一个文本编码器以及一个多模态编码器。训练时候的Loss多采用单塔Loss和双塔Loss结合的策略。
(2) 多模态下游任务
多模态相关的下游任务非常多,涉及到的任务类型,场景也各不相同。比较有代表性的有Cross Modal Retrival(跨模态检索),VQA(视觉问答),ImageCaptiong(图像摘要)等等。
【跨模态检索】
跨模态检索(以文搜图)是输入一个文本,在图像底库里检索出和文本最匹配的图像,常用于电商领域检索。
【以图生文】
以图生文是输入一张图像,生成一段对图像内容进行描述的文本,可以用于商品文案摘要。
【医疗问答】
VQA(视觉问答)则是同时输入一张图像以及针对该图像的一个question(问题),输入一个对于该问题的回答,一般可用于医疗问答系统。
【以文生图】
以文生图是输入一个文本,生成一张符合该文本描述的高清图像,主要用来进行创意设计等。
4、多模态经典论文推荐
(1) Learning Transferable Visual Models From Natural Language Supervision
代码:https://github.com/openai/CLIP
论文:https://arxiv.org/abs/2103.00020
(2) Align before Fuse: Vision and Language Representation Learning with Momentum Distillation
代码:https://github.com/salesforce/ALBEF
论文:https://arxiv.org/abs/2107.07651
(3) ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision
代码:https://github.com/dandelin/ViLT
论文:https://arxiv.org/abs/2102.03334v1
(4) BLIP:Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding
代码:https://github.com/salesforce/BLIP
论文:https://arxiv.org/abs/2102.03334v1
小源一直坚信,不管用AI方法还是传统方法,多模态肯定是一个具有前景的方向,最近不光是这些文章,多模态指导其他任务(比如目标检测,语义分割)的工作也越来越多,而且效果非常惊艳,那么,就让我们对多模态的发展拭目以待吧!
今后我们会在发布一些关于AI学习方面的资料,有兴趣的小伙伴可以点点关注。内容包括但不限于最新的多模态/CV领域论文代码,一些国内外AI竞赛baseline以及赛后总结,多模态,CV等领域的专题分享,锁定小源,一起成长!
【入群邀请】因为大多数资料论文较大,有想系统学习多模态/CV知识,了解多模态/CV最新前沿论文的同学可以进入分享群(添加微信拉入),群内每天更新论文和相关代码!