多模态CLIP和BLIP

一、CLIP

全称为Contrastive Language-Image Pre-Training用于做图-文匹配,部署在预训练阶段,最终理解为图像分类器。

1.背景

以前进行分类模型时,存在类别固定和训练时要进行标注。因此面对这两个问题提出CLIP,通过这个预训练模型实现zero-shot,并且判断类别不是固定的,即增加类别也不用重新训练模型。CLIP在完全不使用ImageNet中的数据训练前提下,直接zero-shot得到的结果与resnet在Imagenet数据训练后效果一样,同时CLIP的数据是从网络上爬取的4亿文本对。

2.网络模型

通过上图左边我们得知在预训练时有两个模型,一个是Bert模型做文字方面的Text Encoder,一个是ViT模型做图像方面Image Encoder。

本文对(图片信息和文字描述对应的)是从网络上爬取的有4亿对数据,但是因为都是从网络上爬取的,所以可能会有错(也就是说带有噪声,存在的问题)。从4亿对数据中,我们批次拿取batchsize为3万对的数据来进行encoder变成768维的向量。经过大量的正向传播和反向传播之后那么中间的值会越来越对齐。

过程==》假设有5张图片和5段文本,一张图片和一段文本是对应的。然后经过对应的Text Encoder和Image Encoder,分别生成五个图片编码和文字编码,然后图片编码和文字两两相互之间计算相似度,选相似度最高作为一对正样本,否则就是负样本,所以正样本个数为N,负样本为N(N-1)。这里是对比学习的思想,也就是Text Encoder和Image Encoder是在不断迭代的。

上图右边进行测试,给出图片然后给出类别种类,得出图片的编码,文字类别时加入提示词组成一个完整的话语然后再经过编码器得到文字编码,然后让图片编码和文字编码计算相似度,相似度最高的那么这个图片描述的信息就是文字信息,类别也就是文字类别。

CLIP的核心思想就是通过海量的弱监督文本对通过对比学习,将图片和文本通过各自的预训练模型获得的编码向量在向量空间上对齐。

3.结果

只能和resnet50网络进行比较,但是resnet50网络不是最强的,同时收集数据的时候很多文本对存在噪声。不过经过对比学习,Image Encoder模型和Text Encoder模型是越来越强,用于下游任务中,能帮助其他模型快速得到准确率高的结果

二、BLIP

BLIP能完成图-文匹配,同时也能完成生成任务,即文字生成图片和图片生成文字。

1.背景

视觉语言预训练旨在利用图像文本数据来教会模型共同理解视觉和文本信息的能力,但是大多数现有的预训练模型不够灵活,无法适应广泛的视觉语言任务;并且大多数模型都会对从网络自动收集的图像和替代文本对进行预训练,然而网络自动收集数据存在大量噪声。而BLIP模型与三个视觉语言目标联合预训练:图像文本对比学习、图像文本匹配和图像条件语言建模,且提出字幕和过滤,一种新的数据集增强方法,用于从噪声图像-文本对中学习。

2.网络模型

1)网络模型

其中cross attention和causal self-att分别为

流程步骤:

①首先是对图片进行ViT分片的一样操作,然后传入给transformer的编码器,输出一个向量,这个向量代表了图片是所有特征(768维度)。右边的“三个模型”相同颜色的块共用同样的参数。

②第一个模型把文字做好向量化再加上cls(表示分类任务,特殊符号,ViT中的概念),然后进入双向自注意力(可以理解为和bert一样),然后进入Feed Forward(其实就是两个全连接层),最后得到一个文本向量(768维度),然后进行ITC(对比学习,是不是一对,一对概率高不是一对概率低,两个向量尽量对齐)。

③中间的模型是把从图片得到的向量和文本向量进行交叉注意力,然后再FFN,最后就是ITM(二分类任务)

④最后一个模型,对于文本是一个一个的输入,然后让其推理预测下一个字,Causal self-att(表示单项注意力机制),LM就是重新把文本预测出来。

2)噪声模型

为了解决网络收集到的大规模数据中存在图像文本不配对的这个问题,BLIP通过引入两个模块来引导字幕:字幕生成器Captioner和过滤器Filter。字幕生成器是一个基于图像的文本解码器,给定网络图像,我们使用字幕生成器合成字幕作为额外的训练样本。过滤器是一个基于图像的文本编码器,它会删除与相应图像不匹配的嘈杂文本。

