Vision-Language Models for Vision Tasks: A Survey

论文地址:https://arxiv.org/pdf/2304.00685.pdf

项目地址:https://github.com/jingyi0000/VLM_survey

一、综述动机

  1. 视觉语言模型,如CLIP,以其独特的训练方式显著简化了视觉识别任务的流程。它减少了对大量精细标注数据的依赖,使得研究者能够更高效地开展研究工作。

  2. 近年来,大量研究论文证明了研究者对视觉语言模型的浓厚兴趣。然而,目前尚缺乏一篇全面、系统的综述来梳理这一领域的研究进展、挑战和未来方向。因此,本文旨在填补这一空白,为研究者提供一个清晰、全面的视角。

二、为什么要用VLMs?

        视觉识别范式的发展可以广泛地分为五个阶段,包括:

  • Traditional Machine Learning and Prediction:使用手工设计的特征和传统机器学习算法进行训练和预测,需要大量的人工参与和专业知识.
  • Deep Learning from Scratch and Prediction: 使用深度神经网络(DNN)进行端到端的训练和预测,和第一阶段相比,该范式使用DNN代替了人工设计的特征,实现了计算机视觉任务的巨大跨越。不过这方法需要大量标注数据,并且容易出现过拟合问题。
  • Supervised Pre-training, Fine-tuning and Prediction:使用大规模标注数据进行监督式预训练,然后在特定任务上微调并进行预测。和第二阶段相比,该范式在用于特定任务时,可以通过微调的方式来更好地利用有限的标注数据。
  • Unsupervised Pre-training, Fine-tuning and Prediction:使用无标注数据进行无监督式预训练,然后在特定任务上微调并进行预测。相比于第三阶段的监督式方法,更好地利用未标注数据。
  • VLM Pre-training and Zero-shot Prediction:使用视觉-语言相关性进行大规模无监督式预训练,并且可以在各种视觉识别任务中进行零样本预测。和第四阶段相比,这种方法不需要针对特定任务进行微调即可取得出色的效果。

        各个范式的演进过程就是一步步减少中间环节依赖(如人工设计特征、大量人工打标数据、用于特定任务时进行训练/微调)的过程,也是模型的泛化性逐渐提升的过程。VLM Pre-training and Zero-shot Prediction 的范式使得模型训练时不需要人工设计特征,也不需要海量打标数据,并且在用于下游任务时不需要针对特定任务进行微调,直接zero-shot就能取得不错的效果。能实现这一效果的关键就在于强大的预训练VLMs。

三、VLMs视觉语言模型预训练方法的总结与对比

        目前主流的以CLIP为典型代表的Vision-Language Model(VLM)预训练方法可以大致分为3个关键模块:

  • 文本特征提取模块,通常采用Transformer结构及其一系列变体作为基础结构。
  • 图像特征提取模块,通常采用CNN(以ResNet结构为典型代表)或者Transformer(如ViT、MAE等结构)来提取图像特征。
  • 特征融合模块

        在VLM预训练模型中,最关键的问题是将文本和图像这两种模态的信息建立联系,所以下面对其中的特征融合模块做详细介绍。

        特征对齐模块中,以目标函数进行分类的话,大致可以分为三类:

  1. 基于对比学习的方法(Pre-Training with Contrastive Objectives):也称对比式,这类方法通过对比学习来训练模型,使其在特征空间中能够将配对的图像和文本拉近,同时将不相关的样本推远。根据对比学习的输入类型,我们又可以进一步细分为基于图像对比学习、基于图像-文本对比学习和基于图像-文本-标签对比学习的方法。

  2. 基于生成任务的方法(Pre-training with Generative Objectives):也称生成式,这类方法通过训练模型进行图像生成、文本生成或跨模态生成来学习语义特征。它们可以进一步细分为基于掩码图像建模、基于掩码语言建模、基于掩码跨模态建模和基于图像到文本生成的方法。

  3. 基于对齐目的的方法(VLM Pre-training with Alignment Objectives):也称对齐式,这类方法旨在将图像和文本的特征进行匹配,包括全局的图像-文本匹配和局部的图像区域-单词匹配。

        一些常见的VLM预训练方法如下图所示,从下图可以看出,典型的目标函数选择按照对应的方法数量多少可以分为以下几种:

  •         纯对比式目标函数(18篇文章),以CLIP、ALIGN、SLI等为代表。
  •         对比式和生成式相结合(6篇文章),以DeCLIP、FLAVA等为代表。
  •         对比式和对齐式相结合(3篇文章),以FILIP、nCLIP、RegionClip。
  •         纯对齐式(2篇文章),以GLIP、DetCLIP为代表。
  •         纯生成式(1篇文章),以PaLI为代表。

        对比式、生成式、对齐式大杂烩(1篇),以FIBER为代表。

