Manu
update app.py
0a5d7f7
import gradio as gr
import requests
from image_utils import print_text_on_image_centered, create_background_image
from hf_utils import hf_validate_api_token
from segmentation_utils import segment_and_overlay_results
def segment_gradio_image(api_token, model, image):
# Validacion del token y la imagen
is_token_valid, api_token_message = hf_validate_api_token(api_token)
if not is_token_valid:
text_image = print_text_on_image_centered(
create_background_image(500, 500, "white"),
'HuggingFace API Token invalid. Please enter a valid token.',
'red'
)
segments_list = "No segments available."
return api_token_message, text_image, segments_list
else:
if image is None:
text_image = print_text_on_image_centered(
create_background_image(500, 500, "white"),
'No image detected',
'orange'
)
segments_list = "No segments available."
return api_token_message, text_image, segments_list
else:
text_image = print_text_on_image_centered(
create_background_image(500, 500, "white"),
'PROCESANDO',
'blue'
)
segments_list = "No segments available."
# Assuming segment_image is a placeholder for actual segmentation function
# Uncomment and modify this part according to your segmentation implementation
# response = segment_image(api_token, model, image)
# text_image = response["segmented_image"]
text_image, segments = segment_and_overlay_results(image,api_token, model)
print("app.py segment_gradio_image")
segments_list = "Segments:\n"
for segment in segments:
print(segment['label'] + " " + str(segment['score']))
segments_list += f"\n{segment['label']}: {segment['score']}"
return api_token_message, text_image, segments_list
with gr.Blocks() as demo:
gr.Markdown("# Manu Panoptic Segmentation demo with Hugging Face v0.1 πŸ€—")
gr.Markdown("You can use the default model or enter your own model.")
gr.Markdown("You can use the default image or upload your own image.")
gr.Markdown("You can get your API token from your Hugging Face account.")
gr.Markdown("You can find more models at https://huggingface.co/models")
gr.Markdown("You can find more images at https://unsplash.com/")
with gr.Row():
api_token = gr.Textbox(
label="API Token",
placeholder="Enter your Hugging Face API token here"
)
model_name = gr.Textbox(
label="AI Segmentation Model",
placeholder="Enter your Segmentation model here",
value="facebook/mask2former-swin-tiny-coco-panoptic"
)
image_input = gr.Image(label="Upload Image")
with gr.Row():
api_token_validation = gr.Textbox(label="API Token Validation")
segmented_image = gr.Image(label="Segmented Image")
# New block for segments output
with gr.Row():
segments_output = gr.Textbox(label="Segments")
examples = gr.Examples(
examples=[
["Your HF API Token", "facebook/mask2former-swin-tiny-coco-panoptic", "https://upload.wikimedia.org/wikipedia/commons/7/74/A-Cat.jpg"]
],
inputs=[api_token, model_name, image_input]
)
api_token.change(
fn=segment_gradio_image,
inputs=[api_token, model_name, image_input],
outputs=[api_token_validation, segmented_image, segments_output]
)
model_name.change(
fn=segment_gradio_image,
inputs=[api_token, model_name, image_input],
outputs=[api_token_validation, segmented_image, segments_output]
)
image_input.change(
fn=segment_gradio_image,
inputs=[api_token, model_name, image_input],
outputs=[api_token_validation, segmented_image, segments_output]
)
demo.launch()