app.py 1.9 KB
Newer Older
1 2 3 4 5
import gradio as gr
import base64
from io import BytesIO
from PIL import Image
import numpy as np
L
LokeZhou 已提交
6
import os
7 8 9 10 11 12
from pipeline.pipeline import pp_vehicls


# UGC: Define the inference fn() for your models
def model_inference(input_date, avtivity_list):

L
LokeZhou 已提交
13 14 15 16
    if isinstance(input_date, str):
        if  os.path.splitext(input_date)[-1] not in ['.avi','.mp4']:
            return None
            
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
    result = pp_vehicls(input_date, avtivity_list)

    return result


def clear_all():
    return None, None, None


with gr.Blocks() as demo:
    gr.Markdown("PP-Vehicle Pipeline")

    with gr.Tabs():

        with gr.TabItem("image"):

33
            img_in = gr.Image(value="https://paddledet.bj.bcebos.com/modelcenter/images/PP-Vehicle/demo_vehicle.jpg",label="Input")
34 35 36 37 38 39 40 41 42
            img_out = gr.Image(label="Output")

            img_avtivity_list = gr.CheckboxGroup(
                ["VEHICLE_PLATE", "VEHICLE_ATTR"])
            img_button1 = gr.Button("Submit")
            img_button2 = gr.Button("Clear")

        with gr.TabItem("video"):

L
LokeZhou 已提交
43
            video_in = gr.Video(value="https://paddledet.bj.bcebos.com/modelcenter/images/PP-Vehicle/demo_vehicle.mp4",label="Input only support .mp4 or .avi")
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
            video_out = gr.Video(label="Output")

            video_avtivity_list = gr.CheckboxGroup(
                ["MOT", "VEHICLE_PLATE", "VEHICLE_ATTR"])
            video_button1 = gr.Button("Submit")
            video_button2 = gr.Button("Clear")

    img_button1.click(
        fn=model_inference,
        inputs=[img_in, img_avtivity_list],
        outputs=img_out)
    img_button2.click(
        fn=clear_all,
        inputs=None,
        outputs=[img_in, img_out, img_avtivity_list])

    video_button1.click(
        fn=model_inference,
        inputs=[video_in, video_avtivity_list],
        outputs=video_out)
    video_button2.click(
        fn=clear_all,
        inputs=None,
        outputs=[video_in, video_out, video_avtivity_list])

demo.launch()