Spaces:
Runtime error
Runtime error
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 |
)
|