多模态(三)--- BLIP原理与源码解读

1 BLIP简介

BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation

传统的Vision-Language Pre-training (VLP)任务大多是基于理解的任务或基于生成的任务,同时预训练数据多是从web获取的图像-文本对,存在很大的噪声。

因此作者提出了BLIP架构,引导语言图像预训练,以实现统一的视觉语言理解和生成。

2 BLIP的创新点

  1. BLIP 提出了一种编码器-解码器混合架构(MED):一种用于有效多任务预训练和灵活迁移学习的新模型架构。
    MED有三个子模块:①. 单模态编码器。②. 基于图像的文本编码器。 ③.基于图像的文本解码器。
    完成了三个视觉语言目标联合预训练任务:①.图像文本对比。②.图像文本匹配。 ③.图像条件语言建模。

  2. BLIP 提出了一种高效利用网络噪声数据的方法:字幕和过滤(CapFilt)
    即先使用噪声数据训练一遍 BLIP,再利用预训练的 Captioner 生成一系列的字幕,再把这些生成的字幕通过预训练的 Filter 过滤一遍,从原始网络文本和合成文本中删除嘈杂的字幕,得到干净的数据。最后再使用干净的数据训练一遍 BLIP。

3 BLIP的模型架构

在这里插入图片描述

3.1 图像编码器:提取图片特征

使用VIT作为图像编码器,把输入图像分成patch,将它们编码为一系列 Image Embedding,并使用额外的[CLS] token来表示全局图像特征。

3.2 文本编码器:提取文本特征

文本编码器与BERT相同,其中将 [CLS] token附加到文本输入的开头以概括句子。

3.3 基于图像的文本编码器

在文本编码器的双向自注意层 (Bi-Self-Attention) 和前馈网络 (FFN) 之间插入一个额外的交叉注意 (Cross-Attention) 层来注入视觉信息。将[Encode] token附加到文本输入的开头,用作图像-文本对的联合表征。

3.4 基于图像的文本解码器

将基于图像的文本编码器中的双向自注意力层 (Bi-Self-Attention) 替换为因果自注意力层(Causal-Self-Attention )。[Decode] token用于表示序列的开始,而[EOS] token用于表示序列的结束。

4 BLIP预训练目标损失函数

在预训练期间共同优化了三个目标,其中两个基于理解的目标(图文对比、图文匹配)和一个基于生成的目标。每个图像-文本对仅通过一次计算量较大的视觉Transformer的正向传递,同时通过三次文本转换器的正向传递。其中文本端仅cross-attention和Causal-Self-Attention 不共享外,其余参数均共享。

4.1 图文对比损失(Image-Text Contrastive Loss,ITC)

ITC 作用于视觉编码器文本编码器,目标是对齐视觉和文本的特征空间。使得正样本图文对的相似性更高,负样本图文对的相似性更低。

4.2 图文匹配损失 (Image-Text Matching Loss,ITM)

ITM 作用于视觉编码器视觉文本编码器,目标是学习图像文本的联合表征,以捕获视觉和语言之间的细粒度对齐。ITM 是一个二分类任务,使用一个分类头来预测图像文本对是正样本还是负样本。

4.3 语言模型损失 (Language Modeling Loss, LM)

LM 作用于视觉编码器视觉文本解码器,目标是根据给定的图像以自回归方式来生成关于文本的描述。与 VLP 中广泛使用的 MLM 损失 (完形填空) 相比,LM 使模型能够将视觉信息转换为连贯的字幕。

5 CapFilt

在这里插入图片描述

5.1 CapFilt的意义

高质量的人工注释图像-文本对 {(Ih, Th)} (例如,COCO) 因为成本高昂所以数量不多 。网络替代数据集 {(Iw, Tw)} 质量相对嘈杂,不会准确地描述图像的视觉内容。

作者提出了字幕和过滤(Captioning and Filtering,CapFilt),这是一种提高文本语料库质量的新方法。上图给出了CapFilt的图示。它引入了两个模块:一个用于生成给定web图像对应字幕的字幕器,以及一个用于去除噪声图像-文本对的过滤器。

5.2 字幕器 Captioner

它是一个视觉文本解码器,在 COCO 数据集上使用 LM 目标函数微调。给定网络图片 Iw,Captioner 生成字幕Ts

5.3 过滤器 Filter

它是一个视觉文本编码器,看文本是否与图像匹配,在 COCO 数据集上使用 ITC 和 ITM 目标函数微调。Filter 删除原始 Web 文本 Tw 和合成文本 Ts 中的嘈杂文本。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(7)特征工程的基本方法

