inteintegrity2026-10-19

Crea una aplicación de estimación de pose con Codex en reComputer AI R2140

Crea, despliega y prueba con Codex una WebUI de estimación de pose con Hailo-8 en reComputer AI R2140, desde la inspección SSH hasta la reproducción de MP4.

CodexCVPose EstimationGitHub

Describe una aplicación en lenguaje natural, conéctate a un dispositivo de IA en el borde y colabora con Codex hasta que la aplicación completa funcione en hardware real. Este proyecto muestra ese proceso con reComputer AI R2140, Hailo-8 y una WebUI de vídeo basada en YOLOv8m-Pose.

Tú defines la experiencia de usuario y las restricciones del hardware. Codex inspecciona la placa por SSH, reutiliza el entorno HailoRT instalado, construye la aplicación a partir de ejemplos oficiales de Hailo, la despliega y corrige los errores detectados durante las pruebas en el dispositivo físico.

El resultado es Pose Studio: sube un MP4 desde tu PC, ejecuta la estimación de pose humana en Hailo-8 y visualiza o descarga un vídeo con cuadros delimitadores de personas, 17 puntos clave corporales COCO, conexiones del esqueleto y FPS de inferencia medidos.

Construye una aplicación con Codex en reComputer AI R2140

Código del proyecto: codex-recomputer-r2140-pose

Qué aprenderás

  • Comunicar a Codex el objetivo de la aplicación, los límites de implementación y los criterios de aceptación.
  • Inspeccionar un dispositivo remoto antes de cambiar su entorno.
  • Reutilizar dependencias existentes, ejemplos oficiales de inferencia y un modelo precompilado compatible.
  • Añadir carga de archivos, progreso, reproducción y descarga alrededor de la inferencia por hardware.
  • Probar la aplicación completa y utilizar los fallos observados para orientar las correcciones.

Codex ayuda con el desarrollo desde tu PC. La aplicación desplegada y la inferencia del modelo se ejecutan localmente en el R2140; el vídeo no se envía a un servicio de inferencia en la nube.

La aplicación

Pose Studio ofrece una interfaz en inglés con carga de MP4, umbrales de confianza configurables para personas y puntos clave, progreso de procesamiento, reproducción del vídeo anotado, descarga de MP4 y análisis recientes. Muestra por separado los FPS de inferencia y los FPS del procesamiento completo, y conserva el audio opcional de entrada como AAC en la salida.

Consulta la captura de la WebUI, el resultado de pose y los vídeos de entrada y salida de ejemplo en el repositorio.

Hardware y software

ComponenteEntorno verificado
DispositivoreComputer AI R2140, plataforma ARM64 basada en Raspberry Pi 5
AceleradorHailo-8
Sistema operativoDebian 13.6
HailoRT / controlador / firmware4.23.0
Python3.13.5
NumPy / OpenCV2.2.4 / 4.10.0
Capa webFlask 3.1.3 y Waitress 3.0.2 en un entorno virtual de la aplicación
Herramientas de vídeoFFmpeg y ffprobe
ModeloHEF oficial precompilado de YOLOv8m-Pose para Hailo-8, entrada RGB de 640 × 640

Utiliza un PC de desarrollo con Codex, una conexión SSH a la placa y un MP4 de prueba. Este proyecto parte de un entorno Hailo que ya funciona; no requiere entrenar ni convertir modelos.

Paso 1. Conecta e inspecciona antes de cambiar nada

Abre una carpeta de proyecto local en Codex y proporciona los datos SSH de tu dispositivo en la sesión local. Solicita primero una inspección de solo lectura. Los siguientes prompts se mantienen en inglés y se pueden copiar directamente.

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.

En este desarrollo, el acelerador y HailoRT ya funcionaban. NumPy y OpenCV estaban disponibles, pero no el entorno completo de TAPPAS/Python GStreamer. Por ello, la implementación utilizó la inferencia Python independiente y el decodificador de pose de Hailo, evitando reinstalar el controlador.

Paso 2. Explica a Codex los requisitos de la aplicación