三种目标函数简介

        1.对比式

        对比式目标函数的目的是希望在特征空间使得正样本对之间的距离尽可能接近,而正负样本对之间的距离尽可能远。

        VLM预训练中主要有以下三种模式的对比式目标函数:

        Image Contrastive Learning

        通常用InfoNCE及其变体作为图像对比学习的目标函数

Image-Text Contrastive Learning

通常由两部分构成,一部分为图像特征到文本特征的InfoNCE,一部分为文本特征与其对应的图像的特征的InfoNCE,将这两者结合作为最终的损失函数。

Image-Text-Label Contrastive Learning

在Image-Text Contrastive的基础上还需要加上label的信息,这里

        2.生成式

        主要通过生成误差来建立损失函数,包括几种形式:

  • Masked Image Modelling
    • Masked Language Modelling
    • Masked Cross-Modal Modelling
    • Image-to-Text Generation

        3.对齐式

通过在嵌入空间中进行全局Image-Text匹配或局部Region-Word匹配来对齐图像文本对。

  • Image-Text Matching

  • Region-Word Matching

效果对比

这里主要目标是比较各个VLM预训练模型的能力,在所有任务(包括图像分类、分割、目标检测)上都是比较的zero-shot的结果。

预训练的VLM能够在下游任务中取得较好的zero-shot结果,具备优秀的泛化性能。这得益于三大因素:

    • 大数据——采用图文对这种监督方式,更方便收集大量数据进行训练(如LiT中的4B数据和COCA中的4.8B数据),使得VLM具有强大的泛化能力;
    • 大模型——与传统的视觉识别模型相比,VLM通常采用更大的模型(例如COCA中的ViT-G,有2B个参数),这些模型提供了足够的容量来有效地从大数据中学习;
    • 任务无关学习——VLM预训练中的监督通常是通用和任务无关的。与传统视觉识别中的任务特定标签相比,图像文本对中的文本提供了任务无关、多样化和信息丰富的语言监督,有助于训练出适用于各种下游任务的可泛化模型。

