论文阅读:BLIPv1 2022.2

文章目录

    • 一、研究背景与问题
      • 现有方法的局限性
      • 研究目标
    • 二、核心方法与创新点
      • 多模态编码器 - 解码器混合架构(MED)
      • 标题生成与过滤(CapFilt)数据自举方法
    • 三、实验与结果
      • 数据集与训练配置
      • 关键实验发现
      • 与 state-of-the-art 方法的对比
    • 四、结论与未来方向
      • 主要贡献
      • 未来方向
    • 五、资源与代码

论文题目:BLIP: Bootstrapping Language-Image Pre-training for
Unified Vision-Language Understanding and Generation
论文链接:https://arxiv.org/pdf/2201.12086

一、研究背景与问题

本文主要针对现有多模态的来个两个缺点展开。

现有方法的局限性

  • 模型层面:大多数视觉 - 语言预训练(VLP)模型要么基于编码器(如 CLIP),适合理解任务但难以直接用于文本生成;要么基于编码器 - 解码器架构,在图像 - 文本检索等理解任务上表现不佳。
  • 数据层面:现有方法依赖从网络收集的图像 - 文本对,这些数据含有大量噪声,影响模型学习视觉 - 语言对齐的效率。

研究目标

提出一个能同时处理理解与生成任务的统一 VLP 框架,并有效利用噪声网络数据。

二、核心方法与创新点

多模态编码器 - 解码器混合架构(MED)

Multimodal mixture of Encoder-Decoder

  • 三种功能模式
    • 单模态编码器(unimodal encoder):分别编码图像和文本,通过图像 - 文本对比损失(ITC)对齐特征空间。
    • 基于图像的文本编码器(image-grounded text encoder):插入交叉注意力层建模视觉 - 语言交互,通过图像 - 文本匹配损失(ITM)区分正负样本。
    • 基于图像的文本解码器(image-grounded text decoder):将双向自注意力替换为因果自注意力,通过语言建模损失(LM)生成图像描述。

该模型与三个视觉语言目标共同进行预训练,即图像-文本对比学习(image-text contrastive learning), 图像-文本匹配(image-text learning), 图像-条件语言建模(image-conditional language modeling)。

  • 参数共享策略:文本编码器与解码器共享嵌入层、交叉注意力层和前馈网络,仅自注意力层独立,提升训练效率。

三个任务相关的算法模型框架图:
在这里插入图片描述

标题生成与过滤(CapFilt)数据自举方法

一种新的数据集 bootstrapping 的方法。可以用于从噪声图像-文本对中学习。将预训练的 MED 微调为两个模块:一个是给定网络图像产生合成标题的 captioner, 另一个是去除原始网络文本和合成文本中噪声标题的 Filter.

  • 流程
    • 标题生成器(Captioner):基于 MED 解码器,为网络图像生成合成标题。
    • 过滤器(Filter):基于 MED 编码器,移除原始网络文本和合成标题中的噪声样本。
  • 优势:通过自举提升数据质量,生成更多样化的标题,增强模型对视觉 - 语言对齐的学习。

数据清洗框架图:
在这里插入图片描述

三、实验与结果

数据集与训练配置

  • 预训练数据:包含 COCO、Visual Genome 等人工标注数据集,以及 Conceptual Captions、LAION 等网络数据集,总计 14M 至 129M 图像。
  • 模型配置:基于 ViT-B/16 和 ViT-L/16 视觉编码器,文本编码器基于 BERT。

关键实验发现

  • CapFilt 的有效性:同时使用标题生成器和过滤器可显著提升下游任务性能。例如,在 COCO 图像 - 文本检索中,平均召回率 @1 提升 2.7%,图像标题生成的 CIDEr 分数提升 2.8%。
  • 合成标题的多样性:采用核采样(nucleus sampling)生成的多样化标题比波束搜索更有效,尽管噪声率更高,但引入了更多新信息。
  • 参数共享的影响:文本编码器与解码器共享非自注意力层可优化性能,而标题生成器与过滤器共享参数会因确认偏差降低效果。

