Solución basada en FiftyOne (Voxel51) para el monitoreo, supervisión y análisis de flotas de transporte terrestre usando inteligencia artificial, visión artificial y datos geoespaciales.
Las empresas de transporte deben garantizar operaciones seguras, eficientes y trazables mientras cumplen con regulaciones de seguridad vial y mantienen una comunicación constante entre conductores, vehículos y centros de control. Gracias a tecnologías como GPS, visión artificial, sensores, asistentes de voz e inteligencia artificial, hoy es posible construir soluciones que ayuden a prevenir incidentes, optimizar rutas y mejorar la toma de decisiones en tiempo real.
| Rubrica | Implementacion |
|---|---|
| Supervision inteligente de flotas | Deteccion de objetos (vehiculos, peatones, senales) en cada captura con bounding boxes y estadisticas por zona via FiftyOne + grafico de barras en dashboard |
| Comunicacion inteligente con centros de control | FiftyOne App como torre de control con mapa interactivo + plugin @copiloto/fleet-control-ai con 3 paneles + dashboard web independiente en src/ |
| Monitoreo de velocidad y cumplimiento de rutas | Geo-cerca virtual (Manhattan) que filtra capturas dentro/fuera del perimetro autorizado con geo_within() |
| Prediccion de retrasos y eventos operativos | Analisis de densidad de objetos por zona geografica (Times Square proximity), distribucion de clases detectadas, y mapa de calor de ubicaciones |
├── .env # Credenciales MongoDB Atlas (NO committear)
├── .gitignore
├── requirements.txt # Dependencias Python
├── README.md
├── scripts/
│ ├── main.py # Entry point - Centro de Control
│ └── control_center.py # Modulo de analisis de flota
├── plugins/
│ └── copiloto/ # Plugin FiftyOne con paneles personalizados
│ ├── fiftyone.yml # Manifest del plugin
│ └── __init__.py # 3 paneles: Dashboard, Geo-cerca, Flota
├── src/ # Dashboard web standalone
│ ├── index.html # Pagina principal del centro de control
│ ├── css/
│ │ └── style.css # Estilos oscuros profesionales
│ └── js/
│ └── dashboard.js # Graficos y animaciones con Chart.js
├── data/ # Datasets descargados
├── models/ # Modelos de IA (futuro)
└── notebooks/ # Notebooks de analisis (futuro)
Capturas NYC (BDD100K / quickstart-geo)
│
▼
FiftyOne Dataset (440 samples, 8,620 detecciones)
│
├── location (GeoJSON point) → Mapa interactivo (FiftyOne App)
├── ground_truth (Detections) → Bounding boxes + clases
└── num_objects → Estadisticas por zona
│
▼
MongoDB Atlas (Cluster0)
│
├── FiftyOne App (localhost:5151)
│ ├── Location scatterplot interactivo
│ ├── FleetControlAI Dashboard panel
│ ├── FleetControlAI Geo-cerca panel
│ └── FleetControlAI Flota panel (mapa)
│
└── src/index.html (dashboard standalone)
├── Estadisticas de flota
├── Distribucion de clases (Chart.js)
├── Geo-cerca Manhattan (donut chart)
└── Densidad por zona (barras)
- Python 3.12+
- MongoDB Atlas cluster (o instancia MongoDB local)
- Navegador web moderno
# 1. Clonar el repositorio
git clone <repo-url>
cd fiftyone-Transporte-Inteligente
# 2. Crear y activar entorno virtual
python3 -m venv .venv
source .venv/bin/activate
# 3. Instalar dependencias
pip install -r requirements.txt
# 4. Configurar credenciales MongoDB Atlas
echo 'FIFTYONE_DATABASE_URI="mongodb+srv://<usuario>:<password>@<cluster>.mongodb.net"' > .envImportante: El archivo
.envcontiene credenciales sensibles. Esta en.gitignore.
source .venv/bin/activate
python scripts/main.pyEsto:
- Carga dataset
quickstart-geo(440 imagenes NYC) - Conecta a MongoDB Atlas con credenciales de
.env - Calcula estadisticas de flota y analisis geoespacial
- Registra el plugin FleetControlAI con 3 paneles personalizados
- Abre el dashboard web standalone en tu navegador
- Lanza FiftyOne App en
http://localhost:5151
Una vez abierta la App en localhost:5151:
- Click en el icono + junto a la pestana "Samples"
- Selecciona cualquiera de los 3 paneles FleetControlAI:
- FleetControlAI Dashboard: metricas generales de flota
- FleetControlAI Geo-cerca: monitoreo dentro/fuera Manhattan
- FleetControlAI Flota: mapa interactivo de ubicaciones
# Listar comandos disponibles
fiftyone --help
# Listar plugins instalados
fiftyone plugins list
# Lanzar app standalone
fiftyone app launch440 imagenes del area de NYC (BDD100K validation split) con:
| Campo | Tipo | Descripcion |
|---|---|---|
filepath |
string | Ruta a la imagen |
ground_truth |
Detections | Bounding boxes: car, traffic sign, traffic light, person, truck, bus, etc. |
location |
GeoLocation | Coordenadas GPS (longitude, latitude) |
metadata |
ImageMetadata | Tamano, dimensiones, tipo MIME |
num_objects |
int | Numero de objetos detectados (campo computado) |
detection_classes |
ListField | Clases unicas presentes (campo computado) |
| Metrica | Valor |
|---|---|
| Muestras | 440 |
| Detecciones totales | 8,620 |
| Promedio por captura | 19.6 |
| Dentro de Manhattan | 141 |
| Fuera de Manhattan | 299 |
| Cercanas a Times Square (5km) | 134 |
| Tecnologia | Uso |
|---|---|
| FiftyOne (Voxel51) | Vision artificial, analisis de datasets, geo-consulta |
| MongoDB Atlas | Base de datos cloud para datasets |
| Plotly | Graficos interactivos en paneles FiftyOne |
| Chart.js | Graficos en dashboard web standalone |
| Mapbox / OpenStreetMap | Mapas base |
| python-dotenv | Manejo seguro de credenciales |
| BDD100K | Dataset de conduccion urbana |
| CSS3 | Dashboard oscuro profesional con animaciones |
| JavaScript (ES6+) | Graficos interactivos y animaciones |
| HTML5 | Pagina web standalone del centro de control |
El plugin @copiloto/guardian-drive-ai proporciona 3 paneles personalizados dentro de la FiftyOne App:
Metricas generales: muestras, detecciones totales, promedio por captura, y grafico de barras con distribucion de clases detectadas.
Analisis de cumplimiento de rutas: vehiculos dentro/fuera del perimetro de Manhattan con grafico de dona.
Mapa interactivo con todas las ubicaciones GPS de las capturas, marcador de Times Square, y conteo de muestras cercanas.
Puedes descargar e instalar los plugins oficiales de FiftyOne (Voxel51) desde el repositorio de plugins. Por ejemplo, para descargar e instalar los plugins que se usaron en este taller:
# activar el entorno virtual
source .venv/bin/activate
# descargar e instalar plugins desde el repo de Voxel51
fiftyone plugins download https://github.com/voxel51/fiftyone-plugins \
--plugin-names @voxel51/brain @voxel51/zoo @voxel51/dashboardVerifica los plugins instalados con:
fiftyone plugins listLos plugins se almacenan en el directorio de plugins de FiftyOne. Usa fiftyone plugins enable/disable para activarlos o desactivarlos según necesites.
Ademas del plugin personalizado, el entorno virtual incluye los siguientes plugins y paquetes del ecosistema FiftyOne / Voxel51:
| Plugin / Paquete | Version | Proposito |
|---|---|---|
| @voxel51/panels | 1.0.0 | Paneles integrados de FiftyOne App (location scatterplot, embeddings, mapas) |
| @voxel51/operators | 1.0.0 | Operadores core de FiftyOne (filtros, consultas, transformaciones) |
| @voxel51/brain | n/a | Plugin oficial de Voxel51 para visualización de embeddings y análisis |
| @voxel51/zoo | n/a | Colecciones de ejemplo, utilidades y modelos de Voxel51 |
| @voxel51/dashboard | n/a | Paneles y componentes adicionales para la FiftyOne App |
| fiftyone-brain | 0.22.0 | Visualizacion de embeddings y analisis de datasets |
| voxel51-eta | 0.16.0 | Toolkit de vision artificial de Voxel51 |
| anywidget | 0.11.0 | Widgets Python interactivos para notebooks y paneles |
| ipywidgets | 8.1.8 | Widgets interactivos para Jupyter |
| plotly | 6.8.0 | Graficos interactivos en paneles FiftyOne |
| shapely | 2.1.2 | Operaciones geoespaciales (geo-cercas, puntos, poligonos) |
| umap-learn | 0.5.12 | Reduccion de dimensionalidad para embeddings |
| ultralytics | 8.4.71 | Modelos YOLO para deteccion de objetos |
| ffmpeg-python | 0.2.0 | Procesamiento de video para dashcams |
| pymongo | 4.9.2 | Conexion a MongoDB Atlas |
| scikit-learn | 1.9.0 | ML auxiliar (clustering, metricas) |
| scikit-image | 0.26.0 | Procesamiento de imagenes |
| pandas | 3.0.3 | Manipulacion de datos tabulares |
El directorio src/ contiene un dashboard web independiente que se abre automaticamente al ejecutar main.py. Incluye:
- Estadisticas con animacion de conteo
- Grafico de barras con distribucion de objetos detectados
- Donut chart con analisis de geo-cerca Manhattan
- Grafico de densidad por zona de NYC
- Rubricas visualmente detalladas
- Diseño oscuro profesional con CSS3 y animaciones
Para abrirlo manualmente:
# Abrir directamente
xdg-open src/index.html
# O con servidor Python (recomendado para live reload)
cd src && python3 -m http.server 8080
# Luego abre http://localhost:8080- Incorporar video en tiempo real desde dashcams
- Integrar modelo YOLO para deteccion en vivo
- Sistema de alertas por geocerca violada
- Plugin TypeScript con build personalizado (React)
- Panel de KPIs en la FiftyOne App
- Prediccion de rutas optimas con ML
- WebSocket para actualizaciones en tiempo real