• 3
    回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【 2025 DigiKey 杯】树莓派端云协同---智能AI眼镜

引言

本项目旨在探索当前端侧AI加速技术与云端视觉大模型的协同架构,以应对生成式人工智能在边缘设备上的爆发式增长所带来的机遇与挑战。项目以树莓派为核心硬件平台,构建一个轻量化、低延迟、具备实时环境感知与智能交互能力的“AI眼镜”原型系统。该系统将端侧的实时高效推理能力与云端的强大生成与认知能力相结合,实现从本地数据实时处理到云端深度分析与内容生成的闭环,从而为增强现实(AR)、辅助交互、即时信息增强等场景提供一种可落地的端云协同解决方案。

项目特性

☑️ 端侧NPU实时视觉检测

☑️云端大模型深度分析

☑️仅将兴趣目标发送至云端,节省网络带宽,保护全局图像隐私

硬件结构

元件清单:

- Raspberry Pi 5主板

- Raspberry Pi HAT+(NPU 13TOPS算力)

- HDMI LCD

- IMX219 USB Camera

- USB HID按键

(框图通过heme- it在线设计工具绘制)

软件框架

运行环境:

- Python 3.11

软件模型:

- 端侧小模型:YOLO

- 云端大模型:Qwen3-VL-Plus

协同机制:

- https网络通信

AI HAT+安装与配置

简介:

AI HAT+ 是基于 Hailo-8L 和 Hailo-8 神经网络推理加速器,提供 13 和 26 TOPS两种型号。本项目使用13 TOPS 型号,适合中等工作量,性能与人工智能套件类似;AI HAT+ 使用 Raspberry Pi 5 的 PCIe 接口进行通信,主机 Raspberry Pi 5 会自动检测板载 Hailo 加速器,并使用 NPU 执行支持的人工智能计算任务。

硬件安装:

将AI HAT+套件通过PCIE接口相连,并插入树莓派的排针接口,然后通过铜柱进行固定即可,如下图所示。

软件安装:

更新系统软件

sudo apt update && sudo apt full-upgrade

查看eeprom固件版本号

sudo rpi-eeprom-update

(已是最新版,无需更新)

安装NPU依赖

sudo apt install hailo-all

重启生效

sudo reboot

验证安装

hailortcli fw-control identify

运行demo

sudo apt update && sudo apt install rpicam-apps
rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov6_inference.json

软件开发

本项目软件基于官方detection例程进行二次开发,要实现兴趣目标的选定,首先需要在画面中心绘制一个十字准心

然后在画面中添加一个文字显示层,以便将云端大模型的深度分析结果在画面中进行呈现

由于本项目并非将整个图像上传到云端进行大模型解析,这样会浪费网络带宽,并且可能泄露背景隐私信息,因此程序会对兴趣目标的图像进行截取,截取兴趣目标图像关键代码:

        # 检查检测框是否包含中心点(使用归一化坐标)
        if (bbox.xmin() <= frame_center_x <= bbox.xmax() and 
            bbox.ymin() <= frame_center_y <= bbox.ymax()):
            # Calculate bbox area
            bbox_area = bbox.width() + bbox.height()

            # Find the detection closest to center
            if bbox_area < min_area_in_center:
                min_area_in_center = bbox_area
                center_detection = {
                    'detection': detection,
                    'bbox': bbox,
                    'confidence': confidence,
                    'distance': bbox_area
                }
    if center_detection is not None:
        center_bbox = center_detection['bbox']

        # 转换归一化坐标到像素坐标
        xmin = int(center_bbox.xmin() * frame.shape[1])
        ymin = int(center_bbox.ymin() * frame.shape[0])
        xmax = int(center_bbox.xmax() * frame.shape[1])
        ymax = int(center_bbox.ymax() * frame.shape[0])
        
        # 确保坐标在有效范围内
        xmin = max(0, xmin)
        ymin = max(0, ymin)
        xmax = min(frame.shape[1] - 1, xmax)
        ymax = min(frame.shape[0] - 1, ymax)

        if xmax > xmin and ymax > ymin:
            # 裁剪图像
            cropped_frame = frame[ymin:ymax, xmin:xmax]
            # 转换为BGR并保存
            cropped_bgr = cv2.cvtColor(cropped_frame, cv2.COLOR_RGB2BGR)
            cv2.imwrite("test.jpg?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20", cropped_bgr)
            trig_ai_vl_event.set()