与 state-of-the-art 方法的对比

  • 图像 - 文本检索:在 COCO 和 Flickr30K 上,BLIP 以更少的预训练数据(14M)超越 ALBEF、CLIP 等方法,零样本迁移至视频 - 文本检索时性能显著优于现有模型。
  • 图像标题生成:在 NoCaps 和 COCO 上,BLIP 的 CIDEr 和 SPICE 分数超过 VinVL、LEMON 等方法,且无需预训练目标检测器。
  • 视觉问答(VQA)与自然语言视觉推理(NLVR²):BLIP 在 VQA 测试集上比 ALBEF 提升 1.6%,在 NLVR² 上接近最优性能。
  • 零样本视频 - 语言任务迁移:直接将图像训练的模型应用于视频 - 文本检索和视频问答,性能超越专门针对视频设计的模型。

四、结论与未来方向

主要贡献

BLIP 通过统一的 MED 架构和 CapFilt 数据自举方法,实现了视觉 - 语言理解与生成任务的高性能统一,在多个下游任务上达到 state-of-the-art。

未来方向

  • 多轮数据自举。
  • 单图像多合成标题生成。
  • 模型集成等,进一步提升模型性能。

五、资源与代码

论文提供了预训练模型、代码和自举数据集,支持后续研究。

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

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

相关文章

630,百度文心大模型4.5系列开源!真香

2025年被普遍认为是AI Agent商业化的关键之年,而大模型正是Agent能力的核心支撑。 当开发成本大幅降低,我们很可能看到各种垂直领域的Agent应用如雨后春笋般涌现。 技术普惠的现实意义对于广大AI创业者和开发者来说,这无疑是个好消息。 之…

数据结构:递归:斐波那契数列(Fibonacci Sequence)

