davidperezmillan/filter-ia-videos

0

stars

1

commits

Python

primary language

Oct 18, 2025

updated

README

Video Analysis Bot

Un sistema automatizado para analizar videos en busca de contenido con personas y material NSFW usando inteligencia artificial.

Características

  • Análisis automático: Escanea periódicamente una carpeta de videos
  • Detección de personas: Usa DETR (Facebook) para detectar personas en videos
  • Clasificación NSFW: Usa ViT para identificar contenido inapropiado
  • Base de datos embebida: SQLite para almacenar resultados y metadatos
  • Arquitectura modular: Paquete bien estructurado para fácil mantenimiento
  • Docker: Contenedorizado para fácil despliegue

Estructura del Proyecto

src/
├── database/           # Paquete de base de datos
│   ├── __init__.py    # Inicialización del paquete
│   ├── connection.py  # Clase de conexión a SQLite
│   ├── models.py      # Modelos de datos (dataclasses)
│   └── operations.py  # Operaciones CRUD y lógica de negocio
├── models/
│   └── video-analyzer.py  # Lógica de análisis de video con IA
main.py                 # Bot principal que ejecuta el análisis

Requisitos

  • Python 3.9+
  • Docker y Docker Compose
  • GPU recomendada para mejor rendimiento (opcional)

Instalación

  1. Clona el repositorio:

    git clone <repository-url>
    cd filter_ia_videos
    
  2. Configura las variables de entorno: Edita el archivo .env:

    VIDEO_DIR=/ruta/a/tus/videos
    
  3. Construye y ejecuta con Docker:

    docker-compose up --build
    

Uso del Paquete de Base de Datos

Conexión Básica

from src.database import DatabaseConnection, DatabaseOperations

# Conectar a la base de datos
with DatabaseConnection("mi_base.db") as db_conn:
    db_conn.create_tables()  # Crear tablas si no existen

    # Inicializar operaciones
    db_ops = DatabaseOperations(db_conn)

    # Tu código aquí

Operaciones CRUD

# Agregar un video
video_id = db_ops.add_video(
    filename="mi_video.mp4",
    filepath="/app/videos/mi_video.mp4",
    duration=120.5,
    total_frames=3600
)

# Agregar resultado de análisis
analysis_id = db_ops.add_analysis_result(
    video_id=video_id,
    has_persons=True,
    has_nsfw=False,
    processing_time=45.2
)

# Agregar detección
db_ops.add_detection(
    analysis_id=analysis_id,
    frame_number=150,
    detection_type="person",
    confidence=0.89,
    bounding_box=[100, 200, 300, 400]
)

Consultas

# Obtener video por ID
video = db_ops.get_video(video_id)

# Obtener resultados de análisis
results = db_ops.get_analysis_results(video_id)

# Obtener estadísticas
stats = db_ops.get_queue_stats()
summary = db_ops.get_videos_summary()

Modelos de Datos

VideoAnalysis

  • id: ID único del video
  • filename: Nombre del archivo
  • filepath: Ruta completa al archivo
  • duration: Duración en segundos
  • total_frames: Número total de frames
  • file_size: Tamaño del archivo en bytes
  • created_at/updated_at: Timestamps

AnalysisResult

  • id: ID único del análisis
  • video_id: ID del video analizado
  • has_persons: Si se detectaron personas
  • has_nsfw: Si se detectó contenido NSFW
  • processing_time: Tiempo de procesamiento
  • analyzed_at: Fecha de análisis

DetectionResult

  • id: ID único de la detección
  • analysis_id: ID del análisis
  • frame_number: Número del frame
  • detection_type: Tipo ('person' o 'nsfw')
  • confidence: Nivel de confianza
  • bounding_box: Coordenadas del bounding box
  • image_path: Ruta a la imagen guardada

Configuración

Variables de Entorno (.env)

VIDEO_DIR=/home/user/videos  # Carpeta donde buscar videos

Docker Compose

