ppl_detector / ppl_detector.py
calmdowngirl
display title
8ce1df4
raw
history blame
1.29 kB
from transformers import pipeline
from PIL import Image, ImageDraw
from pprint import pprint
detector = pipeline("object-detection", model="hustvl/yolos-base")
source = None
state = None
def draw_bbox(bboxes):
global source
if source is None:
return
draw = ImageDraw.Draw(source)
for bb in bboxes:
draw.rectangle(bb, outline='yellow', width=2)
def detect(img):
global source, result
if img is not None:
source = Image.open(img)
else:
return None
print("processing img...")
objects = detector(source)
persons = [
o for o in objects
if o['label'] == 'person' and o['score'] > 0.83]
bboxes = list(map(lambda p: (p['box']['xmin'], p['box']['ymin'], p['box']['xmax'], p['box']['ymax']), persons))
n = len(persons)
result = f"it's got {n} {'ppl' if n > 1 else 'person'} in the image"
draw_bbox(bboxes)
return source
def set_result(*args):
global result
if result is None:
return f"<h1 id='result' style='display: flex;justify-content: center;'>it counts ppl, upload an image, see how it goes</h1>"
else:
title = f"<h1 id='result' style='display: flex;justify-content: center;'>{result}</h1>"
result = None
return title