步骤流程:

①上图的左边D中的Iw和Tw分别表示图像和文本,红色的表示从网络爬取下来,可能会出现不匹配,Ih和Th绿色的表示人为进行处理的数据对它们匹配的。

②然后我们把这些数据放到刚才的模型中进行训练,我们就能得到几个训练完之后的模型(ITC、ITM和LM)。对于得到的模型我们大概能分为两种类型,其中ITC(图文匹配,对齐)和ITM(图文匹配,二分类)为一类,而LM(看图生成文字)为一类。

③训练好的模型再把人为处理匹配对的图文分别送到(ITC ITM)图文匹配和LM看图生成文字的模型中进行训练。

④对于(ITC ITM)图文匹配的模型我们把从网络上找的图文匹配对进行训练,如果该文本对是匹配的就往后传,如果不匹配就把这个文本对丢弃。

⑤对于LM看图生文字模型,我们把从网络爬取的图片进行训练(只要图片),训练之后得到文字,再把生成的文字再放到前面的(ITC ITM)图文匹配模型上进行训练,如果匹配成功就留下(也就是说模型生成的文字和图片是匹配的),不成功就丢弃。

经过以上的步骤就能找到干净的数据,得到的干净数据再重新送到预训练模型中作为数据再得到ITC、ITM和LM。

3.结果

这个网络框架得到的模型和数据能用于下游任务中,帮助其他模型快速得到准确率高的结果。

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

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

相关文章

B 站评论系统架构设计难点

更多大厂面试内容可见 -> http://11come.cn B 站评论系统架构设计难点 这里整理一下在哔哩哔哩技术公众号看到的 B 站评论系统的架构设计文章,自己在学习过程中,对其中感觉比较有帮助的点做一下整理,方便以后查阅,详细版可以点…

Portforge:一款功能强大的轻量级端口混淆工具

关于Portforge Portforge是一款功能强大的轻量级端口混淆工具,该工具使用Crystal语言开发,可以帮助广大研究人员防止网络映射,这样一来,他人就无法查看到你设备正在运行(或没有运行)的服务和程序了。简而言…

邂逅Linux--常见指令,万物为文件(一)

引子:在之前,我们经常听到Linux,那什么是Linux呢?Linux是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯本纳第克特托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布&#xff…

力扣每日一题-统计已测试设备-2024.5.10

力扣题目:统计已测试设备 题目链接: 2960.统计已测试设备 题目描述 代码思路 根据题目内容,第一感是根据题目模拟整个过程,在每一步中修改所有设备的电量百分比。但稍加思索,发现可以利用已测试设备的数量作为需要减少的设备电…

Spring底层入门(十)

1、内嵌tomcat boot框架是默认内嵌tomcat的,不需要手动安装和配置外部的 Servlet 容器。 简单的介绍一下tomcat服务器的构成: Catalina: Catalina 是 Tomcat 的核心组件,负责处理 HTTP 请求、响应以及管理 Servlet 生命周期。它包…

Vitis HLS 学习笔记--理解串流Stream(1)

