linoyts HF Staff commited on
Commit
53d954a
·
verified ·
1 Parent(s): 4e85690

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +156 -5
app.py CHANGED
@@ -132,7 +132,6 @@ Return only the rewritten instruction text directly, without JSON formatting or
132
 
133
  return polish_prompt_hf(full_prompt, SYSTEM_PROMPT)
134
 
135
-
136
  # --- Model Loading ---
137
  dtype = torch.bfloat16
138
  device = "cuda" if torch.cuda.is_available() else "cpu"
@@ -180,11 +179,119 @@ except Exception as e:
180
  # --- UI Constants and Helpers ---
181
  MAX_SEED = np.iinfo(np.int32).max
182
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  # --- Main Inference Function ---
184
  @spaces.GPU(duration=60)
185
  def infer(
186
  image,
187
  prompt,
 
188
  seed=42,
189
  randomize_seed=False,
190
  true_guidance_scale=1.0,
@@ -208,15 +315,30 @@ def infer(
208
  print(f"Negative Prompt: '{negative_prompt}'")
209
  print(f"Seed: {seed}, Steps: {num_inference_steps}, Guidance: {true_guidance_scale}")
210
 
 
 
 
 
 
 
 
 
 
 
 
211
  if rewrite_prompt:
212
- prompt = polish_prompt(prompt, image)
213
- print(f"Rewritten Prompt: {prompt}")
 
 
 
 
214
 
215
  # Generate the edited image - always generate just 1 image
216
  try:
217
  images = pipe(
218
  image,
219
- prompt=prompt,
220
  negative_prompt=negative_prompt,
221
  num_inference_steps=num_inference_steps,
222
  generator=generator,
@@ -231,6 +353,13 @@ def infer(
231
  print(f"Error during inference: {e}")
232
  raise e
233
 
 
 
 
 
 
 
 
234
  # --- Examples and UI Layout ---
235
  examples = [
236
  # You can add example pairs of [image_path, prompt] here
@@ -273,6 +402,21 @@ with gr.Blocks(css=css) as demo:
273
  show_label=True,
274
  type="pil"
275
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
276
  # Changed from Gallery to Image
277
  result = gr.Image(
278
  label="Result",
@@ -324,13 +468,20 @@ with gr.Blocks(css=css) as demo:
324
  )
325
 
326
  # gr.Examples(examples=examples, inputs=[input_image, prompt], outputs=[result, seed], fn=infer, cache_examples=False)
327
-
 
 
 
 
 
 
328
  gr.on(
329
  triggers=[run_button.click, prompt.submit],
330
  fn=infer,
331
  inputs=[
332
  input_image,
333
  prompt,
 
334
  seed,
335
  randomize_seed,
336
  true_guidance_scale,
 
132
 
133
  return polish_prompt_hf(full_prompt, SYSTEM_PROMPT)
134
 
 
135
  # --- Model Loading ---
136
  dtype = torch.bfloat16
137
  device = "cuda" if torch.cuda.is_available() else "cpu"
 
179
  # --- UI Constants and Helpers ---
180
  MAX_SEED = np.iinfo(np.int32).max
181
 
182
+ # Illumination options mapping
183
+ ILLUMINATION_OPTIONS = {
184
+ # Natural Daylight
185
+ "natural lighting": "Neutral white color temperature with balanced exposure and soft shadows",
186
+ "sunshine from window": "Bright directional sunlight with hard shadows and visible light rays",
187
+ "golden time": "Warm golden hour lighting with enhanced warm colors and soft shadows",
188
+ "sunrise in the mountains": "Warm backlighting with atmospheric haze and lens flare",
189
+ "afternoon light filtering through trees": "Dappled sunlight patterns with green color cast from foliage",
190
+ "early morning rays, forest clearing": "God rays through trees with warm color temperature",
191
+ "golden sunlight streaming through trees": "Golden god rays with atmospheric particles in light beams",
192
+
193
+ # Sunset & Evening
194
+ "sunset over sea": "Warm sunset light with soft diffused lighting and gentle gradients",
195
+ "golden hour in a meadow": "Golden backlighting with lens flare and rim lighting",
196
+ "golden hour on a city skyline": "Golden lighting on buildings with silhouette effects",
197
+ "evening glow in the desert": "Warm directional lighting with long shadows",
198
+ "dusky evening on a beach": "Cool backlighting with horizon silhouettes",
199
+ "mellow evening glow on a lake": "Warm lighting with water reflections",
200
+ "warm sunset in a rural village": "Golden hour lighting with peaceful warm tones",
201
+
202
+ # Night & Moonlight
203
+ "moonlight through curtains": "Cool blue lighting with curtain shadow patterns",
204
+ "moonlight in a dark alley": "Cool blue lighting with deep urban shadows",
205
+ "midnight in the forest": "Very low brightness with minimal ambient lighting",
206
+ "midnight sky with bright starlight": "Cool blue lighting with star point sources",
207
+ "fireflies lighting up a summer night": "Small glowing points with warm ambient lighting",
208
+
209
+ # Indoor & Cozy
210
+ "warm atmosphere, at home, bedroom": "Very warm lighting with soft diffused glow",
211
+ "home atmosphere, cozy bedroom illumination": "Warm table lamp lighting with pools of light",
212
+ "cozy candlelight": "Warm orange flickering light with dramatic shadows",
213
+ "candle-lit room, rustic vibe": "Multiple warm candlelight sources with atmospheric shadows",
214
+ "night, cozy warm light from fireplace": "Warm orange-red firelight with flickering effects",
215
+ "campfire light": "Warm orange flickering light from below with dancing shadows",
216
+
217
+ # Urban & Neon
218
+ "neon night, city": "Vibrant blue, magenta, and green neon lights with reflections",
219
+ "blue neon light, urban street": "Blue neon lighting with urban glow effects",
220
+ "neon, Wong Kar-wai, warm": "Warm amber and red neon with moody selective lighting",
221
+ "red and blue police lights in rain": "Alternating red and blue strobing with wet reflections",
222
+ "red glow, emergency lights": "Red emergency lighting with harsh shadows and high contrast",
223
+
224
+ # Sci-Fi & Fantasy
225
+ "sci-fi RGB glowing, cyberpunk": "Electric blue, pink, and green RGB lighting with glowing effects",
226
+ "rainbow reflections, neon": "Chromatic rainbow patterns with prismatic reflections",
227
+ "magic lit": "Colored rim lighting in purple and blue with soft ethereal glow",
228
+ "mystical glow, enchanted forest": "Supernatural green and blue glowing with floating particles",
229
+ "ethereal glow, magical forest": "Supernatural lighting with blue-green rim lighting",
230
+ "underwater glow, deep sea": "Blue-green lighting with caustic patterns and particles",
231
+ "underwater luminescence": "Blue-green bioluminescent glow with caustic light patterns",
232
+ "aurora borealis glow, arctic landscape": "Green and purple dancing sky lighting",
233
+ "crystal reflections in a cave": "Sparkle effects with prismatic light dispersion",
234
+
235
+ # Weather & Atmosphere
236
+ "foggy forest at dawn": "Volumetric fog with cool god rays through trees",
237
+ "foggy morning, muted light": "Soft fog effects with reduced contrast throughout",
238
+ "soft, diffused foggy glow": "Heavy fog with soft lighting and no harsh shadows",
239
+ "stormy sky lighting": "Dramatic lighting with high contrast and rim lighting",
240
+ "lightning flash in storm": "Brief intense white light with stark shadows",
241
+ "rain-soaked reflections in city lights": "Wet surface reflections with streaking light effects",
242
+ "gentle snowfall at dusk": "Cool blue lighting with snowflake particle effects",
243
+ "hazy light of a winter morning": "Neutral lighting with atmospheric haze",
244
+ "mysterious twilight, heavy mist": "Heavy fog with cool lighting and atmospheric depth",
245
+
246
+ # Seasonal & Nature
247
+ "vibrant autumn lighting in a forest": "Enhanced warm autumn colors with dappled sunlight",
248
+ "purple and pink hues at twilight": "Warm lighting with soft purple and pink color grading",
249
+ "desert sunset with mirage-like glow": "Warm orange lighting with heat distortion effects",
250
+ "sunrise through foggy mountains": "Warm lighting through mist with atmospheric perspective",
251
+
252
+ # Professional & Studio
253
+ "soft studio lighting": "Multiple diffused sources with even illumination and minimal shadows",
254
+ "harsh, industrial lighting": "Bright fluorescent lighting with hard shadows",
255
+ "fluorescent office lighting": "Cool white overhead lighting with slight green tint",
256
+ "harsh spotlight in dark room": "Single intense directional light with dramatic shadows",
257
+
258
+ # Special Effects & Drama
259
+ "light and shadow": "Maximum contrast with sharp shadow boundaries",
260
+ "shadow from window": "Window frame shadow patterns with geometric shapes",
261
+ "apocalyptic, smoky atmosphere": "Orange-red fire tint with smoke effects",
262
+ "evil, gothic, in a cave": "Low brightness with cool lighting and deep shadows",
263
+ "flickering light in a haunted house": "Unstable flickering with cool and warm mixed lighting",
264
+ "golden beams piercing through storm clouds": "Dramatic god rays with high contrast",
265
+ "dim candlelight in a gothic castle": "Warm orange candlelight with stone texture enhancement",
266
+
267
+ # Festival & Celebration
268
+ "colorful lantern light at festival": "Multiple colored lantern sources with bokeh effects",
269
+ "golden glow at a fairground": "Warm carnival lighting with colorful bulb effects",
270
+ "soft glow through stained glass": "Colored light filtering with rainbow surface patterns",
271
+ "glowing embers from a forge": "Orange-red glowing particles with intense heat effects"
272
+
273
+ }
274
+
275
+ # Lighting direction options
276
+ DIRECTION_OPTIONS = {
277
+ "auto": "",
278
+ "left side": "Position the light source from the left side of the frame, creating shadows falling to the right.",
279
+ "right side": "Position the light source from the right side of the frame, creating shadows falling to the left.",
280
+ "top": "Position the light source from directly above, creating downward shadows.",
281
+ "top left": "Position the light source from the top left corner, creating diagonal shadows falling down and to the right.",
282
+ "top right": "Position the light source from the top right corner, creating diagonal shadows falling down and to the left.",
283
+ "bottom": "Position the light source from below, creating upward shadows and dramatic under-lighting.",
284
+ "front": "Position the light source from the front, minimizing shadows and creating even illumination.",
285
+ "back": "Position the light source from behind the subject, creating silhouette effects and rim lighting."
286
+ }
287
+
288
+
289
  # --- Main Inference Function ---
290
  @spaces.GPU(duration=60)
291
  def infer(
292
  image,
293
  prompt,
294
+ illumination_dropdown, direction_dropdown,
295
  seed=42,
296
  randomize_seed=False,
297
  true_guidance_scale=1.0,
 
315
  print(f"Negative Prompt: '{negative_prompt}'")
316
  print(f"Seed: {seed}, Steps: {num_inference_steps}, Guidance: {true_guidance_scale}")
317
 
318
+ #If the dropdown isn't custom, and the user didn't specify a prompt, fill the prompt with the correct one from the illumination options
319
+ if illumination_dropdown != "custom" and (prompt == "" or prompt == ILLUMINATION_OPTIONS[illumination_dropdown]):
320
+ prompt = f"change the lighting. add {ILLUMINATION_OPTIONS[illumination_dropdown]}"
321
+
322
+
323
+ # If direction isn't auto, add the direction suffix
324
+ if direction_dropdown != "auto":
325
+ prompt_with_template = prompt+ f" coming from the {direction_dropdown}"
326
+ else:
327
+ prompt_with_template= prompt
328
+
329
  if rewrite_prompt:
330
+ final_prompt = polish_prompt(prompt_with_template, input_image)
331
+ else:
332
+ final_prompt = prompt_with_template
333
+
334
+ print(f"Calling pipeline with prompt: '{final_prompt}'")
335
+
336
 
337
  # Generate the edited image - always generate just 1 image
338
  try:
339
  images = pipe(
340
  image,
341
+ prompt=final_prompt,
342
  negative_prompt=negative_prompt,
343
  num_inference_steps=num_inference_steps,
344
  generator=generator,
 
353
  print(f"Error during inference: {e}")
354
  raise e
355
 
356
+ def update_prompt_from_dropdown(illumination_option):
357
+ """Update the prompt textbox based on dropdown selection"""
358
+ if illumination_option == "custom":
359
+ return "" # Clear the prompt for custom input
360
+ else:
361
+ return ILLUMINATION_OPTIONS[illumination_option]
362
+
363
  # --- Examples and UI Layout ---
364
  examples = [
365
  # You can add example pairs of [image_path, prompt] here
 
402
  show_label=True,
403
  type="pil"
404
  )
405
+ with gr.Row():
406
+
407
+ illumination_dropdown = gr.Dropdown(
408
+ choices=["custom"] + list(ILLUMINATION_OPTIONS.keys()),
409
+ value="sunshine from window",
410
+ label="Choose Lighting Style",
411
+ scale=2
412
+ )
413
+
414
+ direction_dropdown = gr.Dropdown(
415
+ choices=list(DIRECTION_OPTIONS.keys()),
416
+ value="auto",
417
+ label="Light Direction",
418
+ scale=1
419
+ )
420
  # Changed from Gallery to Image
421
  result = gr.Image(
422
  label="Result",
 
468
  )
469
 
470
  # gr.Examples(examples=examples, inputs=[input_image, prompt], outputs=[result, seed], fn=infer, cache_examples=False)
471
+ # update prompt when dropdown changes
472
+ illumination_dropdown.change(
473
+ fn=update_prompt_from_dropdown,
474
+ inputs=[illumination_dropdown],
475
+ outputs=[prompt]
476
+ )
477
+
478
  gr.on(
479
  triggers=[run_button.click, prompt.submit],
480
  fn=infer,
481
  inputs=[
482
  input_image,
483
  prompt,
484
+ illumination_dropdown, direction_dropdown,
485
  seed,
486
  randomize_seed,
487
  true_guidance_scale,