用自然语言描述一个应用,连接边缘设备,再和 Codex 一起把它变成经过实机验证的完整项目。本项目以 reComputer AI R2140、Hailo-8 和 YOLOv8m-Pose 视频 WebUI 为例,介绍这个开发过程。
你定义用户体验和硬件约束,Codex 通过 SSH 检查开发板,复用已经安装的 HailoRT,参考 Hailo 官方示例构建应用,完成部署,并修复实机测试中发现的问题。
最终得到的 Pose Studio 支持从 PC 上传 MP4,在 Hailo-8 上进行人体姿态估计,再查看或下载包含人体框、17 个 COCO 身体关键点、骨架连线和实测推理 FPS 的视频。

你将学到什么
- 向 Codex 说明应用目标、实现边界和验收条件。
- 在修改环境前检查远程设备。
- 复用已有依赖、官方推理示例和兼容的预编译模型。
- 围绕硬件推理构建上传、进度、视频播放和下载功能。
- 验证完整应用,根据实际出现的问题迭代修复。
Codex 在 PC 上辅助开发;部署后的应用和模型推理在 R2140 本地运行,视频不需要发送到云端推理服务。
应用功能
Pose Studio 提供英文界面,支持 MP4 上传、人体和关键点置信度调节、处理进度、标注视频播放、MP4 下载及历史结果查看。界面分别展示推理 FPS 和整体处理 FPS,并将输入视频的可选音频以 AAC 格式保留到结果中。
可以在仓库中查看 WebUI 截图、姿态估计效果图以及输入和输出测试视频。
硬件与软件
| 组件 | 实测环境 |
|---|---|
| 设备 | reComputer AI R2140,基于 Raspberry Pi 5 的 ARM64 平台 |
| 加速器 | Hailo-8 |
| 操作系统 | Debian 13.6 |
| HailoRT / 驱动 / 固件 | 4.23.0 |
| Python | 3.13.5 |
| NumPy / OpenCV | 2.2.4 / 4.10.0 |
| Web 层 | 应用虚拟环境中的 Flask 3.1.3 和 Waitress 3.0.2 |
| 视频工具 | FFmpeg 和 ffprobe |
| 模型 | Hailo-8 官方预编译 YOLOv8m-Pose HEF,640 × 640 RGB 输入 |
准备一台安装 Codex 的开发电脑、可访问开发板的 SSH 连接和一个测试 MP4。本项目从已有可用 Hailo 环境开始,不需要训练或转换模型。
第一步:先连接检查,再修改环境
在 PC 上用 Codex 打开本地项目目录,在本地会话中提供自己的 SSH 信息,先让它执行只读检查:
通过 SSH 连接我的 reComputer AI R2140。
Host: <DEVICE_IP>
Username: <DEVICE_USER>
使用本地会话中提供的 SSH 认证信息。
检查系统、CPU 架构、内存、磁盘空间、Hailo-8 设备、驱动、
HailoRT 版本、Python 依赖和已有姿态模型,确认远程命令可以执行。
暂时不要修改系统,先报告环境状态和可能阻碍部署的问题。本次开发时,加速器与 HailoRT 已经正常工作,NumPy 和 OpenCV 也可用,但缺少完整的 TAPPAS/Python GStreamer 环境。因此应用采用 Hailo 的 standalone Python 推理和姿态解码代码,避免重装驱动。
第二步:向 Codex 说明应用需求
把用户要完成的操作、必须使用的加速器和验收条件一起写清楚:
在我的 reComputer AI R2140 上构建并部署 YOLOv8 人体姿态估计 WebUI。
使用 Hailo-8 推理,下载官方兼容的预编译 YOLOv8m-Pose .hef 模型,
不要训练或转换模型。
参考:https://github.com/hailo-ai/hailo-apps
创建现代英文界面,支持从 PC 上传 MP4、运行姿态估计、查看和下载结果。
绘制人体框、17 个 COCO 身体关键点和骨架连线。
将实测推理 FPS 与整体处理 FPS 分开显示。
复用已安装的 HailoRT 和官方示例,新增依赖放在应用虚拟环境中。
未经允许不要重装驱动或修改系统配置。
在物理 R2140 上测试完整流程,修复错误,提供可访问的 WebUI URL
以及实际验证结果。本项目复用了 Hailo Apps 的官方推理封装和姿态后处理代码,选用针对 Hailo-8、适配实测 HailoRT 4.23.x 环境的 Model Zoo v2.18.0 HEF。仓库记录了模型下载地址和 SHA-256 校验值。
第三步:分阶段实现并部署
先验证推理链路,再完成整个界面:
- 确认 HailoRT Python 包和 Hailo-8 设备可访问。
- 下载兼容的 HEF 并校验文件。
- 让真实视频帧通过 Hailo-8 推理,解码姿态输出。
- 实现视频解码、RGB 等比例缩放补边、推理、官方姿态解码和绘制。
- 添加上传、任务状态、播放、拖动进度、下载和历史结果功能。
- 部署应用,提供启动、停止命令和局域网访问 URL。
使用检查阶段确认的环境,先在 Hailo-8 上验证一个真实视频帧,
再处理完整视频。将应用保存在独立目录中。
记录模型来源、依赖和性能指标的测量定义。
部署 WebUI,说明如何启动和停止应用,不修改系统服务或已有驱动配置。最终的处理流程为:
PC 浏览器:上传 MP4
→ R2140:视频解码、RGB 等比例缩放补边
→ HailoRT:在 Hailo-8 上运行 YOLOv8m-Pose
→ 官方姿态解码和 NMS
→ 绘制人体框、关键点、骨架和 FPS
→ FFmpeg:生成 H.264 MP4,保留可选 AAC 音频
→ PC 浏览器:预览和下载第四步:验证完整用户流程
用真实视频检查输出,不只验证页面响应或模型初始化:
通过应用上传 video/test.mp4,在 R2140 上处理所有帧。
检查人体框、关键点坐标、骨架连线和 FPS 标注。
验证浏览器播放、拖动进度、MP4 下载、输出帧数,以及所有输出帧能否解码。
测试可选音频、无效上传、设备忙碌处理和第二次推理。
修复问题,重新运行受影响的检查。
分别报告推理 FPS 和完整处理 FPS。开发中实际发现并修复了两处问题:HailoRT 回调传入的关键字参数与最初的应用函数签名不一致;音频先结束时,FFmpeg 的 -shortest 选项会截断视频帧。修复后重新验证了应用,包括确认带音频片段的全部 52 个已处理视频帧均保留。
| 完整样例验证 | 结果 |
|---|---|
| 分辨率 / 播放帧率 | 1920 × 1080 / 25 FPS |
| 输入和输出帧数 | 233 / 233 |
| 视频时长 | 9.32 秒 |
| 实测推理 FPS | 32.2–32.4 |
| 整体处理 FPS | 13.3–13.4 |
| 播放、拖动进度和下载 | 已在实测部署上验证 |
推理 FPS 测量已完成的 HailoRT 调用,包含绑定准备、传输、调度和结果读取;整体处理 FPS 还包含 CPU 上的视频和图像处理。两者都不等于视频播放帧率,也不是芯片纯算力基准。具体测试条件见验证记录。
第五步:从 GitHub 复现应用
在已经具备 HailoRT 4.23.0、所需 Python 依赖和 FFmpeg 的 R2140 上运行:
git clone https://github.com/inteintegrity/codex-recomputer-r2140-pose.git
cd codex-recomputer-r2140-pose
sh setup.sh
sh start.sh在同一局域网的 PC 打开 http://<DEVICE_IP>:8080/。选择仓库提供的 video/test.mp4,运行姿态估计,查看并下载结果。
环境准备脚本会检查前提条件,创建复用系统包的虚拟环境,安装 Web 依赖,并下载、校验模型;它不安装驱动,也不修改系统配置。使用 sh stop.sh 停止应用;设备重启后重新执行 sh start.sh。在新设备上复现时,仍需验证该设备的安装过程和依赖,不应把此前部署的结果直接当作新环境的验证结果。
继续与 Codex 迭代
流程跑通后,可以继续让 Codex 完善界面、按照明确的验收条件新增功能,或整理项目供其他人复现。把凭据、用户上传视频和本地运行数据排除在源码仓库之外,并保留模型来源和第三方许可证说明。
项目仓库包含源码、测试视频、截图、可复用提示词和部署说明。原创应用代码与文档使用 MIT 许可证;复用的 Hailo 代码保留上游声明,模型和运行时适用各自的条款。