Skip to content

Bootcamp-IA-P6/Computer-Vision-Team2

Repository files navigation

🎮 Logo Detector — Detección de logos de videojuegos con YOLOv8

Python YOLOv8 FastAPI Streamlit Docker HuggingFace

Sistema de detección automática de logos de marcas de videojuegos en vídeo, desarrollado como prueba de concepto para analizar el tiempo de aparición de cada marca en pantalla.


📋 Índice


📖 Descripción

Este proyecto implementa un pipeline completo de Computer Vision para detectar logos de marcas de videojuegos en vídeos. El sistema analiza el vídeo frame a frame, localiza los logos con bounding boxes, muestra el nombre de la clase y el porcentaje de confianza, y genera un informe con el tiempo y porcentaje de aparición de cada marca.

Casos de uso:

  • Análisis de cobertura de marca en trailers y eventos
  • Medición de presencia de logos en gameplay y streams
  • Informes automáticos para equipos de publicidad y marketing

🏷️ Marcas detectadas

Marca Color del bbox
Nintendo 🔴 Rojo
PlayStation 🔵 Azul
Xbox 🟢 Verde
Nvidia 🟩 Verde claro
Sega 💙 Azul claro
Blizzard Entertainment 🟡 Amarillo

🏗️ Arquitectura

v3/
├── src/
│   ├── v3_inference.py       # Pipeline de vídeo frame a frame
│   ├── v3_database.py        # Persistencia en SQLite
│   ├── v3_report.py          # Generación de informes y gráficas
│   └── v3_preprocessing.py   # Resize, normalización y escalado
├── notebooks/
│   └── v3_training_colab.ipynb  # Entrenamiento en Google Colab
├── models/
│   └── best.pt               # Pesos del modelo (no incluido en repo)
├── data/                     # Vídeos de prueba (no incluidos en repo)
├── outputs/                  # Vídeos procesados e informes
├── database/                 # Base de datos SQLite
├── main.py                   # API REST con FastAPI
├── app.py                    # Frontend con Streamlit
├── Dockerfile                # Entorno local
└── requirements.txt

📊 Métricas del modelo

Entrenado con YOLOv8n (transfer learning) sobre dataset de Roboflow — 50 epochs, GPU T4:

Métrica Valor
mAP50 0.72
mAP50-95 0.49
Precisión 0.83
Recall 0.69

⚙️ Instalación

Requisitos

  • Python 3.11+
  • Docker (opcional)

1. Clonar el repositorio

git clone https://github.com/Bootcamp-IA-P6/Computer-Vision-Team2.git
cd Computer-Vision-Team2
git checkout v3

2. Crear entorno virtual e instalar dependencias

python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -r requirements.txt

3. Configurar variables de entorno

cp .env.example .env
# Edita .env y añade tu API key de Roboflow

4. Obtener el modelo

El modelo best.pt no está incluido en el repositorio. Tienes dos opciones:

Opción A — Descargar desde HuggingFace:

huggingface-cli download Michh14/logo-detector models/best.pt --local-dir .

Opción B — Entrenar desde cero: Abre notebooks/v3_training_colab.ipynb en Google Colab y ejecuta todas las celdas. Al terminar descarga el best.pt generado y colócalo en models/.


🚀 Uso

Modo 1 — Script de inferencia directo

Procesa un vídeo y genera el informe sin frontend:

# Inferencia sobre un vídeo
python src/v3_inference.py --model models/best.pt --video data/test_video.mp4 --output outputs/resultado.mp4

# Ajustar umbral de confianza (default: 0.4)
python src/v3_inference.py --model models/best.pt --video data/test_video.mp4 --conf 0.6

# Generar informe desde la base de datos
python src/v3_report.py                  # último vídeo analizado
python src/v3_report.py --video_id 1     # vídeo concreto por ID
python src/v3_report.py --list           # listar todos los vídeos

Modo 2 — Frontend web (recomendado)

Levanta el backend y el frontend en dos terminales:

# Terminal 1 — Backend FastAPI
uvicorn main:app --reload --host 0.0.0.0 --port 8000

# Terminal 2 — Frontend Streamlit
streamlit run app.py

Abre http://localhost:8501 en el navegador.

El frontend tiene dos modos:

  • 🔗 URL de YouTube (local) — introduce una URL y el backend la descarga y analiza
  • 📁 Subir vídeo (HuggingFace) — sube un archivo de vídeo a la API desplegada en cloud

Modo 3 — Docker

# Construir la imagen
docker build -t v3-logo-detection .

# Ejecutar
docker run --rm \
  -v $(pwd)/data:/app/data \
  -v $(pwd)/models:/app/models \
  -v $(pwd)/outputs:/app/outputs \
  -v $(pwd)/database:/app/database \
  v3-logo-detection \
  python src/v3_inference.py --model models/best.pt --video data/test_video.mp4

🗄️ Base de datos

Las detecciones se guardan automáticamente en database/v3_detecciones.db (SQLite).

Esquema

Tabla videos

Campo Tipo Descripción
id INTEGER Clave primaria
nombre TEXT Nombre del archivo de vídeo
ruta TEXT Ruta completa al vídeo
total_frames INTEGER Total de frames del vídeo
fps REAL Frames por segundo
duracion_s REAL Duración en segundos
fecha_analisis TEXT Fecha y hora del análisis

Tabla detecciones

Campo Tipo Descripción
id INTEGER Clave primaria
video_id INTEGER FK → videos.id
clase TEXT Nombre de la marca detectada
confianza REAL Puntuación de confianza (0-1)
frame INTEGER Número de frame
timestamp_s REAL Tiempo en segundos
bbox_x1/y1/x2/y2 INTEGER Coordenadas del bounding box
crop_base64 TEXT Imagen recortada en base64

Para visualizar la base de datos instala la extensión SQLite Viewer en VSCode.


☁️ Despliegue

La API está desplegada en HuggingFace Spaces:

🔗 API: https://michh14-logo-detector.hf.space

Endpoints disponibles:

Método Endpoint Descripción
GET / Estado del servidor y clases disponibles
POST /analizar Analiza un vídeo subido como archivo
GET /videos Lista todos los vídeos analizados
GET /informe/{id} Informe de un vídeo por ID

Ejemplo de uso de la API:

# Verificar estado
curl https://michh14-logo-detector.hf.space/

# Analizar un vídeo
curl -X POST https://michh14-logo-detector.hf.space/analizar \
  -F "file=@test_video.mp4" \
  -F "conf=0.45"

🛠️ Tecnologías

Categoría Tecnología
Lenguaje Python 3.11
Modelo YOLOv8n (Ultralytics)
Computer Vision OpenCV
Entrenamiento Google Colab (GPU T4)
Dataset Roboflow Universe
Base de datos SQLite
API FastAPI + Uvicorn
Frontend Streamlit
Contenedor Docker
Despliegue HuggingFace Spaces
Control de versiones Git / GitHub

👥 Equipo

Proyecto desarrollado por el equipo 2 — Bootcamp IA Factoría F5

Rama Desarrollador
v1 Naizabeth
v2 Joaquin
v3 Michelle

📄 Licencia

Este proyecto es de uso académico y educativo.

About

Sistema de detección automática de logos de marcas de videojuegos en vídeo, desarrollado como prueba de concepto para analizar el tiempo de aparición de cada marca en pantalla.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors