Ultralytics YOLO27:
Get Started

YOLOv5 ๋น ๋ฅธ ์‹œ์ž‘ ๐Ÿš€#

Ultralytics YOLOv5์™€ ํ•จ๊ป˜ ์—ญ๋™์ ์ธ ์‹ค์‹œ๊ฐ„ ๊ฐ์ฒด ํƒ์ง€์˜ ์„ธ๊ณ„์— ์ฒซ๋ฐœ์„ ๋‚ด๋””๋ŽŒ ๋ณด์„ธ์š”! ์ด ๊ฐ€์ด๋“œ๋Š” YOLOv5๋ฅผ ์ตํžˆ๊ณ ์ž ํ•˜๋Š” AI ์• ํ˜ธ๊ฐ€์™€ ์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ ์ข…ํ•ฉ์ ์ธ ์‹œ์ž‘ ์•ˆ๋‚ด์„œ์ž…๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ์„ค์ •๋ถ€ํ„ฐ ๊ณ ๊ธ‰ ํ•™์Šต ๊ธฐ๋ฒ•๊นŒ์ง€ ํ•„์š”ํ•œ ๋‚ด์šฉ์„ ๋ชจ๋‘ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋ฅผ ๋งˆ์น˜๋ฉด ์ตœ์‹  ๋”ฅ๋Ÿฌ๋‹ ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•ด YOLOv5๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ž์‹  ์žˆ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—”์ง„์„ ๊ฐ€๋™ํ•˜๊ณ  YOLOv5์™€ ํ•จ๊ป˜ ๋„์•ฝํ•ด ๋ณด์„ธ์š”!

์„ค์น˜#

YOLOv5 ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•˜๊ณ  ํ™˜๊ฒฝ์„ ์„ค์ •ํ•ด ์‹œ์ž‘์„ ์ค€๋น„ํ•˜์„ธ์š”. ์ด๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  ์š”๊ตฌ ์‚ฌํ•ญ์ด ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. Python>=3.8.0๊ณผ PyTorch>=1.8์ด ์ค€๋น„๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ด๋Ÿฌํ•œ ๊ธฐ๋ณธ ๋„๊ตฌ๋Š” YOLOv5๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

git clone https://github.com/ultralytics/yolov5 # clone repository
cd yolov5
pip install -r requirements.txt # install dependencies

PyTorch Hub๋กœ ์ถ”๋ก ํ•˜๊ธฐ#

๋ชจ๋ธ์ด ์ตœ์‹  YOLOv5 ๋ฆด๋ฆฌ์Šค์—์„œ ์›ํ™œํ•˜๊ฒŒ ๋‹ค์šด๋กœ๋“œ๋˜๋Š” YOLOv5 PyTorch Hub ์ถ”๋ก ์˜ ๊ฐ„ํŽธํ•จ์„ ๊ฒฝํ—˜ํ•ด ๋ณด์„ธ์š”. ์ด ๋ฐฉ๋ฒ•์€ PyTorch์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ๋ชจ๋ธ์„ ์‰ฝ๊ฒŒ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‹คํ–‰ํ•˜๋ฏ€๋กœ ์˜ˆ์ธก์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import torch

# ๋ชจ๋ธ ๋กœ๋“œ
model = torch.hub.load("ultralytics/yolov5", "yolov5s")  # 'yolov5n'๋ถ€ํ„ฐ 'yolov5x6'๊นŒ์ง€ ๋˜๋Š” 'custom'์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ์ด๋ฏธ์ง€ ์ถ”๋ก 
img = "https://ultralytics.com/images/zidane.jpg"  # ํŒŒ์ผ, Path, PIL, OpenCV, numpy ๋˜๋Š” ์ด๋ฏธ์ง€ ๋ชฉ๋ก์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ์ถ”๋ก  ์‹คํ–‰
results = model(img)

# ๊ฒฐ๊ณผ ํ‘œ์‹œ
results.print()  # ๋˜๋Š” .show(), .save(), .crop(), .pandas() ๋“ฑ์ž…๋‹ˆ๋‹ค.

detect.py๋ฅผ ์‚ฌ์šฉํ•œ ์ถ”๋ก #

๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ ์œ ์—ฐํ•˜๊ฒŒ ์ถ”๋ก ์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด detect.py์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ตœ์‹  YOLOv5 ๋ฆด๋ฆฌ์Šค์—์„œ ๋ชจ๋ธ์„ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ๋ช…๋ น์ค„์—์„œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ YOLOv5๋ฅผ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์— ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•˜๋ฉฐ, ์ด๋ฏธ์ง€, ๋™์˜์ƒ, ๋””๋ ‰ํ„ฐ๋ฆฌ, ์›น์บ , ๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆผ ๋“ฑ์˜ ์ž…๋ ฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

