yolov5-face / app.py
nakamura196's picture
feat: add examples
3ce8e64
import gradio as gr
from PIL import Image, ImageDraw
import yolov5
import json
model = yolov5.load("./best.pt")
def yolo(im):
results = model(im) # inference
df = results.pandas().xyxy[0].to_json(orient="records")
res = json.loads(df)
draw = ImageDraw.Draw(im)
for bb in res:
xmin = bb['xmin']
ymin = bb['ymin']
xmax = bb['xmax']
ymax = bb['ymax']
draw.rectangle([xmin, ymin, xmax, ymax], outline="red", width=3)
return [
res,
im,
]
inputs = [
gr.Image(type='pil', label="Original Image")
]
outputs = [
gr.JSON(label="Output JSON"),
gr.Image(type='pil', label="Output Image with Boxes"),
]
title = "YOLOv5 Face"
description = """<p>YOLOv5 Face Gradio demo for object detection. Upload an image or click an example image to use.</p>"""
article = """
<ul>
<li>『文正草子』(日本古典籍データセット(国文研所蔵)CODH配信)</li>
<li>『源氏百人一首』(大阪公立大学中百舌鳥図書館 国文学研究資料館)</li>
<li>『源氏物語』(国文学研究資料館)</li>
<li>『百鬼夜行図』(東京大学)</li>
</ul>
<p style='text-align: center'>YOLOv5 Face is an object detection model trained on the <a href=\"https://doi.org/10.20676/00000353\">顔コレデータセット</a>.</p>"""
examples = [
["『文正草子』(日本古典籍データセット(国文研所蔵)CODH配信).jpg"],
['『源氏百人一首』(大阪公立大学中百舌鳥図書館 国文学研究資料館).jpg'],
['『源氏物語』(国文学研究資料館).jpg'],
['『百鬼夜行図』(東京大学).jpg']
]
demo = gr.Interface(
fn=yolo,
inputs=inputs,
outputs=outputs,
title=title,
description=description,
article=article,
examples=examples
)
demo.css = """
.json-holder {
height: 300px;
overflow: auto;
}
"""
demo.launch(share=False)