四、视觉语言模型迁移方法的总结与对比

        虽然预训练的Vision-Language Model有着较好的泛化性,可以直接zero-shot用于下游任务,不过距离完美的效果还有一定gap,主要表现在两个方面:

  • 不同下游任务的图像及文本分布可能存在差异
  • 训练目标的差异,预训练模型通常是训练通用的任务无关的特征,而特定的任务需要结合一些任务相关的目标。

        总的来说,VLM预训练得到的模型算是知识面很广的全才,能在特定下游任务上取得比较好的结果,但是还没有成为这一任务的专家。如果能在VLM的基础上,通过迁移学习的方式针对不同的下游任务进行一些微调,便能够在各个子任务中取得更好的效果。以下是几种比较常见的迁移学习的方式。

        因此,除了直接应用预训练的视觉语言模型进行零样本预测外,迁移学习也是提高模型性能的重要手段。本文总结了视觉语言模型的迁移学习方法,主要包括提示调整方法、特征适配器方法和其他方法。

  1. 提示调整方法(Prompt Tuning):受自然语言处理中“提示学习”的启发,这种方法通过调整模型的提示来适应下游任务,而无需对整个模型进行微调。提示调整方法包括文本提示调整、视觉提示调整和文本-视觉提示调整。

  2. 特征适配器方法(Feature Adapter):这类方法通过在视觉语言模型上添加轻量级的特征适配器来进行微调,以适应下游任务的特定需求。

  3. 其他方法:除了上述两种方法外,还有一些研究通过直接微调视觉语言模型、更改模型架构或其他创新手段来进行迁移学习。

        Text Prompt Tuning

        顾名思义,这类方法主要在文本侧做文章,相比手动设计prompt或者进行prompt ensemble的方法,这类方法将text prompt部分设置为可学习的,然后结合特定任务的目标函数对prompt部分进行微。大致如下图所示:

        Visual Prompt Tuning

        和Text Prompt Tuning类似,不过这类方法是在图像侧施展拳脚,比如VP这篇论文加入了一个可学习的图像块,与原始图片像素级相加后作为Image Encoder的输入,并通过特定任务的目标函数进行学习。这种像素级别的调整对于dense类任务比较有效,比如目标检测、分割等。

        Text-Visual Prompt Tuning

        既可以在文本侧做文章进行Prompt Tuning,又可以在图像侧进行Prompt Tuning,那么同时在图像和文本侧兜进行Prompt Tuning也是一件顺理成章的事情。

        基于Feature Adaption进行迁移

        prompt tuning主要是对输入的prompt(包括文本和图像)进行一些调整,而Feature Adaption方法主要是通过加入一个即插即用的“插件”的形式对特征进行调整。下图所示的方法就是一个典型的例子,图中的Feature Adapter结构可以设计成简单的多层感知机之类的网络去适配下游任务,同时加入残差连接的形式确保最差能退化到zero-shot的情况。这类方法的典型代表有Clip-Adapter、Tip-Adapter、SVL-Adapter。

视觉语言模型知识蒸馏方法的总结与对比

        视觉语言模型以其强大的视觉和文本概念理解能力,为复杂任务如目标检测和语义分割提供了新的解决思路。知识蒸馏作为一种有效的模型压缩和性能提升手段,在视觉语言模型的应用中发挥着关键作用。与视觉语言模型迁移方法不同,对视觉语言模型进行知识蒸馏的方法通常不受视觉语言模型架构的限制,并且大部分研究会利用当前最先进的检测或者分割架构的优势来达到更好的性能。在视觉语言模型的知识蒸馏方法中,本文根据应用场景的不同,将其分为两大类:开放词汇目标检测(Open-Vocabulary Object Detection)的知识蒸馏和开放词汇语义分割(Open-Vocabulary Semantic Segmentation)的知识蒸馏。

未来研究方向

        在视觉语言模型的研究中,尽管已经取得了显著的进展,但仍有许多挑战和潜在的研究方向值得进一步探索。

对于视觉语言模型的预训练:

  1. 细粒度视觉语言关系建模:目前大多数视觉语言模型主要关注全局的图像-文本对应关系,但细粒度的视觉语言关系(如物体间的空间关系、属性关系等)对于理解图像内容同样至关重要。未来的研究可以探索如何更有效地建模这些细粒度关系,以进一步提升模型的性能。

  2. 统一视觉和语言特征的学习:Transformer的出现使得图像和文字可以通过相同的方式进行学习,这使得可以采用统一的Transformer架构处理图像和文字。与现有采用两个独立网络的视觉语言模型相比,统一视觉和语言学习可以实现跨模态的有效交流,并有效提升预训练的效率。

  3. 多语言和多文化的视觉语言模型:现有的视觉语言模型主要关注单一语言和文化背景下的图像理解。然而,随着全球化的发展,多语言和多文化的视觉语言理解变得越来越重要。未来的研究可以探索如何构建能够处理多种语言和文化背景的视觉语言模型,以满足更广泛的需求。

