【大模型理论篇】CogVLM:多模态预训练语言模型

1. 模型背景

        前两天我们在《Skywork R1V: Pioneering Multimodal Reasoning with Chain-of-Thought》中介绍了将ViT与推理模型结合构造多模态推理模型的案例,其中提到了VLM的应用。追溯起来就是两篇前期工作:Vision LLM以及CogVLM。

        今天准备回顾一下CogVLM。视觉语言模型具有很强的通用性。许多视觉和跨模态任务可以被表述为下一个token预测。

        先来看张图,CogVLM直接拉满。CogVLM通过在注意力和FFN层中引入可训练的视觉专家模块,在预训练的语言模型和图像编码器之间建立了桥梁。这种方法使得视觉语言特征能够深度融合,并且不会牺牲任何自然语言处理任务的性能。CogVLM-17B在17个经典跨模态基准测试中取得了最先进的表现,包括NoCaps、Flicker30k等图像标注数据集,OKVQA、TextVQA、OCRVQA、ScienceQA等VQA数据集,MM-Vet、MMBench、SEED-Bench、LLaVABench、POPE、MMMU、MathVista等LVLM基准测试,以及RefCOCO、RefCOCO+、RefCOCOg、Visual7W等视觉定位数据集。

2. 模型结构

        CogVLM的模型,用于实现图像文本的联合理解与生成。该模型包括四个基本组件:视觉Transformer编码器、多层感知机适配器、预训练的大语言模型以及视觉专家模块。其中,视觉专家模块能够将不同注意力头的语义信息映射到不同的特征空间中,从而实现深度视觉语言特征对齐。该模型采用了统一指令监督微调(SFT)的方式对数据进行训练。

        ViT 编码器。在 CogVLM-17B 中使用了预训练的 EVA2-CLIP-E。由于其专门用于对比学习聚合 [CLS] 特征,因此移除了 ViT 编码器的最后一层。

        MLP适配器。为了将ViT的输出映射到与单词嵌入的文本特征相同的空间中,使用了MLP适配器,一个两层MLP(SwiGLU)。在语言模型中所有图像特征共享相同的词元位置ID。

        预训练的大语言模型。CogVLM 的模型设计与GPT风格预训练大模型兼容。具体来说,CogVLM-17B 采用 Vicuna1.5-7B 进行进一步训练。对所有注意力操作(包括图像特征之间的注意力)应用因果遮盖。

        视觉专家模块。在每一层中添加一个视觉专家模块,以实现深度视觉语言特征对齐。具体来说,每个层中的视觉专家模块由一个 QKV 矩阵和每个层中的 MLP 组成。QKV 矩阵和 MLP 的形状与预训练的语言模型相同,并从其中进行初始化。语言模型中的每个注意力头都会捕获语义信息的不同方面,而可训练的视觉专家可以将图像特征转换为与不同头部对齐,从而实现深度融合。

        位置嵌入。在 RoPE 中,允许所有视觉token共享一个单个的位置 ID,因为当它们被输入到 ViT 时,它们已经包含了位置信息。这种方法缓解了 LLM 中token之间的远程注意力衰减的影响。由于一张图片可以占据数百到数千个token,并且典型的输入序列结构为 " query",使用传统的位置编码会导致过长的编码序列。此外,它还会导致查询更多地关注更接近它的图像序列,即图像的下部分。

3. 论文实验

3.1 预训练

3.1.1 数据

        用于预训练的图像文本对都是公开可用的,包括LAION-2B和COYO-700M。在删除了损坏的URL、NSFW 图像、带有嘈杂标题的图像、具有政治偏见的图像以及具有 >6 或 <1/6 的宽高比的图像后,大约有 15 亿张图像可用于预训练。

        此外,还制作了一个包含 4000 万张图像的visual grounding数据集。图像标题中的每个名词都与边界框相关联,以指示图像中的位置。构建过程,通过spaCy提取名词,并使用GLIPv2预测边界框。图像文本对是从LAION-115M中采样而来的,是滤过的LAION-400M的一个子集。筛选并保留了4000万张图像的一部分,以确保超过75%的图像至少包含两个边界框。

