https://github.com/seminarioa/findparking
Sistema de visión por computadora para detección en tiempo real de espacios de estacionamiento disponibles u ocupados, basado en YOLO y OpenCV.
https://github.com/seminarioa/findparking
computer-vision opencv yolo
Last synced: 11 months ago
JSON representation
Sistema de visión por computadora para detección en tiempo real de espacios de estacionamiento disponibles u ocupados, basado en YOLO y OpenCV.
- Host: GitHub
- URL: https://github.com/seminarioa/findparking
- Owner: seminarioA
- Created: 2025-06-14T02:08:35.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-18T17:51:04.000Z (12 months ago)
- Last Synced: 2025-07-18T22:12:21.015Z (12 months ago)
- Topics: computer-vision, opencv, yolo
- Language: HTML
- Homepage:
- Size: 19.3 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FindParking
Sistema de visión por computadora para detección en tiempo real de espacios de estacionamiento, basado en microservicios, Docker y buenas prácticas de producción.
---
## 🚗 Arquitectura de Producción
### Microservicios
- **frontend_service**: Interfaz web para usuarios, consume los servicios de ocupación y video.
- **auth_service**: Autenticación y emisión de JWT.
- **occupancy_service**: Consulta y gestión de ocupación de espacios.
- **video_service**: Streaming y procesamiento de video (WebSocket).
- **processing_service**: Detección de vehículos con YOLO/OpenCV y publicación en Redis.
- **api_gateway (NGINX)**: Proxy reverso, balanceo y seguridad.
- **redis**: Almacenamiento temporal y cache.
### Flujo de Integración
1. El usuario accede al frontend y se autentica en `/api/auth/token` para obtener un JWT.
2. El frontend consume endpoints protegidos vía API Gateway, enviando el JWT en cada request y WebSocket.
3. Los microservicios validan el JWT y responden según el rol y permisos.
4. Redis centraliza datos de video y ocupación.
### Despliegue en Producción
```bash
docker-compose up --build
```
- Todos los servicios se levantan en contenedores aislados.
- El API Gateway enruta y protege los endpoints.
- Redis persiste datos y permite escalabilidad.
- El frontend se comunica solo vía API Gateway.
---
## 🔒 Seguridad y Buenas Prácticas
- JWT para autenticación y autorización en todos los servicios.
- Variables de entorno para credenciales y secretos.
- Certificados SSL y HTTPS (configurables en NGINX).
- Actualización periódica de dependencias.
- Pruebas automáticas con pytest y requests.
- Logging centralizado y monitoreo (recomendado: Prometheus, Grafana).
- Separación estricta de responsabilidades por microservicio.
---
## 📦 Estructura del Proyecto
```
findParking/
├── services/
│ ├── auth_service/
│ ├── occupancy_service/
│ ├── video_service/
│ ├── processing_service/
│ ├── frontend_service/ # Nuevo microservicio web
│ └── api_gateway/
├── resources/
├── templates/
├── docker-compose.yml
├── README.md
└── tests/
```
---
## 🐳 Despliegue y Escalabilidad
- Escala cada microservicio de forma independiente.
- Balanceo y proxy con NGINX.
- Redis persistente para cache y colas.
- Listo para múltiples cámaras y clientes concurrentes.
- Recomendado: migrar a Kubernetes para alta disponibilidad.
---
## 🧪 Pruebas Automáticas
Ejecuta todos los tests:
```bash
pytest tests/
```
Incluye pruebas de endpoints REST, WebSocket y templates.
---
## 🧠 Personalización y Extensión
- Modifica `resources/parking1.mp4` y `coco.txt` según tu caso.
- Entrena tu propio modelo YOLO y reemplaza `yolo11n.pt`.
- Edita templates HTML y frontend para roles y vistas personalizadas.
- Agrega nuevos microservicios según necesidades.
---
## 🌐 Frontend de Producción
El microservicio `frontend_service` permite:
- Autenticación de usuarios y gestión de JWT.
- Visualización en tiempo real del estado de ocupación (vía `occupancy_service`).
- Streaming de video procesado y crudo (vía WebSocket a `video_service`).
- Interfaz responsiva y segura, protegida por el API Gateway.
---
## 📜 Licencia
MIT License © [Los Andes Labs](https://github.com/TU_USUARIO)