inteintegrity2026-10-19

Créer une application d’estimation de pose avec Codex sur reComputer AI R2140

Créez, déployez et testez avec Codex une WebUI d’estimation de pose Hailo-8 sur reComputer AI R2140, de l’inspection SSH à la lecture et au téléchargement de MP4.

CodexCVPose EstimationGitHub

Décrivez une application en langage naturel, connectez-vous à un appareil d’IA en périphérie et travaillez avec Codex jusqu’à ce que l’application complète fonctionne sur du matériel réel. Ce projet présente cette démarche avec reComputer AI R2140, Hailo-8 et une WebUI vidéo YOLOv8m-Pose.

Vous définissez l’expérience utilisateur et les contraintes matérielles. Codex inspecte la carte par SSH, réutilise l’environnement HailoRT installé, construit l’application à partir des exemples officiels Hailo, la déploie et corrige les erreurs découvertes lors des essais sur l’appareil physique.

Le résultat est Pose Studio : vous envoyez un MP4 depuis votre PC, lancez l’estimation de pose humaine sur Hailo-8, puis visionnez ou téléchargez une vidéo comportant les cadres de détection des personnes, les 17 points clés corporels COCO, les liaisons du squelette et les FPS d’inférence mesurés.

Construire une application avec Codex sur reComputer AI R2140

Code du projet : codex-recomputer-r2140-pose

Ce que vous apprendrez

  • Présenter à Codex l’objectif de l’application, les limites de l’implémentation et les critères d’acceptation.
  • Inspecter un appareil distant avant de modifier son environnement.
  • Réutiliser les dépendances existantes, les exemples officiels d’inférence et un modèle précompilé compatible.
  • Ajouter l’envoi de fichiers, le suivi de progression, la lecture vidéo et le téléchargement autour de l’inférence matérielle.
  • Tester l’application complète et utiliser les défaillances observées pour guider les corrections.

Codex aide au développement depuis votre PC. L’application déployée et l’inférence du modèle s’exécutent localement sur le R2140 ; la vidéo n’est pas envoyée à un service d’inférence cloud.

L’application

Pose Studio propose une interface en anglais avec envoi de MP4, seuils de confiance réglables pour les personnes et les points clés, progression du traitement, lecture de la vidéo annotée, téléchargement du MP4 et accès aux analyses récentes. Les FPS d’inférence et les FPS du traitement complet sont affichés séparément. Si la vidéo d’entrée contient de l’audio, celui-ci est conservé en AAC dans la sortie.

Consultez la capture de la WebUI, le résultat d’estimation de pose et les vidéos d’exemple en entrée et en sortie dans le dépôt.

Matériel et logiciels

ComposantEnvironnement vérifié
AppareilreComputer AI R2140, plateforme ARM64 basée sur Raspberry Pi 5
AccélérateurHailo-8
Système d’exploitationDebian 13.6
HailoRT / pilote / firmware4.23.0
Python3.13.5
NumPy / OpenCV2.2.4 / 4.10.0
Couche webFlask 3.1.3 et Waitress 3.0.2 dans un environnement virtuel propre à l’application
Outils vidéoFFmpeg et ffprobe
ModèleHEF YOLOv8m-Pose officiel précompilé pour Hailo-8, entrée RGB 640 × 640

Prévoyez un PC de développement équipé de Codex, une connexion SSH à la carte et un MP4 de test. Ce projet part d’un environnement Hailo déjà opérationnel ; il ne nécessite ni entraînement ni conversion de modèle.

Étape 1. Se connecter et inspecter avant toute modification

Ouvrez un dossier de projet local dans Codex et fournissez les informations SSH de votre appareil dans la session locale. Demandez d’abord une inspection en lecture seule. Les prompts ci-dessous sont conservés en anglais et peuvent être copiés tels quels.

text
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.

Dans ce projet, l’accélérateur et HailoRT fonctionnaient déjà. NumPy et OpenCV étaient disponibles, mais pas l’environnement complet TAPPAS/Python GStreamer. L’implémentation utilise donc l’inférence Python autonome et le décodeur de pose de Hailo, ce qui évite de réinstaller le pilote.

Étape 2. Donner à Codex les exigences de l’application

Décrivez les actions attendues de l’utilisateur, précisez l’accélérateur requis et définissez comment vérifier que le travail est terminé :

text
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.

