当前位置: 首页 > news >正文

跟一张照片走完OpenGlass全流程:不到25美元的AI智能眼镜是如何炼成的

跟一张照片走完OpenGlass全流程:不到25美元的AI智能眼镜是如何炼成的

【免费下载链接】OpenGlassTurn any glasses into AI-powered smart glasses项目地址: https://gitcode.com/GitHub_Trending/op/OpenGlass

设想一个常见场景:你在活动上认识了一位新朋友,聊得投机,互换了微信。三分钟后你走回人群,却发现自己完全想不起他叫什么。这时候,如果眼镜能帮你把这张脸"记住",顺便在耳边轻轻补一句"他叫李雷,是做硬件的",你会不会觉得这才是智能眼镜该有的样子?

OpenGlass 就是为此而生的开源项目:用不到 25 美元的现成零件,把任何一副普通眼镜改造成可破解的 AI 智能眼镜。它能记录你的生活、记住你见过的人、识别物体、翻译眼前的文字,而且——整套代码、固件、图纸全部开源。你不需要相信厂商的营销话术,因为你可以亲手拆开它、读懂它、改造它。

25 美元,大概是一杯咖啡加一个汉堡的钱。而科技巨头们的同类产品,标价往往是它的百倍。它凭什么敢这么干?与其听我转述,不如跟着一张照片,把整个系统走一遍。

一张照片的完整旅程:从按下快门到开口说话

在 OpenGlass 里,"看见"不是一个瞬间,而是一条清晰的流水线。我们以一次拍照为例,看看数据是如何流动的。

第一站:镜腿上的快门

眼镜上的 ESP32 S3 微控制器(一个约 15 元的国产芯片,双核 240MHz,自带 Wi-Fi 和蓝牙)驱动着一颗 OV2640 摄像头。这颗摄像头的分辨率只有 30 万像素——没错,比你家十年前的老手机还低。

按下快门后,固件调用esp_camera_fb_get()抓取一帧 JPEG 图片,然后开始处理一个棘手的问题:怎么把这张图送到手机上去?

第二站:200 字节一次的"蓝牙快递"

眼镜和手机之间没有 Wi-Fi 直连,传输走的是低功耗蓝牙(BLE)。但 BLE 单次能携带的数据量极其有限,一张 JPEG 图动辄几十 KB,根本塞不进一个数据包。

打开firmware/firmware.ino,你会看到项目给出的朴素解法:把图片切成小块,每次只发 200 字节,末尾用两个0xFF标记"传输结束":

// 每次只拷贝 200 字节,通过 BLE 分块推送给手机 size_t bytes_to_copy = remaining; if (bytes_to_copy > 200) { bytes_to_copy = 200; } memcpy(&s_compressed_frame_2[2], &fb->buf[sent_photo_bytes], bytes_to_copy); // 推送到 BLE 特征值,手机端监听并重组 photoDataCharacteristic->setValue(s_compressed_frame_2, bytes_to_copy + 2); photoDataCharacteristic->notify();

🔧技术洞察:作者没有为"大文件传输"引入任何复杂协议,就用一个简单的分块+标志位方案搞定。这背后是典型的嵌入式务实哲学——在资源受限的硬件上,最好的协议就是够用的协议。30 万像素的 JPEG 经过压缩后通常只有 20~40KB,按 200 字节/包计算,几秒内就能传完,完全够用。

第三站:手机上的"看图说话"

照片到达手机后,Expo 应用(React Native 技术栈)把图片交给一个本地运行的轻量级视觉模型——默认是 Moondream(1.8B 参数,通过 Ollama 在本地跑)。看sources/agent/imageDescription.ts里的核心调用:

// 用本地小模型生成图片的文字描述,模型可以自由替换 export async function imageDescription( src: Uint8Array, model: KnownModel = 'moondream:1.8b-v2-fp16' ): Promise<string> { return ollamaInference({ model: model, messages: [{ role: 'system', content: 'You are a very advanced model and your task is to describe the image as precisely as possible. Transcribe any text you see.' }, { role: 'user', content: 'Describe the scene', images: [src], }] }); }

注意这个细节:系统提示词里特意加了一句"Transcribe any text you see"(把你看到的任何文字都转写出来)。因为对智能眼镜来说,识别招牌、路牌、菜单上的文字,往往比识别物体更有用。这不只是一行 prompt,而是项目对"眼镜到底该帮人看什么"这个问题的回答。

第四站:云端大模型当"记忆检索员"

现在,照片变成了一段文字描述。但这还不够——你真正想问的是"我面前这人是谁",而不是"请描述一下场景"。

