pigeon-avatar / dom.py
ItzRoBeerT's picture
Update dom.py
a56edad verified
generate_title = """
function createGradioAnimation() {
var container = document.createElement('div');
container.id = 'gradio-animation';
container.style.fontSize = '2em';
container.style.fontWeight = 'bold';
container.style.textAlign = 'center';
container.style.marginBottom = '20px';
var text = 'Generate Pigeon Avatar';
for (var i = 0; i < text.length; i++) {
(function(i){
setTimeout(function(){
var letter = document.createElement('span');
letter.style.opacity = '0';
letter.style.transition = 'opacity 0.5s';
letter.innerText = text[i];
container.appendChild(letter);
setTimeout(function() {
letter.style.opacity = '1';
}, 50);
}, i * 250);
})(i);
}
var gradioContainer = document.querySelector('.gradio-container');
gradioContainer.insertBefore(container, gradioContainer.firstChild);
return 'Animation created';
}
"""
generate_markdown = """
## About this Demo
This demo generates a pigeon avatar based on an image of a pigeon.
## How this works?
You can upload an image of a pigeon and select an avatar style. The model will generate two pigeons avatars based on the image description.
"""
models = """
**Models used:**
- [Moondream2](https://huggingface.co/vikhyatk/moondream2) for image description.
- [FLUX.1-dev](https://huggingface.co/black-forest-labs/FLUX.1-dev) for image generation (API).
**Estimated times:**
- Realistic: 400s - 500s
- Pixel art: 200s - 250s
- Imaginative: 300s - 400s
- Cartoon: 300s - 400s
"""
doccumentation = """
# Documentación del Proyecto: Generación de Avatares Personalizados de Palomas
## Descripción del Proyecto
Este proyecto combina dos modelos de inteligencia artificial disponibles en Hugging Face para generar **avatares personalizados de palomas**. El sistema toma como entrada una imagen de una paloma, genera una descripción textual de la misma, y a partir de esta descripción crea un avatar estilizado basado en la preferencia del usuario.
## ¿Por qué he decidido realizar este proyecto?
Actualmente estoy trabajando en una aplicación para palomos de competición de la asociación de colombicultura de guadalcacín,
he pensado que poder generar avatares para los palomos más destacados (o los palomos que el usuario quiera) con inteligencia artificial,
podría ser una gran implementación. La idea es que el usuario pueda hacer una foto de su palomo y que la IA genere una foto para el avatar
de dicho palomo.
### Problema a Resolver
La generación automática de avatares personalizados a partir de imágenes específicas es un desafío que combina la **comprensión visual** y la **generación de imágenes**. Este sistema facilita la creación de avatares únicos basados en fotografías, ofreciendo múltiples estilos gráficos, lo que es útil para:
- Redes sociales personalizadas.
- Juegos con avatares estilizados.
- Identidades gráficas en comunidades digitales.
### Solución Propuesta
La solución se implementa en dos fases:
1. **Descripción de la Imagen**: Analizar la imagen de una paloma y generar una descripción textual.
2. **Generación del Avatar**: Usar la descripción textual para generar un avatar estilizado en el estilo seleccionado por el usuario.
### Flujo del Sistema
1. El usuario sube una imagen de una paloma.
2. El modelo de descripción genera un texto basado en la imagen.
3. El usuario selecciona un estilo gráfico para el avatar.
4. Un modelo de generación de imágenes produce avatares basados en la descripción y el estilo.
## Entrada y Salida
### Input
1. **Imagen**: Imagen de una paloma, cargada por el usuario.
2. **Estilo del avatar** (opcional): Selección del usuario entre opciones como:
- Realista
- Arte Pixelado
- Imaginativo
- Dibujo Animado
### Output
Una galería de **tres avatares estilizados** generados a partir de la descripción de la imagen y el estilo seleccionado.
---
## Modelos Utilizados
### 1. **Modelo de Descripción de Imágenes**
- **Nombre**: [vikhyatk/moondream2](https://huggingface.co/vikhyatk/moondream2)
- **Clasificación**: Modelo de Lenguaje Generativo con Capacidades de Visión.
- **Descripción**: Este modelo genera descripciones textuales detalladas basadas en el análisis de imágenes.
- **Posibles Limitaciones**:
- La descripción puede ser genérica si la imagen tiene elementos ambiguos.
- Limitada a dominios visuales preentrenados (puede no reconocer especies raras de palomas).
### 2. **Modelo de Generación de Imágenes**
- **Nombre**: [black-forest-labs/FLUX.1-dev](https://huggingface.co/black-forest-labs/FLUX.1-dev)
- **Clasificación**: Modelo de Difusión Estilizado.
- **Descripción**: Genera imágenes estilizadas basadas en prompts textuales. Permite control mediante parámetros como semillas para resultados reproducibles.
- **Posibles Limitaciones**:
- La calidad del avatar depende de la coherencia del prompt generado.
- El rendimiento puede ser inferior en dispositivos sin GPU.
### 3. **Modelo de Generación de Imágenes**
Si bien ha sido reemplazado por Flux.1-dev, e un inicio se iba a utilizar [stable-diffusion-v1-5/stable-diffusion-v1-5](https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5)
este cambio lo he realizado porque buscaba una mejor experiencia de usuario, ya que, con Flux.1-dev, el cual cuenta con unos 12b de parámetros,
consigo unos resultados gracias a su API no solo en menos tiempo, sino que con mejor calidad. Si bien la implementación de stable-diffusion-v1
me ha servido para implementar un modelo de texto a imagen con diffuser y practicarlo, no daba los resultados que realmente esperaba para la demo y además,
en el espacio de la plataforma hugging face tardaba demasiado en generar la imagen.
---
## Implementación Técnica
La solución utiliza la biblioteca **Gradio** para ofrecer una interfaz de usuario interactiva y accesible:
- **Cargar Imagen**: El usuario sube la imagen de la paloma.
- **Seleccionar Estilo**: El usuario selecciona un estilo de avatar.
- **Generar Avatares**: Se genera una galería con tres avatares estilizados.
El sistema soporta múltiples dispositivos (CPU, GPU y Apple Silicon).
---
## Potenciales Usos y Expansión
1. **Avatares personalizados en redes sociales.**
2. **Identidad visual para juegos.**
3. **Expansión a otros dominios** (e.g., avatares para perros, gatos, etc.).
## Limitaciones y Consideraciones
- **Calidad de Entrada**: Las imágenes de baja resolución o con obstrucciones pueden afectar la precisión de la descripción.
- **Estilos Limitados**: Ampliar los estilos disponibles requiere ajustar los prompts o integrar nuevos modelos.
- **Dependencia de Recursos**: La generación de imágenes estilizadas puede ser lenta en dispositivos sin GPU.
---
Este proyecto demuestra cómo la combinación de modelos generativos puede resolver problemas complejos de personalización visual, ofreciendo una solución creativa y flexible para múltiples dominios.
"""