兴趣目标截图调用云端大模型深度解析关键代码:

def ai_vl_thread():
    # 初始化OpenAI客户端
    client = OpenAI(
        api_key="sk-xxxxxxxxxxxxxx",
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
    )
    while True:
        trig_ai_vl_event.wait()
        trig_ai_vl_event.clear()

        # 将本地图片转换为base64
        base64_image = encode_image("test.jpg?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20")

        # 创建聊天完成请求
        completion = client.chat.completions.create(
            model="qwen3-vl-plus",
            messages=[
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "image_url",
                            "image_url": {
                                "url": f"data:image/jpeg;base64,{base64_image}"
                            },
                        },
                        {"type": "text", "text": "解释这张图片,100个字以内"},
                    ],
                },
            ],
            stream=True
        )

        #print("AI回复:")
        ai_vl_reply = ""
        for chunk in completion:
            if chunk.choices:
                delta = chunk.choices[0].delta
                if hasattr(delta, 'content') and delta.content:
                    ai_vl_reply += delta.content
                    display_text_pipeline.set_property("text", ai_vl_reply)
                    #print(delta.content, end='', flush=True)

效果演示:

 小结

本项目基于树莓派构建了一个轻量化、低延迟、具备实时环境感知与智能交互能力的“AI眼镜”原型系统,该系统将端侧的实时AI推理能力与云端的强大生成与认知能力相结合,实现从本地数据实时处理到云端深度分析与内容生成的闭环,可以为未来AI眼镜的发展提供一种参考及思路。

全部回复(3)
正序查看
倒序查看
02-28 18:01

【2025 DigiKey杯】+基于树莓派端云协同的智能AI眼镜方案,主要实现了实时视觉识别与本地增强现实交互。

系统利用树莓派的摄像头模块实时捕捉环境信息,本地运行轻量级AI模型(如TensorFlow Lite或YOLOv8)对手语或文字进行初步处理,生成可视化结果。这种边缘计算架构大幅降低了对云端的依赖,确保了低延迟响应,避免了网络不稳定带来的中断。

同时,系统通过云端协同来增强处理能力。端侧将提取的特征或低维数据上传至云端服务器,利用更强大的AI大模型进行深度分析或复杂推理。云端将处理结果实时反馈给终端设备,呈现为增强现实(AR)界面中的悬浮窗或文字说明。

这种架构结合了端侧的实时性与云端的智能性,特别适用于手语翻译、即时文字识别等需要快速交互的场景,提供了更高效、更自然的用户体验。

0
回复
446727704
LV.3
3
03-04 21:57

【2025 DigiKey杯】+本设计基于树莓派实现端云协同智能AI眼镜,整体方案合理、实用性强。端侧完成图像采集与轻量推理,云端承担复杂AI任务,兼顾实时性与智能性。系统结构清晰、扩展性好,可应用于辅助视觉、语音交互等场景。但存在功耗偏高、佩戴体验一般、网络依赖较强等问题。整体是一份完整且有创新的边缘智能可穿戴方案,适合教学与原型验证,优化后具备进一步产品化潜力。

0
回复
旻旻旻
LV.8
4
03-07 16:48

【2025 DigiKey杯】+基于树莓派端云协同的智能AI眼镜方案

个人觉得AI眼镜功能,算得上是这几年一个比较火的概念,市面上个也有好几家大型公司有成熟的产品推导市场,所以产品的应用场景这一块算是比较成熟的。

设计者基于官方的例程,降低开发风险,成功的概率大

使用GStreamer视频流框架,性能高效

不过也存在一个十分严重的大问题,那就是目前的原型机尺寸太大了,无法匹配到目前的眼镜实体上。

市面上的AI眼镜,电路板都是整体比较小,只有手指大小,可以方便赛道眼镜架子里,而现在这个原型,尺寸太大了,不可能放进去,还需要寻找其他方案进一步缩小尺寸,否则不存在商用价值。

另外,电源与续航未提及,这么大的器件整体功耗也应该比较大,续航可能比较短,

0
回复