SafeCross utiliza tres modelos YOLO independientes que trabajan juntos para
tomar la decisión de cruce. Los pesos se encuentran en la carpeta weigths/
del repositorio (extraídos de la rama Results).
| Archivo | Tarea | Arquitectura | Tamaño |
|---|---|---|---|
weigths/crosswalks.pt |
Detección de pasos de peatones | YOLOv8n | ~50 MB |
weigths/lights.pt |
Detección de color de semáforo | YOLOv8m | ~50 MB |
weigths/persons_cars.pt |
Detección de personas y vehículos | YOLOv8n | ~6 MB |
Formatos adicionales disponibles (no incluidos en git por tamaño):
crosswalks.onnx(~99 MB) — para inferencia con ONNX Runtimecrosswalks.torchscript(~100 MB) — para deployment con TorchScript
Los pesos se cargan automáticamente desde weigths/ cuando se usa el módulo
principal de SafeCross:
from safecross.decide import can_cross, decide_verbose
# Decisión simple (True = cruzar, False = esperar)
resultado = can_cross("imagen.jpg")
# Decisión con detalles de diagnóstico
detalles = decide_verbose("imagen.jpg")
print(detalles)
# {
# "can_cross": True,
# "crosswalk_detected": True,
# "n_crosswalks": 1,
# "light_detected": True,
# "light_color": "verde",
# "reason": "Paso de peatones visible y semáforo en verde. Puede cruzar."
# }Imagen de entrada
│
▼
┌─────────────────┐
│ crosswalks.pt │──► ¿Hay paso de peatones?
└─────────────────┘ │
No → ESPERAR Sí
│
▼
┌─────────────────┐
│ lights.pt │──► ¿Qué color?
└─────────────────┘
│ │
Rojo/Amarillo Verde
│ │
ESPERAR CRUZAR ✓
Reglas:
- CRUZAR si: paso de peatones visible + semáforo verde + sin vehículos en el cruce
- ESPERAR (o pedir ayuda) si: sin paso de peatones, o semáforo rojo/amarillo, o vehículo en cruce
Evaluado sobre 64 imágenes de prueba:
| Clase | Precisión | Recall | F1-Score |
|---|---|---|---|
| No cruzar | 0.636 | 1.00 | 0.778 |
| Cruzar | 1.00 | 0.515 | 0.680 |
Puntos clave:
- 0 Falsos Positivos: El sistema nunca indica "cruzar" cuando no es seguro
- Tasa de 48% de Falsos Negativos: puede ser excesivamente conservador (indica esperar cuando sería seguro cruzar)
- El objetivo principal — eliminar FP — se cumple completamente
Ver instrucciones detalladas en ../trafficlight_detection/README.md.
cd trafficlight_detection/
python train.py # fine-tuning de YOLOv8m, 80 epochsEl modelo fue entrenado con fine-tuning de YOLOv8n sobre un dataset de
imágenes de cruces peatonales. Ver notebooks en la rama Crosswalk:
CrossWalk/First_Data_Set/Fine_tuning.ipynb
Entrenado con YOLOv8n para detectar personas y vehículos en el contexto de cruces peatonales.
Los archivos .pt de los modelos entrenados SÍ están incluidos en este
repositorio (en weigths/) ya que son el resultado final del proyecto.
Lo que está excluido por tamaño:
- Archivos
.onnxy.torchscript(exportaciones grandes) - El peso base
yolov8m.pt(se descarga automáticamente de Ultralytics) - Outputs de entrenamiento en
runs/