今天来学习特征工程的基本方法。 基本方法包括:特征选择(Feature Selection)、特征提取(Feature Extraction)和特征构建(Feature Construction)。 一、特征选择(Feature Selection&a…

智慧图书管理系统架构设计与实现

随着数字化时代的到来,智慧图书管理系统在图书馆和机构中扮演着重要的角色。一个优秀的图书管理系统不仅需要满足基本的借阅管理需求,还需要具备高效的性能、良好的扩展性和稳定的安全性。本文将讨论智慧图书管理系统的架构设计与实现,以满足…

shell脚本之高级变量

目录 一、高级变量赋值 1、高级变量赋值总结表 2、相关操作 二、变量间接引用 1、eval命令 一、高级变量赋值 1、高级变量赋值总结表 变量配置方式str 无配置str 为空字符串str 已配置为非空字符串var${str-expr}varexprvarvar$strvar${str:-expr}varexprvarexprvar$str…

GPT-4对编程开发的支持

在编程开发领域,GPT-4凭借其强大的自然语言理解和代码生成能力,能够深刻理解开发者的意图,并基于这些需求提供精准的编程指导和解决方案。对于开发者来说,GPT-4能够在代码片段生成、算法思路设计、模块构建和原型实现等方面给予开…

H5 个人引导页带赞助版源码

H5 个人引导页带赞助版源码 源码介绍:一款带有4个选项的H5自适应引导页,右侧有QQ和微信联系按钮。带有三个赞助按钮。 下载地址: https://www.changyouzuhao.cn/9883.html

印度基金低风险套利回顾

2024年1月19日当天,印度基金(164824)开放申购,限额申购100元,当天溢价率13%左右,这个溢价率已经非常可观了,当然要祭出一拖七大法搞它一把! 一拖七套利原理简介 详细的原理和方法可自行在雪球搜索&#…

yolov8源码解读Detect层

yolov8源码解读Detect层 Detect层解读网络各层解读及detect层后的处理 关于网络的backbone,head,以及detect层后处理,可以参考文章结尾博主的文章。 Detect层解读 先贴一下全部代码,下面一一解读。 class Detect(nn.Module):"""YOLOv8 …

每日五道java面试题之java基础篇(十一)

目录: 第一题. Java死锁如何避免?第二题. 为什么⽤线程池?解释下线程池参数?第三题. 线程池的底层⼯作原理第四题. ReentrantLock中tryLock()和lock()⽅法的区别第五题. Sychronized和ReentrantLock的区别? 第一题. Java死锁如何避免&#x…

Open CASCADE学习|曲线的切线

今天要实现的功能是在曲线的终点处沿切线方向延长该曲线。为了解决这个问题,需要求解该曲线在终点处的坐标值以及切矢量。问题转化为:已知曲线TopoDS_Edge aE,求其在终点处的坐标值及切线方向向量。 首先,将TopoDS_Edge对象转化为…

数组转二叉树的一种方法-java(很特殊)

上代码 Node节点的代码 public class ThreadNode {private int data;private ThreadNode left;private boolean leftTag; // 左子节点是否为线索private ThreadNode right;private boolean rightTag; // 右子节点是否为线索// ... 省略get和set方法// ... 省略构造方法// ... …

C语言系列(所需基础:大学C语言及格)-1-编译器/简单的求和代码/数据类型/变量的分类/变量的作用域和生命周期

文章目录 一、编译器(使用在线编译器)二、简单的求和代码三、数据类型四、变量的分类五、变量的作用域和生命周期 一、编译器(使用在线编译器) 为了方便,我使用的是在线的C语言编译器进行程序的运行。 链接&#xff1…

turn服务器debug

turn服务器正常能连通的调用堆栈 turn_port.cc AddRequestAuthInfo check 崩溃 有问题的turn msg type是259 request type 是3 用不了的turn 服务器turnmessage type 275

代码随想录 Leetcode763. 划分字母区间

题目&#xff1a; 代码(首刷看解析 2024年2月18日&#xff09;&#xff1a; class Solution { public:vector<int> partitionLabels(string s) {int hash[27] {0};for (int i 0; i < s.size(); i) {hash[s[i] - a] i;}vector<int> res;int left 0;int righ…

C++学习Day05之强化训练---数组类封装

目录 一、程序及输出1.1 数组类头文件1.2 数组类.cpp1.3 主程序 二、分析与总结 一、程序及输出 1.1 数组类头文件 myArray.h #include<iostream> using namespace std;class MyArray { public:MyArray(); //默认构造 可以给100容量MyArray(int capacity); //有参构造…

CogVLM训练源码解读--数据处理

文章目录 前言一、数据主函数源码解读1、图像函数源码调用解读2、文本函数源码调用解读3、tokenizer生成函数4、llama2_text_processor文本处理函数解读 二、create_dataset_function函数源码代码解读三、sat库之make_loaders函数源码解读1、make_loaders函数调用说明2、make_l…

CSS 多色阴影效果和旋转动画的加载指示器

<template><!-- 创建一个装载加载动画的容器 --><view class="loader"><!-- 内部阴影层,用于放置动态文本 --><view class="intern"></view><!-- 外部阴影层,包含旋转和颜色变化的圆形阴影 --><view class…

RK3399平台开发系列讲解(USB篇)USB 枚举和断开过程

🚀返回专栏总目录 文章目录 一、连接与检测二、USB设备枚举三、断开过程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢介绍 USB 枚举/断开过程。 一、连接与检测 二、USB设备枚举 USB设备枚举一

第六节笔记:OpenCompass 大模型评测

视频链接&#xff1a;https://www.bilibili.com/video/BV1Gg4y1U7uc/?spm_id_from333.788&vd_source3bbd0d74033e31cbca9ee35e111ed3d1

手写myscrapy(二)

我们看一下scrapy的系统架构设计方法和思路&#xff1a; 模块化设计&#xff1a; Scrapy采用模块化设计&#xff0c;将整个系统划分为多个独立的模块&#xff0c;包括引擎&#xff08;Engine&#xff09;、调度器&#xff08;Scheduler&#xff09;、下载器&#xff08;Downl…

RIP协议详解

​RIP是最早的动态路由协议&#xff0c;虽然已经过时并且很少使用&#xff0c;但是可以通过学习RIP并且和ospf等现在正在使用的路由协议对比&#xff0c;了解其工作原理和过时原因&#xff0c;具有很强的学习性。 一、RIP协议简介 RIP&#xff08;Routing Information Protoc…