再看sources/agent/Agent.ts里的逻辑:OpenGlass 会把过去拍下的所有照片描述拼接成一份"文字档案",然后交给一个更强的问答模型(比如 Groq 上的 Llama 3)来回答你的问题:

// 把历史照片的描述拼成文本,交给大模型回答用户问题 let combined = ''; for (let p of this.#photos) { combined += '\n\nImage #' + i + '\n\n' + p.description; } let answer = await llamaFind(question, combined);

🔧技术洞察:这是整套架构最巧妙的一步——用"描述文本"代替"图像本身"作为大模型输入。图像识别(重活)交给本地小模型免费干,理解与推理(巧活)交给云端大模型干。好处显而易见:云端大模型不需要处理图像,成本和延迟都大幅下降;同时你的原始照片也无需上传,隐私得到保护。

三个反直觉的设计决策,藏着作者的真实权衡

看完数据流,你可能和我一样冒出几个疑问。这些疑问,恰好就是项目设计哲学的最好注脚。

疑问一:为什么不用高分辨率摄像头?

因为眼镜不是相机。30 万像素足够 AI 识别物体和文字,而更高分辨率只会让 BLE 传输变慢、功耗上升、续航缩短。这是"够用就好"对"参数至上"的一次胜利。

组件成本(约)为什么选它
ESP32 S3 微控制器15 元双核 240MHz、自带 Wi-Fi/BLE、内置 PSRAM,资料全、社区大
OV2640 摄像头5 元30 万像素足够 AI 识别,低功耗,驱动成熟
3.7V 250mAh 锂电池3 元体积小、可更换,配合动态功耗控制撑起全天使用
3D 打印镜架外壳2 元图纸开源,可自行调整尺寸适配各种镜框

疑问二:为什么 AI 推理不在眼镜上跑?

25 元的硬件根本跑不动大模型,硬塞进去只会得到一个又烫又卡的结果。OpenGlass 的选择是:眼镜只负责采集(拍照、收音),手机负责处理,云端负责思考。这是目前成本约束下最合理的分工。

疑问三:为什么要留三种音频编码?

打开firmware/firmware.ino顶部,你会看到一排被注释掉的宏定义:

// 三种音频编码:按使用场景切换 // #define CODEC_OPUS // 高质量语音编码,开发中 // #define CODEC_MULAW // Web 应用使用,带宽占用小 #define CODEC_PCM // 原生应用使用,简单直接

作者没有把方案焊死,而是把选择权留给使用者:追求音质选 Opus,Web 端要低带宽选 Mu-law,原生应用图省事选 PCM。这折射出整个项目的性格:不替你决定,而是让你自己权衡。

60 张照片的"验收报告":开源项目怎么证明自己靠谱

很多项目嘴上说自己能"识别万物",但你找不到任何证据。OpenGlass 的做法很硬核:仓库里躺着一个prompts/series_1目录,里面是60 张真实拍摄的测试照片,每张都配了 4 个不同 AI 模型的完整描述输出

打开任何一张.md文件,你都能看到同一场景的四种"说法":

  • 默认模型(Moondream):平铺直叙,像个老实人——"画面中有人坐在前景,正在使用手机……"
  • LLaVA-Llama3:绘声绘色,像个写手——"在喧嚣的房间中心,一位金发卷发的年轻人正专注于他的黑色手机……"
  • LLaVA:34b-v1.6:理性分析,像个侦探——"根据建筑特征和来往行人判断,这很可能是一个火车站……"

这份"验收报告"是花真金白银(算力)和时间跑出来的,prompts/generate.ts里的脚本就是当时的"考试机器"——批量读取图片、依次调用各模型、把结果写进 markdown。对新手来说,这 60 组对比就是免费的模型选型指南:想要快选 Moondream,想要详细选 LLaVA 大模型,一目了然。

从一副眼镜到一个平台:你可以在上面长出什么

MIT 许可证意味着这套代码你可以随意改、随意用、随意分发。社区里已经有人把它往各个方向"长":

  1. 健康监测版:加心率血氧传感器,变成可穿戴健康助手
  2. 工业巡检版:集成二维码扫描和 AR 标注,辅助设备维护
  3. 学习翻译版:实时翻译菜单、公式识别,外语学习好帮手
  4. 户外运动版:接 GPS 和运动传感器,记录骑行轨迹

