JosephTK's picture
Update app.py
4199c36
raw
history blame
1.42 kB
import gradio as gr
from transformers import AutoImageProcessor, AutoModelForObjectDetection
from PIL import Image
import torch
image_processor = AutoImageProcessor.from_pretrained('hustvl/yolos-small')
model = AutoModelForObjectDetection.from_pretrained('hustvl/yolos-small')
def detect(image):
inputs = image_processor(images=image, return_tensors="pt")
outputs = model(**inputs)
# convert outputs to COCO API
target_sizes = torch.tensor([image.size[::-1]])
results = image_processor.post_process_object_detection(outputs,
threshold=0.9,
target_sizes=target_sizes)[0]
# model predicts bounding boxes and corresponding COCO classes
#logits = outputs.logits
#bboxes = outputs.pred_boxes
# label and the count
counts = {}
for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
box = [round(i, 2) for i in box.tolist()]
label_name = model.config.id2label[label.item()]
if label_name not in counts:
counts[label_name] = 0
counts[label_name] += 1
return counts
demo = gr.Interface(
fn=detect,
inputs=[gr.inputs.Image(label="Input image", type="pil")],
outputs=["text"], #, gr.Label(num_top_classes=10)],
title="Object Counts in Image"
)
demo.launch()