目录 1. 介绍 2. 示例 2.1 代码解析 2.2 串流数据类型 2.3 综合报告 3. 总结 1. 介绍 在Vitis HLS中,hls::stream是一个用于在C/C中进行高级合成的关键数据结构。它类似于C标准库中的std::stream,但是专门设计用于硬件描述语言(如Veri…

基于springboot实现贸易行业crm系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现贸易行业crm系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于springboot的贸易行业crm系统的开发全过程。通过分析基于springboot的贸易行业crm系统管理的不足,创建…

【栈】Leetcode 字符串解码

题目讲解 394. 字符串解码 算法讲解 这道题有四种情况:1.遍历的时候遇到数字,我们计算并保存数字,将它加入到数字栈中;2.遍历的时候遇到[,我们就把字符保存,加入到字符栈中;3.当遇到]&#x…

如何远程控制另一部手机:远程控制使用方法

在现今高科技的社会中,远程控制手机的需求在某些情境下变得越来越重要。不论是为了协助远在他乡的家人解决问题,还是为了确保孩子的在线安全,了解如何实现这一功能都是有益的。本文将为您简要介绍几种远程控制手机的方法及其使用要点。 KKVi…

交直流充电桩检测有哪些实验项目

交直流充电桩检测是为了保证充电桩的正常运行和使用安全,对充电桩的各项性能进行检测的过程。 1. 充电功能检测:检测充电桩的充电功能是否正常,包括充电电流、电压、功率等参数的测量和调整,以及充电过程中的故障诊断和处理。 2.…

2024年4月24日华为春招实习试题【三题】-题目+题解+在线评测,2024.4.24,华为机试

2024年4月24日华为春招实习试题【三题】-题目题解在线评测,2024.4.24,华为机试 🏩题目一描述:输入格式输出格式样例1样例2样例3数据范围解题思路一:dfs解题思路二:直接二分查找哇!解题思路三&am…

实验室一块GPU都没有?这个云平台直接送4090免费无门槛代金券!

你有没有一些年代久远的老照片,或是网络下载的图片和视频,低分辨率、模糊还有噪点,如果能一键修复成高清就好了!现在在AI算法工程师圈子里很火的GpuMall智算云,上面的镜像可以一键帮你修复照片!比如我们用R…

【碳化硅】陷阱(traps)对SiC MOSFET阈值电压漂移的影响

这篇文章是关于硅碳化物(SiC)金属氧化物半导体场效应晶体管(MOSFET)的阈值电压漂移问题的研究。文章的主要目的是通过研究不同的陷阱(traps)对阈值电压漂移的影响,来解决SiC MOSFET的可靠性问题。 摘要(Abstract) 文章提出了一种研究方法,用于分析影响SiC MOSFET阈值…

LabVIEW学习记录4-局部变量、全局变量、共享变量

【LabVIEW】局部变量、全局变量、共享变量 一、变量定义二、内存分配三、竞争状态四、变量创建及简单使用示例4.1 局部变量4.1.1 局部变量的创建4.1.2 局部变量的编程实例 4.2 全局变量4.2.1 创建4.2.2 调用4.2.3 编程实例 4.3 共享变量 一、变量定义 LabVIEW(Labor…

【Web后端】servlet基本概念

1.ServletAPI架构 HttpServlet继承GenericServletGenericServlet实现了Servlet接口,ServletConfig接口,Serializable接口自定义Servlet继承HttpServlet 2.Servlet生命周期 第一步:容器加载Servlet第二步:调用Servlet的无参构造方法&#xf…

【生信技能树】数据挖掘全流程

R包的安装,每次做分析的时候先运行这段代码把R包都安装好了,这段代码不需要任何改动,每次分析直接运行。 options("repos""https://mirrors.ustc.edu.cn/CRAN/") if(!require("BiocManager")) install.packag…

TFS(淘宝分布式存储引擎

TFS(淘宝分布式存储引擎) 什么是TFS? ​ 根据淘宝2016年的数据分析,淘宝卖家已经达到900多万,有上十亿的商品。每一个商品有包括大量的图片和文字(平均:15k),粗略估计下,数据所占的…

IaC实战指南:DevOps的自动化基石

基础设施即代码(Infrastructure as Code,IaC)是指利用脚本、配置或编程语言创建和维护基础设施的一组实践和流程。通过IaC,我们可以轻松测试各个组件、实现所需的功能并在最小化停机时间的前提下进行扩展。更值得一提的是&#xf…

ETLCloud中如何执行Java Bean脚本

ETLCloud中如何执行Java Bean脚本 在ETLCloud这一强大的数据集成和转换平台中,执行Java Bean脚本的能力为其增添了更多的灵活性和扩展性。Java Bean脚本不仅仅是一段简单的代码,而是一种强大的工具,可以帮助用户定制和优化数据处理的每一个环…

按键配合LDO实现开关功能

今天给大家分享一个学到的按键开关电路,适合没有足够空间给自锁开关的场景,既可以用于USB供电控制也可以用于电池供电控制。话不多说上电路图先。 核心任务就是通过按键控制LDO芯片的使能管脚的电平状态,这枚NCP芯片高电平使能,VB…