๋ํํ ๊ฐ์ฒด ๊ฐ์ง: Gradio & Ultralytics YOLOv8 ๐
๋ํํ ๊ฐ์ฒด ๊ฐ์ง ์๊ฐ
์ด Gradio ์ธํฐํ์ด์ค๋ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฐ์ง๋ฅผ ์ํํ ์ ์๋ ์์ฌ์ด ๋ํํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. Ultralytics YOLOv8 ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ฌผ์ฒด ๊ฐ์ง๋ฅผ ์ํํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๋ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ๊ณ ์ ๋ขฐ๋ ์๊ณ๊ฐ ๋ฐ ๊ต์ฐจ์ ๊ฐ ๊ฒฐํฉ(IoU) ์๊ณ๊ฐ๊ณผ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ์กฐ์ ํ์ฌ ์ค์๊ฐ ๊ฐ์ง ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๋ฌผ์ฒด ๊ฐ์ง์ Gradio๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
- ์ฌ์ฉ์ ์นํ์ ์ธ ์ธํฐํ์ด์ค: Gradio๋ ์ฌ์ฉ์๊ฐ ์ฝ๋ฉ ์์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ๊ณ ํ์ง ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํ ์ ์๋ ๊ฐ๋จํ ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค.
- ์ค์๊ฐ ์กฐ์ : ์ ๋ขฐ๋ ๋ฐ IoU ์๊ณ๊ฐ๊ณผ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฆ์ ์กฐ์ ํ ์ ์์ด ํ์ง ๊ฒฐ๊ณผ์ ๋ํ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ ๋ฐ ์ต์ ํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ํญ๋์ ์ ๊ทผ์ฑ: Gradio ์น ์ธํฐํ์ด์ค๋ ๋๊ตฌ๋ ์ก์ธ์คํ ์ ์์ด ๋ฐ๋ชจ, ๊ต์ก ๋ชฉ์ ๋ฐ ๋น ๋ฅธ ์คํ์ ์ํ ํ๋ฅญํ ๋๊ตฌ์ ๋๋ค.
๋ผ๋์ค ์ค์น ๋ฐฉ๋ฒ
์ธํฐํ์ด์ค ์ฌ์ฉ ๋ฐฉ๋ฒ
- ์ด๋ฏธ์ง ์ ๋ก๋: '์ด๋ฏธ์ง ์ ๋ก๋'๋ฅผ ํด๋ฆญํ์ฌ ๊ฐ์ฒด ๊ฐ์ง๋ฅผ ์ํ ์ด๋ฏธ์ง ํ์ผ์ ์ ํํฉ๋๋ค.
- ๋งค๊ฐ๋ณ์๋ฅผ ์กฐ์ ํฉ๋๋ค:
- ์ ๋ขฐ๋ ์๊ณ๊ฐ: ๊ฐ์ฒด ๊ฐ์ง๋ฅผ ์ํ ์ต์ ์ ๋ขฐ ์์ค์ ์ค์ ํ๋ ์ฌ๋ผ์ด๋์ ๋๋ค.
- IoU ์๊ณ๊ฐ: ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ IoU ์๊ณ๊ฐ์ ์ค์ ํ๋ ์ฌ๋ผ์ด๋์ ๋๋ค.
- ๊ฒฐ๊ณผ ๋ณด๊ธฐ: ๊ฐ์ง๋ ๊ฐ์ฒด์ ํด๋น ๋ ์ด๋ธ์ด ํฌํจ๋ ์ฒ๋ฆฌ๋ ์ด๋ฏธ์ง๊ฐ ํ์๋ฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก ์์
- ์ํ ์ด๋ฏธ์ง 1: ๊ธฐ๋ณธ ์๊ณ๊ฐ์ ์ฌ์ฉํ ๋ฒ์ค ๊ฐ์ง.
- ์ํ ์ด๋ฏธ์ง 2: ๊ธฐ๋ณธ ์๊ณ๊ฐ์ ์ฌ์ฉํ ์คํฌ์ธ ์ด๋ฏธ์ง์์์ ๊ฐ์ง.
์ฌ์ฉ ์
์ด ์น์ ์์๋ Ultralytics YOLOv8 ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ Gradio ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ Python ์ฝ๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ถ๋ฅ ์์ , ํ์ง ์์ , ์ธ๋ถํ ์์ ๋ฐ ํค ํฌ์ธํธ ์์ ์ ์ง์ํฉ๋๋ค.
import gradio as gr
import PIL.Image as Image
from ultralytics import ASSETS, YOLO
model = YOLO("yolov8n.pt")
def predict_image(img, conf_threshold, iou_threshold):
"""Predicts and plots labeled objects in an image using YOLOv8 model with adjustable confidence and IOU thresholds."""
results = model.predict(
source=img,
conf=conf_threshold,
iou=iou_threshold,
show_labels=True,
show_conf=True,
imgsz=640,
)
for r in results:
im_array = r.plot()
im = Image.fromarray(im_array[..., ::-1])
return im
iface = gr.Interface(
fn=predict_image,
inputs=[
gr.Image(type="pil", label="Upload Image"),
gr.Slider(minimum=0, maximum=1, value=0.25, label="Confidence threshold"),
gr.Slider(minimum=0, maximum=1, value=0.45, label="IoU threshold"),
],
outputs=gr.Image(type="pil", label="Result"),
title="Ultralytics Gradio",
description="Upload images for inference. The Ultralytics YOLOv8n model is used by default.",
examples=[
[ASSETS / "bus.jpg", 0.25, 0.45],
[ASSETS / "zidane.jpg", 0.25, 0.45],
],
)
if __name__ == "__main__":
iface.launch()
๋งค๊ฐ๋ณ์ ์ค๋ช
๋งค๊ฐ๋ณ์ ์ด๋ฆ | ์ ํ | ์ค๋ช |
---|---|---|
img |
Image |
๊ฐ์ฒด ๊ฐ์ง๊ฐ ์ํ๋ ์ด๋ฏธ์ง์ ๋๋ค. |
conf_threshold |
float |
๊ฐ์ฒด ๊ฐ์ง๋ฅผ ์ํ ์ ๋ขฐ๋ ์๊ณ๊ฐ์ ๋๋ค. |
iou_threshold |
float |
์ค๋ธ์ ํธ ๋ถ๋ฆฌ๋ฅผ ์ํ ๊ต์ฐจ ์ค๋ฒ ์ ๋์จ ์๊ณ๊ฐ์ ๋๋ค. |
๋ผ๋์ค ์ธํฐํ์ด์ค ๊ตฌ์ฑ ์์
๊ตฌ์ฑ ์์ | ์ค๋ช |
---|---|
์ด๋ฏธ์ง ์ ๋ ฅ | ๊ฐ์งํ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํฉ๋๋ค. |
์ฌ๋ผ์ด๋ | ์ ๋ขฐ๋ ๋ฐ IoU ์๊ณ๊ฐ์ ์กฐ์ ํฉ๋๋ค. |
์ด๋ฏธ์ง ์ถ๋ ฅ | ํ์ง ๊ฒฐ๊ณผ๋ฅผ ํ์ํฉ๋๋ค. |