python detect.py --weights yolov5s.pt --source 0                              # webcam
python detect.py --weights yolov5s.pt --source image.jpg                      # image
python detect.py --weights yolov5s.pt --source video.mp4                      # video
python detect.py --weights yolov5s.pt --source screen                         # screenshot
python detect.py --weights yolov5s.pt --source path/                          # directory
python detect.py --weights yolov5s.pt --source list.txt                       # list of images
python detect.py --weights yolov5s.pt --source list.streams                   # list of streams
python detect.py --weights yolov5s.pt --source 'path/*.jpg'                   # glob pattern
python detect.py --weights yolov5s.pt --source 'https://youtu.be/LNwODJXcvt4' # YouTube video
python detect.py --weights yolov5s.pt --source 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream

ํ•™์Šต#

์•„๋ž˜ ํ•™์Šต ์ง€์นจ์— ๋”ฐ๋ผ YOLOv5 COCO ๋ฐ์ดํ„ฐ์…‹ ๋ฒค์น˜๋งˆํฌ๋ฅผ ์žฌํ˜„ํ•˜์„ธ์š”. ํ•„์š”ํ•œ ๋ชจ๋ธ๊ณผ ๋ฐ์ดํ„ฐ์…‹(coco128.yaml ๋˜๋Š” ์ „์ฒด coco.yaml ๋“ฑ)์€ ์ตœ์‹  YOLOv5 ๋ฆด๋ฆฌ์Šค์—์„œ ์ง์ ‘ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. V100 GPU์—์„œ YOLOv5n/s/m/l/x๋ฅผ ํ•™์Šตํ•˜๋Š” ๋ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ๊ฐ 1/2/4/6/8์ผ์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค(๋ฉ€ํ‹ฐ GPU ํ•™์Šต์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค). ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๋†’์€ --batch-size๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ --batch-size -1์„ ์‚ฌ์šฉํ•ด YOLOv5 AutoBatch ๊ธฐ๋Šฅ์œผ๋กœ ์ตœ์ ์˜ ๋ฐฐ์น˜ ํฌ๊ธฐ๋ฅผ ์ž๋™์œผ๋กœ ์ฐพ์œผ๋ฉด ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ฐฐ์น˜ ํฌ๊ธฐ๋Š” V100-16GB GPU์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ๊ตฌ์„ฑ ํŒŒ์ผ(*.yaml)์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„ํ‚คํ…์ฒ˜ ์š”์•ฝ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

# Train YOLOv5n on COCO128 for 3 epochs
python train.py --data coco128.yaml --epochs 3 --weights yolov5n.pt --batch-size 128

# Train YOLOv5s on COCO for 300 epochs
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5s.yaml --batch-size 64

# Train YOLOv5m on COCO for 300 epochs
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5m.yaml --batch-size 40

# Train YOLOv5l on COCO for 300 epochs
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5l.yaml --batch-size 24

# Train YOLOv5x on COCO for 300 epochs
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5x.yaml --batch-size 16
YOLOv5 training curves for COCO dataset

