Diffusers documentation

Bir modeli yeni bir göreve uyarlayın

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Bir modeli yeni bir göreve uyarlayın

Birçok difüzyon sistemi aynı bileşenleri paylaşır; bu da bir görev için önceden eğitilmiş bir modelin tamamen farklı bir göreve uyarlanmasını sağlar.

Bu kılavuz, önceden eğitilmiş bir UNet2DConditionModel'in mimarisini başlatıp değiştirerek, önceden eğitilmiş bir metinden görüntüye modelini inpainting için nasıl uyarlayacağınızı gösterecektir.

UNet2DConditionModel parametrelerini yapılandır

Varsayılan olarak bir UNet2DConditionModel, girdi örneğinde 4 kanal kabul eder. Örneğin, stable-diffusion-v1-5/stable-diffusion-v1-5 gibi önceden eğitilmiş bir metinden görüntüye model yükleyin ve in_channels sayısına bakın:

from diffusers import StableDiffusionPipeline

pipeline = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", use_safetensors=True)
pipeline.unet.config["in_channels"]
4

Inpainting, giriş örneğinde 9 kanal gerektirir. Bu değeri, stable-diffusion-v1-5/stable-diffusion-inpainting gibi önceden eğitilmiş bir inpainting modelinde kontrol edebilirsiniz:

from diffusers import StableDiffusionPipeline

pipeline = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-inpainting", use_safetensors=True)
pipeline.unet.config["in_channels"]
9

Metinden görüntüye modelinizi inpainting için uyarlamak için in_channels sayısını 4'ten 9'a değiştirmeniz gerekir.

Önceden eğitilmiş metinden görüntüye model ağırlıklarıyla bir UNet2DConditionModel başlatın ve in_channels değerini 9 olarak değiştirin. in_channels sayısını değiştirmek, şeklinin artık farklı olması nedeniyle boyut uyumsuzluğu hatasından kaçınmak için ignore_mismatched_sizes=True ve low_cpu_mem_usage=False parametrelerini ayarlamanızı gerektirir.

from diffusers import AutoModel

model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
unet = AutoModel.from_pretrained(
    model_id,
    subfolder="unet",
    in_channels=9,
    low_cpu_mem_usage=False,
    ignore_mismatched_sizes=True,
    use_safetensors=True,
)

Metinden görüntüye modelin diğer bileşenlerinin önceden eğitilmiş ağırlıkları, checkpoint'lerinden başlatılır; ancak unet'in giriş kanal ağırlıkları (conv_in.weight) rastgele başlatılır. Modelin inpainting için ince ayarının yapılması önemlidir, aksi takdirde model gürültü döndürür.

Update on GitHub