TSAI_S13 / app.py
ToletiSri's picture
Update app.py
9b19c99
import torch, torchvision
from torchvision import transforms
import numpy as np
import gradio as gr
from PIL import Image
from pytorch_grad_cam import GradCAM
from pytorch_grad_cam.utils.image import show_cam_on_image
import gradio as gr
import albumentations as A
from albumentations.pytorch import ToTensorV2
import config
import utils
from model import YOLOv3
import config
from torchvision import transforms
import torch.optim as optim
scaled_anchors = (
torch.tensor(config.ANCHORS)
* torch.tensor(config.S).unsqueeze(1).unsqueeze(1).repeat(1, 3, 2)
).to('cpu')
model = YOLOv3(num_classes=config.NUM_CLASSES)
optimizer = optim.Adam(model.parameters(), lr=config.LEARNING_RATE, weight_decay=config.WEIGHT_DECAY)
utils.load_checkpoint("checkpoint.pth[1].tar", model, optimizer, config.LEARNING_RATE)
def inference(input_img,show_gradcam="yes", transparency = 0.5, target_layer_number = -1):
out_fig = utils.plot_single_image(model, input_img, 0.6, 0.5,scaled_anchors)
return out_fig
title = "TSAI S13 Assignment: YOLO V3 trained on PASCAL VOC Dataset"
description = "A simple Gradio interface for object detection using YOLO V3 algorithm. Bounding boxes should be shown around these objects - aeroplane, bicycle, bird, boat, bottle, bus, car, cat, chair, cow, diningtable, dog, horse, motorbike, person, pottedplant, sheep, sofa, train, tvmonitor "
examples = [["000002.jpg","yes", 0.5, -1],
["000004.jpg","yes", 0.5, -1],
["000006.jpg","yes", 0.5, -1],
["000058.jpg","yes", 0.5, -1]
]
demo = gr.Interface(
inference,
inputs = [gr.Image(shape=(416, 416), label="Input Image")],
outputs = [gr.Plot(label="Plot")],
title = title,
description = description,
examples = examples,
)
demo.launch()