/ Модель

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

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

controlnet-depth-sdxl-1.0

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

diffusers/controlnet-depth-sdxl-1.0 — модель ControlNet для Stable Diffusion XL Base 1.0, опубликованная в экосистеме Hugging Face Diffusers.

36 953скачиваний за 30 дней210лайковвеса обновлены24 апр 2024

Бенчмарки

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

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

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

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

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

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

Она использует условие глубины сцены, чтобы направлять генерацию изображений по пространственной структуре исходного изображения. Разработчик в README явно не указан; базовая модель создана Stability AI.

Модель предназначена для text-to-image генерации с сохранением композиции и относительной глубины объектов, например для преобразования исходных сцен по текстовому описанию с контролем перспективы и расположения элементов. Для построения карты глубины в рекомендуемом сценарии используется Intel/dpt-hybrid-midas, после чего ControlNet подключается к StableDiffusionXLControlNetPipeline. Указаны разрешение обработки 1024×1024 и рекомендуемый controlnet_conditioning_scale 0.5.

Ключевые характеристики включают архитектуру ControlNet поверх SDXL, текстовую и визуальную обусловленность через карту глубины, поддержку fp16 и safetensors. При обучении использовались 3 млн пар изображение–текст из LAION-Aesthetics V2, 700 GPU-часов на GPU A100 с памятью 80 ГБ и постоянной скоростью обучения 1e-5. Сильная сторона модели — управляемая генерация с опорой на геометрию сцены; ограничения включают зависимость от качества оценки глубины и необходимость совместного использования с совместимой базовой моделью SDXL и дополнительным depth-эстиматором. Лицензия указана как 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. You can find some example images in the following.

prompt: spiderman lecture, photorealistic images_0)

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",
    variant="fp16",
    use_safetensors=True,
    torch_dtype=torch.float16,
)
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    controlnet=controlnet,
    vae=vae,
    variant="fp16",
    use_safetensors=True,
    torch_dtype=torch.float16,
)
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.png")

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

Training

Our training script was built on top of the official training script that we provide here.

Training data and Compute

The model is trained on 3M image-text pairs from LAION-Aesthetics V2. The model is trained for 700 GPU hours on 80GB A100 GPUs.

Batch size

Data parallel with a single GPU batch size of 8 for a total batch size of 256.

Hyper Parameters

The constant learning rate of 1e-5.

Mixed precision

fp16

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

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

GPU в ailist

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

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

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

Ревизия весов
17bb979

0 моделей