多模态预训练 + 自监督学习 + 下游任务介绍

news2024/11/17 9:57:40

预训练

1)特征提取要解决的问题是怎么分别量化文字和图像,进而送到模型学习?

特征抽取:

文本:倾向于bert等大模型

图像:神经网络,VIT等


2)特征融合要解决的问题是怎么让文字和图像的表征交互?

最简单的:相加/拼接,然而也可设计更巧妙的结构啦


3)预训练任务就是怎么去设计一些预训练任务(PreTask)来辅助模型学习到图文的对齐信息?

跨模态的特征融合等

预训练主流方法

特征提取: 文本端的表征标配就是bert的tokenizer,更早的可能有LSTM; 图像的话就是使用一些传统经典的卷积网络,按提取的形式主要有三种Rol、Pixel、Patch三种形式。

特征融合:目前的主流的做法不外乎两种即双流two-stream或者单流single-stream; 前者基本上就是双塔网络,然后在模型最后的时候设计一些layer进行交互,所以双流结构的交互发生的时间更晚。后者就是一个网络比如transformer,其从一开始就进入一个网络进行交互,所以单流结构的交互时间发生的更早且全程发生,更灵活。


预训练PreTask: 这里就是最有意思的地方,也是大部分多模态paper的idea体现。这里就先总结一些常见的标配任务,一些特色的任务后面paper 单独介绍

Masked Language Modeling ( MLM )
Masked Region Modeling(MRM)
Image Text Maching (ITM)

自监督学习

意义

经过海量无标签数据的学习后可以习得一个强大的特征提取器,在面对新的任务,尤其是医疗影像等小样本任务时,也能提取到较好的特征。

常见用途

相对位置预测:预测一张图像中随机选择的两个图像块之间的相对位置

图像修复:预测一张图像中被遮挡的部分拼图游戏:将图像中打乱的9个图像块复原

旋转角度预测:预测图像中物体的旋转角度

图像着色: Lab图像中利用L亮度通道,预测ab色彩通道

跨通道预测: L通道和ab通道相互预测
计数:预测鼻子、眼睛、爪子、头的数量

实例区分:分类,一张图像和其增强的图像为一类,和其他图像为不同类

对比预测编码: 根据“过去的”信息,预测“未来的”信息

基于对比学习的视觉自监督算法

概念

对比学习的概念很早就有了,它是无监督学习的一种方法。没有监督信息,又不需要重构数据,那如何学习呢? -- 数据增强+互信息

其核心是通过计算样本表示间的距离,拉近正样本,拉远负样本。也就是说,当我们能够区分该样本的正负例时,得到的表示就够用了

 公式

1. 采样N个图片,用不同的数据增强方法为每个图片生成两个view

2. 分别将他们输入网络,获得编码表示y和y'
3. 对上下两批表示两两计算cosine,得到NxN的矩阵,每一行的对角线位置代表y和y’ 的相似度, 其余代表y和N-1个负例的相似度。对每一行做softmax分类,采用交叉熵损失作为loss,就得到对比学习的损失了

其中 t \ tau t 是可调节的系数,点乘后的结果的量级不适合 softmax运算,通过一个 t \tau t 系数控制

 实现方式

end-to-end 

使用当前batch中的样本作为dictionary

缺点:受限于GPU,batch不可能太大dictionary也就大不了 

memory bank 存储队列

设立memory bank,把之前编码好的样本存储起来

 

存储好的编码都是之前的编码器计算的,而 左侧编码器一直在更新.会有两侧不一致的情况,影响目标优化

MoCo

Moco解决了上述方法的劣势

 

损失函数

假设其中有一个 positive样本 k+ ,其余均是 negative 样本,则根据 nfoNCE 的损失,损失表示为:

其中 q 和 k+ 可以有多种构造方式。本文用了一种较为简单的方式:

  (1) 一种图片进行 random resize;

(2)进行两次224*224的随机Crop得到两个图像分别作为 q 和 k+ ;

(3)进行增强操作,包括 random color jttering, random horizontal fliprandom grayscale conversion 等

用途

因为对比学习是看是否相似,所以可以用于检索,图搜图

基于mask的视觉自监督算法

