【AIGC】16、Vision-Language 模型在视觉任务中的调研

news2024/11/16 11:30:26

在这里插入图片描述

文章目录

    • 一、简介
    • 二、基础知识
      • 2.1 视觉任务的训练策略
      • 2.2 VLM 基础
        • 2.2.1 网络结构
        • 2.2.2 预训练目标函数
        • 2.2.3 评估和下游任务
      • 2.3 数据集
    • 三、迁移学习
      • 3.1 使用 prompt tuning 实现迁移学习
      • 3.2 通过特征适应来进行迁移学习
    • 四、VLM 的知识蒸馏
      • 4.1 目标检测的知识蒸馏
      • 4.2 语义分割的知识蒸馏

一、简介

在这里插入图片描述

近来,一种新的学习范式 pre-training → Finetuning → Prediction 取得了很大的进步,并且在视觉识别任务中取得了很好的效果。

使用 pretrained 模型来学习丰富的知识,可以加速模型对下游任务的收敛速度并且提高效果

但是,这种学习范式在下游任务仍然需要很多带标注的数据,如图 2 所示

之后,受启发与自然语言处理的语言语义广泛性,研究者提出了新的学习范式:vision-language model pretraining and zero-shot prediction

在该范式下,使用超大规模的 image-text pairs 对 vision-language model(VLM)进行预训练,甚至可以不用微调直接用于下游任务,如图 2c。

VLM 模型可以使用 vision-language objective 来从超大规模的 image-text pairs 中学习 image 和 text 的对应关联。

例如 CLIP,就是使用 image-text 对比学习目标函数来将成对儿的 image-text 的编码距离拉近,将不成对儿的 image-text 编码距离推远。

这样的学习方式能够允许模型利用大量的来源于网络的数据,并且可以无需训练即可实现零样本迁移。

基于此, VLM 有两条研究方向:

  • 迁移学习
  • 知识蒸馏:如何将 VLM 的能力蒸馏到下游任务,如目标检测和语义分割

在这里插入图片描述

二、基础知识

在这里插入图片描述

2.1 视觉任务的训练策略

1、传统的机器视觉:

主要靠手工提取特征来作为图像特征,如 SIFT 等,无法适应复杂的任务

2、从头训练的深度学习和预测

设计深度的神经网络结构来进行图像特征的提取,如 ResNet 使用残差连接实现了很好的特征提取,在 1000-class ImageNet 分类任务上获得了优于人类的结果

3、有监督预训练,微调和预测

有监督的预训练如图 2a 所示,使用大量的数据训练了模型, 然后使用微调的方法迁移到其他数据集上去,能够加速模型的收敛并且帮助获得更好的效果

4、无监督预训练、微调和预测

有监督的训练需要大量的监督数据,会带来一些困难,所以有方法使用了无监督训练,让模型从无标签的数据中学习有用的信息,如图 2b 所示。可以使用 image inpainting 来学习上下文信息,使用 masked image modeling 来建模 patch 间的关系。使用对比学习来学习更丰富的特征。由于其在预训练阶段不需要大量的带标签数据,所以能使用更多的数据来学习到更多更有用的特征。

5、VLM pre-training 和 zero-shot prediction

和 pre-training、fine-tuning 相比,这种方式更能利用超大规模的网络数据

2.2 VLM 基础

给定 image-text pairs,首先使用 text encoder 和 image encoder 来抽取 image 和 text 特征,然后学习 vision-language 之间的关系,通过大量的 image-text 关系的学习,VLM 模型已经见过非常多的数据,就可以在未见过的数据上使用 image 和 text 的匹配来进行 zero-shot 的任务

2.2.1 网络结构

VLM 预训练模型是从 N 个 image-text pairs 中学习图像和文本的特征

VLM 一般由两部分组成:

  • image encoder:对图像进行编码
  • text encoder:对文本进行编码

1、学习图像编码特征

一般有两种网络结构:

  • CNN-based:ResNet 等

    在这里插入图片描述

  • Transformer-based:ViT 等(如图 5 所示)

    在这里插入图片描述

2、学习文本编码特征

一般 Transformer 都是 encoder-decoder 结构,如图 6,encoder 有 6 个 blocks,decoder 也有 6 个 blocks

在这里插入图片描述

2.2.2 预训练目标函数

1、对比学习目标函数

① Image contrastive learning :