version: '3.8'
services:
  video-analyzer:
    build: .
    env_file:
      - .env
    volumes:
      - ${VIDEO_DIR}:/app/videos
      - ./detections:/app/detections

Desarrollo

Ejecutar Localmente

  1. Instala las dependencias:

    pip install -r requirements.txt
    
  2. Ejecuta el bot:

    python main.py
    

Ejecutar Ejemplo de Base de Datos

python example_db_usage.py

API de Base de Datos

DatabaseConnection

Métodos principales:

  • connect(): Establecer conexión
  • disconnect(): Cerrar conexión
  • get_cursor(): Obtener cursor con context manager
  • execute_query(query, params): Ejecutar consulta
  • create_tables(): Crear esquema de base de datos

DatabaseOperations

Métodos principales:

  • Videos: add_video(), get_video(), update_video()
  • Análisis: add_analysis_result(), get_analysis_results()
  • Detecciones: add_detection(), get_detections()
  • Cola: add_to_queue(), get_next_in_queue(), update_queue_status()
  • Estadísticas: get_queue_stats(), get_videos_summary()

Logs y Monitoreo

El sistema genera logs detallados incluyendo:

  • Videos procesados
  • Resultados de análisis
  • Errores y excepciones
  • Estadísticas de rendimiento

Los logs se muestran en la consola y pueden redirigirse a archivos según necesidad.

Seguridad

  • La base de datos SQLite es local y no expone puertos
  • Las imágenes de detección se guardan localmente
  • No hay comunicación externa por defecto

Limitaciones

  • Requiere GPU para rendimiento óptimo
  • Los modelos de IA descargan ~1GB de datos en primera ejecución
  • Procesamiento secuencial (un video a la vez)

Contribución

  1. Fork el proyecto
  2. Crea una rama para tu feature
  3. Commit tus cambios
  4. Push a la rama
  5. Abre un Pull Request

Licencia

[Especifica tu licencia aquí]

Contributors

davidperezmillan/filter-ia-videos

0

stars

1

commits

Python

primary language

Oct 18, 2025

updated

README

Video Analysis Bot

Un sistema automatizado para analizar videos en busca de contenido con personas y material NSFW usando inteligencia artificial.

Características

  • Análisis automático: Escanea periódicamente una carpeta de videos
  • Detección de personas: Usa DETR (Facebook) para detectar personas en videos
  • Clasificación NSFW: Usa ViT para identificar contenido inapropiado
  • Base de datos embebida: SQLite para almacenar resultados y metadatos
  • Arquitectura modular: Paquete bien estructurado para fácil mantenimiento
  • Docker: Contenedorizado para fácil despliegue

Estructura del Proyecto

src/
├── database/           # Paquete de base de datos
│   ├── __init__.py    # Inicialización del paquete
│   ├── connection.py  # Clase de conexión a SQLite
│   ├── models.py      # Modelos de datos (dataclasses)
│   └── operations.py  # Operaciones CRUD y lógica de negocio
├── models/
│   └── video-analyzer.py  # Lógica de análisis de video con IA
main.py                 # Bot principal que ejecuta el análisis

Requisitos

  • Python 3.9+
  • Docker y Docker Compose
  • GPU recomendada para mejor rendimiento (opcional)

Instalación

  1. Clona el repositorio:

    git clone <repository-url>
    cd filter_ia_videos
    
  2. Configura las variables de entorno: Edita el archivo .env:

    VIDEO_DIR=/ruta/a/tus/videos
    
  3. Construye y ejecuta con Docker:

    docker-compose up --build
    

Uso del Paquete de Base de Datos

Conexión Básica

from src.database import DatabaseConnection, DatabaseOperations

# Conectar a la base de datos
with DatabaseConnection("mi_base.db") as db_conn:
    db_conn.create_tables()  # Crear tablas si no existen

    # Inicializar operaciones
    db_ops = DatabaseOperations(db_conn)

    # Tu código aquí

