ginipick commited on
Commit
db7a3b9
·
verified ·
1 Parent(s): 6b9a48e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +54 -47
app.py CHANGED
@@ -19,7 +19,7 @@ from torch import Tensor, nn
19
  from transformers import CLIPTextModel, CLIPTokenizer
20
  from transformers import T5EncoderModel, T5Tokenizer
21
  from transformers import pipeline, AutoTokenizer, MarianMTModel
22
-
23
 
24
  class HFEmbedder(nn.Module):
25
  def __init__(self, version: str, max_length: int, **hf_kwargs):
@@ -778,7 +778,6 @@ TRANSLATORS = {
778
  # 번역기 캐시 딕셔너리
779
  translators_cache = {}
780
 
781
- # 번역기 초기화 부분 수정
782
  def get_translator(lang):
783
  if lang == "English":
784
  return None
@@ -786,23 +785,39 @@ def get_translator(lang):
786
  if lang not in translators_cache:
787
  try:
788
  model_name = TRANSLATORS[lang]
789
- tokenizer = AutoTokenizer.from_pretrained(model_name)
790
- model = MarianMTModel.from_pretrained(
791
- model_name,
792
- torch_dtype=torch.float32, # float16 대신 float32 사용
793
- low_cpu_mem_usage=True
794
- ).to("cpu") # 명시적으로 CPU 지정
795
 
796
- translators_cache[lang] = {
797
- "model": model,
798
- "tokenizer": tokenizer
799
- }
 
 
800
  except Exception as e:
801
  print(f"Error loading translator for {lang}: {e}")
802
  return None
803
 
804
  return translators_cache[lang]
805
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
806
  def translate_text(text, translator_info):
807
  if translator_info is None:
808
  return text
@@ -823,23 +838,6 @@ def translate_text(text, translator_info):
823
  print(f"Translation error: {e}")
824
  return text
825
 
826
- def translate_prompt(prompt, source_lang):
827
- if source_lang == "English":
828
- return prompt
829
-
830
- translator = get_translator(source_lang)
831
- if translator is None:
832
- print(f"No translator available for {source_lang}, using original prompt")
833
- return prompt
834
-
835
- try:
836
- translated = translate_text(prompt, translator)
837
- print(f"Translated from {source_lang}: {translated}")
838
- return translated
839
- except Exception as e:
840
- print(f"Translation error: {e}")
841
- return prompt
842
-
843
  @spaces.GPU
844
  @torch.no_grad()
845
  def generate_image(
@@ -847,13 +845,19 @@ def generate_image(
847
  do_img2img, init_image, image2image_strength, resize_img,
848
  progress=gr.Progress(track_tqdm=True),
849
  ):
850
- try:
851
- translated_prompt = translate_prompt(prompt, source_lang)
852
- print(f"Using prompt: {translated_prompt}")
853
- except Exception as e:
854
- print(f"Translation failed: {e}")
 
 
 
 
855
  translated_prompt = prompt
856
 
 
 
857
 
858
  if seed == 0:
859
  seed = int(random.random() * 1000000)
@@ -910,11 +914,10 @@ footer {
910
  visibility: hidden;
911
  }
912
  """
913
-
914
- def create_demo():
915
  with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
916
- gr.Markdown("# FLUXllama Multilingual(36 Languages")
917
-
918
  with gr.Row():
919
  with gr.Column():
920
  source_lang = gr.Dropdown(
@@ -923,6 +926,8 @@ def create_demo():
923
  label="Source Language"
924
  )
925
 
 
 
926
  prompt = gr.Textbox(
927
  label="Prompt",
928
  value="A cute and fluffy golden retriever puppy sitting upright..."
@@ -953,16 +958,16 @@ def create_demo():
953
  output_seed = gr.Text(label="Used Seed")
954
  translated_prompt = gr.Text(label="Translated Prompt")
955
 
956
- # Examples 섹션 수정
957
  examples = [
958
- # English examples
959
- ["A majestic dragon soaring through clouds at sunset", "English", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
960
- # Korean examples
961
  ["벚꽃이 흩날리는 서울의 봄 풍경", "Korean", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
962
- # Spanish examples
963
- ["Una colorida fiesta mexicana con piñatas", "Spanish", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
964
- # Chinese examples
965
- ["古老的江南水乡,小桥流水人家", "Chinese", 768, 768, 3.5, 30, 0, False, None, 0.8, True]
966
  ]
967
 
968
  gr.Examples(
@@ -973,9 +978,11 @@ def create_demo():
973
  ],
974
  outputs=[output_image, output_seed, translated_prompt],
975
  fn=generate_image,
976
- cache_examples=True
977
  )
978
 
 
 
979
  do_img2img.change(
980
  fn=lambda x: [gr.update(visible=x), gr.update(visible=x), gr.update(visible=x)],
981
  inputs=[do_img2img],
 
19
  from transformers import CLIPTextModel, CLIPTokenizer
20
  from transformers import T5EncoderModel, T5Tokenizer
21
  from transformers import pipeline, AutoTokenizer, MarianMTModel
22
+ from transformers import MarianMTModel, MarianTokenizer
23
 
24
  class HFEmbedder(nn.Module):
25
  def __init__(self, version: str, max_length: int, **hf_kwargs):
 
778
  # 번역기 캐시 딕셔너리
779
  translators_cache = {}
780
 
 
781
  def get_translator(lang):
782
  if lang == "English":
783
  return None
 
785
  if lang not in translators_cache:
786
  try:
787
  model_name = TRANSLATORS[lang]
788
+ tokenizer = MarianTokenizer.from_pretrained(model_name)
789
+ model = MarianMTModel.from_pretrained(model_name).to("cpu")
 
 
 
 
790
 
791
+ translators_cache[lang] = pipeline(
792
+ "translation",
793
+ model=model,
794
+ tokenizer=tokenizer,
795
+ device="cpu"
796
+ )
797
  except Exception as e:
798
  print(f"Error loading translator for {lang}: {e}")
799
  return None
800
 
801
  return translators_cache[lang]
802
 
803
+ def translate_prompt(prompt, source_lang):
804
+ if source_lang == "English":
805
+ return prompt
806
+
807
+ translator = get_translator(source_lang)
808
+ if translator is None:
809
+ print(f"No translator available for {source_lang}, using original prompt")
810
+ return prompt
811
+
812
+ try:
813
+ translated = translator(prompt, max_length=512)[0]['translation_text']
814
+ print(f"Original: {prompt}")
815
+ print(f"Translated from {source_lang}: {translated}")
816
+ return translated
817
+ except Exception as e:
818
+ print(f"Translation error: {e}")
819
+ return prompt
820
+
821
  def translate_text(text, translator_info):
822
  if translator_info is None:
823
  return text
 
838
  print(f"Translation error: {e}")
839
  return text
840
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
841
  @spaces.GPU
842
  @torch.no_grad()
843
  def generate_image(
 
845
  do_img2img, init_image, image2image_strength, resize_img,
846
  progress=gr.Progress(track_tqdm=True),
847
  ):
848
+ # 번역 처리
849
+ if source_lang != "English":
850
+ try:
851
+ translated_prompt = translate_prompt(prompt, source_lang)
852
+ print(f"Using translated prompt: {translated_prompt}")
853
+ except Exception as e:
854
+ print(f"Translation failed: {e}")
855
+ translated_prompt = prompt
856
+ else:
857
  translated_prompt = prompt
858
 
859
+
860
+
861
 
862
  if seed == 0:
863
  seed = int(random.random() * 1000000)
 
914
  visibility: hidden;
915
  }
916
  """
917
+ ef create_demo():
 
918
  with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
919
+ gr.Markdown("# Multilingual FLUX (36 Languages Support)")
920
+
921
  with gr.Row():
922
  with gr.Column():
923
  source_lang = gr.Dropdown(
 
926
  label="Source Language"
927
  )
928
 
929
+
930
+
931
  prompt = gr.Textbox(
932
  label="Prompt",
933
  value="A cute and fluffy golden retriever puppy sitting upright..."
 
958
  output_seed = gr.Text(label="Used Seed")
959
  translated_prompt = gr.Text(label="Translated Prompt")
960
 
961
+
962
  examples = [
963
+ # English
964
+ ["A beautiful sunset over mountains", "English", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
965
+ # Korean
966
  ["벚꽃이 흩날리는 서울의 봄 풍경", "Korean", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
967
+ # Spanish
968
+ ["Un hermoso atardecer en la playa", "Spanish", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
969
+ # Chinese
970
+ ["美丽的中国长城日落景色", "Chinese", 768, 768, 3.5, 30, 0, False, None, 0.8, True]
971
  ]
972
 
973
  gr.Examples(
 
978
  ],
979
  outputs=[output_image, output_seed, translated_prompt],
980
  fn=generate_image,
981
+ cache_examples=False
982
  )
983
 
984
+
985
+
986
  do_img2img.change(
987
  fn=lambda x: [gr.update(visible=x), gr.update(visible=x), gr.update(visible=x)],
988
  inputs=[do_img2img],