18、BLIP

简介

github

 BLIP提出了一种基于预训练的方法,通过联合训练视觉和语言模型来提升多模态任务的性能。

 BLIP(Bootstrapping Language-Image Pretraining)是salesforce在2022年提出的多模态框架,是理解和生成的统一,引入了跨模态的编码器和解码器,实现了跨模态信息流动。在AIGC中通常用来给图像生成prompt,好的prompt对交叉注意力的微调非常关键,例如ControlNet中的Automatic Prompt就是BLIP生成的。

 为什么叫Bootstrapping,是因为训练数据来自网络图文对,包含大量噪声,所以增加了一个在线数据打标签和清理的任务,把处理好的数据继续用来迭代原模型。

在这里插入图片描述
使用Captioner (Cap)为web图像生成合成字幕,使用Filter (Filt)去除带有噪声的字幕。

实现流程

在这里插入图片描述
 将输入图像划分为补丁并将其编码为嵌入序列,并使用额外的[CLS]令牌来表示全局图像特征,提出编码器-解码器的多模态混合(MED),能够有效地进行多任务预学习和迁移学习。MED是一种多任务模型,可以在三种功能之一中运行。

  • Unimodal encoder

分别对图像和文本进行编码。文本编码器与BERT相同,其中在文本输入的开头附加一个[CLS]令牌以总结句子

  • Image-grounded text encoder

通过在文本编码器的每个变压器块的自注意层(SA)和前馈网络(FFN)之间插入一个额外的交叉注意层(CA)来注入视觉信息。一个特定于任务的[Encode]标记被附加到文本中,[Encode]的输出嵌入被用作图像-文本对的多模态表示。

  • Image-grounded text decoder

将基于图像的文本编码器中的双向自注意层替换为因果自注意层。[Decode]标记用于表示序列的开始,序列结束标记用于表示序列的结束。

Training

 在预训练中共同优化了三个目标,两个基于理解的目标和一个基于生成的目标,每个图像-文本对只需要通过计算量较大的视觉转换器进行一次前向传递,并通过文本转换器进行三次前向传递,其中激活不同的功能以计算如下所述的三种损失。

  1. 图像-文本对比损失 ITC(Image-Text Contrastive
    Loss):针对图像编码器和文本编码器,通过正负图文对的对比学习,来对齐图像和文本的潜在特征空间。
  2. 图像-文本匹配损失 ITM(Image-Text Matching
    Loss):针对以图像为基础的文本编码器,通过对图文匹配性进行二分类,建模图文多模态信息的相关性。
  3. 语言建模损失 LM(Language Modeling Loss):针对以图像为基础的文本解码器,通过交叉熵损失进行优化,训练模型以自回归的方式生成目标caption。

 为了在利用多任务学习的同时执行有效的预训练,文本编码器和文本解码器共享除了SA层之外的所有参数。原因是编码和解码任务之间的差异最好由SA层捕获。特别是,编码器使用bi-directional self-attention来构建当前输入标记的表示,而解码器使用causal self-attention来预测下一个标记。另一方面,编码和解码任务之间的嵌入层、CA层和FFN的作用相似,因此共享这些层可以提高训练效率,同时受益于多任务学习。

CapFilt

在这里插入图片描述

提出了一种提高文本语料库质量的新方法CapFilt。它引入了两个模块:一个用于生成给定web图像的标题的captioner,以及一个用于去除噪声图像-文本对的过滤器。captioner和filter都是从相同的预训练MED模型初始化的,并在COCO数据集上分别进行微调。调优是一个轻量级的过程。

具体地说,captioner是一个基于图像的文本解码器。它与LM目标进行了微调,以解码给定图像的文本。给定web图像 I w I_w Iw, captioner生成合成字幕 T s T_s Ts,每个图像一个字幕。该滤波器是一个基于图像的文本编码器。它与ITC和ITM目标进行了微调,以了解文本是否与图像匹配。过滤器去除原始web文本 T w T_w Tw和合成文本 T s T_s Ts中的噪声文本,如果ITM头预测文本与图像不匹配,则认为文本是噪声文本。最后,将过滤后的图像文本对与人工注释的图像文本对结合起来形成一个新的数据集,使用它来预训练一个新的模型。

实验结果

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

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

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

相关文章

Linux嵌入式配置/etc/profile文件