主要通过学习具有区分能力的 image features 来让 query image 和其 positive keys 拉近距离

给定一个 batch B B B 的数据,对比学习目标函数形式一般如下:

在这里插入图片描述

  • z i I z_i^I ziI:query embedding,即图像的编码特征也就是查询的特征编码
  • { z j I } j = 1 , j ! = i B + 1 \{z_j^I\}_{j=1, j!=i}^{B+1} {zjI}j=1,j!=iB+1:key embedding,文本编码特征,
  • z + I z_+^I z+I z i I z_i^I ziI 的 positive key,每个 query embedding 只会有一个与之匹配的正样本,其他的都是负样本
  • τ \tau τ:温度超参,越大则分布越平缓,会缩小不同样本的差距,越小则分布越尖锐,会增大输出的差距。
  • 当 query 和唯一配对儿的正样本特征更相似,且和其他负样本都不相似的时候,loss 的值会比较低,反之 loss 会高

② Image-Text Contrastive Learning:

主要为了推近成对儿的 image 和 text 的距离,推远不成对儿的 image 和 text 距离,学习更好的 image-text 表达。

一般都是通过最小化对称的 image-text infoNCE loss 来实现,该 loss 能够通过 image 和 text 编码特征的内积来衡量 image 和 text 的相似程度,如图 7 所示:

L i n f o N C E I T = L I → T + L T → I L_{infoNCE}^{IT} = L_{I\to T} + L_{T\to I} LinfoNCEIT=LIT+LTI

  • L I → T L_{I\to T} LIT:是 query image 和 text key 的对比
  • L T → I L_{T\to I} LTI:是 query text 和 image key 的对比

假设给定一个 batch B B B image-text pairs:

在这里插入图片描述

  • z I z^I zI :image embedding
  • z T z^T zT:text embedding

在这里插入图片描述

③ Image-Text-Label Contrastive Learning

Image-Text-Label Contrastive Learning 引入有监督的对比学习到 image-text 对比学习中

定义如下:

在这里插入图片描述
在这里插入图片描述

  • y 是 ( z I , z T ) (z^I, z^T) (zI,zT) 的类别标签

  • image-text-label infoNCE loss: 在这里插入图片描述
    即会将 image、text、classification label 编码到一个相同的特征空间,如图 8 所示,能够同时使用有监督的基于 image label 的预训练和无监督的基于 image-text pairs 的 VLM 预训练

在这里插入图片描述

2、生成式目标函数

① Masked Image Modelling

② Masked Language Modelling

③ Masked Cross-Modal Modelling

3、对齐目标函数

对齐目标函数是通过 global image-text matching 或 local region-word matching 来对齐 image-text pair

① Image-text matching

实现全局的 image 和 text 的关联学习,可以使用 score function S ( . ) S(.) S(.) 来衡量 image 和 text 之间的 alignment probability

二分类 loss 如下:

在这里插入图片描述

  • p=1:image 和 text 是一对儿
  • p=0:image 和 text 不是一对儿

加上给定一个 batch 的 image-text pairs,FLAVA[83] 通过分类器(binary classification loss)来实现对 image 和 text 的匹配

② Region-word matching

对 local cross-modal 关联建模(对 image region 和 word 建模),主要针对密集预测,如目标检测, loss 如下:

在这里插入图片描述

  • ( r I , w T ) (r^I, w^T) (rI,wT) 是 region-word pair
  • p=1 表示 region 和 word 是一对
  • p=0 表示 region 和 word 不是一对
  • S r ( . ) S^r(.) Sr(.) 表示 image region 和 word 之间的相似程度

例如 GLIP、FIBER、DetCLIP,使用 region-word alignment score 代替了 object classification logits,regional visual features 和 token-wise 特征的关联如图 12 所示。
在这里插入图片描述

2.2.3 评估和下游任务

1、zero-shot prediction

① 图像分类:是为了将图像分类到预定义的类别中。

VLM 通过对比 image 和 text 的编码特征来实现 zero-shot 图像分类,prompt 一般使用 “a photo of a [label]”

在这里插入图片描述

② 语义分割

VLM 模型通过对比 image pixels 和 text 的编码特征来实现 zero-shot 预测

在这里插入图片描述

③ 目标检测

VLM 模型通过对比 object proposal 和 text 的 embedding 来实现目标检测

在这里插入图片描述

