fix bug that caused black images when converting ckpts to diffusers in RAM (#2914)

Cause of the problem was inadvertent activation of the safety checker.

When conversion occurs on disk, the safety checker is disabled during loading.
However, when converting in RAM, the safety checker was not removed, resulting
in it activating even when user specified --no-nsfw_checker.

This PR fixes the problem by detecting when the caller has requested the InvokeAi
StableDiffusionGeneratorPipeline class to be returned and setting safety checker
to None. Do not do this with diffusers models destined for disk because then they
will be incompatible with the merge script!!

Closes #2836
This commit is contained in:
Lincoln Stein 2023-03-10 13:11:32 -05:00 committed by GitHub
parent 7ff77504cb
commit 685df33584
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1274,7 +1274,7 @@ def load_pipeline_from_original_stable_diffusion_ckpt(
tokenizer=tokenizer,
unet=unet.to(precision),
scheduler=scheduler,
safety_checker=safety_checker.to(precision),
safety_checker=None if return_generator_pipeline else safety_checker.to(precision),
feature_extractor=feature_extractor,
)
else: