[2024年12月16日] 我们的研究成果 《OmniVLM:面向高效端侧推理的令牌压缩、十亿参数以下视觉语言模型》 已正式发布于 Arxiv!🚀
[2024年11月27日] 模型升级: OmniVLM v3 模型的 GGUF 文件已更新至本 Hugging Face 仓库!✨
👉 欢迎通过 Hugging Face Space 体验这些令人兴奋的改进!
[2024年11月22日] 模型升级: OmniVLM v2 模型的 GGUF 文件已更新至本 Hugging Face 仓库!✨ 主要改进包括:
我们正根据您的宝贵反馈持续优化 OmniVLM-968M!更多精彩更新即将到来——敬请关注! ⭐
OmniVLM 是一款轻量化、十亿参数以下(968M)的多模态模型,可同时处理视觉与文本输入,专为边缘设备优化。基于 LLaVA 架构改进,其核心特性包括:
快速链接:
反馈渠道:欢迎通过 Discord 提交模型相关问题或建议
OmniVLM 适用于视觉问答(回答关于图像的提问)与图像描述生成(描述照片中的场景),是端侧应用的理想选择。
示例演示:
在 M4 Pro 芯片的 MacBook 上为 1046×1568 分辨率图像生成描述仅需 < 2 秒处理时间,且仅占用 988 MB 内存与 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 | 不适用 |
| MMMU (测试集) | 42.1 | 41.8 | 28.6 |
| MMMU (评估集) | 40.0 | 39.9 | 30.4 |
接下来我们将演示如何在您的设备上本地运行 OmniVLM。
第一步:安装 Nexa-SDK(本地设备端推理框架)
Nexa-SDK 是一个开源的本地设备端推理框架,支持文本生成、图像生成、视觉语言模型(VLM)、音频语言模型、语音转写(ASR)以及文本转语音(TTS)功能。可通过 Python 包或可执行安装程序进行安装。
第二步:在终端中运行以下代码
nexa run omniVLM OmniVLM的架构包含三个核心组件:
视觉编码器首先将输入图像转换为嵌入表示,随后由投影层处理以匹配Qwen2.5-0.5B-Instruct的标记空间,从而实现端到端的视觉语言理解。
我们通过三阶段训练流程开发OmniVLM:
预训练阶段: 该阶段专注于通过图像-标题对建立基础视觉-语言对齐关系,期间仅解冻投影层参数以学习这些基础关联。
监督微调(SFT)阶段: 使用基于图像的问答数据集增强模型的上下文理解能力。此阶段通过包含图像的结构化对话历史记录进行训练,使模型能生成更符合语境的响应。
直接偏好优化(DPO)阶段: 最终阶段通过基础模型生成图像响应后实施DPO。教师模型随后在保持与原始响应高度语义相似性的前提下,生成经过最小化编辑的修正版本,特别关注准确性关键要素。这些原始输出与修正输出构成"选择-拒绝"配对。微调专注于核心模型输出的本质改进,而不改变模型的核心响应特性。
OmniVLM目前处于早期开发阶段,我们正致力于解决现有局限性:
长期目标是将OmniVLM打造为完全优化、可用于生产环境的边缘AI多模态应用解决方案。