④ image-text 检索

2、Linear Probing

Linear Probing 也被用于 VLM 模型的评估,就是冻结预训练的 VLM,然后训练一个 linear classifier 来对 VLM-encoded embedding 进行分类,评估 VLM 的表达特征。

2.3 数据集

1、Image-text dataset

在这里插入图片描述

在这里插入图片描述

2、辅助数据集

在这里插入图片描述

三、迁移学习

  • 有监督迁移学习
  • 少样本监督迁移学习
  • 无监督迁移学习

3.1 使用 prompt tuning 实现迁移学习

受启发于 NLP,VLM 也使用了 prompt learning 方法来实现对下游任务的适配

在这里插入图片描述

1、使用 text prompt tuning 进行迁移学习

CoOp[38] 使用 learnable word vectors 来为每个类别学习,将类别标签 [label] 扩展到了句子,‘[V]1, [V]2, …, [V]m, [label]’,其中 [V] 表示 learnable word vectors(通过最小化分类 loss 来优化),如图 13 所示。

在这里插入图片描述

2、使用 visual prompt tuning 来进行迁移学习

比如 VP[168] 使用可学习的图像干扰 v 来修正输入图像 x I x^I xI,变为 x I + v x^I+v xI+v,通过调整 v 来最小化 loss

visual prompt tuning 能够将 pixel-level 带入下游任务,有利于密集预测任务

在这里插入图片描述

3、使用 Text-Visual prompt tuning 来进行迁移学习

如 UDP 同时优化 text 和 image prompt

3.2 通过特征适应来进行迁移学习

四、VLM 的知识蒸馏

VLM 的只是蒸馏是将 VLM 的通用的、鲁棒的知识蒸馏到 task-specific 模型上

4.1 目标检测的知识蒸馏

开集目标检测是为了检测出任意文本描述的东西

一些 VLM 如 CLIP 是在超大尺度的 image-text pair 上训练的,能够覆盖很多的类别词汇

  • 如 ViLD 将 VLM 的知识蒸馏到了一个两阶段检测器上
  • HierKD 提出了层级 global-local 知识整理
  • RKD 提出了 region-based 知识整理,能够对齐 region-level 和 image-level 的编码特征

在这里插入图片描述

4.2 语义分割的知识蒸馏

在这里插入图片描述

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

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

相关文章

用雪花 id 和 uuid 做 MySQL 主键,被领导怼了

在MySQL中设计表的时候,MySQL官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇…

打造专属封面!这两款神器必备

无论你是图文博主还是视频博主,做封面都是必不可少的。谈及可制作封面的工具,种类是极其繁多的,比如黄油相机、美图秀秀、美易等。虽然这些工具各有千秋,但我不建议使用,因为它们的某个功能可能做得不错,但…

【MySQL数据库 | 第十九篇】SQL性能分析工具

目录 前言: SQL执行频率: 慢查询日志: profile: profile各个指令: 总结: 前言: 本篇我们将为大家讲解SQL性能的分析工具,而只有熟练的掌握了性能分析的工具,才可以更…

JVM知识点整理

JVM 回收哪个区域?关联面试题:fullgc会回收方法区(元空间)吗? 怎么判断对象可以被回收了关联面试题:哪些对象可以作为 GC Root (两栈两方法) JVM GC什么时候执行?分代回收机制思考&…

pandas---文件读取与存储(csv、hdf、json、excel、sql)

数据大部分存在于文件当中,所以pandas会支持复杂的IO操作,pandas的API支持众多的文件格 式,如CSV、SQL、EXCEL、JSON、 HDF5。 1. csv文件 pandas.read_csv(filepath_or_buffer, sep ,, usecols ) filepath_or_buffer:文件路径 sep :…

简要介绍 | 强化学习:从原理到应用

注1:本文系“简要介绍”系列之一,仅从概念上对强化学习进行非常简要的介绍,不适合用于深入和详细的了解。 注2:"简要介绍"系列的所有创作均使用了AIGC工具辅助 强化学习:从原理到应用 1. 背景介绍 强化学习…

手撕学生管理系统超详解——【c++】

题目要求:设计一个学生成绩管理程序,实现按班级完成对学生成绩信息的录入和修改,并用文件保存。 实现按班级输出学生的成绩单;实现按学号和姓名进行查询,按平均成绩进行排序功能。 问题描述 该程序的目标是提供一个简单且易于使用…

