InternVL:论文阅读 -- 多模态大模型(视觉语言模型)
更多内容:XiaoJ的知识星球
文章目录
- InternVL: 扩展视觉基础模型与通用视觉语言任务对齐
- 1.概述
- 2.InternVL整体架构
- 1)大型视觉编码器:InternViT-6B
- 2)语言中间件:QLLaMA。
- 3)训练策略
- (1)第一阶段:视觉-语言对比训练
- (2)第二阶段:视觉语言生成训练
- (3)第三阶段:监督微调(SFT)
- 3.InternVL应用
- 1)对于视觉感知任务
- 2)对于对比任务
- 3)对于生成任务
- 4)对于多模态对话
InternVL: 扩展视觉基础模型与通用视觉语言任务对齐
图1. 不同视觉和视觉语言基础模型的比较。
(a) 表示传统的视觉基础模型,例如 ResNet 在分类任务上预先训练。
(b) 表示视觉语言基础模型,例如在图像-文本对上预训练的 CLIP。
(c ) 是 InternVL,它将大规模视觉基础模型InternViT-6B与大型语言模型保持一致,并且适用于对比和生成任务。

Supervised pre - training(监督预训练)
:图像经过视觉编码器(vision encoder),得到分类类别。
Contrastive pre - training(对比预训练)
:图像经过视觉编码器(vision encoder),再通过对比编码器(contrastive encoder)与文本进行对比训练。
1.概述
大型语言模型的快速增长,为多模态AGI(Artificial General Intelligence,通用人工智能)系统带来了更多可能,但视觉和视觉语言基础模型的发展却没跟上。
我们设计了大规模视觉语言基础模型 InternVL, 它首次将大规模视觉编码器与LLMs该模型对齐。该模型在各种通用视觉语言任务上表现出强大的性能,包括视觉感知任务、视觉语言任务和 多模态对话。
目前视觉语言模型(VLLMs)的限制
为了将视觉模型与 LLMs 桥接,现有的视觉语言模型(VLLMs)通常使用轻量级的“glue(粘合层)”,如QFormer或线性投影,来对齐视觉和语言模型的特征,连接视觉和语言模型。
但这种方法存在以下问题:
(1)参数规模差异:LLM参数可达10000亿,而VLLMs的视觉编码器通常只有10亿左右,这可能导致LLM的容量未被充分利用;
(2)表征不一致:视觉模型,基于纯视觉数据进行训练或与BERT系列对齐,与LLM的表征往往不一致;
(3)连接效率低,轻量级且随机初始化的“粘合层”可能无法有效捕捉多模态理解和生成所需的丰富跨模态交互和依赖关系。
2.InternVL整体架构
与传统的纯视觉主干和双编码器模型不同,InternVL有三个关键设计:
-
参数平衡的视觉和语言组件: 60亿参数视觉编码器( InternViT-6B)+80亿参数的LLM中间件(QLLaMA)
-
对齐视觉编码器和语言中间件:视觉编码器(InternViT-6B)与LLM中间件(QLLaMA)对齐。
-
渐进式图像文本对齐:在大规模嘈杂的图像文本数据上启动对比学习,随后过渡到在细粒度数据上生成学习。
1)大型视觉编码器:InternViT-6B
它使用普通视觉转换器(ViT)实现了 InternVL 的视觉编码器。为了匹配 LLMs的规模,我们将视觉编码器扩展到 60 亿个参数,从而产生了 InternViT-6B 模型。
2)语言中间件:QLLaMA。
语言中间件 QLLaMA 旨在协调视觉和语言特征。
QLLaMA 基于预先训练的多语言 LLaMA 开发的,并新增了 96 个随机初始化的可学习查询和交叉注意力层(10 亿个参数)。这种方式使 QLLaMA 能够顺利地将视觉元素集成到语言模型中,从而增强组合特征的连贯性和有效性。
3)训练策略
图3. 所提出的 InternVL 模型的训练策略。

