ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OpenGlass 多模型图像描述评测实战:以 prompts/series_1/img_26 为例剖析 VLM 测试管线

OpenGlass 多模型图像描述评测实战:以 prompts/series_1/img_26 为例剖析 VLM 测试管线 人工智能AI 应用智能硬件本地部署可穿戴AI Agent【免费下载链接】OpenGlassTurn any glasses into AI-powered smart glasses项目地址https://gitcode.com/GitHub_Trending/op/OpenGlass点击查看免费下载本文以 OpenGlass 仓库中prompts/series_1/img_26.md这份多模型图像描述Image Captioning评测样例为切入点完整解读其数据格式、生成管线与底层源码实现。读完你将掌握OpenGlass 如何用一套脚本批量驱动多个视觉语言模型VLM对同一张图片生成描述、如何对比不同模型moondream、llava 系列的输出差异以及这套评测逻辑如何在智能眼镜的实时识别 Agent 中被复用。一、img_26.md 是什么一份多模型图像描述评测记录prompts/series_1/img_26.mdprompts/series_1/img_26.md是一份由脚本自动生成、再由多个视觉语言模型分别作答的评测输出文件。它对应的输入图片是 prompts/series_1/img_26.jpeg600×800 的竖构图照片画面主角是一位戴着黑色学士帽的年轻人背景是带采光窗的室内建筑结构。该文件不是人工手写的说明文档而是 OpenGlass 测试管线的产物它的每一段正文都以####区块标题####开头分别对应一次独立的模型推理调用四段输出依次为区块标题实际调用模型####Description####moondream:1.8b-v2-fp16默认模型####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第一个Description区块之所以指向 moondream是因为 imageDescription.ts 的函数签名中默认参数即为model: KnownModel moondream:1.8b-v2-fp16调用时不传模型参数就会回落到该默认值。二、评测样例全貌四段 VLM 原始输出为保证评测数据可追溯这里完整保留 img_26.md 的四段英文原始输出这也是该文件作为测试记录的核心价值——输出不可篡改、可反复对照####Description#### The image shows a close-up view of the face of a man, with his nose prominently displayed. The man is wearing a black graduation cap and gown, which suggests that he has recently graduated from an educational institution. The background features a white ceiling and walls, giving the scene a clean and simple aesthetic. ####Description (llava-llama3)#### In the image, theres a young man with a playful expression on his face. Hes peeking out from behind a black graduation cap that hes holding in front of him. The cap has a gold-colored tassel attached to it, adding a touch of elegance to his attire. His eyes are focused on the camera, and he seems to be grinning, perhaps excited about an upcoming event or achievement. The background is relatively simple, featuring a white ceiling adorned with metal beams. A skylight punctuates the ceiling, allowing natural light to filter into the room. The overall scene suggests a sense of anticipation and celebration associated with graduation. ####Description (llava:34b-v1.6)#### The image shows a person in the foreground, but their face is cut off by what appears to be a graduation cap. The individual seems to be standing indoors, possibly inside an atrium or large open space given the structure of the ceiling with exposed beams and ductwork visible above them. The lighting is diffused, suggesting fluorescent lighting common in indoor structures. The overall quality of the image is low, making it difficult to discern specific details about the persons attire or the environment beyond what is immediately evident. ####Description (moondream:1.8b-v2-fp16)#### The image shows a man wearing glasses and a black graduation cap, with his face fully visible from the front. He appears to be taking a selfie or capturing a photo of himself in an interesting angle that captures his upper body along with his facial features. The background includes a white wall, possibly a window or another room setting, but it is not clearly discernible.被测样例图片一位戴学士帽的年轻人的特写背景为带采光窗的室内结构img_26.jpeg 原图。三、生成管线剖析prompts/generate.ts 如何批量产出评测文件img_26.md 不是手工整理的而是由 prompts/generate.ts 一次性批量生成。理解这个脚本就理解了整个prompts/series_1/目录的由来。其核心流程分四步扫描目录遍历prompts/下的所有子目录如series_1收集所有.jpeg图片并把输出文件路径统一替换为同名.md第 12–24 行顺序执行评测组通过runTest(title, testFn)抽象依次执行四组图像描述测试每组结果以####标题####\n输出\n追加到该图片对应的.md内容中第 26–51 行被注释的模糊度测试脚本中还预留了####Blurry####区块的测试调用 imageBlurry.ts当前版本处于注释状态说明评测维度可以按需扩展写回文件全部模型跑完后将累积的 outputs 写回.md文件第 60–62 行。四个评测组的调用方式恰好对应 img_26.md 中的四个区块await runTest(Description, async (img) await imageDescription(img)); await runTest(Description (llava-llama3), async (img) await imageDescription(img, llava-llama3)); await runTest(Description (llava:34b-v1.6), async (img) await imageDescription(img, llava:34b-v1.6)); await runTest(Description (moondream:1.8b-v2-fp16), async (img) await imageDescription(img, moondream:1.8b-v2-fp16));可见评测管线只做了一件事同一输入、多模型、多轮次推理输出落盘为可对比的文本记录。它用cli-progress进度条在命令行展示批量进度配合package.json中的prompts: ts-node ./prompts/generate.ts脚本package.json一条yarn prompts即可重跑全量评测。四、核心调用链imageDescription → ollamaInference评测与产品共用的核心函数是 imageDescription.ts 中的imageDescription。它构建了一套固定的多模态对话模板system 指令You are a very advanced model and your task is to describe the image as precisely as possible. Transcribe any text you see.要求尽可能精确描述并转写图中文字user 内容Describe the scene并携带images: [src]将图片字节直接嵌入消息默认模型moondream:1.8b-v2-fp16。随后进入 ollama.ts 的ollamaInference这一步完成了对 Ollama REST API 的实际请求包含几个值得注意的实现细节Base64 编码图片以Uint8Array字节形式传入经 base64.ts 的toBase64逐字节转成 base64 字符串后放入images字段符合 Ollama/api/chat的多模态输入约定文本归一化trimIdenttrimIdent.ts会剔除消息中公共的前导空格避免多行模板文本破坏请求体指数退避重试请求被包装进backofftime.ts默认最小延迟 250ms、最大延迟 1000ms、最大失败次数 50 次网络抖动或服务端过载时自动重试而非直接失败关闭流式请求体固定stream: false一次请求拿完整响应服务端地址来自环境变量keys.ollama对应EXPO_PUBLIC_OLLAMA_API_URLkeys.tsREADME 中给出的参考值是http://localhost:11434/api/chat。调用链可概括为generate.ts / Agent.addPhoto └── imageDescription(img, model) └── ollamaInference({ model, messages[{system}, {userimages}] }) └── axios.post(keys.ollama, { stream:false, model, messages }) └── backoff 指数退避重试 → trimIdent(响应文本)五、可用的视觉模型清单KnownModel评测脚本中出现的模型只是 OpenGlass 支持能力的一个子集ollama.ts 中定义的KnownModel联合类型才是完整清单export type KnownModel | llama3 | llama3-gradient | llama3:8b-instruct-fp16 | llava-llama3 | llava:34b-v1.6 | moondream:1.8b-v2-fp16 | moondream:1.8b-v2-moondream2-text-model-f16从中可以看出项目的模型选型思路既有纯文本的llama3系列用于文字理解/问答也有三个多模态视觉模型——llava-llama3、llava:34b-v1.6和moondream系列。由于imageDescription只接受KnownModel类型传入未知模型名会在编译期被 TypeScript 拦截这保证了评测与产品运行时的模型名合法。在智能眼镜的低功耗、小显存设备场景下README 明确建议优先拉取moondream:1.8b-v2-fp16ollama pull moondream:1.8b-v2-fp16可见该模型是本项目默认的轻量视觉主力。六、多模型对比从同一张图片看 VLM 的差异与评测价值对照 img_26.md 的四段输出可以观察到明显的模型差异这正是评测管线的意义所在帽子的空间关系判断分歧Description认为帽子戴着wearingllava-llama3 认为是举在面前探出头peeking out from behind a graduation cap that hes holdingllava:34b-v1.6 则判断脸被帽子截断face is cut off by the capmoondream 又回到戴着。结合原图画面中帽子与人物面部位置关系较特殊原图在采集时可能带旋转各模型对前景遮挡关系的解读出现了实质性分歧背景认知差异Description与 moondream 倾向于白色墙壁/简洁背景而 llava 两个版本均识别出带金属梁与管道的中庭/大空间天花板结构——后者与原图内容更吻合说明大参数模型对室内场景结构的还原能力更强细节捕捉差异只有 moondream 提到戴着眼镜只有 llava-llama3 注意到金色流苏与人物表情质量自我评估llava:34b-v1.6 主动输出overall quality of the image is low说明它感知到了输入图像的清晰度/角度问题这是其他模型未提及的同一模型的非确定性Description与moondream:1.8b-v2-fp16两个区块调用的是同一个模型但输出并不一致。从这一事实可以推断采样过程带有随机性temperature 未设为 0因此评测结论需要多次运行取稳定趋势而非单次输出定论。这些差异说明单一模型的单次描述不能作为可靠事实OpenGlass 以多模型 落盘对比的方式评测视觉能力正是为后续 Agent 的决策如 Agent.ts 中把描述拼接后交给 LLM 回答用户问题提供更稳健的文本基础。七、从评测到产品图像描述在智能眼镜 Agent 中的落地评测管线和产品逻辑共用同一套imageDescription函数。在真实运行时DeviceView.tsx 通过 Web Bluetooth 订阅 ESP32 固件推送的照片分片按0xff 0xff结束标记拼包每 5 秒触发一次拍照写入photoControlCharacteristic的0x05值收到完整照片后经rotateImage旋转 270° 存入photos列表。随后 Agent.ts 的addPhoto会为每张照片调用imageDescription(p)生成描述并缓存进#photos内部用AsyncLock串行化避免并发推理挤爆本地 Ollama当用户输入问题时answer(question)把历史所有图片描述拼成Image #0 ... Image #n的文本交给llamaFind内部是 Groq 上的llama3-70b-8192见 groq-llama3.ts做只依据描述、不臆测场景的问答最终答案再经 OpenAI TTSopenai.ts 的textToSpeech语音播报。因此img_26.md 这类评测文件并不仅是测试存档它验证的正是整个智能眼镜识别链路的第一环视觉→文本其输出质量直接决定后续问答与语音反馈的准确性。八、环境准备与复现步骤要复现本评测或在本地跑通同一套视觉链路按如下步骤操作安装依赖在仓库根目录执行npm install或yarn installExpo 项目依赖见 package.json多模态推理走 HTTP 请求核心依赖仅axios、ts-node、cli-progress配置密钥与服务地址在 keys.ts 中通过环境变量注入三个值——EXPO_PUBLIC_OLLAMA_API_URLOllama 服务地址自托管时填http://localhost:11434/api/chat、EXPO_PUBLIC_GROQ_API_KEY问答阶段 Groq 密钥、EXPO_PUBLIC_OPENAI_API_KEYTTS 与 GPT 密钥仅跑图像描述评测时只需 Ollama 地址拉取默认视觉模型终端执行ollama pull moondream:1.8b-v2-fp16如需对比 llava 系列再执行ollama pull llava-llama3、ollama pull llava:34b-v1.6运行评测执行yarn prompts脚本会遍历prompts/下所有series_*目录的.jpeg逐模型生成描述并写回对应.md文件注意重跑会覆盖旧记录与当前已提交的 img_26.md 一样格式保持####标题####分隔启动 Appnpm start或yarn start在本地以 Web 模式打开当前为 Expo 项目连接 XIAO ESP32S3 Sense 固件后即可体验拍照→描述→问答→语音的完整闭环。适用前提多模态推理依赖本机或局域网内的 Ollama 服务模型体积尤其llava:34b-v1.6对显存有要求若仅做图像描述评测moondream:1.8b-v2-fp16已足够轻量。评测结果受采样随机性影响建议多次运行后综合观察模型间的能力差异。赞分享人工智能AI 应用智能硬件本地部署可穿戴AI Agent【免费下载链接】OpenGlassTurn any glasses into AI-powered smart glasses项目地址https://gitcode.com/GitHub_Trending/op/OpenGlass点击查看免费下载相关推荐OpenGlass 多模态评测实录以 prompts/series_1/img_41 为例解读四模型图像描述对比OpenGlass 多模态评测实录以 prompts/series_1/img_41 为例解读四模型图像描述对比 在 OpenGlass 开源智能眼镜项目中人工智能AI 应用智能硬件本地部署可穿戴AI AgentOpenGlass 图像描述评测以 prompts/series_1/img_15.md 为例解析多模型视觉输出对比OpenGlass 图像描述评测以 prompts/series_1/img_15.md 为例解析多模型视觉输出对比 导读 prompts/series_1/人工智能AI 应用智能硬件本地部署可穿戴AI AgentOpenGlass 视觉模型图像描述评测解析以 prompts/series_1/img_12.md 为例的多模态模型对比OpenGlass 视觉模型图像描述评测解析以 prompts/series_1/img_12.md 为例的多模态模型对比 OpenGlass 是一款将普通眼人工智能AI 应用智能硬件本地部署可穿戴AI Agent上一篇Twemproxy与AWS ElastiCache完美集成高性能缓存代理终极指南下一篇告别硬编码用flutter_dotenv优雅管理Dio环境配置创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表