scratch lenet(2): C语言实现图像直方图的计算

scratch lenet(2): C语言实现图像直方图的计算 1. 目的 用 C 语言实现 uint8 类型图像(单通道)的直方图计算。不涉及直方图均衡化。 2. 什么是图像直方图 2.1 统计得到图像直方图 通常是对于单通道的灰度图而言的。像素范围是 [0, 255], 统计每个像…

提高错误日志处理效率!使用Python和钉钉机器人实现自动告警聚合

1、背景 日志是非常重要的信息资源。它们记录了应用程序的运行状态、错误和异常情况,帮助我们了解系统的健康状况以及发现潜在的问题。为了高效地管理和分析日志数据,许多组织采用了Elasticsearch、Logstash和Kibana(ELK)堆栈作为…

Eclipse Krazo(Jakarta MVC)的使用

文章目录 背景Jakarta MVC规范Eclipse Krazo使用前的思考全局配置Controller示例返回View的三种写法View中用到的Model如何设值?View中如何获取Model中的值? 参数校验防止CSRFKrazo是如何实现的呢?如何生成csrf的token?如何校验cs…

开源赋能,决胜未来 — 参加原子全球开源峰会有感

目录 文章目录 目录前言开源决胜未来:闭源摧毁 UNIX,开源成就 Linux开源创新:软硬件协同,共建开源生态 前言 开源原子基金会作为国内首家开源基金会组织,由其主办的首届 “开放原子全球开源峰会” 也是第一次被冠以 “…

干货文:Mac 中 .bash_profile 和 .zshrc 的区别

如果你想在 Mac OS 中配置 MySQL 的环境变量,在 .zshrc 文件中添加如下内容: # 设置 mysql 的路径 export MYSQL_HOME/usr/local/mysql/bin# 将 MYSQL_HOME 添加到 PATH 中 export PATH$HOME/bin:/usr/local/bin:$MYSQL_HOME:$PATH# 解决需要 source 才…

硬件【9】详解二极管钳位电路

文章目录 1 概述1.1 正向钳位电路1.2 偏置正向钳位电路 1 概述 在之前的 二极管限幅电路 一文中,我们学习了二极管限幅电路,该电路可以削掉一部分信号,但不会影响剩余信号。今天,我们将学习另一种基于二极管的电路,该…

搭建环境【2】windows主机和ubuntu互传文件的4种方法

我的ubuntu系统是安装在 VMware 虚拟机中的,两者之间经常要互传文件,下面介绍4种常用的互传文件方法。 1. 共享文件夹方式互传 在虚拟机中需要开启共享文件夹的功能。首先虚拟机中的ubuntu要求是已经开机了的状态,然后进行设置:…

Vue2封装一个全局通知组件并发布到NPM

✍🏼作者:周棋洛,计算机学生 ♉星座:金牛座 🏠主页:点击查看更多 🌐关键:vue2 组件封装 npm发包 文章目录 1. 前言 🍃2. 我为什么要封装通知插件 ❓3. 初始化vue空项目 &…

B047-cms02-高级查询 删除 添加 修改

目录 高级查询页面准备下拉框显示文章类型ArticleController用jstl和el表达式取值展示 高级查询参数ArticleQuery 高级查询页面发送请求导入jquery.jdirk.js在jquery下引用绑定按钮发送请求高级查询sql 绑定删除事件绑定事件拿到标签id值准备模态框来自xmind弹出删除模态框绑定…

matlab不显示子图刻度并调整子图间距

matlab中在使用subplot函数画图时,尤其是做emd分解查看IMF时, 正常画图的代码及结果如下: figure for i 1:size(imf_norm,1)subplot(7,1,i)plot(imf_norm(i,:))ylabel(IMFstring(i)) end其中imf_norm为分解得到的imfs 效果图: …

python里apply用法_Python apply函数的用法

Python编程语言Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的…

HDL抽象等级 仿真模型 网表 delay speicfy与sdf

1.HDL 硬件描述语言 抽象分级 HDL这里主要说verilog 在描述硬件电路时分为三个抽象级别 行为级模型:主要用于test bench,着重系统行为和算法,不在于电路实现,不可综合(常用描述有initial,fork/join&#…

【MYSQL】MYSQL应用环境,系统特征,储存引擎,应用框架和索引功能的详细讲解

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…