3.1.2 训练

        预训练的第一阶段是图像标题损失,即文本部分的下一个token预测。在上面介绍的 15 亿对图像-文本对上用批量大小为 8,192 的方式训练了 120,000 次 CogVLM-17B 模型。预训练的第二阶段是图像标题生成和指代表达式理解(REF)的混合。REF 是一项任务,根据对象的文本描述来预测图像中的边界框,以视觉问答的形式进行训练,例如问题:物体在哪里?回答:[[x0, y0, x1, y1]]。x 和 y 坐标范围从 000 到 999,表示图像中的归一化位置。仅考虑“答案”部分中下一个token预测的损失。在上述介绍的文本-图像对和视觉定位数据集上使用 1,024 的批量大小预训练了第二阶段模型 60,000 次迭代。在最后的 30,000 次迭代中,将输入分辨率从 224x224 改为 490x490。总可训练参数数量为 6.5B。这里之所以升维,是可以喂入更高精度更多细节的内容,提升模型的理解能力。

3.1.3 对齐

        在指导对齐阶段,训练了两个通用模型:CogVLM-Chat 和 CogVLM-Grounding。CogVLM-Chat 接受自然语言输入和输出,而 CogVLM-Grounding 则接受带框的输入和输出。

        CogVLM-Chat。在研究中整合了来自各种开源视觉问答数据集的数据,包括 VQAv2 ,OKVQA,TextVQA,OCRvQA,ScienceQA,以及以多轮对话格式编排的数据集,如LLaVA-Instruct,LRV-Instruction,LLaVAR。然后在这些多样化的数据集上进行了统一指令监督微调(SFT)。SFT 数据的质量和完整性至关重要;最初通过仅使用语言GPT-4管道生成的LLaVA-Instruct数据集中存在某些不准确之处。需要通过手动检查和注释仔细纠正这些错误,以确保数据质量。视觉问答数据集通常以简洁的形式呈现,通常是单个单词的答案。为了适应这种多样性,在搜索阶段,需要使用格式为:(1)用于简洁的回答(问题:简短答案:);(2)用于扩展讨论的提示(问题:答案:)。在训练过程中,模型经过 6000 次迭代,学习率为 1e-5,批量大小为 1024。为了增强并确保训练的稳定性,激活了视觉编码器的参数,并将其学习率调整为剩余训练参数的十分之一。

        CogVLM-Grounding。为了赋予模型一致、交互式的视觉语义定位能力,收集了一个高质量的数据集,该数据集包含四种类型的定位数据:(1) 基于图像的标注(GC)——在图像中每个名词短语后跟相应的指代边界框;(2) 表达式生成(REG) ——针对每张图片,其上的每个边界框都被标记上准确描述文本表达式;(3) 基于视频的注释(VG)——每个视频帧都有与其对应的准确描述文本表达式;(4) 视觉问答(QA)——每个问题都带有正确答案所在视频帧的准确描述文本表达式。

3.2  多模态基准测试

        图像字幕生成。这些任务的主要目的是为给定图像生成文本摘要,总结主要的内容。使用数据集包括 NoCaps,COCO ,Flickr30k ,以及TextCaps进行评估。

        视觉问答。视觉问答任务要求模型根据给定的图像回答可能侧重于不同视觉内容的问题。评估涵盖多种数据集,包括 VQAv2、OKVQA、TextVQA、OCRvQA和 ScienceQ。LVLM基准主要用于评估大型多模态模型的高级功能,如对象识别和定位、OCR、视觉描述和视觉知识推理。

        视觉定位。通用模型在所有任务上都取得了不错的性能。

3.3 裁剪研究

        在 6,000 个迭代周期和批量大小为 8,192 的情况下进行消融研究。为了评估 CogVLM 模型的有效性,在多个结构变体和调优策略上进行,包括:

1)只调整 MLP Adapter 层;