目录 什么是斐波那契数列? 用递归推导Fibonacci 复杂度分析 用迭代推导Fibonacci 复杂度分析 递归优化:记忆化递归(Memoized Recursion) 复杂度分析 什么是斐波那契数列? 斐波那契数列(Fibonacci Seq…

ArcGIS Pro利用擦除工具,矢量要素消除另一矢量部分区域

选择“System Toolboxes”→“Analysis Tools.tbx”→“Overlay”→“Erase(擦除)”。 原始 擦除后

Linux: network: 性能 pause

最近看到一个问题,是关于网卡的throughput的性能问题,后来在ethtool-S里看到有pause的counter,这个也是网络性能问题的一个分析方向。算是学到了新的知识点。 $ grep -i -e 2025- -e pause ethtool*ens2f1np1 | grep -v -e ": 0\$" | headtail 4====

目标检测系列(五)已标注数据集(yolo格式)导入labelstudio继续标注

目录 1、labelstudio安装 2、yolo(txt)转json 3、COCO转yolo(仅针对coco格式标注信息) 4、设置环境变量并启动labelstudio 5、进入label studio创建工程并设置任务标签 6、安装http-server并启动文件映射服务 7、进入label studio导入json文件即可 1、labelstudio安装 …

pytorch底层原理学习--Libtorch

libtorch libtorch 是 PyTorch 的 C 实现版本,可以认为所有的pytorch底层都是由c实现,而pytorch的所有C实现就叫libtorch,也就是我们在pytorch官网getstart页面下载的cpytorch版本。我们用python写的pytorch神经网络代码都会通过pybind11将p…

TCP 三次握手协商 MSS 前,如何确定 MSS 值(附 Linux 内核源码)

文章目录 一、SYN总结影响 SYN MSS 的因素 二、SYNACK总结影响 SYNACK MSS 的因素 结合 Linux 内核源码 一、SYN 总结影响 SYN MSS 的因素 套接字选项 TCP_MAXSEG路由选项 advmss出口 MTU 减去 40(TCP 和 IP 的固定首部大小)IPV4_MAX_PMTU - 40(同上) 二、SYNACK 总结影响 SY…

扫描电子显微镜(SEM)夏令营面试基础题及答案

第二期表征问题SEM,后续会陆续更新其他表征 SEM和XRD一样,都是表征里面很常见的手段,基本上看论文这两个都是必不可少的 对于这部分内容,理解记忆>死记硬背,到时会问起来回答个大概就行, 像上…

Leetcode力扣解题记录--第49题(map)

题目链接:49. 字母异位词分组 - 力扣(LeetCode) 题目描述 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 示例 1: 输入: strs ["eat", "tea", "tan", &quo…

AI赋能智慧餐饮:Spring Boot+大模型实战指南

⚡ 餐饮行业三大痛点 高峰期点餐拥堵:300人餐厅,15个服务员仍排长队 后厨浪费严重:食材损耗率高达25%,成本失控 顾客体验同质化:复购率不足30% 🚀 智慧餐饮解决方案架构 🔥 核心模块代码实现…

用鸿蒙打造真正的跨设备数据库:从零实现分布式存储

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

【Docker基础】Docker数据卷:数据卷的作用与使用场景

目录 1 Docker数据卷概述 1.1 什么是数据卷 1.2 数据卷的核心特性 3 数据卷与绑定挂载的对比 2.1 技术对比 2.2 选择建议 3 数据卷的核心作用 3.1 数据持久化 3.2 数据共享 3.3 备份与迁移 4 数据卷使用场景详解 4.1 数据库应用 4.2 日志集中管理 5 数据卷操作全…

安装GPU版本的Pytorch

前言 Pytorch是深度学习框架,在工作中我们一般是使用GPU版本的Pytorch,提高运行效率 安装GPU版本的Pytorch需要先安装CUDA和CUANN这两个GPU环境 如果准备安装GPU版本的Pytorch安装同志没有安装CUDA和CUANN,请看我上一篇文章 RTX5070显卡安装CUDA和CUDNN-CSDN博客 目录 安装…

微信小程序学习笔记

微信小程序学习笔记 一、文件和目录结构介绍 小程序包括:主体文件、页面文件 主体文件: app.js:小程序入口文件app.json:小程序的全局配置文件app.wxss:小程序的全局样式 页面文件:是每个页面所需的文…

抓包之通过wireshark抓ping包

写在前面 本文看下如何抓ping包。 1:正文 因为ping使用的是icmp协议,所以这里我们可以通过过滤icmp协议来进行抓包: 其中对于icmp请求报文状态码是8,如下: 响应状态码是0: 如下图是一个局域网环境中…

大文件分片上传 — nodejs

上传文件路由: var express require(express); var router express.Router(); const multer require(multer); const fs require(fs); const path require(path);// 确保上传目录存在 const uploadDir path.join(__dirname, ../backend/uploads); const temp…

HarmonyOS File和base64字符串转换

1. HarmonyOS File和base64字符串转换 1.1. Base64 1.1.1. Base64认知 Base64 是一种基于64个 ASCII 字符来表示二进制数据的表示方法,这个64个不同的字符为:   (1)大、小写字母(A– Z、a–z)。52个  …

【NodeJs】【npm】npm安装electron报错

解决问题 npm安装electron报错一般来说是镜像源的问题。 electron的镜像源与一般的 vue 之类的镜像源地址不一样需要单独配置。 npm读取的全局配置一般是在 C:\Users\{用户}\.npmrc 这个配置文件中。 如果你找不到你的配置文件可以执行如下命令, # 执行后会直接用txt打开你的…

植物small RNA靶基因预测软件,psRobot

psRoto软件安装 网址 http://omicslab.genetics.ac.cn/psRobot/downloads.php下载和安装 wget http://omicslab.genetics.ac.cn/psRobot/program/WebServer/psRobot_v1.2.tar.gz # tar -zxvf psRobot_v1.2.tar.gz # cd psRobot_v1.2 ## ./configure make make installpsRot…

翻译服务器

基于UDP编程博客里的回显服务器代码,翻译服务只需要改process方法即可 所以我们可以创建一个UdpDictServer直接继承UdpEchoServer然后重写process方法 在重写的方法中完成翻译的过程 代码: package network;import java.io.IOException; import java.net.SocketException; …