En este tutorial, construiremos una aplicación de generador de texto a imagen interactiva a la que se accediera a través de Google Colab y un enlace público utilizando la Biblioteca de Difusores de Hugging Face y Gradio. Aprenderá cómo transformar las indicaciones de texto simples en imágenes detalladas aprovechando el modelo de difusión estable de última generación y la aceleración de GPU. Pasaremos la configuración del entorno, instalando dependencias, almacenando en caché el modelo y creando una interfaz de aplicación intuitiva que permita ajustes de parámetros en tiempo real.
!pip install diffusers transformers accelerate gradio
Primero, instalamos cuatro paquetes esenciales de Python usando PIP. Los difusores proporcionan herramientas para trabajar con modelos de difusión, Transformers ofrece modelos previos a las tareas, acelerar optimiza el rendimiento en diferentes configuraciones de hardware y Gradio permite la creación de interactivos aprendizaje automático interfaces. Estas bibliotecas forman la columna vertebral de nuestra demostración de generación de texto a imagen en Google Colab. Establezca el tiempo de ejecución en GPU.
import torch
from diffusers import StableDiffusionPipeline
import gradio as gr
# Global variable to cache the pipeline
pipe = None
No, importamos las bibliotecas necesarias: antorcha para cálculos tensorios y aceleración de GPU, estabilización de Pipeline de la biblioteca de difusores para cargar y ejecutar el modelo de difusión estable y Gradio para construir demostraciones interactivas. Además, una tubería variable global se inicializa a ninguno para almacenar en caché la tubería del modelo cargado más adelante, lo que ayuda a evitar recargar el modelo en cada llamada de inferencia.
print("CUDA available:", torch.cuda.is_available())
La línea de código anterior indica si hay una GPU habilitada para CUDA disponible. Utiliza la función Torch.cuda.is_available () de Pytorch, la función Devuelve verdaderas si se detecta una GPU y está lista para los cálculos y falso, lo que ayuda a garantizar que su código pueda aprovechar la aceleración de la GPU.
pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
torch_dtype=torch.float16
)
pipe = pipe.to("cuda")
El fragmento de código anterior carga la tubería de difusión estable utilizando un modelo previamente pretralado de “Runwayml/Stable-Diffusion-V1-5”. Establece su tipo de datos en un punto flotante de 16 bits (Torch.Float16) para optimizar el uso y el rendimiento de la memoria. Luego mueve toda la tubería a la GPU (“CUDA”) para aprovechar la aceleración de hardware para una generación de imágenes más rápida.
def generate_sd_image(prompt, num_inference_steps=50, guidance_scale=7.5):
"""
Generate an image from a text prompt using Stable Diffusion.
Args:
prompt (str): Text prompt to guide image generation.
num_inference_steps (int): Number of denoising steps (more steps can improve quality).
guidance_scale (float): Controls how strongly the prompt is followed.
Returns:
PIL.Image: The generated image.
"""
global pipe
if pipe is None:
print("Loading Stable Diffusion model... (this may take a while)")
pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
torch_dtype=torch.float16,
revision="fp16"
)
pipe = pipe.to("cuda")
# Use autocast for faster inference on GPU
with torch.autocast("cuda"):
image = pipe(prompt, num_inference_steps=num_inference_steps, guidance_scale=guidance_scale).images[0]
return image
La función anterior, Generate_SD_Image, toma un mensaje de texto junto con los parámetros para pasos de inferencia y escala de orientación para generar una imagen utilizando difusión estable. Verifica si la tubería del modelo ya está cargada en la variable de tubería global; Si no, carga y almacena el modelo con media precisión (FP16) y lo mueve a la GPU. Luego utiliza antorcha. Autocast para una inferencia eficiente de precisión mixta y devuelve la imagen generada.
# Define the Gradio interface
demo = gr.Interface(
fn=generate_sd_image,
inputs=[
gr.Textbox(lines=2, placeholder="Enter your prompt here...", label="Text Prompt"),
gr.Slider(minimum=10, maximum=100, step=5, value=50, label="Inference Steps"),
gr.Slider(minimum=1, maximum=20, step=0.5, value=7.5, label="Guidance Scale")
],
outputs=gr.Image(type="pil", label="Generated Image"),
title="Stable Diffusion Text-to-Image Demo",
description="Enter a text prompt to generate an image using Stable Diffusion. Adjust the parameters to fine-tune the result."
)
# Launch the interactive demo
demo.launch()
Aquí, definimos una interfaz de Gradio que conecta la función Generate_SD_Image a una interfaz de usuario web interactiva. Proporciona tres widgets de entrada, un cuadro de texto para ingresar el mensaje de texto y controles deslizantes para ajustar el número de pasos de inferencia y escala de orientación. En contraste, el widget de salida muestra la imagen generada. La interfaz también incluye un título y un texto descriptivo para guiar a los usuarios, y la demostración interactiva finalmente se inicia.
También puede acceder a la aplicación web a través de una URL pública: https://7dc6833297cf83b160.gradio.live/ (Activo para 72 horas). También se generará un enlace similar para su código.
En conclusión, este tutorial demostró cómo integrar los difusores de Hugging Face con Gradio para crear una aplicación poderosa e interactiva de texto a imagen en Google Colab y una aplicación web. Desde la configuración del entorno acelerado por GPU y almacenando en caché el modelo de difusión estable para construir una interfaz para la interacción dinámica del usuario, tiene una base sólida para experimentar y desarrollar aún más modelos generativos avanzados.
Aquí está el Cuaderno de colab para el proyecto anterior. Además, no olvides seguirnos Gorjeo y únete a nuestro Canal de telegrama y LinkedIn GRsalpicar. No olvides unirte a nuestro 75k+ ml de subreddit.
🚨 Lectura de lectura recomendada Liberaciones de investigación de IA: un sistema avanzado que integra el sistema de IA del agente y los estándares de cumplimiento de datos para abordar las preocupaciones legales en los conjuntos de datos de IA
Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.