Sistema avanzado de análisis de tránsito vehicular para el puente General Manuel Belgrano, optimizado para cámaras SISE dinámicas y videos de larga duración. Cumple 13 requisitos funcionales y de calidad, con selección automática de modelo YOLO 11, tracking persistente, cálculo híbrido de velocidad, multi-cámara, perspectiva, históricos, persistencia segura y outputs concisos.
- Carga de video: Solo acepta archivos con formato
bridge_YYYY-MM-DD_HH-MM-SS_to_HH-MM-SS.mp4. - Selección automática de modelo YOLO 11:
- <1h: yolo11x.pt
- 1-3h: yolo11l.pt
- 3-6h: yolo11m.pt
- 6-12h: yolo11s.pt
-
12h: yolo11n.pt
- Persistencia opcional: Guarda datos válidos cada minuto en PostgreSQL AWS RDS (seguro, sin credenciales hardcode).
- Cálculo híbrido de velocidad: Real + Optical Flow Farneback + CNN (suavizado), con límites por tipo y exclusión de estacionados.
- Multi-cámara: Detección automática de layout (1, 2 o 4 vistas) y procesamiento por ROI.
- Perspectiva: Homografías calibrables por layout, con carga externa opcional.
- Tracking persistente: Asignación de IDs robustos con SORT ligero.
- Históricos: Panel informativo y persistencia usan promedios recientes cuando no hay detecciones.
- Descarga automática: Video procesado con overlays y métricas.
- Optimización Colab: Frame skipping adaptativo, limpieza de memoria y soporte para entornos gratuitos/pro.
- Modularidad y robustez: Código desacoplado, funciones auxiliares, logging y gestión de errores.
- Notebook compacto: ~8–10 celdas claras y fáciles de seguir.
- Outputs claros: Mensajes de éxito/error en cada paso.
-
Ejecuta las celdas en orden (no se ejecutan automáticamente):
- Autodiagnóstico YOLO 11 (verifica versión Ultralytics y descarga pesos yolo11 si faltan)
- Carga de dependencias y utilidades
load_and_validate_video()(valida nombre y selecciona modelo por duración)initialize_video_processing()- (Opcional) Ejecuta la celda de mejoras avanzadas (tracking y optical flow Farneback)
- Celda final: ejecuta
process_bridge_video()
-
Carga tu video con el formato correcto. Si el nombre no cumple, el sistema aborta.
-
Elige si deseas persistir en base de datos una sola vez (usa variables de entorno DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD si están definidas).
-
Procesa el video. El sistema detecta vehículos, calcula velocidades, excluye estacionados, adapta a multi-cámara y guarda resultados.
-
Descarga automática del video procesado al finalizar.
-
Nota: Si tus pesos se llaman “yolov11*.pt”, el sistema los normaliza automáticamente a “yolo11*.pt”.
- Tracking y Optical Flow: Habilítalos ejecutando la celda de mejoras avanzadas.
- Homografías externas: Puedes cargar matrices calibradas desde un JSON externo.
- Calibración rápida: Incluida una utilidad para generar matrices y asignarlas manualmente.
- Nunca expone credenciales en outputs.
- Persistencia solo si todas las variables de entorno están presentes.
- 1700m longitud, 8.3m calzada, cámaras SISE a 60m, multi-vista, zoom, visión nocturna, etc.
- Python 3.8+
- ultralytics, opencv-python, numpy, scikit-learn, scipy, psycopg2-binary
Instala dependencias con:
pip install ultralytics opencv-python numpy scikit-learn scipy psycopg2-binaryCREATE TABLE IF NOT EXISTS traffic_data (
id SERIAL PRIMARY KEY,
clip_id TEXT NOT NULL,
record_time TIMESTAMP NOT NULL,
avg_speed NUMERIC(5,2) NOT NULL,
count_car INTEGER NOT NULL,
count_truck INTEGER NOT NULL,
count_bus INTEGER NOT NULL,
count_motorcycle INTEGER NOT NULL,
count_bicycle INTEGER NOT NULL,
total_vehicles INTEGER NOT NULL,
UNIQUE (clip_id, record_time)
);Para calibración, integración avanzada o dudas, consulta el notebook y los comentarios en cada celda.