Linux嵌入式配置/etc/profile文件 void mountMouse() {QFile profile("/etc/profile");if (profile.exists()) {if (profile.open(QIODevice::ReadWrite)) {QByteArray fileData(profile.readAll());if (!fileData.contains("tslib:/dev/input/event0 intellim…

词嵌入位置编码的实现(基于pytorch)

背景介绍 在transformers架构当中,对于词向量的输入需要加上原本词对应的位置信息,作为输入到模型中训练的input,那具体的位置编码如何实现呢?本篇博客就跟大家一起分享一下对应的步骤 位置编码的公式 对于词向量的位置编码的方…

数据结构复杂

顺序存储与链式存储优缺点 顺序存储: 优点: 顺序存储结构利用一段连续的存储单元依次存储线性表的数据元素,使得线性表的数据元素在内存中是紧凑排列的,从而减少了存取时间。顺序存储结构在内存中占用的空间是连续的&#xff0c…

十进制转二进制、八进制、十

❤ 厾罗 十进制转二进制、八进制、十 以下代码用于实现十进制转二进制、八进制、十六进制: 实例(Python 3.0) # -*- coding: UTF-8 -*- # Filename : test.py # author by : www.dida100.com # 获取用户输入十进制数 dec int(input("输入数字&…

西电期末1017.有序序列插值

一.题目 二.分析与思路 简单题。主要考察简单的排序&#xff0c;最后的插入数据同样不用具体实现&#xff0c;只需在输出时多输出一下即可&#xff0c;注意顺序&#xff01;&#xff01; 三.代码实现 #include<bits/stdc.h>//万能头 int main() {int n;scanf("%d…

HTML5+CSS3+Vue小实例:彩色圆环溶解加载动画

实例:彩色圆环溶解加载动画 技术栈:HTML+CSS+Vue.js 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge&…

95 快慢指针解决环形链表

问题描述&#xff1a;给定一个链表&#xff0c;判断表中是否有环&#xff0c;为了表示给定链表中的环&#xff0c;我们使用整数pos来表示链表尾链接到链表中的位置&#xff0c;如果pos是-1表示没有环。 快慢指针求解&#xff1a;定义一个慢指针和一个快指针&#xff0c;若两者…

【已解决】Invalid bound statement (not found)

报错讯息 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.casey.mapper.SysRoleMapper.getUserRoleCode at org.apache.ibatis.binding.MapperMethod S q l C o m m a n d . < i n i t > ( M a p p e r M e t h o d . j a v a :…

springboot整合websocket实现聊天室对话

要实现Spring Boot整合WebSocket实现聊天室对话&#xff0c;你需要遵循以下步骤&#xff1a; 1. 添加依赖 在你的pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

Springcloud 微服务实战笔记 Ribbon

使用 Configurationpublic class CustomConfiguration {BeanLoadBalanced // 开启负载均衡能力public RestTemplate restTemplate() {return new RestTemplate();}}可看到使用Ribbon&#xff0c;非常简单&#xff0c;只需将LoadBalanced注解加在RestTemplate的Bean上&#xff0…

视频通话录制 方案 教程

一些基本概要 1 市面流行的音视频产品&#xff0c;都包含一对一、一对多、多对多通话&#xff0c;云端录制等这些基本功能&#xff0c;有些厂商支持本地服务录制。 2 本地服务录制&#xff0c;云端录制区别 两个录制区别在于&#xff0c;本地服务端录制的 SDK 要求部署在 …

绑定方法与非绑定方法介绍

【 一 】绑定方法 绑定给谁&#xff0c;谁来调用就自动将它本身当作第一个参数传入 【 1 】绑定到类的方法 绑定到类的方法是指与类本身关联的方法&#xff0c;而不是与实例对象关联的方法。这些方法在类级别上操作数据&#xff0c;而不需要访问或修改特定实例对象的属性。 在…

【Proteus仿真】【Arduino单片机】电蒸锅温度控制系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用LCD1602液晶、按键开关、蜂鸣器、DS18B20温度传感器&#xff0c;液位传感器、继电器控制加热保温装置等。 主要功能&#xff1a; 系统运行后&…

C++-模板与容器

1、模板 模板可以让类或者函数支持一种通用类型&#xff0c;这种通用类型在实际运行过程中可以使用任何数据类型。因此程序员可以写出一些与类型无关的代码。这种编程方式也叫“泛型编程”。 通常有两种形式&#xff1a; 函数模板类模板 1.1 函数模板 //模板类型声明 template&…

第十四章 创建Callout Library - 故障排除和错误处理

文章目录 第十四章 创建Callout Library - 故障排除和错误处理最糟糕的做法 第十四章 创建Callout Library - 故障排除和错误处理 最糟糕的做法 — 列出一些可能导致严重问题的做法。处理 UNIX 信号处理错误 — 描述了一些函数&#xff0c;可帮助从进程接收信号时可能发生的失…

中文自然语言处理库(SnowNLP)的简单使用

snownlp 是一个简单易用的 Python 库&#xff0c;专为处理中文文本而设计。它基于自然语言处理技术&#xff0c;提供了多种功能&#xff0c;包括分词、词性标注、情感分析、文本转换&#xff08;简繁转换&#xff09;等。这个库的核心优势在于对中文文本的处理能力&#xff0c;…

Navicat 技术干货 | 聚合查询的介绍

基础 SQL 查询可以检索、插入、更新和删除记录&#xff0c;而聚合查询可通过提供求和、平均值或最大/最小值等的大型结果集&#xff0c;将数据库交互提升到一个新的水平。本文中&#xff0c;我们将探索聚合 SQL 查询的基础知识&#xff0c;并研究如何有效的利用他们来分析和汇总…

C++类和对象介绍

介绍 在C语言中&#xff0c;类和对象是面向对象编程&#xff08;OOP&#xff09;的核心概念。类定义了对象的模板或蓝图&#xff0c;而对象则是根据类的定义创建的实例。 看了定义&#xff0c;是不是感觉还是感觉不清楚&#xff0c;想学编程的都想看着代码学习&#xff0c;那就…

复试 || 就业day08(2024.01.03)算法篇

文章目录 前言亲密字符串两句话中的不常见单词公平的糖果交换卡牌分组独特的电子邮件地址 前言 &#x1f4ab;你好&#xff0c;我是辰chen&#xff0c;本文旨在准备考研复试或就业 &#x1f4ab;文章题目大多来自于 leetcode&#xff0c;当然也可能来自洛谷或其他刷题平台 &…

Python 遍历某文件夹下所有文件夹或文件

1、使用os库中的listdir方法 os.listdir(path) 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表(不包含子文件夹里的文件夹和文件) os.path.isfile(path)判断路径是否为文件。os.path.isdir(path)判断路径是否为目录 os.path.join(path1[, path2[, ...]])把目录和文…