Neste tutorial, projetamos um fluxo de trabalho prático de geração de imagens usando a biblioteca Diffusers. Começamos estabilizando o ambiente, então geramos imagens de alta qualidade a partir de prompts de texto usando Stable Diffusion com um agendador otimizado. Aceleramos a inferência com uma abordagem de consistência latente baseada em LoRA, guiamos a composição com ControlNet sob condicionamento de borda e, finalmente, realizamos edições localizadas via inpainting. Além disso, focamos em técnicas do mundo real que equilibram qualidade de imagem, velocidade e controlabilidade. Copiar Código Copiado Use um navegador diferente !pip -q uninstall -y pillow Pillow || true !pip -q install --upgrade --force-reinstall "pillow<12.0" !pip -q install --upgrade diffusers transformers accelerate safetensors huggingface_hub opencv-python import os, math, random import torch import numpy as np import cv2 from PIL import Image, ImageDraw, ImageFilter from diffusers import ( StableDiffusionPipeline, StableDiffusionInpaintPipeline, ControlNetModel, StableDiffusionControlNetPipeline, UniPCMultistepScheduler, ) Preparamos um tempo de execução limpo e compatível resolvendo conflitos de dependência e instalando todas as bibliotecas necessárias. Garantimos que o processamento de imagem funcione de forma confiável fixando a versão correta do Pillow e carregando o ecossistema Diffusers. Também importamos todos os módulos principais necessários para fluxos de trabalho de geração, controle e inpainting. Copiar Código Copiado Use um navegador diferente def seed_everything(seed=42): random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed_all(seed) def to_grid(images, cols=2, bg=255): if isinstance(images, Image.Image): images = [images] w, h = images[0].size rows = math.ceil(len(images) / cols) grid = Image.new("RGB", (cols*w, rows*h), (bg, bg, bg)) for i, im in enumerate(images): grid.paste(im, ((i % cols)*w, (i // cols)*h)) return grid device = "cuda" if torch.cuda.is_available() else "cpu" dtype = torch.float16 if device == "cuda" else torch.float32 print("device:", device, "| dtype:", dtype) Definimos funções utilitárias para garantir a reprodutibilidade e organizar as saídas visuais de forma eficiente. Definimos sementes aleatórias globais para que nossas gerações permaneçam consistentes em todas as execuções. Também detectamos o hardware disponível e configuramos a precisão para otimizar o desempenho na GPU ou CPU. Copiar Código Copiado Use um navegador diferente seed_everything(7) BASE_MODEL = "runwayml/stable-diffusion-v1-5" pipe = StableDiffusionPipeline.from_pretrained( BASE_MODEL, torch_dtype=dtype, safety_checker=None, ).to(device) p
Fonte: MarkTechPost
Publicado em 2026-02-21