2)调整所有 LLM 参数以及不添加视觉专家的 Adapter;

3)每四个 LLM 层仅添加一个视觉专家;

4)在所有层中仅向 FFN 添加视觉专家。        

4. 参考材料

【1】CogVLM: Visual Expert for Pretrained Language Models

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

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

相关文章

Vue 项目编译错误:These dependencies were not found,To install them, you can run...

问题与处理策略 问题描述 运行一个 Vue 项目时&#xff0c;报如下错误 ERROR Failed to compile with 47 errors …

python 模拟登录

在Python中模拟登录通常涉及到发送HTTP请求到服务器&#xff0c;并处理响应。这可以通过多种方式实现&#xff0c;最常见的方法之一是使用requests库。下面是一个简单的示例&#xff0c;展示了如何使用requests库来模拟登录一个网站&#xff08;以一个假想的登录表单为例&#…

优化 Docker 镜像 技巧

优化 Docker 镜像可以提高构建速度、减少镜像大小、提高安全性和效率。以下是一些优化 Docker 镜像的方法&#xff1a; 使用适当的基础镜像 选择合适的基础镜像可以减小镜像大小&#xff0c;并确保基础镜像的安全性和更新性。Alpine、Ubuntu Minimal 等轻量级基础镜像是常用选…

2021年蓝桥杯第十二届CC++大学B组真题及代码

目录 1A&#xff1a;空间&#xff08;填空5分_单位转换&#xff09; 2B&#xff1a;卡片&#xff08;填空5分_模拟&#xff09; 3C&#xff1a;直线&#xff08;填空10分_数学排序&#xff09; 4D&#xff1a;货物摆放&#xff08;填空10分_质因数&#xff09; 5E&#xf…

Python入门基础

