gabrielmotablima commited on
Commit
69c95d9
·
verified ·
1 Parent(s): 57f8bde

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -12
app.py CHANGED
@@ -24,6 +24,14 @@ def preload_models():
24
 
25
  models = preload_models()
26
 
 
 
 
 
 
 
 
 
27
  # Predefined images for selection
28
  image_folder = "images"
29
  predefined_images = [
@@ -32,22 +40,17 @@ predefined_images = [
32
  if fname.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp', '.ppm'))
33
  ]
34
 
35
- # Function to preprocess the image to RGB format
36
- def preprocess_image(image):
37
  if image is None:
38
  return None, None
39
  pil_image = image.convert("RGB")
40
  return pil_image, None
41
 
42
- # Function to process the image and generate a caption
43
- def generate_caption(image, selected_model):
44
  if image is None:
45
  return "Please upload an image to generate a caption."
46
- model, tokenizer, image_processor = models[selected_model]
47
- pixel_values = image_processor(image, return_tensors="pt").pixel_values
48
- generated_ids = model.generate(pixel_values)
49
- caption = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
50
- return caption
51
 
52
  # Define UI
53
  with gr.Blocks(theme=gr.themes.Citrus(primary_hue="blue", secondary_hue="orange")) as interface:
@@ -81,7 +84,7 @@ with gr.Blocks(theme=gr.themes.Citrus(primary_hue="blue", secondary_hue="orange"
81
  with gr.Row(variant='panel'):
82
  examples = gr.Examples(
83
  examples=predefined_images,
84
- fn=preprocess_image,
85
  inputs=[image_display],
86
  outputs=[image_display, output_text],
87
  label="Examples"
@@ -90,9 +93,9 @@ with gr.Blocks(theme=gr.themes.Citrus(primary_hue="blue", secondary_hue="orange"
90
  # Define actions
91
  model_selector.change(fn=lambda: (None, None), outputs=[image_display, output_text])
92
 
93
- image_display.upload(fn=preprocess_image, inputs=[image_display], outputs=[image_display, output_text])
94
  image_display.clear(fn=lambda: None, outputs=[output_text])
95
 
96
- generate_button.click(fn=generate_caption, inputs=[image_display, model_selector], outputs=output_text)
97
 
98
  interface.launch(share=False)
 
24
 
25
  models = preload_models()
26
 
27
+ # Function to process the image and generate a caption
28
+ def generate_caption(image, model_name):
29
+ model, tokenizer, image_processor = models[model_name]
30
+ pixel_values = image_processor(image, return_tensors="pt").pixel_values
31
+ generated_ids = model.generate(pixel_values)
32
+ caption = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
33
+ return caption
34
+
35
  # Predefined images for selection
36
  image_folder = "images"
37
  predefined_images = [
 
40
  if fname.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp', '.ppm'))
41
  ]
42
 
43
+ # Define components logic
44
+ def handle_uploaded_image(image):
45
  if image is None:
46
  return None, None
47
  pil_image = image.convert("RGB")
48
  return pil_image, None
49
 
50
+ def handle_generate_button(image, selected_model):
 
51
  if image is None:
52
  return "Please upload an image to generate a caption."
53
+ return generate_caption(image, selected_model)
 
 
 
 
54
 
55
  # Define UI
56
  with gr.Blocks(theme=gr.themes.Citrus(primary_hue="blue", secondary_hue="orange")) as interface:
 
84
  with gr.Row(variant='panel'):
85
  examples = gr.Examples(
86
  examples=predefined_images,
87
+ fn=handle_uploaded_image,
88
  inputs=[image_display],
89
  outputs=[image_display, output_text],
90
  label="Examples"
 
93
  # Define actions
94
  model_selector.change(fn=lambda: (None, None), outputs=[image_display, output_text])
95
 
96
+ image_display.upload(fn=handle_uploaded_image, inputs=[image_display], outputs=[image_display, output_text])
97
  image_display.clear(fn=lambda: None, outputs=[output_text])
98
 
99
+ generate_button.click(fn=handle_generate_button, inputs=[image_display, model_selector], outputs=output_text)
100
 
101
  interface.launch(share=False)