随着 Vision Transformer (ViT) 在 2021 年霸榜各大数据集,如何基于 ViT 构建更加合适的自监督学习范式成为了该领域的一大问题。最初,DINO 和 MoCo v3 尝试将对比学习和 ViT相结合,取得了不错的效果。不过长期以来,由于 CV 和 NLP 领域数据和基础模型之间的差异NLP 的 Masked Language Modeling (MLM) 码模式机制没能成功应用于 CV 领域,但最近 ViT的逢勃发展,为掩码学习机制应用于视觉自监督打开了一扇大门。

实现方式

BEIT

受BERT的启发,作者提出了一个预训练任务,即 masked image modeling (MIM)MIM对每个图像使用两个视图,即图像patch和视觉token。作者将图像分割成一个网格的patches,这些patch是主于Transformer的输入表示。此外,作者将图像“tokenize”为离散视觉token,这是通过离散VAE的潜在代码获得的。在预训练期间作者随机mask部分图像patch,并将损坏的输入到Transformer。该模型学习恢复原始图像的视觉token,而不是mask patch的原始像素。

 图像有两个表示视图,即图像patch 和视觉token 。这两种类型分别作为预训练的输入和输出表示。

Visual Token

目的:得到监督信号

通过离散变分自编码器 (DVAE)学习image tokenizer。在视觉token学习过程中,有两个模块,即tokenizer 和解码器 。tokenizer据视觉码本(即词汇表)将图像像素x映射为离散的tokens z。解码器学习基于token z重建输入图像x。重建目标可以写成。由于潜在的视觉token是离散的,模型训练是不可微的。因此,作者采用Gumbel-softmax用来训练模型。此外,在dVAE训练过程中,在tokenizer上加入一个统一的先验。
作者将每个图像标记为14X14的视觉token grid。词汇表大小设置为8192。

Image Patch

2D图像被分割成一系列patch,以便标准Transformer可以直接接受图像数据。形式上,作者reshape图片H*W*C为个(H*W)/(P*P)个patch,其中C是通道数,(H,W) 是输入图像分辨率, (P,P) 是每个patch的分辨率。图像patch被展平成向量并线性投影,这类似于BERT中的单词嵌入。图像块保留原始像素,并在BEIT中用作输入特征。
在本文的实验中,作者将每幅224X 224的图像分割成一个14X14的图像网格,其中每个图像网格的大小为16X16。

下游任务

跨模态检索

任务: 给定文本或者图像任一模态的query,在其他模态的gallery中检索最相似的匹配结果

应用:电商商品检索 (以文搜图)

实现

Matching Function Learning,对应单塔结构中的ITM。

Representation Learning,对应双塔中的对比学习+余弦相似度

左侧跨模态相似性度量方法的主要思路是将图文特征进行融合,再经过隐层,目标是让隐层学习出可以度量跨模态相似度的函数。
右侧为公共空间特征学习方法,一般称为双塔结构是将图像和文本隐射到一个公共空间中得到分别得到多模态表示即最后一层的表示,从而可以直接使用cosine计算相似度,图像和文本相互独立没有交互,希冀于学习到一个优秀的表示就可以进行相似度度量。

研究热点和思路

其实主要做项目,研究做的少

1.针对某个特定领域提出一个新的跨模态检索数据集,如电商领域,遥感领域等,提供benchmark;
2. 跨模态信息对齐,如何引入合适的监督信号;
3. 跨模态信息如何更好的交互,如何把单塔和双塔结合 :
4. 跨模态检索难样本挖掘:

zeroshot分类

将类别标签通过一种prompt处理转换成一个text描述,然后计算图片与每个类别标签映射成的text之间的相似度,取相似度最高的作为分类标签

应用:类别属于开集(openset) 的分类任务

实现

将类别标签通过一种prompt处理转换成一个text描述

然后计算图片与每个类别标签映射成的text之间的相似度,取相似度最高的作为分类标签
dog  -> A photo of a dog

**提词器的设计也需要花费大量时间来调整,因为微小的措辞变化可能会对性能产生巨大影响(例如下图a,在“a photo of [CLASS]”中的[CLASS]前加个“a”直接涨了将近6个点?! !)

 如何设计合适的prompt;
