自然言語でアプリの要件を伝え、エッジデバイスに接続し、実機でアプリ全体が動くまで Codex と開発を進めます。本プロジェクトでは、reComputer AI R2140、Hailo-8、YOLOv8m-Pose 動画 WebUI を使って、その手順を紹介します。
ユーザーは操作体験とハードウェアの制約を定義します。Codex は SSH でボードを調査し、既存の HailoRT 環境を再利用し、Hailo 公式サンプルを基にアプリを実装・展開します。その後、実機テストで見つかった問題を修正します。
完成する Pose Studio では、PC から MP4 をアップロードして Hailo-8 で人物の姿勢を推定し、人物のバウンディングボックス、COCO 形式の身体キーポイント 17 点、スケルトンの接続線、実測の推論 FPS を重ねた動画を表示・ダウンロードできます。

ソースコード: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 |
| OS | 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 を使う開発用 PC、ボードへの SSH 接続、テスト用 MP4 を用意してください。本プロジェクトは動作する Hailo 環境があることを前提とし、モデルの学習や変換は不要です。
ステップ 1:変更前に接続と環境確認を行う
PC の Codex でローカルのプロジェクトフォルダーを開き、そのセッション内で自分のデバイスの SSH 情報を渡します。最初は読み取り専用の確認を依頼します。以下のプロンプトは英語のままコピーして使えます。
Connect to my reComputer AI R2140 via SSH.
Host: <DEVICE_IP>
Username: <DEVICE_USER>
Use the SSH authentication details provided in this local session.
Check the OS, CPU architecture, memory, disk space, Hailo-8 device,
driver, HailoRT version, Python dependencies, and existing pose models.
Verify that remote commands execute successfully.
Do not modify the system yet. Report the environment and any blockers.今回の構築では、アクセラレータと HailoRT はすでに動作しており、NumPy と OpenCV も利用できました。一方、TAPPAS/Python GStreamer の環境はそろっていませんでした。そのため、Hailo のスタンドアロン Python 推論と姿勢デコーダーを使い、ドライバーを再インストールせずに実装しました。
ステップ 2:アプリの要件を Codex に伝える
ユーザーが行う操作、必須のアクセラレータ、完了を判定する方法をまとめて伝えます。
Build and deploy a YOLOv8 Pose Estimation WebUI on my reComputer AI R2140.
Use Hailo-8 for inference. Download a compatible official precompiled
YOLOv8m-Pose .hef model. Do not train or convert models.
Reference: https://github.com/hailo-ai/hailo-apps
Create a modern English UI for uploading an MP4 from my PC, running pose
estimation, and viewing/downloading the processed video. Draw human boxes,
17 COCO body keypoints, and skeleton connections.
Show measured inference FPS separately from overall processing FPS.
Reuse the installed HailoRT and official examples. Keep new dependencies
in an app virtual environment. Do not reinstall drivers or modify system
configuration without permission.
Test the complete workflow on the physical R2140, fix errors, and provide
the working WebUI URL and actual validation results.本プロジェクトでは、Hailo Apps の公式推論ラッパーと姿勢の後処理を再利用しています。選択した Model Zoo v2.18.0 の HEF は Hailo-8 向けで、検証済みの HailoRT 4.23.x 環境に対応します。モデルの URL と SHA-256 チェックサムはリポジトリに記録されています。
ステップ 3:検証可能な段階に分けて実装・展開する
インターフェース全体を追加する前に、推論経路を確認するよう Codex に依頼します。
- インストール済みの HailoRT Python パッケージと Hailo-8 へのアクセスを確認する。
- 互換性のある HEF をダウンロードし、チェックサムを検証する。
- Hailo-8 で実際のフレームを推論し、姿勢出力をデコードする。
- 動画デコード、RGB のレターボックス処理、推論、公式姿勢デコード、描画を実装する。
- アップロード、ジョブ状態、再生、シーク、ダウンロード、最近の結果の管理を追加する。
- アプリを展開し、起動・停止コマンドと LAN 内の URL を提示する。
Use the environment found during inspection and verify a real frame on
Hailo-8 before processing a full video. Keep the app in a dedicated directory.
Record model provenance, dependencies, and performance measurement definitions.
Deploy the WebUI and document how to start and stop the app without changing
system services or the existing driver configuration.完成した処理の流れは次のとおりです。
PC browser: upload MP4
→ R2140: video decoding and RGB letterboxing
→ HailoRT: YOLOv8m-Pose inference on Hailo-8
→ official pose decoding and NMS
→ bounding boxes, keypoints, skeletons, and FPS overlay
→ FFmpeg: H.264 MP4 with optional AAC audio
→ PC browser: preview and downloadステップ 4:ユーザー操作の全工程をテストする
ページの応答やモデルの初期化だけでなく、実際の動画と出力を確認します。
Upload video/test.mp4 through the app and process all frames on the R2140.
Check human boxes, keypoint alignment, skeletons, and the FPS overlay.
Verify browser playback, seeking, MP4 download, output frame count, and
successful decoding of every output frame.
Test optional audio, invalid uploads, busy-device handling, and a second
inference run. Fix errors and repeat the affected checks.
Report inference FPS and complete processing FPS separately.構築中には二つの問題が見つかり、修正されました。一つは HailoRT がコールバックに渡すキーワード引数と、最初のアプリ実装の関数シグネチャーが一致していなかったことです。もう一つは、音声が先に終わると FFmpeg の -shortest オプションが動画フレームを切り詰めることでした。修正版を再テストし、音声付きクリップでは処理した 52 フレームがすべて保持されることも確認しました。
| サンプル全体の検証 | 結果 |
|---|---|
| 解像度 / 再生 FPS | 1920 × 1080 / 25 FPS |
| 入力と出力のフレーム数 | 233 / 233 |
| 動画の長さ | 9.32 秒 |
| 実測推論 FPS | 32.2–32.4 |
| 処理全体の FPS | 13.3–13.4 |
| 再生、シーク、ダウンロード | テスト対象の環境で検証済み |
推論 FPS は、バインディングの準備、転送、スケジューリング、出力の取得を含む、完了した HailoRT 呼び出しを測定します。処理全体の FPS には、CPU 側の動画・画像処理も含まれます。どちらも動画の再生 FPS やチップ単体のベンチマークではありません。テスト条件は検証レポートに記録されています。
ステップ 5: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 を選び、姿勢推定を実行して結果を確認し、MP4 をダウンロードしてください。
セットアップスクリプトは前提条件を確認し、システムパッケージを再利用する仮想環境を作成し、Web の依存関係をインストールしてモデルをダウンロード・検証します。ドライバーのインストールやシステム設定の変更は行いません。停止には sh stop.sh を使い、再起動後は sh start.sh を再実行します。新しいボードでは、以前の展開結果だけに頼らず、その環境でセットアップと依存関係を確認してください。
Codex と開発を続ける
アプリが動いたら、インターフェースの改善、明確な受け入れ基準を持つ機能の追加、他の開発者向けのパッケージ化を Codex に依頼できます。認証情報、ユーザーがアップロードした動画、ローカル実行データはソースリポジトリに含めず、モデルの出典と第三者のライセンス通知は保持してください。
プロジェクトリポジトリには、ソース、テスト動画、スクリーンショット、再利用できるプロンプト、展開手順が含まれています。独自のアプリコードと文書には MIT ライセンスを適用し、再利用した Hailo コードには上流の通知を保持します。モデルとランタイムの条件はそれぞれ別に適用されます。