{/ Эта страница автоматически создается на основе файла SKILL.md навыка с помощью сайта site/scripts/generate-skill-docs.py. Редактируйте исходный код SKILL.md, а не эту страницу. /}
Генерация стабильного диффузионного изображения
Современная генерация текста в изображение с помощью моделей Stable Diffusion с помощью диффузоров HuggingFace. Используйте при создании изображений из текстовых подсказок, выполнении перевода изображений в изображения, рисовании или создании пользовательских конвейеров распространения.
Метаданные навыков
Источник
Необязательно — установите с помощью hermesskills installofficial/mlops/stable-diffusion
Ниже приведено полное определение навыка, которое Гермес загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навык активен.
Генерация стабильного диффузионного изображения
Подробное руководство по созданию изображений с помощью Stable Diffusion с использованием библиотеки HuggingFace Diffusers.
Когда использовать стабильную диффузию
Используйте стабильную диффузию, когда:
- Генерация изображений из текстовых описаний
- Выполнение перевода изображения в изображение (перенос стиля, улучшение)
- Inpainting (заполнение замаскированных областей)
- Перерисовка (расширение изображений за пределы границ)
- Создание вариаций существующих изображений.
- Создание пользовательских рабочих процессов создания изображений.
Основные особенности:
- Преобразование текста в изображение: создание изображений на основе подсказок на естественном языке.
- Изображение в изображение: преобразование существующих изображений с помощью текстовых указаний.
- Inpainting: заполнение замаскированных областей контекстно-зависимым содержимым.
- ControlNet: добавление пространственной обусловленности (края, позы, глубина).
- Поддержка LoRA: эффективная точная настройка и адаптация стиля.
- Несколько моделей: SD 1.5, SDXL, SD 3.0, поддержка Flux.
Вместо этого используйте альтернативы:
- DALL-E 3: для генерации на основе API без графического процессора.
- Midjourney: для художественных, стилизованных результатов.
- Imagen: для интеграции с Google Cloud.
- Leonardo.ai: для творческих рабочих процессов через Интернет.
fromdiffusersimportDPMSolverMultistepScheduler# Swap for faster generationpipe.scheduler=DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)# Now generate with fewer stepsimage=pipe(prompt,num_inference_steps=20).images[0]
Параметры генерации
Ключевые параметры
Параметр
По умолчанию
Описание
подсказка
Требуется
Текстовое описание желаемого изображения
negative_prompt
Нет
Чего следует избегать в изображении
num_inference_steps
50
Шаги шумоподавления (больше = лучшее качество)
guide_scale
7,5
Быстрое соблюдение режима лечения (типично 7–12)
высота, ширина
512/1024
Выходные размеры (кратные 8)
генератор
Нет
Генератор факела для воспроизводимости
num_images_per_prompt
1
Размер партии
Воспроизводимое поколение
importtorchgenerator=torch.Generator(device="cuda").manual_seed(42)image=pipe(prompt="A cat wearing a top hat",generator=generator,num_inference_steps=50).images[0]
Отрицательные подсказки
image=pipe(prompt="Professional photo of a dog in a garden",negative_prompt="blurry, low quality, distorted, ugly, bad anatomy",guidance_scale=7.5).images[0]
Изображение к изображению
Преобразуйте существующие изображения с помощью текстовых указаний:
fromdiffusersimportAutoPipelineForImage2ImagefromPILimportImagepipe=AutoPipelineForImage2Image.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5",torch_dtype=torch.float16).to("cuda")init_image=Image.open("input.jpg").resize((512,512))image=pipe(prompt="A watercolor painting of the scene",image=init_image,strength=0.75,# How much to transform (0-1)num_inference_steps=50).images[0]
Inpainting
Заполните замаскированные области:
fromdiffusersimportAutoPipelineForInpaintingfromPILimportImagepipe=AutoPipelineForInpainting.from_pretrained("runwayml/stable-diffusion-inpainting",torch_dtype=torch.float16).to("cuda")image=Image.open("photo.jpg")mask=Image.open("mask.png")# White = inpaint regionresult=pipe(prompt="A red car parked on the street",image=image,mask_image=mask,num_inference_steps=50).images[0]
Контрольная сеть
Добавьте пространственную обусловленность для точного контроля:
fromdiffusersimportStableDiffusionControlNetPipeline,ControlNetModelimporttorch# Load ControlNet for edge conditioningcontrolnet=ControlNetModel.from_pretrained("lllyasviel/control_v11p_sd15_canny",torch_dtype=torch.float16)pipe=StableDiffusionControlNetPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5",controlnet=controlnet,torch_dtype=torch.float16).to("cuda")# Use Canny edge image as controlcontrol_image=get_canny_image(input_image)image=pipe(prompt="A beautiful house in the style of Van Gogh",image=control_image,num_inference_steps=30).images[0]
Доступные сети управления
КонтролНет
Тип ввода
Вариант использования
хитрый
Краевые карты
Сохранить структуру
открытая позиция
Поза скелетов
Человеческие позы
глубина
Карты глубины
поколение с поддержкой 3D
нормальный
Нормальные карты
Детали поверхности
млсд
Отрезки линий
Архитектурные линии
каракуля
Грубые наброски
Эскиз в изображение
адаптеры LoRA
Загрузите настроенные адаптеры стилей:
fromdiffusersimportDiffusionPipelinepipe=DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5",torch_dtype=torch.float16).to("cuda")# Load LoRA weightspipe.load_lora_weights("path/to/lora",weight_name="style.safetensors")# Generate with LoRA styleimage=pipe("A portrait in the trained style").images[0]# Adjust LoRA strengthpipe.fuse_lora(lora_scale=0.8)# Unload LoRApipe.unload_lora_weights()
Несколько LoRA
# Load multiple LoRAspipe.load_lora_weights("lora1",adapter_name="style")pipe.load_lora_weights("lora2",adapter_name="character")# Set weights for eachpipe.set_adapters(["style","character"],adapter_weights=[0.7,0.5])image=pipe("A portrait").images[0]
Оптимизация памяти
Включить разгрузку процессора
# Model CPU offload - moves models to CPU when not in usepipe.enable_model_cpu_offload()# Sequential CPU offload - more aggressive, slowerpipe.enable_sequential_cpu_offload()
Нарезка внимания
# Reduce memory by computing attention in chunkspipe.enable_attention_slicing()# Or specific chunk sizepipe.enable_attention_slicing("max")
fromdiffusersimportUNet2DConditionModel,AutoencoderKL# Load custom VAEvae=AutoencoderKL.from_pretrained("stabilityai/sd-vae-ft-mse")# Use with pipelinepipe=DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5",vae=vae,torch_dtype=torch.float16)
Пакетная генерация
Эффективно создавайте несколько изображений:
# Multiple promptsprompts=["A cat playing piano","A dog reading a book","A bird painting a picture"]images=pipe(prompts,num_inference_steps=30).images# Multiple images per promptimages=pipe("A beautiful sunset",num_images_per_prompt=4,num_inference_steps=30).images
Общие рабочие процессы
Рабочий процесс 1: Генерация высокого качества
fromdiffusersimportStableDiffusionXLPipeline,DPMSolverMultistepSchedulerimporttorch# 1. Load SDXL with optimizationspipe=StableDiffusionXLPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0",torch_dtype=torch.float16,variant="fp16")pipe.to("cuda")pipe.scheduler=DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)pipe.enable_model_cpu_offload()# 2. Generate with quality settingsimage=pipe(prompt="A majestic lion in the savanna, golden hour lighting, 8k, detailed fur",negative_prompt="blurry, low quality, cartoon, anime, sketch",num_inference_steps=30,guidance_scale=7.5,height=1024,width=1024).images[0]
Рабочий процесс 2: Быстрое прототипирование
fromdiffusersimportAutoPipelineForText2Image,LCMSchedulerimporttorch# Use LCM for 4-8 step generationpipe=AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0",torch_dtype=torch.float16).to("cuda")# Load LCM LoRA for fast generationpipe.load_lora_weights("latent-consistency/lcm-lora-sdxl")pipe.scheduler=LCMScheduler.from_config(pipe.scheduler.config)pipe.fuse_lora()# Generate in ~1 secondimage=pipe("A beautiful landscape",num_inference_steps=4,guidance_scale=1.0).images[0]
Распространенные проблемы
CUDA не хватает памяти:
# Enable memory optimizationspipe.enable_model_cpu_offload()pipe.enable_attention_slicing()pipe.enable_vae_slicing()# Or use lower precisionpipe=DiffusionPipeline.from_pretrained(model_id,torch_dtype=torch.float16)
Черно-шумовые изображения:
# Check VAE configuration# Use safety checker bypass if neededpipe.safety_checker=None# Ensure proper dtype consistencypipe=pipe.to(dtype=torch.float16)
Медленная генерация:
# Use faster schedulerfromdiffusersimportDPMSolverMultistepSchedulerpipe.scheduler=DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)# Reduce stepsimage=pipe(prompt,num_inference_steps=20).images[0]