/ Модель

Характеристики

Лицензия
OpenRAIL++
Базовая модель
stable-diffusion-xl-base-1.0
Опубликована
16 авг 2023

controlnet-depth-sdxl-1.0-mid

Генерация изображений3 профессии

diffusers/controlnet-depth-sdxl-1.0-mid — модель ControlNet для управления генерацией изображений с помощью карт глубины.

1 857скачиваний за 30 дней18лайковвеса обновлены16 авг 2023

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Она обучена совместно с базовой моделью stabilityai/stable-diffusion-xl-base-1.0 и предназначена для использования в StableDiffusionXLControlNetPipeline библиотеки Diffusers. Разработка и обучающий скрипт основаны на официальных инструментах Hugging Face Diffusers.

Модель подходит для text-to-image-сценариев, в которых требуется сохранить пространственную структуру и глубину исходного изображения при генерации нового содержимого по текстовому запросу. Карту глубины можно получить из входного изображения с помощью Intel/dpt-hybrid-midas, после чего передать её в ControlNet. Контроль силы воздействия выполняется параметром controlnet_conditioning_scale; в README рекомендовано начинать со значения 0,5.

Это уменьшенная версия SDXL ControlNet: заявлено, что checkpoint примерно в пять раз меньше исходного XL ControlNet checkpoint. Модель не содержит attention-блоков, не использует distillation и работает в смешанной точности FP16. Обучение проводилось на 3 млн изображений из подмножества LAION aesthetic 6 plus, в течение 50 000 шагов на машине с 8 GPU A100. Размер контекста и поддерживаемые языки отдельно не указаны.

Checkpoint обозначен как экспериментальный. Он хорошо работает с большинством изображений-условий, но для сложных условий более крупные версии могут давать лучшее качество; результат также зависит от параметров controlnet_conditioning_scale и guidance_scale. Лицензия — openrail++.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

SDXL-controlnet: Depth

These are controlnet weights trained on stabilityai/stable-diffusion-xl-base-1.0 with depth conditioning. This checkpoint is 5x smaller than the original XL controlnet checkpoint. You can find some example images in the following.

prompt: donald trump, serious look, cigar in the mouth, 70mm, film still, head shot open

prompt: spiderman lecture, photorealistic images_0)

prompt: aerial view, a futuristic research complex in a bright foggy jungle, hard lighting images_1)

prompt: megatron in an apocalyptic world ground, runied city in the background, photorealistic images_2)

Usage

Make sure to first install the libraries:

pip install accelerate transformers safetensors diffusers

And then we're ready to go:

import torch
import numpy as np
from PIL import Image

from transformers import DPTFeatureExtractor, DPTForDepthEstimation
from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline, AutoencoderKL
from diffusers.utils import load_image


depth_estimator = DPTForDepthEstimation.from_pretrained("Intel/dpt-hybrid-midas").to("cuda")
feature_extractor = DPTFeatureExtractor.from_pretrained("Intel/dpt-hybrid-midas")
controlnet = ControlNetModel.from_pretrained(
    "diffusers/controlnet-depth-sdxl-1.0-mid",
    variant="fp16",
    use_safetensors=True,
    torch_dtype=torch.float16,
).to("cuda")
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16).to("cuda")
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    controlnet=controlnet,
    vae=vae,
    variant="fp16",
    use_safetensors=True,
    torch_dtype=torch.float16,
).to("cuda")
pipe.enable_model_cpu_offload()

def get_depth_map(image):
    image = feature_extractor(images=image, return_tensors="pt").pixel_values.to("cuda")
    with torch.no_grad(), torch.autocast("cuda"):
        depth_map = depth_estimator(image).predicted_depth

    depth_map = torch.nn.functional.interpolate(
        depth_map.unsqueeze(1),
        size=(1024, 1024),
        mode="bicubic",
        align_corners=False,
    )
    depth_min = torch.amin(depth_map, dim=[1, 2, 3], keepdim=True)
    depth_max = torch.amax(depth_map, dim=[1, 2, 3], keepdim=True)
    depth_map = (depth_map - depth_min) / (depth_max - depth_min)
    image = torch.cat([depth_map] * 3, dim=1)

    image = image.permute(0, 2, 3, 1).cpu().numpy()[0]
    image = Image.fromarray((image * 255.0).clip(0, 255).astype(np.uint8))
    return image


prompt = "stormtrooper lecture, photorealistic"
image = load_image("https://huggingface.co/lllyasviel/sd-controlnet-depth/resolve/main/images/stormtrooper.png")
controlnet_conditioning_scale = 0.5  # recommended for good generalization

depth_image = get_depth_map(image)

images = pipe(
    prompt, image=depth_image, num_inference_steps=30, controlnet_conditioning_scale=controlnet_conditioning_scale,
).images
images[0]

images[0].save(f"stormtrooper_grid.png")

To more details, check out the official documentation of StableDiffusionXLControlNetPipeline.

🚨 Please note that this checkpoint is experimental and there's a lot of room for improvement. We encourage the community to build on top of it, improve it, and provide us with feedback. 🚨

Training

Our training script was built on top of the official training script that we provide here. You can refer to this script for full discolsure.

  • This checkpoint does not perform distillation. We just use a smaller ControlNet initialized from the SDXL UNet. We encourage the community to try and conduct distillation too. This resource might be of help in this regard.
  • To learn more about how the ControlNet was initialized, refer to this code block.
  • It does not have any attention blocks.
  • The model works pretty good on most conditioning images. But for more complex conditionings, the bigger checkpoints might be better. We are still working on improving the quality of this checkpoint and looking for feedback from the community.
  • We recommend playing around with the controlnet_conditioning_scale and guidance_scale arguments for potentially better image generation quality.

Training data

The model was trained on 3M images from LAION aesthetic 6 plus subset, with batch size of 256 for 50k steps with constant learning rate of 3e-5.

Compute

One 8xA100 machine

Mixed precision

FP16

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Нельзя запустить

ControlNetModel управляет генерацией по входной картинке (поза, глубина, контуры): такой ввод пока не поддерживается.

Ревизия весов
ba71fc5

0 моделей