news 2026/9/17 2:42:17

omiGlass 多视觉语言模型图像描述评测实践:从 img_23 看一条 Ollama 视觉评测流水线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
omiGlass 多视觉语言模型图像描述评测实践:从 img_23 看一条 Ollama 视觉评测流水线

omiGlass 多视觉语言模型图像描述评测实践:从 img_23 看一条 Ollama 视觉评测流水线

【免费下载链接】FriendAI that sees your screen, listens to your conversations and tells you what to do项目地址: https://gitcode.com/GitHub_Trending/fr/Friend

本指南以 omiGlass/prompts/series_1/img_23.md 为切入点,剖析 omiGlass 智能眼镜项目中"同一张图片、四个视觉语言模型并行描述"的评测数据集是如何生成的。你将掌握该评测文件的结构规范、底层 Ollama 推理调用链(imageDescription.ts 与 ollama.ts)、四模型输出的差异分析方法,以及如何在本地复现与扩展这条评测流水线。

一、img_23.md 是什么:一份多模型图像描述评测记录

在 omiGlass 仓库中,omiGlass/prompts/series_1/ 目录存放着一批img_N.jpeg原图与一一对应的img_N.md评测文件。img_23.md就是其中一页:它不包含任何人工标注,而是由四个不同视觉语言模型(VLM)对同一张 600×800 的建筑室内照片生成的描述文本,以####模型名####作为分节标题,依次排列。其完整格式如下(即原文档全部内容):

  • ####Description####:默认模型的输出。
  • ####Description (llava-llama3)####:llava-llama3 的输出。
  • ####Description (llava:34b-v1.6)####:llava:34b-v1.6 的输出。
  • ####Description (moondream:1.8b-v2-fp16)####:显式指定 moondream 模型的输出。

这种"标题 + 描述文本"的扁平格式由评测脚本直接拼接生成(见下文 generate.ts),本质上是一份可读、可 diff、可被后续 LLM 检索引用的评测语料,而非人写文档。

二、原文档完整内容:四个模型的原始输出

为保证事实准确,以下完整摘录 img_23.md 的四段模型输出(未做任何删改):

####Description####(默认模型 moondream:1.8b-v2-fp16)

The image features a large, open space with an industrial-style ceiling. The ceiling is made of metal and has a grid pattern on it, giving the area a unique appearance. A person can be seen in the background, possibly observing or working within this space.

####Description (llava-llama3)####

The image captures a unique perspective of the interior of an architectural structure. The dominant color in the frame is yellow, which is the exterior wall of the building. This wall is made up of small square panels arranged in a grid-like pattern, giving it a sense of uniformity and order.

Two large metal beams run diagonally across the image from the top left to the bottom right corner. These beams, coupled with the triangular shape of the roof, create an interesting geometric contrast against the yellow wall.

On the right side of the image, there's a blurred face partially visible in the background. This adds a touch of mystery and intrigue to the scene, making one wonder about the identity of this person and what they might be doing in this setting.

Overall, the image presents an intriguing blend of architectural elements and subtle human presence, set against a vibrant yellow backdrop. It's a snapshot that invites viewers to explore further and unravel its story.

####Description (llava:34b-v1.6)####

The image appears to be taken from a low angle, looking upwards towards what could be the interior of a building with an exposed metal framework. The framework consists of rafters or beams that intersect at various angles, forming a geometric pattern against the sky. There are no texts visible in this image. The lighting suggests it's daytime as sunlight is streaming through the structure, casting shadows and highlighting the metallic surfaces. It seems like a candid shot capturing an architectural detail rather than a posed composition.

####Description (moondream:1.8b-v2-fp16)####(显式指定)

The image features a high ceiling with metal beams that are crossed, creating an interesting architectural design. A person can be seen looking down from the top of the building through these beams, adding a sense of scale and perspective to the scene. The background is not described in detail but adds depth to the overall composition, suggesting the presence of other buildings or structures nearby.

三、评测流水线:generate.ts 如何批量产出这些文件

这些 .md 文件并非手工整理,而是由 omiGlass/prompts/generate.ts 一次性批量生成。该脚本的逻辑非常清晰:

  1. 读取prompts目录下的所有子目录(即series_1等系列),收集其中全部.jpeg图片,并预先规划好输出路径——把.jpeg替换为.md(见 generate.ts)。
  2. 定义runTest(title, test)工具函数:依次对每张图片执行测试,将输出以'####' + title + '####\n'作为分节头累加到outputs字符串中(见 generate.ts)。
  3. 依次运行四轮测试(见 generate.ts):
    • Description:调用imageDescription(img),使用默认模型;
    • Description (llava-llama3):显式传入llava-llama3
    • Description (llava:34b-v1.6):显式传入llava:34b-v1.6
    • Description (moondream:1.8b-v2-fp16):显式传入moondream:1.8b-v2-fp16
  4. 将拼接好的多段结果整体写入对应的.md文件(见 generate.ts)。

