最小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
相关推荐
2501_924879361 小时前
口罩识别场景误报率↓79%:陌讯多模态融合算法实战解析
人工智能·深度学习·算法·目标检测·智慧城市
万粉变现经纪人1 小时前
如何解决pip安装报错ModuleNotFoundError: No module named ‘keras’问题
人工智能·python·深度学习·scrapy·pycharm·keras·pip
whaosoft-1431 小时前
51c自动驾驶~合集12
人工智能
Chan161 小时前
【智能协同云图库】第七期:基于AI调用阿里云百炼大模型,实现AI图片编辑功能
java·人工智能·spring boot·后端·spring·ai·ai作画
计算机科研圈1 小时前
字节Seed发布扩散语言模型,推理速度达2146 tokens/s,比同规模自回归快5.4倍
人工智能·语言模型·自然语言处理·数据挖掘·开源·字节
Christo32 小时前
TFS-2022《A Novel Data-Driven Approach to Autonomous Fuzzy Clustering》
人工智能·算法·机器学习·支持向量机·tfs
陈哥聊测试2 小时前
Coze开源了!意味着什么?
人工智能·ai·开源·项目管理·项目管理软件
FL16238631292 小时前
室内液体撒漏泄漏识别分割数据集labelme格式2576张1类别
人工智能·深度学习
哈__2 小时前
PromptPilot搭配Doubao-seed-1.6:定制你需要的AI提示prompt
大数据·人工智能·promptpilot