stamp-detection / app.py
sadjava's picture
init repo
47cc4c7
raw
history blame
No virus
1.72 kB
# AUTOGENERATED! DO NOT EDIT! File to edit: ../app.ipynb.
# %% auto 0
__all__ = ['device', 'model', 'transforms', 'image', 'result', 'examples', 'intf', 'detect_stamps']
# %% ../app.ipynb 1
from model import YOLOStamp
from utils import *
import torch
import gradio as gr
import albumentations as A
from albumentations.pytorch.transforms import ToTensorV2
from PIL import Image
# %% ../app.ipynb 2
device = "cuda" if torch.cuda.is_available() else "cpu"
model = YOLOStamp()
model.load_state_dict(torch.load('model.pth', map_location=torch.device('cpu')))
model = model.to(device)
model.eval()
# %% ../app.ipynb 3
transforms = A.Compose([
A.Resize(height=448, width=448),
A.Normalize(),
ToTensorV2(p=1.0),
])
# %% ../app.ipynb 7
def detect_stamps(image):
shape = image.size[:2]
image = image.convert('RGB')
image = np.array(image)
image = transforms(image=image)['image']
output = model(image.unsqueeze(0).to(device))[0]
boxes = output_tensor_to_boxes(output.detach().cpu())
boxes = nonmax_suppression(boxes)
img = image.permute(1, 2, 0).cpu().numpy()
img = visualize_bbox(img.copy(), boxes=boxes, draw_center=False)
img = cv2.resize(img, dsize=shape)
return Image.fromarray((255. * (img * np.array(STD) + np.array(MEAN))).astype(np.uint8))
# %% ../app.ipynb 9
image = gr.inputs.Image(type="pil")
result = gr.outputs.Image(type="pil")
examples = ['./examples/1.jpg', './examples/2.jpg', './examples/3.jpg']
intf = gr.Interface(fn=detect_stamps,
inputs=image,
outputs=result,
title='Stamp detection',
examples=examples)
intf.launch(inline=False)