https://arxiv.org/abs/2109.01134

Image Captaining

任务: Encoder: 图片输入到Encoder中,得到视觉Features,Encoder可以采用CNN或Transformer; 视觉特征经过Decoder,解码成一个words序列,Decoder可以采用LSTM或者Transformer

Encoder: 图片输入到Encoder中,得到视觉Features,Encoder可以采用CNN或Transformer。
Decoder:视觉特征经过Decoder,解码成一个words序列,Decoder可以采用LSTM或者Transformer。

实现

 我们将所有输入作为序列传递给LSTM,序列如下所示:

1.首先从图像中提取特征向量

2.然后是一个单词,下一个单词等。

1)经过CNN进行卷积提取图片特征信息最终形成图片的特征图信息
2)attention对提取的特征图进行加强与抑制作为后续进入LSTM模型的输入数据,不同时刻的attention数据会受到上一时刻LSTM模型输出数据而有所调整
3)LSTM模型最终输出文本信息

 **encoder阶段,文中使用的是CNN(卷积神经网络),用于提取特征图向量

 为了得到特征向量与图片具体位置的对应,作者从浅层的卷积核中提取了特征而非全连接层,通过输入a aa的子集,这使得decoder能够选择性地专注于图片的某个部分

Decoder阶段:使用LSTM作为decoder,每一步生成一个词

缺点:

效率低

对于长时间的建模能力比较弱

研究热点和思路

1) 针对某个特定领域提出一个新的ImageCaptioning数据集,如电商领域(商品描述自动生成),遥感领域等,提供benchmark;
2) 设计更鲁棒的模型结构,主要是基于Transformer;
3) 语义对齐;

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

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

相关文章

基于Java+SpringBoot+vue前后端分离社区医院信息平台设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

Hadoop_HDFS_常见的文件组织格式与压缩格式

参考资料 1. HDFS中的常用压缩算法及区别_大数据_王知无_InfoQ写作社区 2. 本文主要介绍下HDFS上的常见文件格式和压缩格式 总结 : HDFS 中常见的文件存储格式 textfile :行式存储格式sequencefile :行式存储格式orc :列式存储格式, 支…

Deployment 升级应用2

上次我们说到自己手动的做使用 RS 的方式来升级 pod ,感觉还是蛮复杂的,并且容易弄错,实际生产过程中,肯定不会这样来弄,很危险 那么今天我们来分享 Deployment 的方式来显示的升级应用吧 Deployment 的方式升级应用…

3dmax崩溃后如何恢复文件?

当意外或突然关闭 3ds Max 场景时,有时会出现恢复 3ds Max 场景的问题。在处理任何项目的过程中,有时需要恢复 3ds Max 场景,为此在专用文件夹中创建备份副本。如果您使用的是 Windows 操作系统并且未更改项目位置或不知道项目位置&#xff0…

如何通过nginx代理实现外网访问内网mysql或oracle数据库

项目开发部署中经常会遇到MySQL或Oracle数据库安装在内网,而我们的应用服务只能部署在外网,如果实现外网服务访问连接内网的数据库呢?本次介绍如何通过Nginx配置实现外网访问内网数据库。 1、前置机服务器 首先要保证有一台前置机服务器既可…

为Android构建现代应用——主体结构

创建Screents和ViewModels 在前面的章节中,我们已经分析了OrderNow项目的理论概念和我们将赋予的组织。 在本章中,我们将开始实现初始结构和模板,这将联接每一个应用程序的部分。 首先将添加以下带有各自视图模型的主屏幕: •…

到底什么是前后端分离

目录 Web 应用的开发主要有两种模式: 前后端不分离 前后端分离 总结 Web 应用的开发主要有两种模式: 前后端不分离 前后端分离 理解它们的区别有助于我们进行对应产品的测试工作。 前后端不分离 在早期,Web 应用开发主要采用前后端不…

“云上新气象”,VDI+IDV混合部署,麒麟信安云正式上线某市气象局!

