Aplicación web de análisis de flujo de atributos de personas en reComputer R + Hailo-8
Sistema de análisis de atributos de personas en el dispositivo basado en Hailo-8 / Person Attribute.

Puedes consultar el código fuente de este proyecto en GitHub: https://github.com/doublelf/People_Aattribute_flow
Utiliza detección de personas YOLOv8n + reconocimiento de atributos Person Attribute ResNet para el análisis de vídeo sin conexión en el reComputer R, con reproducción en tiempo real y estadísticas en el navegador. El proyecto admite el conteo en tiempo real y el análisis acumulado por género y cuatro tramos de edad.
Inicio rápido
1. Clonar el código
git clone https://github.com/doublelf/People_Aattribute_flow.git
cd People_Aattribute_flow2. Para depuración local
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt3. Construir la imagen
docker build -t perview:latest .4. Inicio con un solo clic
sudo docker run --rm --privileged --net=host \
-e VIDEO_PATH=/app/video/a1-1.mp4 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
-v /home/seeed/perview/app:/app/app:ro \
-v /home/seeed/perview/detection:/app/detection:ro \
-v /home/seeed/perview/workspace:/app/workspace \
-v /home/seeed/perview/video/:/app/video:ro \
perview:latestDescripción de parámetros línea por línea:
| Línea | Función |
|---|---|
--rm --privileged | el contenedor se limpia automáticamente al salir y obtiene todos los permisos de dispositivo (Hailo PCIe lo necesita) |
--net=host | usa directamente la red del host, no requiere mapeo de puertos -p, simplifica el acceso |
-e VIDEO_PATH=/app/video/a1-1.mp4 | ruta de vídeo de entrada por defecto (vista del contenedor) |
--device /dev/hailo0:/dev/hailo0 | pasa el dispositivo Hailo-8 al contenedor |
-v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro | monta la biblioteca de tiempo de ejecución HailoRT del host en el contenedor (solo lectura) |
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro | igual que arriba, compatibilidad de enlace simbólico |
-v /home/seeed/perview/app:/app/app:ro | el código fuente local sobrescribe el código baked de la imagen, basta con reiniciar el contenedor para que los cambios en archivos Python surtan efecto (solo lectura, para evitar que el contenedor escriba en el host por error) |
-v /home/seeed/perview/detection:/app/detection:ro | igual que arriba, sobrescribe el módulo de detección |
-v /home/seeed/perview/workspace:/app/workspace | persiste los artefactos prerenderizados y los archivos subidos (lectura/escritura) |
-v /home/seeed/perview/video/:/app/video:ro | monta en el contenedor el directorio donde guardas los vídeos (solo lectura) |
Una vez iniciado el contenedor, comienza automáticamente el prerenderizado de a1-1.mp4 (aproximadamente 1 minuto, a 1080p alrededor de 4–6 fps de velocidad de procesado, dependiendo de la densidad de la escena).
5. Acceder a la Web UI
Abre en el navegador:
http://<board_ip>:8000/
Tras cargar la página principal, a la izquierda hay un reproductor de vídeo anotado y a la derecha un panel en tiempo real con Chart.js (número actual de personas, proporción de género, distribución de edad en cuatro tramos, estadísticas acumuladas).
El vídeo por defecto
/home/seeed/perview/video/a1-1.mp4se incluye con el repositorio. Tras colocar cualquier vídeo personalizado, modifica-e VIDEO_PATHsegún corresponda.