Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -129,7 +129,7 @@ def infer(
|
|
129 |
ip_source_image=None, # Исходное изображение IP_adapter
|
130 |
ip_adapter_image=None, # Контрольное изображение IP_adapter
|
131 |
remove_bg=None, # Удаление фона с изображения
|
132 |
-
|
133 |
progress=gr.Progress(track_tqdm=True)
|
134 |
):
|
135 |
|
@@ -491,37 +491,73 @@ def infer(
|
|
491 |
generator=generator
|
492 |
).images[0]
|
493 |
else:
|
494 |
-
# Генерация изображений с
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
|
|
499 |
|
500 |
-
|
501 |
|
502 |
-
if model != model_default:
|
503 |
-
pipe = StableDiffusionPipeline.from_pretrained(model, torch_dtype=torch_dtype).to(device)
|
504 |
-
prompt_embeds = long_prompt_encoder(prompt, pipe.tokenizer, pipe.text_encoder)
|
505 |
-
negative_prompt_embeds = long_prompt_encoder(negative_prompt, pipe.tokenizer, pipe.text_encoder)
|
506 |
-
prompt_embeds, negative_prompt_embeds = align_embeddings(prompt_embeds, negative_prompt_embeds)
|
507 |
-
else:
|
508 |
pipe = pipe_default
|
|
|
|
|
|
|
|
|
|
|
|
|
509 |
prompt_embeds = long_prompt_encoder(prompt, pipe.tokenizer, pipe.text_encoder)
|
510 |
-
negative_prompt_embeds = long_prompt_encoder(negative_prompt, pipe.tokenizer,
|
511 |
prompt_embeds, negative_prompt_embeds = align_embeddings(prompt_embeds, negative_prompt_embeds)
|
512 |
-
pipe.fuse_lora(lora_scale=lora_scale)
|
513 |
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
523 |
|
524 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
525 |
|
526 |
# Если выбрано удаление фона
|
527 |
if remove_bg:
|
@@ -761,13 +797,12 @@ with gr.Blocks(css=css) as demo:
|
|
761 |
interactive=True
|
762 |
)
|
763 |
|
764 |
-
|
765 |
-
|
766 |
-
label="LCM_Adapter Mode",
|
767 |
choices=[
|
768 |
-
"lcm-lora-sdv1-5
|
769 |
],
|
770 |
-
value="lcm-lora-sdv1-5
|
771 |
visible=False,
|
772 |
interactive=True,
|
773 |
)
|
@@ -775,7 +810,7 @@ with gr.Blocks(css=css) as demo:
|
|
775 |
use_LCM_adapter.change(
|
776 |
fn=lambda x: gr.update(visible=x),
|
777 |
inputs=use_LCM_adapter,
|
778 |
-
outputs=
|
779 |
)
|
780 |
# ---------------------------------------------------------------------------------------------------------
|
781 |
|
@@ -819,7 +854,7 @@ with gr.Blocks(css=css) as demo:
|
|
819 |
ip_source_image, # Исходное изображение IP_adapter
|
820 |
ip_adapter_image, # Контрольное изображение IP_adapter
|
821 |
remove_bg, # Удаление фона с изображения
|
822 |
-
|
823 |
],
|
824 |
outputs=[result],
|
825 |
)
|
|
|
129 |
ip_source_image=None, # Исходное изображение IP_adapter
|
130 |
ip_adapter_image=None, # Контрольное изображение IP_adapter
|
131 |
remove_bg=None, # Удаление фона с изображения
|
132 |
+
LCM_adapter=None, # Параметр для выбора LCM_adapter
|
133 |
progress=gr.Progress(track_tqdm=True)
|
134 |
):
|
135 |
|
|
|
491 |
generator=generator
|
492 |
).images[0]
|
493 |
else:
|
494 |
+
# Генерация изображений с LCM_Adapter ---------------------------------------------------------------------------------------------
|
495 |
+
|
496 |
+
if use_LCM_adapter:
|
497 |
+
|
498 |
+
if LCM_adapter == "lcm-lora-sdv1-5":
|
499 |
+
adapter_id = "latent-consistency/lcm-lora-sdv1-5"
|
500 |
|
501 |
+
generator = torch.Generator(device).manual_seed(seed)
|
502 |
|
|
|
|
|
|
|
|
|
|
|
|
|
503 |
pipe = pipe_default
|
504 |
+
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)
|
505 |
+
pipe.to(device)
|
506 |
+
|
507 |
+
pipe.load_lora_weights(adapter_id)
|
508 |
+
pipe.fuse_lora()
|
509 |
+
|
510 |
prompt_embeds = long_prompt_encoder(prompt, pipe.tokenizer, pipe.text_encoder)
|
511 |
+
negative_prompt_embeds = long_prompt_encoder(negative_prompt, pipe.tokenizer, pipe_1.text_encoder)
|
512 |
prompt_embeds, negative_prompt_embeds = align_embeddings(prompt_embeds, negative_prompt_embeds)
|
|
|
513 |
|
514 |
+
params = {
|
515 |
+
'prompt_embeds': prompt_embeds,
|
516 |
+
'negative_prompt_embeds': negative_prompt_embeds,
|
517 |
+
'guidance_scale': guidance_scale,
|
518 |
+
'num_inference_steps': num_inference_steps,
|
519 |
+
'width': width,
|
520 |
+
'height': height,
|
521 |
+
'generator': generator,
|
522 |
+
}
|
523 |
+
|
524 |
+
image = pipe(**params).images[0]
|
525 |
+
|
526 |
+
|
527 |
+
else:
|
528 |
+
|
529 |
+
# Генерация изображений с LORA без ControlNet и IP_Adapter ---------------------------------------------------------------------------------------------
|
530 |
+
|
531 |
+
# Инициализация ControlNet
|
532 |
+
controlnet_model_path = "lllyasviel/sd-controlnet-openpose"
|
533 |
+
controlnet = ControlNetModel.from_pretrained(controlnet_model_path, torch_dtype=torch_dtype)
|
534 |
|
535 |
+
generator = torch.Generator(device).manual_seed(seed)
|
536 |
+
|
537 |
+
if model != model_default:
|
538 |
+
pipe = StableDiffusionPipeline.from_pretrained(model, torch_dtype=torch_dtype).to(device)
|
539 |
+
prompt_embeds = long_prompt_encoder(prompt, pipe.tokenizer, pipe.text_encoder)
|
540 |
+
negative_prompt_embeds = long_prompt_encoder(negative_prompt, pipe.tokenizer, pipe.text_encoder)
|
541 |
+
prompt_embeds, negative_prompt_embeds = align_embeddings(prompt_embeds, negative_prompt_embeds)
|
542 |
+
else:
|
543 |
+
pipe_default = get_lora_sd_pipeline(lora_dir='lora_man_animestyle', base_model_name_or_path=model_default, dtype=torch_dtype).to(device)
|
544 |
+
pipe = pipe_default
|
545 |
+
prompt_embeds = long_prompt_encoder(prompt, pipe.tokenizer, pipe.text_encoder)
|
546 |
+
negative_prompt_embeds = long_prompt_encoder(negative_prompt, pipe.tokenizer, pipe.text_encoder)
|
547 |
+
prompt_embeds, negative_prompt_embeds = align_embeddings(prompt_embeds, negative_prompt_embeds)
|
548 |
+
pipe.fuse_lora(lora_scale=lora_scale)
|
549 |
+
|
550 |
+
params = {
|
551 |
+
'prompt_embeds': prompt_embeds,
|
552 |
+
'negative_prompt_embeds': negative_prompt_embeds,
|
553 |
+
'guidance_scale': guidance_scale,
|
554 |
+
'num_inference_steps': num_inference_steps,
|
555 |
+
'width': width,
|
556 |
+
'height': height,
|
557 |
+
'generator': generator,
|
558 |
+
}
|
559 |
+
|
560 |
+
image = pipe(**params).images[0]
|
561 |
|
562 |
# Если выбрано удаление фона
|
563 |
if remove_bg:
|
|
|
797 |
interactive=True
|
798 |
)
|
799 |
|
800 |
+
LCM_adapter = gr.Dropdown(
|
801 |
+
label="LCM_Adapter Selection",
|
|
|
802 |
choices=[
|
803 |
+
"lcm-lora-sdv1-5",
|
804 |
],
|
805 |
+
value="lcm-lora-sdv1-5",
|
806 |
visible=False,
|
807 |
interactive=True,
|
808 |
)
|
|
|
810 |
use_LCM_adapter.change(
|
811 |
fn=lambda x: gr.update(visible=x),
|
812 |
inputs=use_LCM_adapter,
|
813 |
+
outputs=LCM_adapter
|
814 |
)
|
815 |
# ---------------------------------------------------------------------------------------------------------
|
816 |
|
|
|
854 |
ip_source_image, # Исходное изображение IP_adapter
|
855 |
ip_adapter_image, # Контрольное изображение IP_adapter
|
856 |
remove_bg, # Удаление фона с изображения
|
857 |
+
LCM_adapter, # Параметр для выбора LCM_adapter
|
858 |
],
|
859 |
outputs=[result],
|
860 |
)
|