nathbotbol's picture
Upload folder using huggingface_hub
d7aea57 verified
raw
history blame contribute delete
No virus
1.8 kB
import os
import gradio as gr
import pandas as pd
from PIL import ImageDraw
from PIL.Image import Image
from sacred import Experiment
from engie_pipeline.pipeline import pipeline_experiment, set_up_pipeline, pipeline
from engie_pipeline.utils import draw_boxes
ex = Experiment("app", ingredients=[pipeline_experiment])
def process_image(models, image: Image, comformity_threshold: float):
image = image.convert("RGB")
siglip_probs, boxes, labels, scores, comformity = pipeline(**models, image=image, conformity_threshold=comformity_threshold, force_detr=True)
image = draw_boxes(
image=image, boxes=boxes[labels == 0], probs=scores[labels == 0], color="gray"
)
image = draw_boxes(
image=image, boxes=boxes[labels == 1], probs=scores[labels == 1], color="orange"
)
image = draw_boxes(
image=image, boxes=boxes[labels == 2], probs=scores[labels == 2], color="purple"
)
siglip_probs = pd.DataFrame(
siglip_probs.detach().numpy(),
columns=["Admissible", "Hors-sujet", "Non-admissible"],
)
return siglip_probs, image, comformity
@ex.automain
def app():
models = set_up_pipeline()
image_input = gr.Image(label="Input image", type="pil")
comformity_threshold = gr.Slider(minimum=0, maximum=1, step=0.01, value=0.8)
prob_output = gr.DataFrame(label="Probabilities (%)")
image_output = gr.Image(label="Output image")
label = gr.Label(label="Is the image conform?")
demo = gr.Interface(
fn=lambda im, thresh: process_image(models=models, image=im, comformity_threshold=thresh),
inputs=[image_input, comformity_threshold],
outputs=[prob_output, image_output, label],
)
demo.launch(auth=(os.environ.get("GRADIO_USERNAME"), os.environ.get("GRADIO_PASSWORD")))