如图所示,InternVL 的训练包括三个渐进阶段,包括视觉-语言对比训练、视觉-语言生成训练和监督微调。
(1)第一阶段:视觉-语言对比训练
我们进行对比学习,在网络规模的嘈杂图像文本对上将 InternViT-6B 与多语言 LLaMA-7B 对齐。这些数据都是公开的,包括多语言内容,包括 LAION-en、LAIONmulti、LAIONCOCO、COYO、Wukong 等。我们使用这 些数据集的组合,并过滤掉一些质量极低的数据来训练我们的模型。
在训练过程中,我们使用LLaMA-7B对文本进行编码得到文本特征Tf,同时利用InternViT-6B提取视觉特征If。按照CLIP(Contrastive Language-Image Pretraining)的目标函数通过最大化匹配的图像-文本对的相似度,同时最小化不匹配对的相似度,从而学习图像和文本之间的关联。
(2)第二阶段:视觉语言生成训练
我们将InternViT-6B与QLLaMA连接,并采用生成训练策略。QLLaMA继承了第一阶段LLaMA-7B的权重,我们保持InternViT-6B和QLLaMA冻结,仅用过滤后的高质量数据训练新增的可学习查询和交叉注意力层。
我们进一步筛选掉 了质量不高的数据,从第一阶段的49.8亿减少到10.3亿。
沿用BLIP-2的损失函数,该阶段的损失由图像-文本对比 (ITC) 损失、图像-文本匹配 (ITM) 损失和图像基于文本生成 (ITG) 损失三部分组成,这使得查询能够提取强大的视觉表示,并进一步与LLMs对齐特征空间。
(3)第三阶段:监督微调(SFT)
InternVL在创建多模态对话系统时,我们通过 MLP 层将其与 现成的LLM解码器(例如 Vicuna 或 InternLM) 连接起来,并进行监督微调 (SFT)。
3.InternVL应用
图 4. 使用 InternVL 的不同方式。