想加新 AI 服务?sources/modules/目录下已经躺着 Groq、Ollama、OpenAI 三个集成,照葫芦画瓢新建一个文件即可。整个架构按职责切分得很干净:agent/是 AI 代理层、modules/是服务集成、utils/是工具函数、app/是界面。项目不是让你用一个成品,而是给了你一套可以自由组合的积木。

四步,把它变成你自己的眼镜

如果读到这儿你已经心动了,上手只需要四步:

# 第一步:克隆仓库并安装依赖 git clone https://gitcode.com/GitHub_Trending/op/OpenGlass cd OpenGlass npm install # 第二步:配置 AI 服务密钥 # 编辑 sources/keys.ts,填入 Groq / OpenAI 的 API Key # 本地跑 Ollama:ollama pull moondream:1.8b-v2-fp16 # 第三步:烧录固件 # 用 Arduino IDE 打开 firmware/firmware.ino,选择 XIAO_ESP32S3 开发板 # 记得在工具菜单里把 PSRAM 设为 "OPI PSRAM" # 第四步:启动应用 npm start

硬件方面,照着 README 备齐 ESP32 S3、OV2640 摄像头、电池,3D 打印一个镜架外壳,25 美元以内就能凑齐。

智能穿戴设备的未来,不该只属于那些贴着天价标签、内部却是一团黑盒的封闭产品。OpenGlass 的价值,恰恰在于它把"智能眼镜"这个听起来很高端的东西,拆成了你桌上的零件、屏幕里的代码、和一次可以亲手完成的组装。它证明了一件事:AI 眼镜不是买来的奢侈品,而是可以做出来的日用品。

现在,去打开那个仓库,把第一张属于你视角的照片,交给你的第一副 AI 眼镜吧。

【免费下载链接】OpenGlassTurn any glasses into AI-powered smart glasses项目地址: https://gitcode.com/GitHub_Trending/op/OpenGlass

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

http://www.cnnetsun.cn/news/4039962.html

相关文章:

  • Agent Memory:从上下文管理到持续学习的完整闭环
  • CTF密码学实战:从流量分析到OpenSSL加密破解全解析
  • 从Gemini 3.7 Flash看大模型的“工作马“化:3周一次迭代、百万token仅0.75美元,编码Agent的定价战开打
  • RA-FinBERT:融合规则感知的低资源金融文本情感分类实战
  • 免费开源的 Steam 创意工坊下载器:零门槛三步批量取回模组
  • 游戏串流服务器免费搭建全指南:5步把PC变成私人云游戏平台
  • 读文献别再开一堆窗口:Obsidian PDF++ 让标注与笔记待在同一个地方
  • 【leetcode复健-8】560. 和为 K 的子数组-前缀和思想+哈希表
  • Ubuntu Ollama 搭建私有大模型部署 垂直投喂RAG
  • 【leetcode复健-9】239. 滑动窗口最大值-滑动窗口-队列
  • Dify 中级实验(09):HTTP 节点进阶——如何搞定认证、分页与错误重试?
  • Windows任务栏透明化神器TranslucentTB:从零到一打造沉浸式桌面
  • 抖音批量下载实战:一个晚上,我收下了整个博主的主页
  • 2010-2025年工业互联网试点示范项目企业数据
  • Obsidian多设备同步方案:Git与坚果云混合实践
  • 如何用Umi-OCR免费离线OCR快速提取文字:从截图识别到批量文档处理的完整指南
  • 大模型健康度监测:从基础设施到认知层的全链路运维实践
  • Obsidian PDF标注效率翻倍:PDF++安装到进阶
  • 阿里巴巴对话交互面试,LLM指令解析光看还不够还得摸得准
  • 麒麟系统密码重置:GRUB引导与救援模式实战指南
  • Windows黑屏仅鼠标能动?从原理到实战的完整修复指南
  • MemeSense连跳狂暴完全版插件深度解析:支持自定义命名、俯仰切换与旋转链式逻辑
  • 无人机视角航拍水葫芦检测数据集VOC+YOLO格式1417张1类别
  • 【爱马仕】Hermes Agent 本地环境搭建,Windows 轻量化整合包使用教程
  • Horos 开源医学影像软件实战指南:macOS 上零门槛玩转 DICOM 查看与 3D 影像重建
  • SMUDebugTool 完整上手攻略:AMD Ryzen 平台的参数读写、调试与性能调优实战
  • Draw.io Mermaid插件完整使用指南:三步让文本秒变专业图表
  • 二叉树与哈夫曼树:从核心原理到工程实践详解
  • Python pyshp库实战:Shapefile文件读写与GIS数据处理全解析
  • Multi-Agent系统核心协作模式与工程实践全解析