
什么是 InternVL
InternVL 是由 OpenGVLab 开发的一系列先进的多模态大型语言模型(Multimodal Large Language Models, MLLMs)。它旨在成为一个强大的视觉-语言基础模型,能够理解和处理包括图像和文本在内的多种类型的数据。InternVL 的目标是支持广泛的视觉任务,如图像描述、视觉问答(Visual Question Answering, VQA)、文档理解、图表理解、信息图问答、场景文本理解与 OCR 任务、科学与数学问题求解,以及文化理解和综合多模态能力。该项目旨在提供一个开源的、性能媲美甚至超越一些商业模型的替代方案,为研究人员和开发者提供强大的多模态智能基础。
InternVL 的功能
InternVL 作为一个多功能的视觉-语言模型,具备以下一系列强大的功能:
- 多模态理解: 能够同时理解和处理图像和文本信息,实现跨模态的知识融合和推理。
- 广泛的任务支持: 支持包括图像描述生成(Image Captioning)、视觉问答(VQA)、文档问答(Document VQA)、图表问答(Chart VQA)、信息图问答(Infographics QA)、场景文本理解(Scene Text Understanding)和光学字符识别(OCR)等多种任务。
- 强大的文档和图表理解能力: 在处理文档和图表相关的任务上表现出色,能够理解复杂的布局和数据关系。
- 数学和科学问题求解: 部分 InternVL 模型具备一定的数学和科学问题求解能力,能够理解和回答包含数学公式或科学概念的问题。
- 文化理解和综合多模态能力: 展现出在文化理解和整合多种模态信息方面的潜力。
- 支持动态分辨率图像: 能够处理高达 4K 分辨率的图像输入,适应不同场景的需求。
- 高效的推理能力: 提供了多种推理优化方法,包括 16 位浮点数(bf16/fp16)、8 位和 4 位量化,方便在不同硬件上部署。
- 流式输出: 支持文本的流式生成,可以实现更快的响应和更好的用户体验。
- 多轮对话能力: 部分 InternVL 模型支持多轮对话,能够进行更复杂的交互。
- 多种模型尺寸选择: InternVL 提供不同参数规模的模型,如 1B、2B、4B、8B 甚至更大的模型,以满足不同计算资源和性能需求的应用场景。
- 易于使用和集成: 提供了基于 Transformers 库的接口和快速上手指南,方便开发者集成到自己的项目中。
如何使用/快速开始
要开始使用 InternVL,您可以按照以下步骤进行操作:
- 安装必要的库: 确保您的环境中安装了 PyTorch 和 Transformers 库:
pip install torch transformers
您可能还需要安装其他依赖,如 GitHub 仓库中的
requirements.txt
文件所示。 - 加载模型和 Tokenizer: InternVL 提供了在 Hugging Face Hub 上的预训练模型。您可以使用
AutoModel
和AutoTokenizer
类加载模型和 tokenizer:from transformers import AutoTokenizer, AutoModel import torch path = "OpenGVLab/InternVL2-1B" # 替换为您想要使用的 InternVL 模型名称 model = AutoModel.from_pretrained(path, torch_dtype=torch.bfloat16, low_cpu_mem_usage=True, use_flash_attn=True, trust_remote_code=True).eval().cuda() tokenizer = AutoTokenizer.from_pretrained(path, trust_remote_code=True, use_fast=False)
请根据您的需求选择合适的模型路径,例如
OpenGVLab/InternVL-Chat-V1-2
或其他版本。 - 准备输入数据: 根据您要执行的任务准备输入数据。对于图像相关的任务,您可能需要使用 PIL 库加载图像并进行预处理。对于文本输入,使用 tokenizer 进行编码。
- 进行推理: 根据您选择的模型和任务类型,使用相应的方法进行推理。例如,对于纯文本对话,可以使用
model.chat()
方法;对于单轮图像问答,需要将图像特征和问题一起输入模型。具体的代码示例可以在 InternVL 的 GitHub 仓库和 Hugging Face 模型页面找到。例如,一个简单的单图单轮对话示例:from PIL import Image from transformers import CLIPImageProcessor image_processor = CLIPImageProcessor.from_pretrained(path) image = Image.open('./examples/image2.jpg').resize((448, 448)) pixel_values = image_processor(images=image, return_tensors='pt').pixel_values.to(torch.bfloat16).cuda() question = '\\nPlease describe the image shortly.' response = model.chat(tokenizer, pixel_values, question, generation_config={'max_new_tokens': 1024, 'do_sample': True}) print(f'User: {question}') print(f'Assistant: {response}')
- 查看和处理输出: 模型会生成文本回复。您可以根据您的应用场景对输出进行进一步处理。
InternVL 提供了详细的文档和示例代码,您可以在其 GitHub 仓库和 Hugging Face 模型页面找到更多关于不同任务的具体使用方法、数据格式要求以及高级特性的说明。同时,OpenGVLab 社区也提供了支持,您可以在社区中交流使用经验和寻求帮助。
本文采用 CC BY-NC 4.0 许可协议。商业转载、引用请联系本站获得授权,非商业转载、引用须注明出处。
链接:https://appmark.cn/sites/internvl.html -APPMARK
DeepFloydIF 是 Stability AI 推出的一款强大的文本到图像模型,基于 T5-XXL 语言模型,能精确生成图像并理解文本提示。 模型采用级联像素扩散方法,在 COCO 数据集上表现优越,具有高度写真性和文本集成能力。