最小VL视觉语言模型OmniVision-968M

魔塔链接:omnivision-968M

https://github.com/NexaAI/nexa-sdk?tab=readme-ov-file#install-option-1-executable-installer

介绍:

OmniVLM 是一个紧凑的、亚十亿(968M)参数的多模态模型,用于处理视觉和文本输入,并针对边缘设备进行了优化。在 LLaVA 架构的基础上进行了改进,它具有以下特点:

  • 9倍令牌减少 :将图像令牌从 729 减少到 81,大幅降低了延迟和计算成本。请注意,视觉编码器和投影部分的计算保持不变,但由于图像令牌跨度缩短了9倍,语言模型骨干的计算量减少了。
  • 可靠的结果 :使用来自可信数据的 DPO 训练来减少幻觉。

模型架构:

OmniVLM的架构由三个关键组件组成:

  • 基础语言模型:Qwen2.5-0.5B-Instruct作为处理文本输入的基础模型
  • 视觉编码器:SigLIP-400M以384分辨率和14×14的补丁大小工作,生成图像嵌入
  • 投影层:多层感知机(MLP)将视觉编码器的嵌入与语言模型的令牌空间对齐。与原始Llava架构相比,我们设计了一个减少9倍图像令牌的投影器。

视觉编码器首先将输入图像转换为嵌入,然后通过投影层处理以匹配Qwen2.5-0.5B-Instruct的令牌空间,从而实现端到端的视觉-语言理解。

模型训练:

我们通过三阶段训练管道开发了OmniVLM:

预训练:

初始阶段侧重于使用图像-标题对建立基本的视觉-语言对齐关系,在此期间仅解冻投影层参数来学习这些基本关系。

监督微调(SFT):

我们使用基于图像的问题回答数据集增强模型的上下文理解能力。这一阶段涉及在包含图像的结构化聊天历史记录上进行训练,使模型能够生成更加符合上下文的回答。

直接偏好优化(DPO):

最后阶段通过首先使用基础模型生成对图像的响应来实现DPO。然后,一个教师模型在保持与原始响应高度语义相似的同时,产生最小编辑的修正,特别关注准确性关键元素。这些原始输出和修正后的输出形成选择-拒绝配对。微调针对的是对模型输出进行必要的改进,而不改变模型的核心响应特性。

模型安装:

步骤1:安装所需的依赖项

复制代码
pip install torch torchvision torchaudio einops timm pillow
pip install git+https://github.com/huggingface/transformers
pip install git+https://github.com/huggingface/accelerate
pip install git+https://github.com/huggingface/diffusers
pip install huggingface_hubpip install sentencepiece bitsandbytes protobuf record

步骤2:安装Nexa-SDK(本地设备推理框架)

Nexa-SDK是一个开源的、支持文本生成、图像生成、视觉-语言模型(VLM)、音频-语言模型、语音转文字(ASR)和文字转语音(TTS)功能的本地设备推理框架。可以通过Python包或可执行安装程序进行安装。

复制代码
# 安装支持GPU的Nexa SDK
CMAKE_ARGS="-DGGML_CUDA=ON -DSD_CUBLAS=ON" pip install nexaai --prefer-binary --index-url https://nexaai.github.io/nexa-sdk/whl/cu124  --extra-index-url https://pypi.org/simple  --no-cache-dir

步骤3:运行OmniVision-968M模型

复制代码
nexa run omnivision

步骤4:使用OmniVision分析图像

假设有一张位于/home/user/images/horses.png的图像,我们可以运行OmniVision-968M来生成对内容的描述。将图像放置在指定路径并运行以下命令:

复制代码
>> /home/user/images/horses.png
>> Describe the image

模型回复:"图像展示了三匹马站在草地上,靠近水体。它们似乎正在从位于背景中的池塘中饮水。马匹彼此靠近,一匹马位于图像的左侧,另一匹在中心,第三匹马在右侧。场景传达出一种平和宁静的氛围,马匹享受着靠近水源的时光。"

预期使用场景:

OmniVLM 适用于 视觉问答 (回答关于图像的问题)和 图像字幕生成(描述照片中的场景),使其非常适合于设备端应用。

示例演示: 在 M4 Pro Macbook 上为一张 1046×1568 的图片生成字幕仅需 < 2 秒处理时间,并且只需要 988 MB RAM 和 948 MB 存储空间。

基准测试:

下面我们将展示一个图表,以说明 OmniVLM 与 nanollava 的性能对比。在所有任务中,OmniVLM 的表现都超过了之前世界上最小的视觉-语言模型。

我们在基准数据集上进行了一系列实验,包括 MM-VET、ChartQA、MMMU、ScienceQA、POPE 来评估 OmniVLM 的性能。

基准测试 Nexa AI OmniVLM v2 Nexa AI OmniVLM v1 nanoLLAVA
ScienceQA (评估) 71.0 62.2 59.0
ScienceQA (测试) 71.0 64.5 59.0
POPE 93.3 89.4 84.1
MM-VET 30.9 27.5 23.9
ChartQA (测试) 61.9 59.2 NA
MMMU (测试) 42.1 41.8 28.6
MMMU (评估) 40.0 39.9 30.4
相关推荐
IT_陈寒10 分钟前
Vite 5年迭代揭秘:3个核心优化让你的项目构建速度提升200%
前端·人工智能·后端
doubao3622 分钟前
审美积累,顶刊论文插图原理图、流程图
人工智能·经验分享·aigc·ai写作·绘图·文献综述·科研绘图
CG大魔王31 分钟前
SenseVoice微调
人工智能·语言模型·音频
爱编程的喵喵32 分钟前
Al Agent开发零基础构建复合智能体
人工智能·agent·智能体
Pocker_Spades_A32 分钟前
论文精读(六):微服务系统服务依赖发现技术综述
人工智能
catchadmin2 小时前
PHP 快速集成 ChatGPT 用 AI 让你的应用更聪明
人工智能·后端·chatgpt·php
编程武士6 小时前
从50ms到30ms:YOLOv10部署中图像预处理的性能优化实践
人工智能·python·yolo·性能优化
max5006006 小时前
基于Meta Llama的二语习得学习者行为预测计算模型
人工智能·算法·机器学习·分类·数据挖掘·llama
谷咕咕7 小时前
windows下python3,LLaMA-Factory部署以及微调大模型,ollama运行对话,开放api,java,springboot项目调用
java·windows·语言模型·llama
月疯7 小时前
OPENCV摄像头读取视频
人工智能·opencv·音视频