从源码结构可以推断一个值得注意的细节:第一轮Description与第四轮moondream:1.8b-v2-fp16使用的是同一个模型(因为imageDescription的默认参数就是moondream:1.8b-v2-fp16,见 imageDescription.ts)。而 img_23.md 中这两段输出内容并不相同——这说明在非确定性采样下,同一 VLM 对同一张图重复推理也可能给出措辞与细节不同的描述。评测时留意这一点,有助于区分"模型间差异"与"模型内随机性"。

四、底层推理链路:imageDescription → Ollama HTTP 客户端

生成 .md 的核心函数是 imageDescription.ts 中的imageDescription(src, model)。其工作方式如下:

  • 默认模型为moondream:1.8b-v2-fp16,可传入KnownModel联合类型中的任意模型名。
  • 构造两条消息后交给ollamaInference(见 imageDescription.ts):
    • system 消息:'You are a very advanced model and your task is to describe the image as precisely as possible. Transcribe any text you see.'——即"尽可能精确描述,并转写画面中出现的任何文字"。llava:34b-v1.6 输出中主动声明 "There are no texts visible in this image",正是对该提示词指令的响应。
    • user 消息:'Describe the scene',并附带以Uint8Array形式传入的图片像素数据。

再往下是真正的推理调用 ollama.ts 中的ollamaInference

  • 将每条消息的图片通过toBase64()转为 base64 字符串(见 ollama.ts),这是 Ollama Chat API 对多模态消息的标准要求。
  • 通过 axios 向keys.ollama发起 POST,请求体为{ stream: false, model, messages }(见 ollama.ts),stream: false表示等待完整响应而非流式返回。
  • 整个请求被包在backoff()中(见 ollama.ts),失败时按退避策略重试,提升批量评测的稳定性。
  • 最终从响应response.message.content提取文本,并经trimIdent去除多余缩进后返回。

服务地址与密钥统一收敛在 keys.ts:

  • EXPO_PUBLIC_OLLAMA_API_URL:Ollama 服务地址,README 中默认http://localhost:11434/api/chat
  • EXPO_PUBLIC_GROQ_API_KEY:Groq 密钥,供llamaFind问答阶段使用;
  • EXPO_PUBLIC_OPENAI_API_KEY:OpenAI 密钥,供语音模块使用。

五、四模型输出对比:从 img_23 读出的评测要点

将四段输出与 img_23.jpeg 原图(暖黄色面板屋顶、金属斜梁框架、玻璃天窗透出日光)对照,可以提炼出这套评测语料的典型分析维度:

1. 结构共识强。四个模型都正确识别出"室内/工业风格空间 + 金属网格或斜交梁结构"这一核心要素,说明在主体结构描述上,1.8B 量级的 moondream 与 34B 量级的 llava 都能给出可靠结论。

2. 主色调捕捉差异明显。llava-llama3 明确点出 "The dominant color in the frame is yellow",与原图暖黄色面板高度吻合;其余三个模型则把注意力放在金属框架上,未突出色彩。从源码看,各模型使用的提示词完全相同,因此这种差异可归因于模型自身的注意力偏好。

3. 人物/小目标识别是最大分歧点。llava-llama3 声称右侧有 "blurred face",默认 moondream 认为背景 "a person can be seen",显式 moondream 更进一步描述为 "looking down from the top";而 llava:34b-v1.6 完全没有提及人物。对画面中模糊、占比较小的目标,各 VLM 存在"过度解释"与"选择性忽略"两种截然不同的行为——这正是评测语料最有价值的信息。

4. 额外信息的主动性。llava:34b-v1.6 是唯一主动报告"画面无文字"的模型,体现了其对 OCR 指令的遵循度;llava-llama3 则额外给出了构图层面的主观评价("adds a touch of mystery"),说明其输出风格更偏向叙事性描述。

六、从评测到产品:图像描述如何支撑眼镜问答

这套评测并非孤立实验。在 Agent.ts 中,imageDescription被直接用于产品逻辑:眼镜端拍照后,逐张调用imageDescription(p)生成描述并存入内存队列;当用户提问时,将所有照片描述拼接,交给llamaFind(question, combined)(见 Agent.ts),后者调用 Groq 上的llama3-70b-8192大模型,在"只依据图片描述回答、不得泛化"的约束下给出答案(见 groq-llama3.ts)。因此,评测文件中模型描述的准确性、一致性,直接决定了眼镜端"看图回答问题"的体验上限——这也解释了为何项目要把多模型描述沉淀为可复现的评测语料。

