Lifeinhockey commited on
Commit
3d818a1
·
verified ·
1 Parent(s): 6f736c7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +67 -32
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
- LCM_adapter_mode=None, # Параметр для выбора LCM_adapter
133
  progress=gr.Progress(track_tqdm=True)
134
  ):
135
 
@@ -491,37 +491,73 @@ def infer(
491
  generator=generator
492
  ).images[0]
493
  else:
494
- # Генерация изображений с LORA без ControlNet и IP_Adapter ---------------------------------------------------------------------------------------------
495
-
496
- # Инициализация ControlNet
497
- controlnet_model_path = "lllyasviel/sd-controlnet-openpose"
498
- controlnet = ControlNetModel.from_pretrained(controlnet_model_path, torch_dtype=torch_dtype)
 
499
 
500
- generator = torch.Generator(device).manual_seed(seed)
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, pipe.text_encoder)
511
  prompt_embeds, negative_prompt_embeds = align_embeddings(prompt_embeds, negative_prompt_embeds)
512
- pipe.fuse_lora(lora_scale=lora_scale)
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
  if remove_bg:
@@ -761,13 +797,12 @@ with gr.Blocks(css=css) as demo:
761
  interactive=True
762
  )
763
 
764
- #with gr.Column(visible=False) as LCM_adapter_options:
765
- LCM_adapter_mode = gr.Dropdown(
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=LCM_adapter_mode #LCM_adapter_options
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
- LCM_adapter_mode, # Параметр для выбора LCM_adapter
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
  )