Spaces:
Runtime error
A newer version of the Gradio SDK is available:
5.35.0
comments: true
description: >-
YOLOv8 ์์ธก ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์์
์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ญ์์ค. ์ด๋ฏธ์ง, ๋น๋์ค ๋ฐ ๋ฐ์ดํฐ ํ์๊ณผ ๊ฐ์ ๋ค์ํ ์ถ๋ก ์์ค์
๋ํด ์์ธํ ์์๋ด
๋๋ค.
keywords: Ultralytics, YOLOv8, ์์ธก ๋ชจ๋, ์ถ๋ก ์์ค, ์์ธก ์์
, ์คํธ๋ฆฌ๋ฐ ๋ชจ๋, ์ด๋ฏธ์ง ์ฒ๋ฆฌ, ๋น๋์ค ์ฒ๋ฆฌ, ๋จธ์ ๋ฌ๋, AI
Ultralytics YOLO๋ก ๋ชจ๋ธ ์์ธก

์๊ฐ
๋จธ์ ๋ฌ๋ ๋ฐ ์ปดํจํฐ ๋น์ ์ ์ธ๊ณ์์ ์๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํด์ํ๋ ๊ณผ์ ์ '์ถ๋ก ' ๋๋ '์์ธก'์ด๋ผ๊ณ ํฉ๋๋ค. Ultralytics YOLOv8๋ ๋ค์ํ ๋ฐ์ดํฐ ์์ค์์์ ๊ณ ์ฑ๋ฅ, ์ค์๊ฐ ์ถ๋ก ์ ์ํด ๋ง์ถคํ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ธ ์์ธก ๋ชจ๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
์์ฒญ: Ultralytics YOLOv8 ๋ชจ๋ธ์์ ์ถ๋ ฅ์ ์ถ์ถํ์ฌ ๋ง์ถค ํ๋ก์ ํธ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ.
์ค์ ์์ฉ ๋ถ์ผ
์์ธก ์ธํผ๋ฐ์ค๋ฅผ ์ํด Ultralytics YOLO ์ฌ์ฉํ๊ธฐ
๋ค์์ YOLOv8์ ์์ธก ๋ชจ๋๋ฅผ ๋ค์ํ ์ถ๋ก ์๊ตฌ ์ฌํญ์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ์ ๋๋ค:
- ๋ค์์ฑ: ์ด๋ฏธ์ง, ๋น๋์ค, ์ฌ์ง์ด ์ค์๊ฐ ์คํธ๋ฆผ์ ๋ํ ์ถ๋ก ์ ์ํํ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ: ์ ํ์ฑ์ ํฌ์ํ์ง ์๊ณ ์ค์๊ฐ, ๊ณ ์ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ค๊ณ๋์์ต๋๋ค.
- ์ฌ์ฉ ํธ์์ฑ: ๋น ๋ฅธ ๋ฐฐํฌ ๋ฐ ํ ์คํธ๋ฅผ ์ํ ์ง๊ด์ ์ธ Python ๋ฐ CLI ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๊ณ ๋์ ์ฌ์ฉ์ ์ ์: ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ๋ชจ๋ธ์ ์ถ๋ก ํ๋์ ์กฐ์จํ๊ธฐ ์ํ ๋ค์ํ ์ค์ ๋ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
์์ธก ๋ชจ๋์ ์ฃผ์ ๊ธฐ๋ฅ
YOLOv8์ ์์ธก ๋ชจ๋๋ ๊ฐ๋ ฅํ๊ณ ๋ค์ฌ๋ค๋ฅํ๊ฒ ์ค๊ณ๋์์ผ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ๊ณ ์์ต๋๋ค:
- ๋ค์ค ๋ฐ์ดํฐ ์์ค ํธํ์ฑ: ๋ฐ์ดํฐ๊ฐ ๊ฐ๋ณ ์ด๋ฏธ์ง, ์ด๋ฏธ์ง ์ปฌ๋ ์ , ๋น๋์ค ํ์ผ ๋๋ ์ค์๊ฐ ๋น๋์ค ์คํธ๋ฆผ์ ํํ๋ก ์กด์ฌํ๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์์ธก ๋ชจ๋๊ฐ ์ง์ํฉ๋๋ค.
- ์คํธ๋ฆฌ๋ฐ ๋ชจ๋:
Results
๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ธ ์์ฑ์๋ก ์คํธ๋ฆฌ๋ฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ๋๋ค. ์์ธก๊ธฐ์ ํธ์ถ ๋ฉ์๋์์stream=True
๋ก ์ค์ ํ์ฌ ํ์ฑํํฉ๋๋ค. - ๋ฐฐ์น ์ฒ๋ฆฌ: ๋จ์ผ ๋ฐฐ์น์์ ์ฌ๋ฌ ์ด๋ฏธ์ง ๋๋ ๋น๋์ค ํ๋ ์์ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ํตํด ์ถ๋ก ์๊ฐ์ ๋์ฑ ๋จ์ถํฉ๋๋ค.
- ํตํฉ ์นํ์ : ์ ์ฐํ API ๋๋ถ์ ๊ธฐ์กด ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๋ฐ ๊ธฐํ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์์ ์ฝ๊ฒ ํตํฉํ ์ ์์ต๋๋ค.
Ultralytics YOLO ๋ชจ๋ธ์ Python Results
๊ฐ์ฒด์ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๊ฑฐ๋, ์ถ๋ก ์ค stream=True
๊ฐ ๋ชจ๋ธ์ ์ ๋ฌ๋ ๋ Results
๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ธ Python ์์ฑ์๋ฅผ ๋ฐํํฉ๋๋ค:
!!! ์์ "์์ธก"
=== "`stream=False`๋ก ๋ฆฌ์คํธ ๋ฐํ"
```python
from ultralytics import YOLO
# ๋ชจ๋ธ ๋ก๋
model = YOLO('yolov8n.pt') # ์ฌ์ ํ๋ จ๋ YOLOv8n ๋ชจ๋ธ
# ์ด๋ฏธ์ง ๋ฆฌ์คํธ์ ๋ํ ๋ฐฐ์น ์ถ๋ก ์คํ
results = model(['im1.jpg', 'im2.jpg']) # Results ๊ฐ์ฒด์ ๋ฆฌ์คํธ ๋ฐํ
# ๊ฒฐ๊ณผ ๋ฆฌ์คํธ ์ฒ๋ฆฌ
for result in results:
boxes = result.boxes # bbox ์ถ๋ ฅ์ ์ํ Boxes ๊ฐ์ฒด
masks = result.masks # ์ธ๊ทธ๋ฉํ
์ด์
๋ง์คํฌ ์ถ๋ ฅ์ ์ํ Masks ๊ฐ์ฒด
keypoints = result.keypoints # ์์ธ ์ถ๋ ฅ์ ์ํ Keypoints ๊ฐ์ฒด
probs = result.probs # ๋ถ๋ฅ ์ถ๋ ฅ์ ์ํ Probs ๊ฐ์ฒด
```
=== "`stream=True`๋ก ์์ฑ์ ๋ฐํ"
```python
from ultralytics import YOLO
# ๋ชจ๋ธ ๋ก๋
model = YOLO('yolov8n.pt') # ์ฌ์ ํ๋ จ๋ YOLOv8n ๋ชจ๋ธ
# ์ด๋ฏธ์ง ๋ฆฌ์คํธ์ ๋ํ ๋ฐฐ์น ์ถ๋ก ์คํ
results = model(['im1.jpg', 'im2.jpg'], stream=True) # Results ๊ฐ์ฒด์ ์์ฑ์ ๋ฐํ
# ๊ฒฐ๊ณผ ์์ฑ์ ์ฒ๋ฆฌ
for result in results:
boxes = result.boxes # bbox ์ถ๋ ฅ์ ์ํ Boxes ๊ฐ์ฒด
masks = result.masks # ์ธ๊ทธ๋ฉํ
์ด์
๋ง์คํฌ ์ถ๋ ฅ์ ์ํ Masks ๊ฐ์ฒด
keypoints = result.keypoints # ์์ธ ์ถ๋ ฅ์ ์ํ Keypoints ๊ฐ์ฒด
probs = result.probs # ๋ถ๋ฅ ์ถ๋ ฅ์ ์ํ Probs ๊ฐ์ฒด
```
์ถ๋ก ์์ค
YOLOv8์ ์๋ ํ์ ํ์๋ ๋ฐ์ ๊ฐ์ด ์ถ๋ก ์ ์ํ ๋ค์ํ ์ ํ์ ์ ๋ ฅ ์์ค๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์์ค์๋ ์ ์ ์ด๋ฏธ์ง, ๋น๋์ค ์คํธ๋ฆผ, ๋ค์ํ ๋ฐ์ดํฐ ํ์์ด ํฌํจ๋ฉ๋๋ค. ํ๋ ๋ํ ๊ฐ ์์ค๋ฅผ 'stream=True' โ ์ ํจ๊ป ์คํธ๋ฆฌ๋ฐ ๋ชจ๋์์ ์ฌ์ฉํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค. ์คํธ๋ฆฌ๋ฐ ๋ชจ๋๋ ๋น๋์ค๋ ๋ผ์ด๋ธ ์คํธ๋ฆผ์ ์ฒ๋ฆฌํ ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ ๋ก๋ํ๋ ๋์ ๊ฒฐ๊ณผ์ ์์ฑ์๋ฅผ ๋ง๋ค์ด ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
!!! Tip "ํ"
๊ธด ๋น๋์ค๋ ํฐ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฒ๋ฆฌํ ๋ 'stream=True'๋ฅผ ์ฌ์ฉํ์ฌ ํจ์จ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. 'stream=False'์ผ ๋๋ ๋ชจ๋ ํ๋ ์ ๋๋ ๋ฐ์ดํฐ ํฌ์ธํธ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด, ์
๋ ฅ์ด ํฌ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ค๋ฅ๋ฅผ ๋น ๋ฅด๊ฒ ์ ๋ฐํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด์, 'stream=True'๋ ์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ํ๋ ์ ๋๋ ๋ฐ์ดํฐ ํฌ์ธํธ์ ๊ฒฐ๊ณผ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์๋น๋ฅผ ํฌ๊ฒ ์ค์ด๊ณ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
์์ค | ์ธ์ | ์ ํ | ๋น๊ณ |
---|---|---|---|
์ด๋ฏธ์ง | 'image.jpg' |
str ๋๋ Path |
๋จ์ผ ์ด๋ฏธ์ง ํ์ผ. |
URL | 'https://ultralytics.com/images/bus.jpg' |
str |
์ด๋ฏธ์ง URL. |
์คํฌ๋ฆฐ์ท | 'screen' |
str |
์คํฌ๋ฆฐ์ท์ ์บก์ฒํฉ๋๋ค. |
PIL | Image.open('im.jpg') |
PIL.Image |
HWC ํ์์ผ๋ก RGB ์ฑ๋์ด ์์ต๋๋ค. |
OpenCV | cv2.imread('im.jpg') |
np.ndarray |
HWC ํ์์ผ๋ก BGR ์ฑ๋์ด ์๊ณ uint8 (0-255) ์
๋๋ค. |
numpy | np.zeros((640,1280,3)) |
np.ndarray |
HWC ํ์์ผ๋ก BGR ์ฑ๋์ด ์๊ณ uint8 (0-255) ์
๋๋ค. |
torch | torch.zeros(16,3,320,640) |
torch.Tensor |
BCHW ํ์์ผ๋ก RGB ์ฑ๋์ด ์๊ณ float32 (0.0-1.0) ์
๋๋ค. |
CSV | 'sources.csv' |
str ๋๋ Path |
์ด๋ฏธ์ง, ๋น๋์ค ๋๋ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๊ฐ ์๋ CSV ํ์ผ. |
๋น๋์ค โ | 'video.mp4' |
str ๋๋ Path |
MP4, AVI ๋ฑ๊ณผ ๊ฐ์ ํ์์ ๋น๋์ค ํ์ผ์ ๋๋ค. |
๋๋ ํ ๋ฆฌ โ | 'path/' |
str ๋๋ Path |
์ด๋ฏธ์ง๋ ๋น๋์ค๊ฐ ์๋ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก์ ๋๋ค. |
๊ธ๋ก๋ธ โ | 'path/*.jpg' |
str |
์ฌ๋ฌ ํ์ผ์ ์ผ์นํ๋ ๊ธ๋ก๋ธ ํจํด์ ๋๋ค. '*' ๋ฌธ์๋ฅผ ์์ผ๋์นด๋๋ก ์ฌ์ฉํ์ธ์. |
YouTube โ | 'https://youtu.be/LNwODJXcvt4' |
str |
YouTube ๋น๋์ค์ URL์ ๋๋ค. |
์คํธ๋ฆผ โ | 'rtsp://example.com/media.mp4' |
str |
RTSP, RTMP, TCP ๋๋ IP ์ฃผ์์ ๊ฐ์ ์คํธ๋ฆฌ๋ฐ ํ๋กํ ์ฝ์ URL์ ๋๋ค. |
๋ฉํฐ-์คํธ๋ฆผ โ | 'list.streams' |
str ๋๋ Path |
์คํธ๋ฆผ URL์ด ํ๋น ํ๋์ฉ ์๋ *.streams ํ
์คํธ ํ์ผ์ด๋ฉฐ, ์๋ฅผ ๋ค์ด 8๊ฐ์ ์คํธ๋ฆผ์ ๋ฐฐ์น ํฌ๊ธฐ 8์์ ์คํ๋ฉ๋๋ค. |
์๋๋ ๊ฐ ์ ํ์ ์์ค๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋ ์์ ์ ๋๋ค:
!!! ์์ "์์ธก ์์ค"
=== "์ด๋ฏธ์ง"
์ด๋ฏธ์ง ํ์ผ์์ ์ถ๋ก ์ ์คํํฉ๋๋ค.
```python
from ultralytics import YOLO
# ์ฌ์ ํ๋ จ๋ YOLOv8n ๋ชจ๋ธ ๋ก๋
model = YOLO('yolov8n.pt')
# ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก ์ ์
source = 'path/to/image.jpg'
# ์์ค์์ ์ถ๋ก ์คํ
results = model(source) # Results ๊ฐ์ฒด์ ๋ฆฌ์คํธ
```
=== "์คํฌ๋ฆฐ์ท"
ํ์ฌ ์คํฌ๋ฆฐ ์ฝํ
์ธ ๋ฅผ ์คํฌ๋ฆฐ์ท์ผ๋ก ์ถ๋ก ์ ์คํํฉ๋๋ค.
```python
from ultralytics import YOLO
# ์ฌ์ ํ๋ จ๋ YOLOv8n ๋ชจ๋ธ ๋ก๋
model = YOLO('yolov8n.pt')
# ํ์ฌ ์คํฌ๋ฆฐ์ท์ ์์ค๋ก ์ ์
source = 'screen'
# ์์ค์์ ์ถ๋ก ์คํ
results = model(source) # Results ๊ฐ์ฒด์ ๋ฆฌ์คํธ
```
=== "URL"
URL์ ํตํด ์๊ฒฉ์ผ๋ก ํธ์คํ
๋๋ ์ด๋ฏธ์ง๋ ๋น๋์ค์์ ์ถ๋ก ์ ์คํํฉ๋๋ค.
```python
from ultralytics import YOLO
# ์ฌ์ ํ๋ จ๋ YOLOv8n ๋ชจ๋ธ ๋ก๋
model = YOLO('yolov8n.pt')
# ์๊ฒฉ ์ด๋ฏธ์ง๋ ๋์์ URL ์ ์
source = 'https://ultralytics.com/images/bus.jpg'
# ์์ค์์ ์ถ๋ก ์คํ
results = model(source) # Results ๊ฐ์ฒด์ ๋ฆฌ์คํธ
```
=== "PIL"
Python Imaging Library (PIL)๋ก ์ด๋ฆฐ ์ด๋ฏธ์ง์์ ์ถ๋ก ์ ์คํํฉ๋๋ค.
```python
from PIL import Image
from ultralytics import YOLO
# ์ฌ์ ํ๋ จ๋ YOLOv8n ๋ชจ๋ธ ๋ก๋
model = YOLO('yolov8n.pt')
# PIL์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ์ด๊ธฐ
source = Image.open('path/to/image.jpg')
# ์์ค์์ ์ถ๋ก ์คํ
results = model(source) # Results ๊ฐ์ฒด์ ๋ฆฌ์คํธ
```
=== "OpenCV"
OpenCV๋ก ์ฝ์ ์ด๋ฏธ์ง์์ ์ถ๋ก ์ ์คํํฉ๋๋ค.
```python
import cv2
from ultralytics import YOLO
# ์ฌ์ ํ๋ จ๋ YOLOv8n ๋ชจ๋ธ ๋ก๋
model = YOLO('yolov8n.pt')
# OpenCV๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ์ฝ๊ธฐ
source = cv2.imread('path/to/image.jpg')
# ์์ค์์ ์ถ๋ก ์คํ
results = model(source) # Results ๊ฐ์ฒด์ ๋ฆฌ์คํธ
```
=== "numpy"
numpy ๋ฐฐ์ด๋ก ํํ๋ ์ด๋ฏธ์ง์์ ์ถ๋ก ์ ์คํํฉ๋๋ค.
```python
import numpy as np
from ultralytics import YOLO
# ์ฌ์ ํ๋ จ๋ YOLOv8n ๋ชจ๋ธ ๋ก๋
model = YOLO('yolov8n.pt')
# ๋ฌด์์ numpy ๋ฐฐ์ด ์์ฑ, HWC ํํ (640, 640, 3), ๊ฐ ๋ฒ์ [0, 255], ํ์
uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype='uint8')
# ์์ค์์ ์ถ๋ก ์คํ
results = model(source) # Results ๊ฐ์ฒด์ ๋ฆฌ์คํธ
```
=== "torch"
PyTorch ํ
์๋ก ํํ๋ ์ด๋ฏธ์ง์์ ์ถ๋ก ์ ์คํํฉ๋๋ค.
```python
import torch
from ultralytics import YOLO
# ์ฌ์ ํ๋ จ๋ YOLOv8n ๋ชจ๋ธ ๋ก๋
model = YOLO('yolov8n.pt')
# ๋ฌด์์ torch ํ
์ ์์ฑ, BCHW ํํ (1, 3, 640, 640), ๊ฐ ๋ฒ์ [0, 1], ํ์
float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)
# ์์ค์์ ์ถ๋ก ์คํ
results = model(source) # Results ๊ฐ์ฒด์ ๋ฆฌ์คํธ
```