阴晴冷暖,风云变幻,气象与人们的生活密切相关,气象局信息系统的智慧高效运营对于提升灾害防御能力、城市气象观测等方面具有重要作用,随着气象业务范围的不断扩展,气象局的信息化建设与数字化转型也亟需提上日程。 走…

【Solr】Solr搜索引擎使用

文章目录 一、什么是Solr?二 、数据库本身就支持搜索啊,干嘛还要搞个什么solr?三、如果我们想要使用solr那么首先我们得安装它 一、什么是Solr? 其实我们大多数人都使用过Solr,也许你不会相信我说的这句话,但是事实却是如此啊 ! 每当你想买自己喜欢的东东时,你可能会打开某…

Python入门准备

安装并配置Python 1、想要更新终端里Python的版本: 在python.org官网上下载最新版,下载安装以后,在终端输入python3进行询问。 2、完成Python环境的安装(Linux:操作系统,基于Cent0S7) 在Linux系统上安装Python需要…

中小学分班查询系统如何制作?这个方法3分钟轻松搞定

暑假一过完,新学年即将开始,学校面临着一个重要的任务:学生分班。无论是新生入学还是低年级升高年级,都需要进行分班工作。这对负责分班的老师们来说,增加了相当大的工作量和挑战。 在开学前,如何快速搞定…

Pure Admin 图标篇

1. 官方图标讲解地址 B站搜索:vue-pre-admin之图标篇,作者“乐于分享的程序员小铭” 2. 实操 1. iconify官网 Icon Sets • Iconify 2. 在build->optimize.ts 中,配置所用的Iconify icon包 如: "iconify-icons/ep&quo…

LNK 2001 问题的一种解决办法

问题: 可能有这样的报错,error LNK 2001: 无法解析的外部符号" protected: virtual void __thiscall testing::Test::SetUp(void)"。 解决办法: 换了各编译器就好了,从第二个换到了第一个。 猜测:这里是因…

开江县“五社联动 关爱一老一小“主题活动之银龄爱齿健康关爱计划

为进一步宣传和推动“五社联动”关爱“一老一小”的社工服务理念,近日,开江县网格员社会工作服务中心携手彭州市葡萄树社会工作服务中心链接爱心单位(夜郎古酒)捐赠的1440支牙膏(合和泰品牌牙膏)&#xff0…

Electron从构建到打包程exe应用

Electron从构建到打包程exe应用 Electron文档搭建网页装载到 BrowserWindow中定义全局对象进程之间通信打包应用程序对代码进行签名 Electron文档 搭建 创建一个文件夹,在根目录执行以下几个命令 1.npm init 2.npm install electron --save-dev 3.根目录新增main…

route_group时调整routing rule via array大小

使用route_group secondary pg pin时需要multi via/double via,可以使用如下办法。 用create_routing_rule -vias {{via_def_name array_size NR/R} {xx xx xx}} R和NR就是能不能旋转 set_routing_rule net_name -rule rule_name -max_routing_layers MEx -max_la…

RHCSA(一)

1、在VMware上创建虚拟机以及安装Linux操作系统,使用ssh进行远程连接 1.创建虚拟机 2.安装Linux系统 3.使用Xshell进行远程ssh连接终端 进入了Linux系统,打开终端输入ifconfig回车得到了虚拟网卡的IP地址为192.168. 163.128 打开Xshell远程连接软件…

Longhorn vs Rook vs OpenEBS vs Portworx vs IOMesh:细说 5 款 K8s 持久化存储产品优劣势

云原生时代下,越来越多的企业开始使用 Kubernetes(K8s)承载数据库、消息中间件等“生产级”有状态工作负载。由于这些应用对数据持久保存、性能、容量扩展和快速交付具有较高的要求,企业往往需要采用专为 Kubernetes 环境设计的持…

入侵检测——IDS概述、签名技术

1. 什么是IDS? IDS(intrusion detection system)入侵检测系统,是一种对网络传输进行即时监视,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备。它会对系统的运行状态进行监视,发现各种攻击企…

力扣959. 由斜杠划分区域

题目描述: 在由 1 x 1 方格组成的 n x n 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。 给定网格 grid 表示为一个字符串数组,返回 区域的数量 。 请注意,反斜杠字符是转义的&…