Diffusers documentation
Bir modeli yeni bir göreve uyarlayın
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"]
4Inpainting, 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"]
9Metinden 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.