|
from typing import List |
|
import gradio as gr |
|
from PIL import Image |
|
from models import load_transformers |
|
from libs.model_list import model_list |
|
|
|
|
|
|
|
def multiple_image_captioning(input_img: Image.Image, question:str) -> List: |
|
results = [] |
|
for model_name, pretrained_paths in model_list.items(): |
|
|
|
for pretrained_path in pretrained_paths: |
|
try: |
|
process = load_transformers(name=model_name, model_pretrain=pretrained_path) |
|
|
|
if question == '': |
|
text = process.image_captioning(input_img) |
|
else: |
|
text = process.visual_question_answering(input_img) |
|
except Exception as e: |
|
text = str(e) |
|
|
|
results.append(text) |
|
return results |
|
|
|
|
|
|
|
question_text_Box = gr.Textbox(label="Question") |
|
|
|
outputs = [] |
|
for model_name, pretrained_paths in model_list.items(): |
|
for pretrained_path in pretrained_paths: |
|
outputs.append(gr.Textbox(label=model_name, info=pretrained_path)) |
|
|
|
|
|
demo = gr.Interface(fn=multiple_image_captioning, |
|
inputs=[gr.Image(type='pil'), question_text_Box], |
|
outputs=outputs, |
|
) |
|
|
|
demo.launch() |