177 lines
4.9 KiB
Markdown
177 lines
4.9 KiB
Markdown
# Twitch Highlight Detector 🎮
|
|
|
|
Sistema avanzado de detección de highlights para streams de Twitch usando VLM (Vision Language Models) y análisis de contexto.
|
|
|
|
## 🎯 Características
|
|
|
|
- **Detección de Gameplay Real**: Usa análisis visual para distinguir entre gameplay, selección de campeones y streamer hablando
|
|
- **VLM Integration**: Compatible con Moondream, Video-LLaMA, Qwen2-VL
|
|
- **Multi-Modal**: Combina Whisper (audio), Chat (texto), Video (visión) y Audio (picos)
|
|
- **GPU Accelerated**: Optimizado para RTX 3050 (4GB) y RX 6800 XT (16GB)
|
|
- **Pipeline Automatizado**: Descarga → Análisis → Generación de video en un solo comando
|
|
|
|
## 🚀 Uso Rápido
|
|
|
|
```bash
|
|
# Detectar highlights en un stream
|
|
python3 highlight_generator.py --video stream.mp4 --chat chat.json --output highlights.mp4
|
|
|
|
# O usar el sistema completo con VLM
|
|
python3 scene_detector.py # Detecta segmentos de gameplay
|
|
python3 extract_final.py # Extrae highlights
|
|
python3 generate_video.py --video stream.mp4 --highlights final_highlights.json
|
|
```
|
|
|
|
## 📁 Archivos Principales
|
|
|
|
| Archivo | Descripción |
|
|
|---------|-------------|
|
|
| `highlight_generator.py` | Detector híbrido unificado (recomendado) |
|
|
| `scene_detector.py` | Detección de cambios de escena con FFmpeg |
|
|
| `gpu_detector.py` | Análisis de frames en GPU |
|
|
| `vlm_analyzer.py` | Análisis con VLM (Moondream/LLaVA) |
|
|
| `chat_sync.py` | Sincronización de chat con video |
|
|
| `6800xt.md` | **Guía completa para RX 6800 XT** |
|
|
|
|
## 🎮 Hardware Soportado
|
|
|
|
### RTX 3050 (4GB VRAM) - Configuración Actual
|
|
- Modelo: Moondream 2B
|
|
- Procesamiento: Frame por frame
|
|
- Tiempo: ~20 min para 2 horas de video
|
|
|
|
### RX 6800 XT (16GB VRAM) - Mejor Opción
|
|
- Modelo: Video-LLaMA 7B o Qwen2-VL 7B
|
|
- Procesamiento: Batch de frames
|
|
- Tiempo: ~5-8 min para 2 horas de video
|
|
- Ver: `6800xt.md` para instrucciones completas
|
|
|
|
## 📊 Pipeline de Trabajo
|
|
|
|
```
|
|
Video (2.3h)
|
|
↓
|
|
[Scene Detection] → Segmentos de 30s-5min
|
|
↓
|
|
[Clasificación] → GAMEPLAY / SELECT / TALKING / MENU
|
|
↓
|
|
[Filtrado] → Solo segmentos GAMEPLAY
|
|
↓
|
|
[Análisis Multi-Modal]
|
|
- Whisper: Transcripción + Keywords
|
|
- Chat: Picos de actividad
|
|
- Audio: Detección de gritos
|
|
- VLM: Confirmación visual
|
|
↓
|
|
[Extracción] → Mejores momentos de cada segmento
|
|
↓
|
|
[Generación] → Video final concatenado
|
|
```
|
|
|
|
## 🔧 Instalación
|
|
|
|
### Requisitos
|
|
- Python 3.10+
|
|
- CUDA/ROCm compatible
|
|
- FFmpeg con CUDA
|
|
|
|
### Setup
|
|
```bash
|
|
# Entorno Python
|
|
python3 -m venv vlm_env
|
|
source vlm_env/bin/activate
|
|
|
|
# Dependencias base
|
|
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
|
|
pip install transformers accelerate opencv-python pillow
|
|
pip install openai-whisper scipy numpy
|
|
|
|
# Para RTX 3050 (actual)
|
|
./install_vlm.sh
|
|
|
|
# Para RX 6800 XT (próximo)
|
|
# Ver 6800xt.md
|
|
```
|
|
|
|
## 📝 Configuración
|
|
|
|
### Variables de Entorno
|
|
```bash
|
|
export CUDA_VISIBLE_DEVICES=0 # Seleccionar GPU
|
|
export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512
|
|
```
|
|
|
|
### Archivos de Configuración
|
|
- `gameplay_scenes.json` - Segmentos de gameplay detectados
|
|
- `highlights_*.json` - Timestamps de highlights
|
|
- `transcripcion_*.json` - Transcripciones Whisper
|
|
|
|
## 🎬 Salidas
|
|
|
|
El sistema genera:
|
|
- `HIGHLIGHTS_FINAL.mp4` - Video de highlights (5-10 minutos)
|
|
- `HIGHLIGHTS_FINAL.json` - Timestamps de clips
|
|
- `gameplay_*.json` - Mapa de segmentos de gameplay
|
|
|
|
## 🔬 Metodología
|
|
|
|
### Detección de Gameplay
|
|
Usa análisis multi-factor:
|
|
1. **Variación de color** - Gameplay tiene más movimiento
|
|
2. **Canal verde** - Mapa de LoL es predominantemente verde
|
|
3. **Detección de bordes** - UI de LoL tiene bordes definidos
|
|
4. **VLM** - Clasificación visual con modelo de lenguaje
|
|
|
|
### Detección de Highlights
|
|
Combina 4 señales:
|
|
1. **Rage keywords** - "puta", "mierda", "me mataron"
|
|
2. **Picos de chat** - Mensajes/segundo
|
|
3. **Picos de audio** - Volumen/gritos
|
|
4. **Contexto temporal** - Extensión inteligente de clips
|
|
|
|
## 🛠️ Troubleshooting
|
|
|
|
### Out of Memory
|
|
```python
|
|
# Reducir batch_size o usar quantization
|
|
from transformers import BitsAndBytesConfig
|
|
quantization_config = BitsAndBytesConfig(load_in_4bit=True)
|
|
```
|
|
|
|
### Lento
|
|
- Usar CUDA Graphs
|
|
- Reducir resolución de frames (320x180 → 160x90)
|
|
- Procesar en batches
|
|
|
|
### Precision baja
|
|
- Aumentar umbral de detección
|
|
- Usar modelo VLM más grande
|
|
- Ajustar ponderaciones de scores
|
|
|
|
## 📚 Documentación Adicional
|
|
|
|
- `6800xt.md` - Guía completa para RX 6800 XT
|
|
- `contexto.md` - Contexto del proyecto
|
|
- `GPU_ANALYSIS.md` - Análisis de rendimiento GPU
|
|
|
|
## 🤝 Contribuir
|
|
|
|
1. Fork del repositorio
|
|
2. Crear branch: `git checkout -b feature/nueva-funcionalidad`
|
|
3. Commit: `git commit -am 'Agregar funcionalidad X'`
|
|
4. Push: `git push origin feature/nueva-funcionalidad`
|
|
5. Crear Pull Request
|
|
|
|
## 📝 Licencia
|
|
|
|
MIT License - Libre para uso personal y comercial.
|
|
|
|
## 👥 Autores
|
|
|
|
- **IA Assistant** - Implementación inicial
|
|
- **renato97** - Testing y requisitos
|
|
|
|
---
|
|
|
|
**Nota**: Para configuración específica de RX 6800 XT, ver archivo `6800xt.md`
|