inteintegrity2026-10-19

用 Codex 在 reComputer AI R2140 上构建人体姿态估计应用

用 Codex 在 reComputer AI R2140 上构建 Hailo-8 人体姿态估计 WebUI, 完成 SSH 环境检查、应用部署,以及 MP4 上传、推理、播放和下载验证。

CodexCVPose EstimationGitHub

用自然语言描述一个应用,连接边缘设备,再和 Codex 一起把它变成经过实机验证的完整项目。本项目以 reComputer AI R2140、Hailo-8 和 YOLOv8m-Pose 视频 WebUI 为例,介绍这个开发过程。

你定义用户体验和硬件约束,Codex 通过 SSH 检查开发板,复用已经安装的 HailoRT,参考 Hailo 官方示例构建应用,完成部署,并修复实机测试中发现的问题。

最终得到的 Pose Studio 支持从 PC 上传 MP4,在 Hailo-8 上进行人体姿态估计,再查看或下载包含人体框、17 个 COCO 身体关键点、骨架连线和实测推理 FPS 的视频。

用 Codex 在 reComputer AI R2140 上构建应用

项目源码:codex-recomputer-r2140-pose

你将学到什么

  • 向 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
Python3.13.5
NumPy / OpenCV2.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 信息,先让它执行只读检查:

text
通过 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 说明应用需求

把用户要完成的操作、必须使用的加速器和验收条件一起写清楚:

text
在我的 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 校验值。

第三步:分阶段实现并部署

先验证推理链路,再完成整个界面:

  1. 确认 HailoRT Python 包和 Hailo-8 设备可访问。
  2. 下载兼容的 HEF 并校验文件。
  3. 让真实视频帧通过 Hailo-8 推理,解码姿态输出。
  4. 实现视频解码、RGB 等比例缩放补边、推理、官方姿态解码和绘制。
  5. 添加上传、任务状态、播放、拖动进度、下载和历史结果功能。
  6. 部署应用,提供启动、停止命令和局域网访问 URL。
text
使用检查阶段确认的环境,先在 Hailo-8 上验证一个真实视频帧,
再处理完整视频。将应用保存在独立目录中。
记录模型来源、依赖和性能指标的测量定义。
部署 WebUI,说明如何启动和停止应用,不修改系统服务或已有驱动配置。

最终的处理流程为:

text
PC 浏览器:上传 MP4
    → R2140:视频解码、RGB 等比例缩放补边
    → HailoRT:在 Hailo-8 上运行 YOLOv8m-Pose
    → 官方姿态解码和 NMS
    → 绘制人体框、关键点、骨架和 FPS
    → FFmpeg:生成 H.264 MP4,保留可选 AAC 音频
    → PC 浏览器:预览和下载

第四步:验证完整用户流程

用真实视频检查输出,不只验证页面响应或模型初始化:

text
通过应用上传 video/test.mp4,在 R2140 上处理所有帧。
检查人体框、关键点坐标、骨架连线和 FPS 标注。
验证浏览器播放、拖动进度、MP4 下载、输出帧数,以及所有输出帧能否解码。

测试可选音频、无效上传、设备忙碌处理和第二次推理。
修复问题,重新运行受影响的检查。
分别报告推理 FPS 和完整处理 FPS。

开发中实际发现并修复了两处问题:HailoRT 回调传入的关键字参数与最初的应用函数签名不一致;音频先结束时,FFmpeg 的 -shortest 选项会截断视频帧。修复后重新验证了应用,包括确认带音频片段的全部 52 个已处理视频帧均保留。

完整样例验证结果
分辨率 / 播放帧率1920 × 1080 / 25 FPS
输入和输出帧数233 / 233
视频时长9.32 秒
实测推理 FPS32.2–32.4
整体处理 FPS13.3–13.4
播放、拖动进度和下载已在实测部署上验证

推理 FPS 测量已完成的 HailoRT 调用,包含绑定准备、传输、调度和结果读取;整体处理 FPS 还包含 CPU 上的视频和图像处理。两者都不等于视频播放帧率,也不是芯片纯算力基准。具体测试条件见验证记录。

第五步:从 GitHub 复现应用

在已经具备 HailoRT 4.23.0、所需 Python 依赖和 FFmpeg 的 R2140 上运行:

sh
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 代码保留上游声明,模型和运行时适用各自的条款。