Le projet réutilise l’interface d’inférence officielle et le post-traitement de pose de Hailo Apps. Le HEF sélectionné dans Model Zoo v2.18.0 cible Hailo-8 et l’environnement HailoRT 4.23.x vérifié. Le dépôt indique l’URL du modèle et son empreinte SHA-256.

Étape 3. Implémenter et déployer par étapes vérifiables

Demandez à Codex de vérifier le chemin d’inférence avant d’ajouter l’interface complète :

  1. Confirmer le paquet Python HailoRT installé et l’accès à Hailo-8.
  2. Télécharger le HEF compatible et vérifier son empreinte.
  3. Exécuter l’inférence d’une image vidéo sur Hailo-8 et décoder les sorties de pose réelles.
  4. Implémenter le décodage vidéo, le redimensionnement RGB avec marges, l’inférence, le décodage officiel des poses et les annotations.
  5. Ajouter l’envoi de fichiers, l’état des tâches, la lecture, le déplacement dans la vidéo, le téléchargement et la gestion des résultats récents.
  6. Déployer l’application et fournir les commandes de démarrage et d’arrêt ainsi que son URL sur le réseau local.
text
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.

Le traitement obtenu suit ce chemin :

text
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

Étape 4. Tester l’ensemble du parcours utilisateur

Utilisez une vraie vidéo de test et vérifiez le résultat, plutôt que la seule réponse de la page ou l’initialisation du modèle :

text
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.

Deux problèmes ont été détectés et corrigés pendant ce développement : HailoRT transmettait au callback un argument nommé qui ne correspondait pas initialement à la signature de l’application ; l’option -shortest de FFmpeg tronquait des images lorsque l’audio se terminait avant la vidéo. L’application corrigée a été testée de nouveau, notamment avec un extrait audio-vidéo dont les 52 images traitées ont toutes été conservées.

Validation de l’exemple completRésultat
Résolution / FPS de lecture1920 × 1080 / 25 FPS
Nombre d’images en entrée et en sortie233 / 233
Durée de la vidéo9.32 secondes
FPS d’inférence mesurés32.2–32.4
FPS du traitement complet13.3–13.4
Lecture, déplacement et téléchargementVérifiés sur le déploiement testé

Les FPS d’inférence mesurent les appels HailoRT terminés, en incluant la préparation des liaisons de tampons, les transferts, l’ordonnancement et la récupération des sorties. Les FPS du traitement complet incluent aussi le traitement vidéo et image côté CPU. Ces valeurs ne correspondent ni aux FPS de lecture de la vidéo ni à un benchmark du seul accélérateur. Les conditions d’essai figurent dans le rapport de validation.

Étape 5. Reproduire l’application depuis GitHub

Sur un R2140 disposant déjà de l’environnement HailoRT 4.23.0 requis, des dépendances Python et de FFmpeg :

sh
git clone https://github.com/inteintegrity/codex-recomputer-r2140-pose.git
cd codex-recomputer-r2140-pose
sh setup.sh
sh start.sh

Ouvrez http://<DEVICE_IP>:8080/ depuis un PC du même réseau. Sélectionnez le fichier fourni video/test.mp4, lancez l’estimation de pose, examinez le résultat et téléchargez le MP4.

Le script de préparation vérifie les prérequis, crée un environnement virtuel réutilisant les paquets système, installe les dépendances web et télécharge puis vérifie le modèle. Il n’installe aucun pilote et ne modifie pas la configuration du système. Utilisez sh stop.sh pour arrêter l’application ; après un redémarrage, relancez sh start.sh. Sur une nouvelle carte, vérifiez la préparation et les dépendances dans votre propre environnement avant de vous appuyer sur les résultats du déploiement précédent.

Continuer à itérer avec Codex

Une fois l’application opérationnelle, demandez à Codex d’améliorer l’interface, d’ajouter une fonction assortie de critères d’acceptation clairs ou de préparer le projet pour d’autres développeurs. Excluez du dépôt les identifiants, les vidéos envoyées par les utilisateurs et les données d’exécution locales. Conservez la provenance du modèle et les mentions de licence des composants tiers.

Le dépôt du projet contient le code source, les vidéos de test, les captures, les prompts réutilisables et les notes de déploiement. Le code original de l’application et la documentation sont sous licence MIT ; le code Hailo réutilisé conserve sa mention d’origine, tandis que les conditions du modèle et du runtime restent distinctes.