ginipick commited on
Commit
158bf4e
·
verified ·
1 Parent(s): 7bddc43

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -25
app.py CHANGED
@@ -56,10 +56,10 @@ def save_images_with_unique_filenames(image_list, save_directory):
56
  for image in image_list:
57
  unique_filename = f"{uuid.uuid4()}.png"
58
  file_path = os.path.join(save_directory, unique_filename)
59
-
60
  image.save(file_path)
61
  paths.append(file_path)
62
-
63
  return paths
64
 
65
  def convert_to_centered_scale(num):
@@ -68,7 +68,7 @@ def convert_to_centered_scale(num):
68
  end = num // 2
69
  else: # odd
70
  start = -(num // 2)
71
- end = num // 2
72
  return tuple(range(start, end + 1))
73
 
74
  def translate_if_korean(text):
@@ -84,41 +84,41 @@ def generate(prompt,
84
  randomize_seed=True,
85
  seed=42,
86
  recalc_directions=True,
87
- iterations=200,
88
- steps=3,
89
- interm_steps=33,
90
  guidance_scale=3.5,
91
- x_concept_1="", x_concept_2="",
92
- avg_diff_x=None,
93
  total_images=[],
94
- progress=gr.Progress()
95
  ):
96
  # Translate prompt and concepts if Korean
97
  prompt = translate_if_korean(prompt)
98
  concept_1 = translate_if_korean(concept_1)
99
  concept_2 = translate_if_korean(concept_2)
100
-
101
  print(f"Prompt: {prompt}, ← {concept_2}, {concept_1} ➡️ . scale {scale}, interm steps {interm_steps}")
102
  slider_x = [concept_2, concept_1]
103
  # check if avg diff for directions need to be re-calculated
104
  if randomize_seed:
105
  seed = random.randint(0, MAX_SEED)
106
-
107
  if not sorted(slider_x) == sorted([x_concept_1, x_concept_2]) or recalc_directions:
108
- progress(0, desc="Calculating directions...")
109
  avg_diff = clip_slider.find_latent_direction(slider_x[0], slider_x[1], num_iterations=iterations)
110
  x_concept_1, x_concept_2 = slider_x[0], slider_x[1]
111
 
112
  images = []
113
  high_scale = scale
114
  low_scale = -1 * scale
115
- for i in progress.tqdm(range(interm_steps), desc="Generating images"):
116
  cur_scale = low_scale + (high_scale - low_scale) * i / (interm_steps - 1)
117
- image = clip_slider.generate(prompt,
118
  width=768,
119
  height=768,
120
- guidance_scale=guidance_scale,
121
- scale=cur_scale, seed=seed, num_inference_steps=steps, avg_diff=avg_diff)
122
  images.append(image)
123
  canvas = Image.new('RGB', (256*interm_steps, 256))
124
  for i, im in enumerate(images):
@@ -138,25 +138,24 @@ def generate(prompt,
138
  return x_concept_1,x_concept_2, avg_diff_x, export_to_video(images, video_path, fps=5), canvas, images, images[scale_middle], post_generation_slider_update, seed
139
 
140
  def update_pre_generated_images(slider_value, total_images):
141
- number_images = len(total_images)
142
  if(number_images > 0):
143
  scale_tuple = convert_to_centered_scale(number_images)
144
  return total_images[scale_tuple.index(slider_value)][0]
145
  else:
146
  return None
147
-
148
  def reset_recalc_directions():
149
  return True
150
 
151
  # Updated examples with English text
152
  examples = [
153
  ["flower in mountain", "spring", "winter", 1.5],
154
- ["a tomato", "super fresh", "rotten", 2.5],
155
  ["여자", "아기", "노인", 2.5]
156
  ]
157
 
158
 
159
-
160
  css = """
161
  footer {
162
  visibility: hidden;
@@ -201,7 +200,7 @@ footer {
201
  with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
202
  x_concept_1 = gr.State("")
203
  x_concept_2 = gr.State("")
204
- total_images = gr.Gallery(visible=False)
205
  avg_diff_x = gr.State()
206
  recalc_directions = gr.State(False)
207
 
@@ -230,7 +229,7 @@ with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
230
  info="Final state",
231
  placeholder="summer"
232
  )
233
-
234
  with gr.Row(elem_classes="slider-container"):
235
  x = gr.Slider(
236
  minimum=0,
@@ -240,7 +239,7 @@ with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
240
  label=english_labels["Strength"],
241
  info="Maximum strength for each direction (above 2.5 may be unstable)"
242
  )
243
-
244
  submit = gr.Button(english_labels["Generate directions"], size="lg", variant="primary")
245
 
246
  # Advanced Options Panel
@@ -262,7 +261,7 @@ with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
262
  step=0.1,
263
  value=3.5
264
  )
265
-
266
  with gr.Row():
267
  with gr.Column(scale=1):
268
  iterations = gr.Slider(
@@ -280,7 +279,7 @@ with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
280
  maximum=4,
281
  step=1
282
  )
283
-
284
  with gr.Row():
285
  with gr.Column(scale=1):
286
  randomize_seed = gr.Checkbox(
 
56
  for image in image_list:
57
  unique_filename = f"{uuid.uuid4()}.png"
58
  file_path = os.path.join(save_directory, unique_filename)
59
+
60
  image.save(file_path)
61
  paths.append(file_path)
62
+
63
  return paths
64
 
65
  def convert_to_centered_scale(num):
 
68
  end = num // 2
69
  else: # odd
70
  start = -(num // 2)
71
+ end = num // 2
72
  return tuple(range(start, end + 1))
73
 
74
  def translate_if_korean(text):
 
84
  randomize_seed=True,
85
  seed=42,
86
  recalc_directions=True,
87
+ iterations=200,
88
+ steps=3,
89
+ interm_steps=33,
90
  guidance_scale=3.5,
91
+ x_concept_1="", x_concept_2="",
92
+ avg_diff_x=None,
93
  total_images=[],
94
+ gradio_progress=gr.Progress() # Changed progress to gradio_progress
95
  ):
96
  # Translate prompt and concepts if Korean
97
  prompt = translate_if_korean(prompt)
98
  concept_1 = translate_if_korean(concept_1)
99
  concept_2 = translate_if_korean(concept_2)
100
+
101
  print(f"Prompt: {prompt}, ← {concept_2}, {concept_1} ➡️ . scale {scale}, interm steps {interm_steps}")
102
  slider_x = [concept_2, concept_1]
103
  # check if avg diff for directions need to be re-calculated
104
  if randomize_seed:
105
  seed = random.randint(0, MAX_SEED)
106
+
107
  if not sorted(slider_x) == sorted([x_concept_1, x_concept_2]) or recalc_directions:
108
+ gradio_progress(0, desc="Calculating directions...") # Changed progress to gradio_progress
109
  avg_diff = clip_slider.find_latent_direction(slider_x[0], slider_x[1], num_iterations=iterations)
110
  x_concept_1, x_concept_2 = slider_x[0], slider_x[1]
111
 
112
  images = []
113
  high_scale = scale
114
  low_scale = -1 * scale
115
+ for i in gradio_progress.tqdm(range(interm_steps), desc="Generating images"): # Changed progress to gradio_progress
116
  cur_scale = low_scale + (high_scale - low_scale) * i / (interm_steps - 1)
117
+ image = clip_slider.generate(prompt,
118
  width=768,
119
  height=768,
120
+ guidance_scale=guidance_scale,
121
+ scale=cur_scale, seed=seed, num_inference_steps=steps, avg_diff=avg_diff)
122
  images.append(image)
123
  canvas = Image.new('RGB', (256*interm_steps, 256))
124
  for i, im in enumerate(images):
 
138
  return x_concept_1,x_concept_2, avg_diff_x, export_to_video(images, video_path, fps=5), canvas, images, images[scale_middle], post_generation_slider_update, seed
139
 
140
  def update_pre_generated_images(slider_value, total_images):
141
+ number_images = len(total_images) # This line was causing error when total_images was None.
142
  if(number_images > 0):
143
  scale_tuple = convert_to_centered_scale(number_images)
144
  return total_images[scale_tuple.index(slider_value)][0]
145
  else:
146
  return None
147
+
148
  def reset_recalc_directions():
149
  return True
150
 
151
  # Updated examples with English text
152
  examples = [
153
  ["flower in mountain", "spring", "winter", 1.5],
154
+ ["a tomato", "super fresh", "rotten", 2.5],
155
  ["여자", "아기", "노인", 2.5]
156
  ]
157
 
158
 
 
159
  css = """
160
  footer {
161
  visibility: hidden;
 
200
  with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
201
  x_concept_1 = gr.State("")
202
  x_concept_2 = gr.State("")
203
+ total_images = gr.State([]) # Initialize total_images as an empty list state
204
  avg_diff_x = gr.State()
205
  recalc_directions = gr.State(False)
206
 
 
229
  info="Final state",
230
  placeholder="summer"
231
  )
232
+
233
  with gr.Row(elem_classes="slider-container"):
234
  x = gr.Slider(
235
  minimum=0,
 
239
  label=english_labels["Strength"],
240
  info="Maximum strength for each direction (above 2.5 may be unstable)"
241
  )
242
+
243
  submit = gr.Button(english_labels["Generate directions"], size="lg", variant="primary")
244
 
245
  # Advanced Options Panel
 
261
  step=0.1,
262
  value=3.5
263
  )
264
+
265
  with gr.Row():
266
  with gr.Column(scale=1):
267
  iterations = gr.Slider(
 
279
  maximum=4,
280
  step=1
281
  )
282
+
283
  with gr.Row():
284
  with gr.Column(scale=1):
285
  randomize_seed = gr.Checkbox(