对于视觉语言模型的知识蒸馏,可以从两个方面进行探索。首先,可以同时对多个视觉语言模型进行知识蒸馏,通过协调多个视觉语言模型的知识蒸馏来获得更好的效果。其次,除了目标检测和语义分割等任务外,视觉语言模型的知识蒸馏还可以应用于其他视觉任务,如实例分割、姿态估计、视频理解等。未来的研究可以探索如何将这些方法扩展到更多的视觉任务中,以进一步提升视觉识别技术的性能和应用范围。

综上所述,视觉语言模型的研究仍具有广阔的前景和众多的挑战。未来的研究可以从预训练、迁移学习和知识蒸馏等多个方面进行深入探索,以推动视觉语言技术的发展和应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2_3.Linux系统中的日志管理

# 1.journald # 服务名称:systemd-journald.service journalctl 默认日志存放路径: /run/log (1) journalctl命令的用法 journalctl -n 3 ##日志的最新3条--since "2020-05-01 11:00:00" ##显示11:00后的日…

基于STM32的汽车防窒息系统

文章目录 基于STM32的汽车防窒息系统系统简介材料展示视频制作硬件连接原理图PCB实物图GSM模块使用GSM模块代码 SGP30模块SGP30模块代码 步进电机驱动步进电机代码 其他模块主逻辑代码 总结 基于STM32的汽车防窒息系统 系统简介 随着社会的发展目前汽车的流行,汽车大…

【技巧】如何解除Excel“打开密码”?

给Excel表格设置“打开密码”,可以保护表格不被他人随意打开,那如果后续不需要保护了,不想每次打开Excel都需要输密码,要怎么去除“打开密码”呢? 今天分享3个方法,最后一个方法记得收藏起来,以…

基于51单片机的智能报警系统Proteus仿真

地址:https://pan.baidu.com/s/10dhkyV5O629UpFHHV67LpQ 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectroni…

LVS、HAProxy

集群:将很多个机器组织到一起,作为一个整体对外提供服务。集群在扩展性、性能方面都可以做到很灵活。集群的分类:负载均衡集群:Load Balance。高可用集群:High Available。高性能集群:High Performance Com…

Python学习从0到1 day20 第二阶段 面向对象 ② 封装

缘分 朝生暮死犹如露水 —— 24.4.1 学习目标: 1.理解封装的概念 2.掌握私有成员的使用 一、面向对象三大特性: 面向对象编程,是许多编程语言都支持的一种编程思想 简单理解是:基于模板(类)去创建实体&…

枚举---算法

1、定义 枚举算法:也称之为穷举算法,这种算法就是在解决问题的时候去使用所有的方式去解决这个问题,会通过推理去考虑事件发生的每一种可能,最后推导出结果。优点:简单粗暴,它暴力的枚举所有可能&#xff…

Mysql故障和优化

一、MySQL故障 二、MySQL优化 1.硬件优化: 2.数据库设计与规划 1.提前估计数据量,使用什么存储引擎 2.数据库服务器专机专用,避免额外的服务可能导致的性能下降和不稳定性 3.增加多台服务器,以达到稳定、高效的效果。主从同步、…

风控系统:通过净值及盈亏开启和关闭自动交易

一、风控对交易员的好处 帮助交易员执行交易纪律并保护他们的交易资金。 纪律风控:对不符合交易纪律的交易执行风控,对交易纪律性差的交易员执行约束操作。净值风控:对满足条件的净值执行风控,防止交易员的账户净值过度下降。手数…

Memory Analyzer Tool使用教程

下载地址&#xff1a;https://eclipse.dev/mat/previousReleases.php 下载JDK8对应的MAT版本 使用jps查看pid jps 使用jmap生成heap dump文件 jmap -dump:formatb,live,filexxx.bin <pid> 使用MAT打开heap dump文件 查看GC Roots