七、本地复现与扩展评测

结合 README.md 与源码,复现该评测的完整路径如下:

  1. 准备环境:进入omiGlass目录执行npm install(或yarn install);本机安装并启动 Ollama。
  2. 配置密钥:复制.env.template.env,填入EXPO_PUBLIC_OLLAMA_API_URL(默认http://localhost:11434/api/chat),如需跑llamaFind再配置 Groq/OpenAI 密钥(见 keys.ts)。
  3. 拉取模型:至少执行ollama pull moondream:1.8b-v2-fp16;要复现完整四模型评测,还需准备llava-llama3llava:34b-v1.6
  4. 运行评测脚本:执行 generate.ts,脚本会自动遍历prompts下所有子目录的.jpeg,跑完四轮后把结果写回同名.md
  5. 扩展新模型:在 ollama.ts 的KnownModel联合类型中追加模型名,并在generate.ts中新增一轮runTest调用即可,无需改动其他代码。

八、局限与注意点

从源码与输出反推,这套评测存在几点需要读者注意的边界:

  • 无 ground truth 标注.md中只有模型输出、没有人工标准答案,评测结论依赖读者自行对照原图研判;
  • 同一模型重复运行:默认轮与显式 moondream 轮是同一模型,不宜把两段差异当作"模型间对比"使用;
  • 依赖本地 Ollama:批量评测的吞吐与稳定性取决于 Ollama 服务,backoff重试虽能缓解偶发失败,但长队列耗时仍然可观;
  • 描述并非绝对事实:如人物识别所示,小目标与模糊区域易出现幻觉,生产环境应对imageDescription的输出保持审慎。

对想要构建"拍照→理解→问答"类视觉 Agent 的开发者而言,img_23.md 及其背后的流水线提供了一个轻量、可复现的多模型评测范式:一份脚本、一套提示词、数行输出,即可横向评估候选 VLM 对同一场景的描述能力。

【免费下载链接】FriendAI that sees your screen, listens to your conversations and tells you what to do项目地址: https://gitcode.com/GitHub_Trending/fr/Friend

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 2:40:48

2026年四大3D软件新版本实测:Blender/C4D/Maya/3ds Max功能对比与选型

做 3D 这一行,每年的大版本更新都像一次期末考试。前两天我刚把手头一个硬表面道具从 Blender 切到 C4D 补渲染,又需要把部分资产丢回 Maya 给绑定组,中途还被 3ds Max 的同事拉去救了一次启动闪退。短短一周,四款主流 3D 建模软件…

作者头像 李华
网站建设 2026/9/17 2:39:56

下载文件夹三年堆积?本地规则引擎+哈希去重+索引整理实战

1. 三年没动的下载文件夹,到底是怎么堆成一座垃圾山的我那个下载文件夹,最后一次认真整理大概是在三年前的某个周末。之后它就进入了"只进不出"的状态:装上新的浏览器、换过两次电脑、迁移过一盘数据,唯一没变的就是它。…

作者头像 李华
网站建设 2026/9/17 2:39:51

Spring Boot外卖点餐系统实战:从表结构设计到订单状态机实现

简介:基于 Spring Boot 的外卖点餐系统毕业设计项目包,面向 Java 方向毕业设计学生及需要快速搭建外卖点餐项目的开发者,定位是一套包含源码与数据库的完整参考方案。该项目已获导师指导并通过,属于可用于答辩展示的高分作品。压缩…

作者头像 李华
网站建设 2026/9/17 2:39:35

MATLAB多智能体时变编队控制闭环验证系统

简介:本资源是一套基于IEEE TCST经典论文实现的多智能体编队控制Matlab仿真程序,面向控制理论、无人系统协同及一致性算法方向的初学者与科研入门者,聚焦无人机/移动机器人集群的时变队形控制问题。压缩包共7个文件,含4个核心m脚本…

作者头像 李华
网站建设 2026/9/17 2:39:05

用unarj解开老归档:ARJ格式与历史数据救援实战

这周帮客户恢复一台2003年的老财务服务器,光驱里翻出一堆.a01、.a02后缀的怪文件,tar 解不开,7z 直接报错,unzip 更是连看都不看。折腾了二十分钟,最后是一个很多人听都没听过的老命令把数据救回来的——unarj。所以这…

作者头像 李华