python基础类型转换 str()与int()类型转换 name 张三 age 20 print(type(name),type(age))print(我叫name 今年&#xff0c; str(age)岁 )a10 b198.8 cFalse print(type(a),type(b),type(c)) print(str(a),str(b),str(c))s1 128 f198.7 s276.77 ffTrue s3hello print(type(s…

HTTP/HTTPS 中 GET 请求和 POST 请求的区别与联系

一、基础概念 HTTP (HyperText Transfer Protocol, 超文本传输协议) 是一种用于浏览器与服务器之间进行数据交互的协议。HTTPS (加密的 HTTP) 则通过 SSL/TLS 协议实现通信加密与数据安全性。 二、GET 和 POST 概述 GET 请求: 用于从服务器获取资源。 POST 请求: 用于将数据…

OPENCV数字识别(非手写数字/采用模板匹配)

这篇文章的重点在于 模板匹配 的使用。模板匹配是计算机视觉中的一项基本技术&#xff0c;它通过比对输入图像与模板图像的相似度&#xff0c;来进行目标识别。对于数字识别&#xff0c;特别是标准数字的识别&#xff0c;模板匹配非常有效。 请看效果&#xff1a; 文章结构 …

在 Kubernetes 中部署 Trivy 漏洞扫描服务

创建专用 Namespace # trivy-ns.yaml apiVersion: v1 kind: Namespace metadata: name: trivy-system配置持久化存储&#xff08;缓存数据库&#xff09; apiVersion: v1 kind: PersistentVolumeClaim metadata: name: trivy-db-cache namespace: trivy-system spec: acc…

Cursor安装注册+基础配置+入门实操

一、安装注册 官网地址&#xff1a;https://www.cursor.com/ 下载按钮会根据电脑系统来匹配&#xff0c;点击对应「Download」按钮进行下载。完成后&#xff0c;按步骤安装即可。 安装完成后&#xff0c;即可点击图标打开软件。 基础设置完成后&#xff0c;就需要选择注册账号…

秒杀业务优化之从分布式锁到基于消息队列的异步秒杀

一、业务场景介绍 优惠券、门票等限时抢购常常出现在各类应用中&#xff0c;这样的业务一般为了引流宣传而降低利润&#xff0c;所以一旦出现问题将造成较大损失&#xff0c;那么在业务中就要求我们对这类型商品严格限时、限量、每位用户限一次、准确无误的创建订单&#xff0c…

MiniMax GenAI 可观测性分析:基于阿里云 SelectDB 构建 PB 级别日志系统

“阿里云SelectDB作为MiniMax日志存储服务的核心支撑&#xff0c;为在线和离线业务提供了高效、稳定的查询与聚合分析能力。其支持实时物化视图、租户资源隔离、冷热分离等企业级特性&#xff0c;不仅有效解决了日志场景下PB级别数据查询的性能瓶颈&#xff0c;还通过智能化的资…

【YOLO V3】目标检测 Darknet 训练自定义模型

【YOLO V3】目标检测 Darknet 训练自定义模型 前言整体思路环境检查与依赖配置克隆 YOLOv3 Darknet 并编译Clone Darknet 项目文件修改 Makefile 文件修改模型保存频率项目编译 准备数据集配置训练文件数据集&#xff1a;datasets &#xff08;自制&#xff09;权重文件 yolov3…

Kafka分区分配策略详解

Kafka分区分配策略详解 Kafka作为当前最流行的分布式消息队列系统&#xff0c;其分区分配策略直接影响着系统的性能、可靠性和可扩展性。合理的分区分配不仅能够提高数据处理的效率&#xff0c;还能确保系统负载的均衡。 Kafka提供了多种内置的分区分配策略&#xff0c;包括R…

C#中 String类API(函数)

字符串属性 string str "打工人";Console.WriteLine(str);char s str[0];Console.WriteLine(s); 字符串内置API(函数) 1. Concat 拼接字符串 string s1 "打";string s2 "工";string s3 "人";string sthstring.Concat(s1, s2, s…

JavaScript性能优化实战手册:从V8引擎到React的毫秒级性能革命

目录 一、性能优化的本质挑战1.1 浏览器渲染管线的性能瓶颈2.1 内存管理优化2.2 执行效率优化2.3 网络传输优化 三、React框架深度调优3.1 渲染性能优化3.2 性能监控体系 四、企业级优化案例4.1 电商平台首页优化4.2 数据可视化大屏优化 五、新一代性能优化技术5.1 WASM性能突破…

【PostgreSQL】pg各版本选用取舍逻辑与docker安装postgres:15

企业常用 PostgreSQL 版本推荐 1. PostgreSQL 14&#xff08;最常见&#xff0c;稳定&#xff09; 目前许多企业仍在使用 PostgreSQL 14&#xff0c;因为它在性能、并发处理、JSON 支持等方面做了较多优化&#xff0c;同时又非常稳定。官方支持时间&#xff1a;2026 年 11 月…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能📚页面效果📚指令输入�…

《Python实战进阶》第31集:特征工程:特征选择与降维技术

第31集&#xff1a;特征工程&#xff1a;特征选择与降维技术 摘要 特征工程是机器学习和数据科学中不可或缺的一环&#xff0c;其核心目标是通过选择重要特征和降低维度来提升模型性能并减少计算复杂度。本集聚焦于特征选择与降维技术&#xff0c;涵盖过滤法、包裹法、嵌入法等…

避雷 :C语言中 scanf() 函数的错误❌使用!!!

1. 返回值说明 scanf函数会返回成功匹配并赋值的输入项个数&#xff0c;而不是返回输入的数据。 可以通过检查返回值数量来确认输入是否成功。若返回值与预期不符&#xff0c;就表明输入存在问题。 #include <stdio.h>int main() {int num;if (scanf("%d", …

Excel第41套全国人口普查

2. 导入网页中的表格&#xff1a;数据-现有链接-考生文件夹&#xff1a;网页-找到表格-点击→变为√-导入删除外部链接关系&#xff1a;数据-点击链接-选中连接-删除-确定&#xff08;套用表格格式-也会是删除外部链接&#xff09;数值缩小10000倍&#xff08;除以10000即可&am…