【Linux入门】Linux简史

Linux 是什么&#xff1f;Linux 是一款叫做操作系统的软件。 操作系统这款软件有什么样的意义呢&#xff1f;简单来说&#xff0c;比如有顾客买了一台笔记本电脑&#xff0c;这台笔记本电脑由电脑硬件组成&#xff0c;在这堆硬件上一定搭载了一款操作系统。正因为操作系统存在&…

ssm013小型企业办公自动化系统的设计和开发+vue

小型企业办公自动化系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对小型企业办公信息管理混乱&am…

git删除某次commit的代码

这里写目录标题 1.问题背景2.问题拆解尝试&#xff1a;a.使用git reset --hard HEAD &#xff08;不行&#xff0c;局限性太大&#xff09;尝试&#xff1a;b.使用git rebase -i HEAD &#xff08;可以&#xff0c;但push -f不太友好&#xff09;尝试&#xff1a;c.使用git rev…

ETL工具-nifi干货系列 第六讲 处理器JoltTransformJSON

1、处理器作用 使用Jolt转换JSON数据为其他结构的JSON,成功的路由到success,失败的failure。处理JSON的实用程序不是基于流的&#xff0c;因此大型JSON文档转换可能会消耗大量内存。 Jolt&#xff1a;JSON 到 JSON 转换库&#xff0c;用 Java 编写&#xff0c;其中转换的 &qu…

LINUX笔记温习

目录 DAY1 DAY2 day3&#xff1a; day4 day5 day6 day7 day8 day9 day10 day11 day12 day13 day14 day15 20day DAY1 1、多层级文件夹创建要带-p&#xff1b; 2、创建多文件&#xff0c;要先到该目录下才能创建(第一个目录必须存在才能有效建立)&#xff1b; D…

Golang 内存管理和垃圾回收底层原理(二)

一、这篇文章我们来聊聊Golang内存管理和垃圾回收&#xff0c;主要注重基本底层原理讲解&#xff0c;进一步实战待后续文章 垃圾回收&#xff0c;无论是Java 还是 Golang&#xff0c;基本的逻辑都是基于 标记-清理 的&#xff0c; 标记是指标记可能需要回收的对象&#xff0c…

2023年EI会议论文已见刊/检索进展汇总

2023年录用的会议论文已在SPIE、ACM、IEEE等出版社正式上线见刊&#xff0c;并已陆续完成EI Compendex数据库收录&#xff0c;详情如下&#xff1a; EIECT 2023——IEEE出版&#xff0c;并完成EI收录 会议信息&#xff1a; 第三届电子信息工程与计算机技术国际学术会议&…

探索使用对比损失的孪生网络进行图像相似性比较

点击下方卡片&#xff0c;关注“小白玩转Python”公众号 简介 在计算机视觉领域&#xff0c;准确地测量图像相似性是一项关键任务&#xff0c;具有广泛的实际应用。从图像搜索引擎到人脸识别系统和基于内容的推荐系统&#xff0c;有效比较和查找相似图像的能力非常重要。Siames…

QA测试开发工程师面试题满分问答3: python的深拷贝和浅拷贝问题

在 Python 中&#xff0c;深拷贝&#xff08;deep copy&#xff09;和浅拷贝&#xff08;shallow copy&#xff09;是用于创建对象副本的两种不同方式。 浅拷贝是创建一个新的对象&#xff0c;该对象与原始对象的内容相同&#xff08;包括内部嵌套对象的引用&#xff09;&…

Higress 基于自定义插件访问 Redis

作者&#xff1a;钰诚 简介 基于 wasm 机制&#xff0c;Higress 提供了优秀的可扩展性&#xff0c;用户可以基于 Go/C/Rust 编写 wasm 插件&#xff0c;自定义请求处理逻辑&#xff0c;满足用户的个性化需求&#xff0c;目前插件已经支持 redis 调用&#xff0c;使得用户能够…