ginipick commited on
Commit
c200ec2
·
verified ·
1 Parent(s): ddb8f7d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -21
app.py CHANGED
@@ -22,7 +22,8 @@ from torch import Tensor, nn
22
  from transformers import CLIPTextModel, CLIPTokenizer
23
  from transformers import T5EncoderModel, T5Tokenizer
24
  # from optimum.quanto import freeze, qfloat8, quantize
25
- from transformers import pipeline
 
26
 
27
  class HFEmbedder(nn.Module):
28
  def __init__(self, version: str, max_length: int, **hf_kwargs):
@@ -779,31 +780,36 @@ TRANSLATORS = {
779
  "Austroasiatic": "Helsinki-NLP/opus-mt-aav-en"
780
  }
781
 
782
- # 번역기 캐시 딕셔너리
783
  translators_cache = {}
784
 
785
- def initialize_translators():
786
- global translators_cache
787
- translators_cache = {}
788
-
789
- for lang, model_name in TRANSLATORS.items():
 
790
  try:
 
791
  translator = pipeline(
792
- task="translation",
793
  model=model_name,
794
- device="cpu" # CPU에서 실행
 
795
  )
796
  translators_cache[lang] = translator
797
  print(f"Successfully loaded translator for {lang}")
798
  except Exception as e:
799
  print(f"Error loading translator for {lang}: {e}")
800
  translators_cache[lang] = None
 
 
801
 
802
  def translate_prompt(prompt, source_lang):
 
803
  if source_lang == "English":
804
  return prompt
805
-
806
- translator = translators_cache.get(source_lang)
807
  if translator is None:
808
  print(f"No translator available for {source_lang}, using original prompt")
809
  return prompt
@@ -817,6 +823,8 @@ def translate_prompt(prompt, source_lang):
817
  except Exception as e:
818
  print(f"Translation error for {source_lang}: {e}")
819
  return prompt
 
 
820
 
821
  def get_translator(lang):
822
  if lang == "English":
@@ -869,12 +877,16 @@ def generate_image(
869
  ):
870
  # 번역 처리
871
  try:
872
- translated_prompt = translate_prompt(prompt, source_lang)
873
- print(f"Final prompt to use: {translated_prompt}")
 
 
 
874
  except Exception as e:
875
  print(f"Translation failed: {e}")
876
  translated_prompt = prompt
877
-
 
878
 
879
  if seed == 0:
880
  seed = int(random.random() * 1000000)
@@ -931,10 +943,11 @@ footer {
931
  visibility: hidden;
932
  }
