Laboratorio académico local en Streamlit para explicar YOLO en tiempo real y comparar tiempo de ejecución y complejidad computacional frente a detectores CNN clásicos.
El recurso no intenta demostrar mAP (Mean Average Precision). El foco de la exposición es:
- Mostrar YOLO actual en vivo con webcam local.
- Comparar Faster R-CNN / SSDlite / YOLO11n con el mismo input.
- Explicar tiempo y complejidad usando
n = H × W.
Métricas principales:
- Latencia media y p95.
- FPS efectivo.
n = H × Wcomo tamaño de entrada.- MACs/GFLOPs aproximados.
- Parámetros del modelo.
- Clases reconocidas como apoyo visual, no como métrica formal de precisión.
yolo11n.pt— YOLO ligero.yolo11s.pt— YOLO mediano.best.pt— demo local opcional de gestos, si el archivo existe en el repo.ssdlite320_mobilenet_v3_large— detector CNN one-stage.fasterrcnn_mobilenet_v3_large_320_fpn— detector CNN two-stage.
- En el panel lateral dejá seleccionada la ruta YOLO actual en vivo.
- Abrí la pestaña Benchmark y usá Iniciar YOLO en vivo para mostrar tiempo real.
- Cambiá la ruta a Comparación CNN vs YOLO.
- Ejecutá la comparación con la imagen demo persona/perro/fruta.
- Explicá la conclusión:
- con el mismo
n = H×W, YOLO suele ganar en latencia/FPS; - GFLOPs es un proxy de costo;
- el reconocimiento visual ayuda a discutir falsos positivos/falsos negativos.
- con el mismo
Si vas a pulir la parte visual/front, empezá por:
app.pypara layout, tabs, textos, métricas y gráficos..streamlit/config.tomlpara colores/tema global.docs/VISUAL_GUIDE.mdsi quieren documentar nuevas decisiones visuales.
La UI actual usa tema claro, pocas tarjetas, textos cortos y una ruta de benchmark pensada para exposición.
No subas .venv/, pesos .pt, videos pesados ni resultados generados. Los pesos YOLO se guardan fuera del repo en ~/.cache/yolo-complexity-lab/weights/.
Nota: no instales con
pipdel sistema. Este proyecto ya usa.venvpara evitar el errorexternally-managed-environment.
git clone https://github.com/AlejandroTatum/yolo-complexity-lab.git
cd yolo-complexity-lab
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txtEn este equipo se validó con python3.14 dentro de .venv y torch 2.12.0+cu130.
source .venv/bin/activate
streamlit run app.pyComplejidad convolucional principal:
O(Σ_l H_l × W_l × C_in_l × C_out_l × K_l²)
Versión didáctica con n = H × W:
O(L × n × C_in × C_out × K²)
Postprocesamiento con NMS:
O(B²)
Para detectores two-stage se agrega costo por regiones:
O(Σ conv + R × C_roi + NMS)
Los resultados quedan persistidos en la sesión de Streamlit. Podés descargar CSV sin perder la tabla ni repetir el benchmark.
Los CSV se guardan automáticamente en:
outputs/university/complejidad-computacional/PROYECTO001_YOLO_COMPLEXITY_LAB_Alejandro_Padilla/results/
python3 scripts/smoke_check.pyProyecto académico preparado para demostraciones locales. Las métricas dependen del hardware y del entorno de ejecución; no representan una evaluación formal de precisión entre modelos.
La imagen local assets/demo_person_dog_fruit.jpg combina:
zidane.jpg, asset de ejemplo incluido con Ultralytics.- Foto de perro con banana de Karsten Winegeart en Unsplash (
de5wBys0nok).
Se usa solo como lámina didáctica local para comparar reconocimiento, falsos positivos y tiempos.