综合介绍
InternVL 是由上海人工智能实验室(OpenGVLab)开发的一个开源多模态大模型项目,托管在 GitHub 上。它集成了视觉和语言处理能力,支持图像、视频和文本的综合理解与生成。InternVL 的目标是打造一个媲美商业模型(如 GPT-4o)的开源替代品,广泛应用于视觉感知、跨模态检索和多模态对话等任务。该项目以其强大的视觉编码器、动态高分辨率支持和高效训练策略著称,模型规模从 1B 到 78B 参数不等,适合从边缘设备到高性能服务器的多种应用场景。代码、模型和数据集均开放,遵循 MIT 许可,鼓励研究者和开发者自由使用与改进。
功能列表
- 多模态对话:支持图像、视频和文本输入,生成自然语言回答,适用于聊天、问答和任务指导。
- 图像处理:动态处理高达 4K 分辨率的图像,支持图像分类、分割和物体检测。
- 视频理解:分析视频内容,进行零样本视频分类和文本-视频检索。
- 文档解析:处理复杂文档,擅长 OCR、表格识别和文档问答,适用于 DocVQA 等任务。
- 多语言支持:内置多语言文本编码器,支持 110+ 种语言的生成任务。
- 高效推理:通过 LMDeploy 提供简化的推理流程,支持多图像和长上下文处理。
- 数据集开放:提供 ShareGPT-4o 等大规模多模态数据集,包含图像、视频和音频。
使用帮助
安装流程
要在本地使用 InternVL,需要配置 Python 环境并安装相关依赖。以下是详细的安装步骤:
- 克隆仓库
在终端运行以下命令,获取 InternVL 源码:git clone https://github.com/OpenGVLab/InternVL.git cd InternVL
- 创建虚拟环境
使用 conda 创建 Python 3.9 环境并激活:conda create -n internvl python=3.9 -y conda activate internvl
- 安装依赖
安装项目所需依赖,默认包含多模态对话和图像处理的必要库:pip install -r requirements.txt
如果需要额外的功能(如图像分割或分类),可手动安装特定依赖:
pip install -r requirements/segmentation.txt pip install -r requirements/classification.txt
- 安装 Flash-Attention(可选)
为加速模型推理,建议安装 Flash-Attention:pip install flash-attn==2.3.6 --no-build-isolation
或者从源码编译:
git clone https://github.com/Dao-AILab/flash-attention.git cd flash-attention git checkout v2.3.6 python setup.py install
- 安装 MMDeploy(可选)
如果需要部署模型到生产环境,安装 MMDeploy:pip install -U openmim mim install mmdeploy
使用方法
InternVL 提供多种使用方式,包括命令行推理、API 服务和交互式演示。以下以 InternVL2_5-8B 模型为例,介绍主要功能的操作流程:
1. 多模态对话
InternVL 支持图像和文本输入的对话。以下是使用 LMDeploy 进行推理的示例:
- 准备模型和图像:确保已下载模型(如
OpenGVLab/InternVL2_5-8B
)并准备一张图像(例如tiger.jpeg
)。 - 运行推理:执行以下 Python 代码,描述图像内容:
from lmdeploy import pipeline, TurbomindEngineConfig from lmdeploy.vl import load_image model = 'OpenGVLab/InternVL2_5-8B' image = load_image('https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg') pipe = pipeline(model, backend_config=TurbomindEngineConfig(session_len=8192)) response = pipe(('描述这张图片', image)) print(response.text)
- 结果:模型会输出图像的详细描述,例如“图片中是一只站立的老虎,背景是绿色草地”。
2. 多图像处理
InternVL 支持同时处理多张图像,适合比较或综合分析:
- 代码示例:
from lmdeploy.vl.constants import IMAGE_TOKEN image_urls = [ 'https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/demo/resources/human-pose.jpg', 'https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/demo/resources/det.jpg' ] images = [load_image(url) for url in image_urls] prompt = f'Image-1: {IMAGE_TOKEN}\nImage-2: {IMAGE_TOKEN}\n描述这两张图片' response = pipe((prompt, images)) print(response.text)
- 结果:模型会分别描述每张图片的内容,并可能总结它们之间的关系。
3. 文档解析
InternVL 在文档问答(DocVQA)和表格识别任务中表现优异。操作流程如下:
- 准备文档图像:上传包含文字、表格或图表的图像。
- 提问:使用类似“提取表格中的数据”或“总结文档内容”的提示词。
- 代码示例:
image = load_image('document.jpg') response = pipe(('提取图片中表格的内容', image)) print(response.text)
- 结果:模型会返回表格的结构化数据或文档的摘要。
4. 部署 API 服务
为方便生产环境使用,InternVL 支持通过 LMDeploy 部署 RESTful API:
- 启动服务:
lmdeploy serve api_server OpenGVLab/InternVL2_5-8B --server-port 23333
- 访问 API:使用 OpenAI 兼容的接口发送请求,例如通过
curl
或 Python 客户端调用模型。
5. 在线演示
OpenGVLab 提供在线演示平台(https://internvl.opengvlab.com/
),无需安装即可体验:
- 访问网站,上传图像或视频,输入问题。
- 模型会实时返回结果,适合快速测试。
特色功能操作
- 动态高分辨率:InternVL 自动将图像分割为 448x448 的小块,支持高达 4K 分辨率。用户无需手动调整图像大小,直接上传即可。
- 视频理解:上传视频文件,结合提示词(如“总结视频内容”),模型会分析关键帧并生成描述。
- 多语言生成:在提示词中指定语言(如“用法语回答”),模型可生成对应语言的回答。
注意事项
- 确保 GPU 内存充足(8B 模型需约 16GB GPU 内存)。
- 处理多图像或长视频时,增大上下文窗口(
session_len=16384
)。 - 检查依赖版本,避免兼容性问题。
应用场景
- 学术研究
研究人员使用 InternVL 分析科学图表、处理实验图像或解析论文中的表格数据。模型的高精度 OCR 和文档理解能力大幅提高数据提取效率。 - 教育辅助
教师和学生利用 InternVL 解答图像相关的作业问题,例如解释历史图片或分析地理图表。模型的多语言支持适合国际化教育场景。 - 企业文档处理
企业用 InternVL 自动化处理扫描文档、合同或发票,提取关键信息并生成报告,节省人工成本。 - 内容创作
内容创作者通过 InternVL 分析视频素材,生成脚本或字幕,提升创作效率。 - 智能客服
客服系统集成 InternVL,处理用户上传的图片(如产品故障照片),快速诊断问题并提供解决方案。
QA
- InternVL 支持哪些模型规模?
InternVL 提供从 1B 到 78B 参数的模型,适合不同设备。1B 模型适于边缘设备,78B 模型性能媲美 GPT-4o。 - 如何处理高分辨率图像?
模型自动将图像分割为 448x448 的小块,支持 4K 分辨率。直接上传图像,无需预处理。 - 是否支持视频分析?
是的,InternVL 支持零样本视频分类和文本-视频检索。上传视频并输入提示词即可。 - 模型是否开源?
InternVL 完全开源,代码和模型权重在 GitHub 上提供,遵循 MIT 许可。 - 如何优化推理速度?
安装 Flash-Attention 并使用 GPU 加速。调整session_len
参数以适配长上下文。