通过灵活地结合视觉编码器和语言中间件,InternVL 可以支持各种视觉语言任务,包括对比任务、生成任务和多模态对话。
1)对于视觉感知任务
InternVL 的视觉编码器 InternViT-6B,可以作为视觉任务的支柱。给定一个输入图像,我们的模型可以生成特征图进行密集预测任务,或者使用全局平均池化和线性投影进行图像分类。
2)对于对比任务
如图 4(a)、4(b) 所示,我们引入了两种推理模式:InternVL-C和InternVL-G。它们使用视觉编码器,或InternViT和QLLaMA的组合来编码视觉特征。
具体来说,我们将InternViT的视觉特征,或QLLaMA的查询特征进行注意力池化,以计算全局视觉特征If。此外,我们从QLLaMA的[EOS]令牌中提取特征,将文本编码为Tf。通过计算If和Tf之间的相似度分数,我们可以支持图像-文本检索等对比任务。
3)对于生成任务
QLLaMA由于其有大量的参数,本身就具有很有前途的图像描述能力。QLLaMA的查询重新组织了 InternViT-6B 的视觉表示,并作为QLLaMA的前缀文本。后续的文本标记将按顺序逐个生成。
4)对于多模态对话
引入了 InternVLChat,利用 InternVL 作为视觉组件来连接LLMs。为此,我们有两种不同的配置。
-
一种选择是独立使用 InternViT-6B,如图 4© 所示。
-
另一种方法是同时使用完整的 InternVL 模型,如图 4(d) 所示。
.
论文《InternVL: Scaling up Vision Foundation Models and Aligning for Generic Visual-Linguistic Tasks》:
- https://huggingface.co/papers/2312.14238
- https://arxiv.org/pdf/2312.14238
GitHub:
- https://github.com/OpenGVLab/InternVL
声明:资源可能存在第三方来源,若有侵权请联系删除!
相关文章:
InternVL:论文阅读 -- 多模态大模型(视觉语言模型)
更多内容:XiaoJ的知识星球 文章目录 InternVL: 扩展视觉基础模型与通用视觉语言任务对齐1.概述2.InternVL整体架构1)大型视觉编码器:InternViT-6B2)语言中间件:QLLaMA。3)训练策略(1)…...
【BUG】类文件具有错误的版本 61.0, 应为 52.0,请删除该文件或确保该文件位于正确的类路径子目录中。
报错: [ERROR] 类文件具有错误的版本 61.0, 应为 52.0 [ERROR] 请删除该文件或确保该文件位于正确的类路径子目录中。 报错截图: 原因:Java 版本和 Spring 不兼容,显示 Spring 版本过高 解决方法 1. 使用更高版本的 J…...
康谋应用 | 基于多传感器融合的海洋数据采集系统
在海洋监测领域,基于无人艇能够实现高效、实时、自动化的海洋数据采集,从而为海洋环境保护、资源开发等提供有力支持。其中,无人艇的控制算法训练往往需要大量高质量的数据支持。然而,海洋数据采集也面临数据噪声和误差、数据融合…...
双周报Vol.67: 模式匹配支持守卫、LLVM 后端发布、支持 Attribute 语法...多项核心技术更新!
2025-03-10 语言更新 模式匹配支持守卫(Pattern Guard) 模式守卫可以通过在模式后追加 if ... 的语法结构来指定。有模式守卫的分支只有在被模式匹配的值满足对应模式,并且模式守卫为真的情况下才会执行。如果模式守卫为假,则会…...
深入探索 Java Stream
目录 引言一、Java Stream 基础二、Java Stream 常用操作的语法结构及示例三、Java Stream 的应用场景四、总结 引言 在 Java 编程领域,随着数据量的不断增长以及对高效数据处理需求的日益迫切,Java 8 引入的 Stream API 成为了开发者们的得力助手。Str…...
搜广推校招面经四十六
Minimax llm&广告推荐算法 一、反向梯度下降的数学推导(以逻辑回归为例) 1.1. 模型定义 假设模型为逻辑回归,输入特征为 x ∈ R d \mathbf{x} \in \mathbb{R}^d x∈Rd,权重参数为 w ∈ R d \mathbf{w} \in \mathbb{R}^d …...
【Java 和 Scala】-- Java 与 Scala 的 Assert 断言对比
目录 Java 与 Scala 的 Assert 断言对比 1. 什么是 Assert(断言)? 2. 断言的使用场景 3. Java 断言示例 3.1 Java 断言的基本用法 3.2 Java 启用断言 4. Scala 断言示例 4.1 Scala 断言的基本用法 4.2 Scala 断言默认行为 5. Java 与…...
嵌入式软件测试的东方智慧:WinAMS工具的技术哲学与实践启示——一名汽车电子工程师的七年工具演进观察
引言:在丰田精益生产线上诞生的测试哲学 2017年参与某日系车企的ECU(电子控制单元)联合开发时,我第一次在名古屋工厂见到产线旁部署的WinAMS测试站。不同于欧美工具强调的“全流程覆盖”,这个诞生于日本制造业精益文化…...
MCP-代码解读TypeScript版本
MCP-代码解读TypeScript版本 文章目录 MCP-代码解读TypeScript版本1-参考网址2-TypeScript代码3-代码解读1-[非重点]定义函数2-[非重点]定义工具说明3-[重点]运行MCP服务 1-参考网址 B站视频参考 2-TypeScript代码 import { McpServer } from "modelcontextprotocol/sd…...
写了一个二叉树构造函数和画图函数,方便debug
代码 class TreeNode(object):def __init__(self, val, leftNone, rightNone):self.val valself.left leftself.right rightdef construct_tree(nodes):if not nodes:return Noneroot TreeNode(nodes[0])queue [root]index 1while index < len(nodes):node queue.p…...
docker 小记
一、卸载 查看当前版本 docker -v2. 如果有,先停止docker systemctl stop docker如果是yum安装,卸载方式为 #已防版本冲突,直接卸载 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-lat…...
G-Star 公益行起航,挥动开源技术点亮公益!
公益组织,一直是社会温暖的传递者,但在数字化浪潮中,也面临着诸多比大众想象中复杂的挑战:项目管理如何更高效?志愿者管理又该如何创新?宣传推广怎么才能更有影响力?内部管理和技术支持又该如何…...
CMD批处理一些冷门命令,编写windows脚本常用?
场景1: 考虑一种情况,需要使用变量对变量循环替换这个时候,如果不加以一些特殊的设置,很有可能出现与预设的结果不相符的情况,这个时候可以通过设置这样一个命令来避免这个问题。 解决方式: setlocal ena…...
医疗AI测试实战:如何确保人工智能安全赋能医疗行业?
一、医疗AI测试的重要性 人工智能(AI)正广泛应用于医疗行业,如疾病诊断、医学影像分析、药物研发、手术机器人和智能健康管理等领域。医疗AI技术的应用不仅提高了诊断效率,还能降低误诊率,改善患者治疗效果。然而&…...
k9s入门及实战
概述 k9s,GitHub,是用于管理k8s集群的CLI,提供一个终端UI来与k8s集群进行交互。通过封装kubectl功能,k9s会以特定时间间隔监控k8s的变化,默认为2秒,并提供后续命令来与k8s资源进行交互,k9s可让…...
嵌入式硬件篇---手柄控制控制麦克纳姆轮子
文章目录 前言1. 变量定义2. 摇杆死区设置3. 模式检查4. 摇杆数据处理4.1 右摇杆垂直值(psx_buf[7])4.2 右摇杆水平值(psx_buf[8])4.3 左摇杆水平值(psx_buf[5])4.4 左摇杆垂直值(psx_buf[6]&am…...
redis增加ip白名单
Redis增加IP白名单 随着互联网的快速发展,网络安全问题也日益凸显。为了保护服务器安全,我们常常需要对访问服务器的IP地址进行限制。而Redis作为一种高性能的缓存数据库,可以用来实现IP白名单功能。本文将介绍如何使用Redis来增加IP白名单&…...
git commit messege 模板设置 (规范化管理git)
配置方法 git config --global core.editor vim (设置 Git 的默认编辑器为 Vim)在用户根目录下(~),创建一个.git_commit_msg文件,然后把下面的内容拷贝到文件中并保存。 [version][模块][类型]{解决xxx问题…...
Franka机器人ROS 2 发布:赋能机器人研究和行业应用
Franka机器人 ROS 2 发布:赋能机器人研究和行业应用 Franka ROS 2 发布:赋能机器人研究和行业应用 由zlem Odeh 于Franka Robotics 发布 在机器人操作系统 (ROS) 等技术和生态系统的推动下,机器人世界正以前所未有的速度发展。ROS 2 是广受…...
docker部署jenkins,安装使用一条龙教程
Jenkins k8s 实现CI/CD 一、简介 1. JenKins是什么? Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。 2. 什么是CI / CD…...
短视频下载去水印,用什么工具好?
去除视频和图片水印是许多用户的需求,尤其是在分享或保存内容时。以下是6款超好用的工具,帮助你轻松去除水印,享受纯净的视觉体验: 1. 易下载去水印小程序 特点: 操作简单,支持抖音、快手、小红书、哔哩哔哩…...
达梦数据库中插入导出图片的方法与应用
达梦数据库中插入导出图片的方法与应用 在数据库的实际应用场景中,图片存储是一项常见且重要的需求。以电商平台为例,商品展示图片是吸引消费者的关键元素;而在社交软件里,用户头像更是个人形象的直观体现。针对达梦数据库&#…...
推理大模型时代,TextIn ParseX助力出版业知识资产重构
在大语言模型(LLM)与推理能力快速进化的技术浪潮下,出版机构沉淀数十年的非结构化数据资产,包括书籍、期刊、手稿及历史档案,正在焕发新的机遇。基于文档解析、NLP与大模型的推理生成能力,我们在图书馆层层…...
怎么删除百度搜索下拉框里的搜索引导词
搜索引擎已成为我们获取信息的主要渠道之一。百度,作为中国最大的搜索引擎,其下拉框中的搜索引导词(也称联想词或推荐词)不仅提升了搜索效率,还常常反映了用户的搜索习惯和热门话题。然而,当这些下拉词包含…...
网络爬虫-1:发送请求+维持会话+代理设置/超时设置
1.基于get发送请求 2.基于post发送请求 3.维持会话 4.代理设置/超时设置 一.基于get发送请求 1.获取网页源码1 使用json库中的json.loads(),将json格式的字符串变为Python的字典形式 以下通过http://httpbin.org/get网址进行基本练习操作 import requests import json urlh…...
GPU加速的国密SM2算法实现
目录 GPU加速的国密SM2算法实现一、前言二、国密SM2算法概述2.1 国密SM2算法背景2.2 SM2的数学基础2.3 SM2数字签名流程三、GPU加速在SM2算法中的应用3.1 高性能运算需求3.2 GPU加速优势3.3 加速实现思路四、基于Python的SM2算法实现与GPU加速4.1 算法模块设计4.2 主要数学公式…...
Redis 2025/3/9
Redis主从集群 搭建主从集群 Redis并发能力非常强,单节点能够达到数万的并发。 不过对一些用户规模大,并发量比较高的应用来讲,数万并发不太够。这时候就用到redis的集群了。因为Redis中的数据通常读多写少,所以最常用的集群方…...
2min搞定~Mac Pro 编译安装 Nginx 1.8.1
2min搞定~Mac Pro 编译安装 Nginx 1.8.1 一安装流程简述1、编译源码前,获取要依赖的源码包2、进行编译、安装nginx3、启动 二、实战部分:测试demo1、nginx.conf改动2、代码改动3、访问 一安装流程简述 阿哟啊哟老铁,别嫌我啰嗦奥…...
要在Unreal Engine 5(UE5)中实现角色打击怪物并让怪物做出受击反应,
UE5系列文章目录 文章目录 UE5系列文章目录前言一、实现思路二、最终效果 前言 ue5角色受击没有播放受击动画,主角达到怪物身上没有反应 一、实现思路 要在Unreal Engine 5(UE5)中实现角色打击怪物并让怪物做出受击反应,你需要…...
C++蓝桥杯基础篇(十一)
片头 嗨~小伙伴们,大家好!今天我们来学习C蓝桥杯基础篇(十一),学习类,结构体,指针相关知识,准备好了吗?咱们开始咯~ 一、类与结构体 类的定义:在C中&#x…...