Describe lo que debe poder hacer el usuario, identifica el acelerador obligatorio y define cómo comprobar que el trabajo está terminado:

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.

El proyecto reutiliza el envoltorio oficial de inferencia y el posprocesamiento de pose de Hailo Apps. El HEF seleccionado de Model Zoo v2.18.0 está destinado a Hailo-8 y al entorno verificado HailoRT 4.23.x. El repositorio registra la URL del modelo y su suma de comprobación SHA-256.

Paso 3. Implementa y despliega por etapas verificables

Pide a Codex que verifique la ruta de inferencia antes de añadir toda la interfaz:

  1. Confirma el paquete Python de HailoRT instalado y el acceso al dispositivo Hailo-8.
  2. Descarga el HEF compatible y verifica su suma de comprobación.
  3. Ejecuta un fotograma en Hailo-8 y decodifica las salidas reales de pose.
  4. Implementa la decodificación de vídeo, el ajuste RGB con bandas de relleno, la inferencia, la decodificación oficial de pose y las superposiciones.
  5. Añade carga, estado de tareas, reproducción, búsqueda temporal, descarga y gestión de resultados recientes.
  6. Despliega la aplicación y proporciona los comandos de inicio y parada y su URL en la LAN.
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.

El flujo de procesamiento resultante es:

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

Paso 4. Prueba el flujo completo del usuario

Utiliza un vídeo real y verifica la salida, no solo la respuesta de la página o la inicialización del modelo:

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.

Durante este desarrollo se detectaron y corrigieron dos problemas: HailoRT pasaba un argumento por nombre al callback que inicialmente no coincidía con la firma de la aplicación, y la opción -shortest de FFmpeg truncaba fotogramas cuando el audio terminaba antes. Se volvió a probar la aplicación corregida, incluido un clip con audio cuyos 52 fotogramas procesados se conservaron íntegramente.

Validación de la muestra completaResultado
Resolución / FPS de reproducción1920 × 1080 / 25 FPS
Fotogramas de entrada y salida233 / 233
Duración del vídeo9.32 segundos
FPS de inferencia medidos32.2–32.4
FPS del procesamiento completo13.3–13.4
Reproducción, búsqueda y descargaVerificadas en el despliegue probado

Los FPS de inferencia miden las llamadas completadas a HailoRT, incluida la preparación de enlaces de búfer, las transferencias, la planificación y la obtención de las salidas. Los FPS del procesamiento completo incluyen también el procesamiento de vídeo e imagen en CPU. Ninguna cifra equivale a los FPS de reproducción del vídeo ni a un benchmark exclusivo del chip. Consulta las condiciones registradas en el informe de validación.

Paso 5. Reproduce la aplicación desde GitHub

En un R2140 que ya tenga el entorno HailoRT 4.23.0 requerido, las dependencias Python y FFmpeg:

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

Abre http://<DEVICE_IP>:8080/ desde un PC de la misma red. Selecciona el archivo incluido video/test.mp4, ejecuta la estimación de pose, inspecciona el resultado y descarga el MP4.

El script de preparación comprueba los requisitos, crea un entorno virtual que reutiliza paquetes del sistema, instala las dependencias web y descarga y verifica el modelo. No instala controladores ni cambia la configuración del sistema. Utiliza sh stop.sh para detener la aplicación; tras reiniciar la placa, vuelve a ejecutar sh start.sh. En una placa nueva, verifica la preparación y las dependencias en tu propio entorno antes de basarte en los resultados del despliegue anterior.

Sigue iterando con Codex

Cuando la aplicación funcione, pide a Codex que mejore la interfaz, añada una función con criterios de aceptación claros o prepare el proyecto para otras personas. Mantén fuera del repositorio las credenciales, los vídeos subidos por usuarios y los datos locales de ejecución. Conserva la procedencia del modelo y los avisos de licencias de terceros.

El repositorio del proyecto contiene el código fuente, vídeos de prueba, capturas, prompts reutilizables y notas de despliegue. El código original de la aplicación y la documentación utilizan la licencia MIT; el código reutilizado de Hailo conserva su aviso original, y las condiciones del modelo y del runtime se aplican por separado.