933
  """
 
934
  def create_demo():
935
  with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
936
- gr.Markdown("# Multilingual FLUXllma(36 languages support")
937
- gr.Markdown("Supported languages: " + ", ".join(["English"] + sorted(list(TRANSLATORS.keys()))))
938
 
939
  with gr.Row():
940
  with gr.Column():
@@ -948,6 +961,7 @@ def create_demo():
948
  label="Prompt",
949
  value="A beautiful landscape"
950
  )
 
951
 
952
 
953
  width = gr.Slider(minimum=128, maximum=2048, step=64, label="Width", value=768)
@@ -975,6 +989,7 @@ def create_demo():
975
  output_seed = gr.Text(label="Used Seed")
976
  translated_prompt = gr.Text(label="Translated Prompt")
977
 
 
978
  examples = [
979
  # English
980
  ["A beautiful sunset over mountains", "English", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
@@ -988,8 +1003,6 @@ def create_demo():
988
  ["Un hermoso atardecer en la playa", "Spanish", 768, 768, 3.5, 30, 0, False, None, 0.8, True]
989
  ]
990
 
991
-
992
-
993
  gr.Examples(
994
  examples=examples,
995
  inputs=[
@@ -998,7 +1011,7 @@ def create_demo():
998
  ],
999
  outputs=[output_image, output_seed, translated_prompt],
1000
  fn=generate_image,
1001
- cache_examples=False
1002
  )
1003
 
1004
 
@@ -1021,8 +1034,6 @@ def create_demo():
1021
  return demo
1022
 
1023
  if __name__ == "__main__":
1024
- print("Initializing translators...")
1025
- initialize_translators() # 번역기 초기화
1026
  print("Starting demo...")
1027
  demo = create_demo()
1028
  demo.launch(share=True)
 
22
  from transformers import CLIPTextModel, CLIPTokenizer
23
  from transformers import T5EncoderModel, T5Tokenizer
24
  # from optimum.quanto import freeze, qfloat8, quantize
25
+
26
+ from transformers import AutoModelForSeq2SeqGeneration, AutoTokenizer, pipeline
27
 
28
  class HFEmbedder(nn.Module):
29
  def __init__(self, version: str, max_length: int, **hf_kwargs):
 
780
  "Austroasiatic": "Helsinki-NLP/opus-mt-aav-en"
781
  }
782
 
 
783
  translators_cache = {}
784
 
785
+ def get_translator(lang):
786
+ """단일 번역기를 초기화하고 반환하는 함수"""
787
+ if lang == "English":
788
+ return None
789
+
790
+ if lang not in translators_cache:
791
  try:
792
+ model_name = TRANSLATORS[lang]
793
  translator = pipeline(
794
+ "translation",
795
  model=model_name,
796
+ device="cpu",
797
+ framework="pt"
798
  )
799
  translators_cache[lang] = translator
800
  print(f"Successfully loaded translator for {lang}")
801
  except Exception as e:
802
  print(f"Error loading translator for {lang}: {e}")
803
  translators_cache[lang] = None
804
+
805
+ return translators_cache[lang]
806
 
807
  def translate_prompt(prompt, source_lang):
808
+ """프롬프트를 번역하는 함수"""
809
  if source_lang == "English":
810
  return prompt
811
+
812
+ translator = get_translator(source_lang)
813
  if translator is None:
814
  print(f"No translator available for {source_lang}, using original prompt")
815
  return prompt
 
823
  except Exception as e:
824
  print(f"Translation error for {source_lang}: {e}")
825
  return prompt
826
+
827
+
828
 
829
  def get_translator(lang):
830
  if lang == "English":
 
877
  ):
878
  # 번역 처리
879
  try:
880
+ if source_lang != "English":
881
+ translated_prompt = translate_prompt(prompt, source_lang)
882
+ print(f"Using translated prompt: {translated_prompt}")
883
+ else:
884
+ translated_prompt = prompt
885
  except Exception as e:
886
  print(f"Translation failed: {e}")
887
  translated_prompt = prompt
888
+
889
+
890
 
891
  if seed == 0:
892
  seed = int(random.random() * 1000000)
 
943
  visibility: hidden;
944
  }
945
  """
946
+
947
  def create_demo():
948
  with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
949
+ gr.Markdown("# Multilingual FLUX")
950
+ gr.Markdown("### Supported languages: " + ", ".join(["English"] + sorted(list(TRANSLATORS.keys()))))
951
 
952
  with gr.Row():
953
  with gr.Column():
 
961
  label="Prompt",
962
  value="A beautiful landscape"
963
  )
964
+
965
 
966
 
967
  width = gr.Slider(minimum=128, maximum=2048, step=64, label="Width", value=768)
 
989
  output_seed = gr.Text(label="Used Seed")
990
  translated_prompt = gr.Text(label="Translated Prompt")
991
 
992
+ # 다국어 예제
993
  examples = [
994
  # English
995
  ["A beautiful sunset over mountains", "English", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
 
1003
  ["Un hermoso atardecer en la playa", "Spanish", 768, 768, 3.5, 30, 0, False, None, 0.8, True]
1004
  ]
1005
 
 
 
1006
  gr.Examples(
1007
  examples=examples,
1008
  inputs=[
 
1011
  ],
1012
  outputs=[output_image, output_seed, translated_prompt],
1013
  fn=generate_image,
1014
+ cache_examples=True
1015
  )
1016
 
1017
 
 
1034
  return demo
1035
 
1036
  if __name__ == "__main__":
 
 
1037
  print("Starting demo...")
1038
  demo = create_demo()
1039
  demo.launch(share=True)