| import gradio as gr |
| from transformers import ViltProcessor, ViltForQuestionAnswering |
| from PIL import Image |
| import torch |
|
|
| |
| processor = ViltProcessor.from_pretrained("MariaK/vilt_finetuned_200") |
| model = ViltForQuestionAnswering.from_pretrained("MariaK/vilt_finetuned_200") |
| device = "cuda" if torch.cuda.is_available() else "cpu" |
| model.to(device) |
|
|
| def predict(image, question): |
| |
| inputs = processor(image, question, return_tensors="pt").to(device) |
|
|
| |
| with torch.no_grad(): |
| outputs = model(**inputs) |
|
|
| logits = outputs.logits |
| idx = logits.argmax(-1).item() |
| predicted_answer = model.config.id2label[idx] |
| return predicted_answer |
|
|
| |
| iface = gr.Interface( |
| fn=predict, |
| inputs=[ |
| gr.Image(type="pil"), |
| gr.Textbox(lines=1, placeholder="Enter your question here..."), |
| ], |
| outputs="text", |
| title="Visual Question Answering with Fine-tuned Vilt", |
| description="Upload an image and ask a question about it!", |
| ) |
|
|
| |
| iface.launch(share=True) |