prismer / app_vqa.py
Shikun Liu
minor update (#3)
31d8bef
raw history blame
No virus
2.05 kB
#!/usr/bin/env python
from __future__ import annotations
import os
import pathlib
import gradio as gr
from prismer_model import Model
def create_demo() -> gr.Blocks:
model = Model()
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
image = gr.Image(label='Input', type='filepath')
model_name = gr.Dropdown(label='Model', choices=['Prismer-Base', 'Prismer-Large'], value='Prismer-Base')
question = gr.Text(label='Question')
run_button = gr.Button('Run')
with gr.Column(scale=1.5):
answer = gr.Text(label='Model Prediction')
with gr.Row():
depth = gr.Image(label='Depth')
edge = gr.Image(label='Edge')
normals = gr.Image(label='Normals')
with gr.Row():
segmentation = gr.Image(label='Segmentation')
object_detection = gr.Image(label='Object Detection')
ocr = gr.Image(label='OCR Detection')
inputs = [image, model_name, question]
outputs = [answer, depth, edge, normals, segmentation, object_detection, ocr]
paths = sorted(pathlib.Path('prismer/images').glob('*'))
ex_questions = ['What is the man on the left doing?',
'What is this person doing?',
'How many cows in this image?',
'What is the type of animal in this image?',
'What toy is it?']
examples = [[path.as_posix(), 'Prismer-Base', ex_questions[i]] for i, path in enumerate(paths)]
gr.Examples(examples=examples,
inputs=inputs,
outputs=outputs,
fn=model.run_vqa,
cache_examples=os.getenv('SYSTEM') == 'spaces')
run_button.click(fn=model.run_vqa, inputs=inputs, outputs=outputs)
return demo
if __name__ == '__main__':
demo = create_demo()
demo.queue().launch()