Operaciones CRUD

# Agregar un video
video_id = db_ops.add_video(
    filename="mi_video.mp4",
    filepath="/app/videos/mi_video.mp4",
    duration=120.5,
    total_frames=3600
)

# Agregar resultado de análisis
analysis_id = db_ops.add_analysis_result(
    video_id=video_id,
    has_persons=True,
    has_nsfw=False,
    processing_time=45.2
)

# Agregar detección
db_ops.add_detection(
    analysis_id=analysis_id,
    frame_number=150,
    detection_type="person",
    confidence=0.89,
    bounding_box=[100, 200, 300, 400]
)

Consultas

# Obtener video por ID
video = db_ops.get_video(video_id)

# Obtener resultados de análisis
results = db_ops.get_analysis_results(video_id)

# Obtener estadísticas
stats = db_ops.get_queue_stats()
summary = db_ops.get_videos_summary()

Modelos de Datos

VideoAnalysis

  • id: ID único del video
  • filename: Nombre del archivo
  • filepath: Ruta completa al archivo
  • duration: Duración en segundos
  • total_frames: Número total de frames
  • file_size: Tamaño del archivo en bytes
  • created_at/updated_at: Timestamps

AnalysisResult

  • id: ID único del análisis
  • video_id: ID del video analizado
  • has_persons: Si se detectaron personas
  • has_nsfw: Si se detectó contenido NSFW
  • processing_time: Tiempo de procesamiento
  • analyzed_at: Fecha de análisis

DetectionResult

  • id: ID único de la detección
  • analysis_id: ID del análisis
  • frame_number: Número del frame
  • detection_type: Tipo ('person' o 'nsfw')
  • confidence: Nivel de confianza
  • bounding_box: Coordenadas del bounding box
  • image_path: Ruta a la imagen guardada

Configuración

Variables de Entorno (.env)

VIDEO_DIR=/home/user/videos  # Carpeta donde buscar videos

Docker Compose

version: '3.8'
services:
  video-analyzer:
    build: .
    env_file:
      - .env
    volumes:
      - ${VIDEO_DIR}:/app/videos
      - ./detections:/app/detections

Desarrollo

Ejecutar Localmente

  1. Instala las dependencias:

    pip install -r requirements.txt
    
  2. Ejecuta el bot:

    python main.py
    

Ejecutar Ejemplo de Base de Datos

python example_db_usage.py

API de Base de Datos

DatabaseConnection

Métodos principales:

  • connect(): Establecer conexión
  • disconnect(): Cerrar conexión
  • get_cursor(): Obtener cursor con context manager
  • execute_query(query, params): Ejecutar consulta
  • create_tables(): Crear esquema de base de datos

DatabaseOperations

Métodos principales:

  • Videos: add_video(), get_video(), update_video()
  • Análisis: add_analysis_result(), get_analysis_results()
  • Detecciones: add_detection(), get_detections()
  • Cola: add_to_queue(), get_next_in_queue(), update_queue_status()
  • Estadísticas: get_queue_stats(), get_videos_summary()

Logs y Monitoreo

El sistema genera logs detallados incluyendo:

  • Videos procesados
  • Resultados de análisis
  • Errores y excepciones
  • Estadísticas de rendimiento

Los logs se muestran en la consola y pueden redirigirse a archivos según necesidad.

Seguridad

  • La base de datos SQLite es local y no expone puertos
  • Las imágenes de detección se guardan localmente
  • No hay comunicación externa por defecto

Limitaciones

  • Requiere GPU para rendimiento óptimo
  • Los modelos de IA descargan ~1GB de datos en primera ejecución
  • Procesamiento secuencial (un video a la vez)

Contribución

  1. Fork el proyecto
  2. Crea una rama para tu feature
  3. Commit tus cambios
  4. Push a la rama
  5. Abre un Pull Request

Licencia

[Especifica tu licencia aquí]

Contributors

Languages

Python

95.5%

Dockerfile

4.5%