开源协议: MIT
任务类型: 图像特征提取
基础模型: OpenGVLab/InternViT-300M-448px
基础模型关系: 微调版本
InternViT-300M-448px-V2_5模型
[📂 GitHub] [📜 InternVL 1.0论文] [📜 InternVL 1.5论文] [📜 Mini-InternVL论文] [📜 InternVL 2.5论文]
[🆕 博客] [🗨️ 在线演示] [🤗 HF演示] [🚀 快速开始] [📖 文档]
模型介绍
我们隆重推出InternViT-300M-448px-V2_5
模型,这是基于InternViT-300M-448px
的重大升级版本。通过采用ViT增量学习与NTP损失(阶段1.5),视觉编码器显著提升了特征提取能力,能够捕捉更全面的视觉信息。这一改进在LAION-5B等大规模网络数据集中代表性不足的领域(如多语言OCR数据和数学图表等)表现尤为突出。

InternViT 2.5系列模型
下表展示了InternViT 2.5系列模型的概览:
模型名称 |
模型链接 |
InternViT-300M-448px-V2_5 |
🤗 链接 |
InternViT-6B-448px-V2_5 |
🤗 链接 |
模型架构
如下图所示,InternVL 2.5延续了前代InternVL 1.5和2.0的"ViT-MLP-LLM"架构范式。新版本中,我们整合了经过增量预训练的InternViT与包括InternLM 2.5和Qwen 2.5在内的多种预训练大语言模型,通过随机初始化的MLP投影器进行连接。

与之前版本相同,我们应用了像素重组操作,将视觉标记数量减少至原始的四分之一。同时采用类似InternVL 1.5的动态分辨率策略,将图像分割为448×448像素的图块。从InternVL 2.0开始的关键改进是新增了对多图像和视频数据的支持。
训练策略
多模态数据的动态高分辨率处理
在InternVL 2.0和2.5中,我们扩展了动态高分辨率训练方法,增强了处理多图像和视频数据集的能力。

-
单图像数据:所有图块配额n_max
分配给单张图像以获得最大分辨率。视觉标记使用<img>
和</img>
标签包裹。
-
多图像数据:图块配额n_max
分配给样本中的所有图像。每张图像标注辅助标签如Image-1
,并用<img>
标签包裹。
-
视频数据:每帧调整至448×448分辨率。帧序列标注如Frame-1
,处理方式与图像类似。
单模型训练流程
InternVL 2.5的单模型训练流程分为三个阶段,旨在提升模型的视觉感知与多模态能力:

-
阶段1:MLP预热
仅训练MLP投影器,冻结视觉编码器和语言模型。采用动态高分辨率训练策略提升性能(虽增加成本)。此阶段确保跨模态对齐稳定性,为后续训练奠定基础。
-
阶段1.5:ViT增量学习(可选)
使用阶段1相同数据增量训练视觉编码器和MLP投影器。增强模型处理多语言OCR、数学图表等稀缺领域的能力。训练后的编码器可跨LLM复用,仅在新领域引入时需要此阶段。
-
阶段2:全模型指令微调
基于高质量多模态指令数据训练整个模型。严格数据质量控制防止LLM性能退化(如重复输出或错误响应)。此阶段完成后即结束训练。
视觉能力评估
我们对视觉编码器在不同领域和任务中的表现进行全面评估,主要分为两类:(1) 代表全局语义质量的图像分类;(2) 反映局部语义质量的语义分割。详细评估结果请参阅技术报告。
图像分类性能

不同版本InternViT的图像分类性能对比
使用IN-1K训练,并在IN-1K验证集及多个变体(IN-ReaL、IN-V2、IN-A、IN-R、IN-Sketch)上评估。报告线性探测和注意力池化探测的平均准确率。∆值反映两种方法的性能差距,较大∆值表明模型从简单线性特征转向复杂非线性语义表征。
语义分割性能

不同版本InternViT的语义分割性能对比
在ADE20K和COCO-Stuff-164K上评估线性探测、头部调优和全参数调优的mIoU分数。∆1反映头部调优与线性探测差距,∆2反映全参数调优差距。较大∆值表明模型表征能力向复杂非线性特征演进。
快速开始
[!警告]
🚨 注意:实际使用表明,InternViT V2.5系列更适合构建多模态大语言模型(MLLM),而非传统计算机视觉任务。
import torch
from PIL import Image
from transformers import AutoModel, CLIPImageProcessor
model = AutoModel.from_pretrained(
'OpenGVLab/InternViT-300M-448px-V2_5',
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
trust_remote_code=True).cuda().eval()
image = Image.open('./examples/image1.jpg').convert('RGB')
image_processor = CLIPImageProcessor.from_pretrained('OpenGVLab/InternViT-300M-448px-V2_5')
pixel_values = image_processor(images=image, return_tensors='pt').pixel_values
pixel_values = pixel_values.to(torch.bfloat16).cuda()
outputs = model(pixel_values)
开源协议
本项目采用MIT开源协议。
引用文献
若本项目对您的研究有所帮助,请考虑引用:
@article{chen2024expanding,
title={开源多模态模型的性能边界拓展:模型、数据与测试时缩放},
author={陈哲和王维云等},
journal={arXiv预印本},
year={2024}
}
(其余文献条目保持原格式不变)