๊ฒฐ๋ก ์ ์œผ๋กœ YOLOv5๋Š” ๊ฐ์ฒด ๊ฐ์ง€๋ฅผ ์œ„ํ•œ ์ตœ์ฒจ๋‹จ ๋„๊ตฌ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์‹œ๊ฐ์  ์ดํ•ด๋ฅผ ํ†ตํ•ด ์„ธ์ƒ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณ€ํ™”์‹œํ‚ค๋Š” ๋จธ์‹ ๋Ÿฌ๋‹์˜ ํž˜์„ ๋ณด์—ฌ์ฃผ๋Š” ์ฆ๊ฑฐ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋ฅผ ๋”ฐ๋ผ YOLOv5๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด, ์—ฌ๋Ÿฌ๋ถ„์€ ์ปดํ“จํ„ฐ ๋น„์ „ ๋ถ„์•ผ์—์„œ ๋†€๋ผ์šด ์„ฑ๊ณผ๋ฅผ ์ด๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ  ํ˜๋ช…์˜ ์ตœ์ „์„ ์— ์„œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ์ •๋ณด๋‚˜ ๋™๋ฃŒ ์ „๋ฌธ๊ฐ€์˜ ์ง€์›์ด ํ•„์š”ํ•˜๋‹ค๋ฉด, ๊ฐœ๋ฐœ์ž์™€ ์—ฐ๊ตฌ์ž๊ฐ€ ํ™œ๋ฐœํžˆ ํ™œ๋™ํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ค‘์‹ฌ์ธ GitHub ์ €์žฅ์†Œ๋ฅผ ๋ฐฉ๋ฌธํ•ด ๋ณด์„ธ์š”. ๋ฐ์ดํ„ฐ์…‹ ๊ด€๋ฆฌ์™€ ์ฝ”๋“œ ์—†์ด ๋ชจ๋ธ ํ•™์Šต์„ ์ง€์›ํ•˜๋Š” Ultralytics Platform ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ดํŽด๋ณด๊ฑฐ๋‚˜, ์‹ค์ œ ํ™œ์šฉ ์‚ฌ๋ก€์™€ ์˜๊ฐ์„ ์–ป์œผ๋ ค๋ฉด ์†”๋ฃจ์…˜ ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๊ณ„์† ํƒ๊ตฌํ•˜๊ณ  ํ˜์‹ ํ•˜๋ฉฐ YOLOv5์˜ ๋†€๋ผ์šด ๊ธฐ๋Šฅ์„ ๊ฒฝํ—˜ํ•ด ๋ณด์„ธ์š”. ์ฆ๊ฑฐ์šด ๊ฐ์ง€๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค! ๐ŸŒ ๐Ÿ”

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ#

  • ์ถ”๋ก ์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. PyTorch Hub๋Š” torch.hub.load("ultralytics/yolov5", "yolov5s")์„ ์‚ฌ์šฉํ•ด ํ•„์š”ํ•  ๋•Œ ์ฝ”๋“œ์™€ ๊ฐ€์ค‘์น˜๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. train.py, val.py, detect.py, export.py ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์†๋„์™€ ์ •ํ™•๋„์˜ ๊ท ํ˜•์ด ๊ฐ€์žฅ ์ข‹์€ ๋ชจ๋ธ์ด yolov5s.pt์ž…๋‹ˆ๋‹ค. ์—ฃ์ง€ ๋””๋ฐ”์ด์Šค์—๋Š” yolov5n.pt์„ ์‚ฌ์šฉํ•˜๊ณ , ์†๋„๋ณด๋‹ค ์ •ํ™•๋„๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋ฉด yolov5m.pt๋ถ€ํ„ฐ yolov5x.pt๊นŒ์ง€ ์‚ฌ์šฉํ•˜์„ธ์š”. 1280ํ”ฝ์…€๋กœ ํ•™์Šตํ•˜๋ ค๋ฉด yolov5s6.pt์™€ ๊ฐ™์€ P6 ๋ณ€ํ˜• ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ „์ฒด ๋ชฉ๋ก์€ ์‚ฌ์ „ ํ•™์Šต ์ฒดํฌํฌ์ธํŠธ ํ‘œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  • ์ด๋ฏธ์ง€์™€ YOLO ํ˜•์‹ ๋ ˆ์ด๋ธ”์„ ๊ฐ๊ฐ images/ ๋ฐ labels/ ํด๋”์— ๋„ฃ๊ณ , dataset.yaml์— ์„ค๋ช…์„ ์ž‘์„ฑํ•œ ๋‹ค์Œ python train.py --data dataset.yaml --weights yolov5s.pt์„ ์‹คํ–‰ํ•˜์„ธ์š”. ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ์ดํ„ฐ ํ•™์Šต ํŠœํ† ๋ฆฌ์–ผ์—์„œ ๊ฐ ๋‹จ๊ณ„๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

  • YOLOv5๋Š” ์•ˆ์ •์ ์ด๋ฉฐ ๋…๋ฆฝํ˜• ์ €์žฅ์†Œ์—์„œ ๊ณ„์† ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›๋˜์ง€๋งŒ, ๋” ์ด์ƒ ์ตœ์‹  ๋ชจ๋ธ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์—๋Š” ultralytics ํŒจํ‚ค์ง€์˜ YOLO26์ด ๋” ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๋ฉฐ NMS ์—†์ด ์—”๋“œํˆฌ์—”๋“œ๋กœ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ์‹œ์ž‘์— ์„ค๋ช…๋œ ๊ฒƒ๊ณผ ๋™์ผํ•œ pip install ultralytics ์›Œํฌํ”Œ๋กœ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์—ฌ์ž

๋Œ“๊ธ€