| ๋ฒ์ | ๋ฐํ ์๊ธฐ | ์ฃผ์ ๋ณํ |
|---|---|---|
| YOLOv1 | 2016 | ์ต์ด์ YOLO, ๋จ์ผ CNN์ผ๋ก ์ง์ bbox + class ์์ธก |
| YOLOv3 | 2018 | multi-scale detection ๋์ (3๋จ๊ณ ์์ธก), ์ฑ๋ฅ ํฅ์ |
| YOLOv4 | 2020 | ๋ค์ํ ๊ธฐ๋ฒ ํตํฉ (CSPNet, Mish, Mosaic ๋ฑ) |
| YOLOv5 | 2020 | PyTorch ๊ธฐ๋ฐ ๋น๊ณต์ ๋ชจ๋ธ, ๊ฒฝ๋ํ + ์ค์ฉ์ฑ ๊ฐํ |
| YOLOv7 | 2022 | task-specific optimization, E-ELAN ๊ตฌ์กฐ |
| YOLOv8 | 2023 (Ultralytics) | anchor-free, NMS ๊ฐ์ , segmentation + classification ํตํฉ |
YOLOv5๋ถํฐ๋ ๊ณต์ ๋ ผ๋ฌธ์ด ์๊ณ Ultralytics์์ ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์์ค
Anchor-free ๋ฐฉ์ ์ฑํ
๊ธฐ์กด YOLOv5๋ anchor ๊ธฐ๋ฐ์ด์์ง๋ง YOLOv8์ anchor ์์ด ์ค์ฌ์ ์์ธก์ ์ฌ์ฉํด ๋ ๋จ์ํ๊ณ ์ผ๋ฐํ๋ ๊ตฌ์กฐ ์ฌ์ฉ
๋ชจ๋ ๊ฐ์ :C2f ๊ตฌ์กฐ ๋์
๊ธฐ์กด C3 ๋ชจ๋๋ณด๋ค ๋ ๊ฒฝ๋ํ๋๊ณ ์ฐ์ฐ ํจ์จ์ด ์ข์ C2f(Concat-to-fuse) ๋ชจ๋์ ๋์
ํด ํ๋ผ๋ฏธํฐ ์ ๊ฐ์ + ์ฑ๋ฅ ํฅ์
๋ชจ๋ธ ํตํฉ ์ง์
๋จ์ผ ํ๋ ์์ํฌ์์ Object Detection, Instance Segmentation, Classification๊น์ง ๋ชจ๋ ์ง์
๊ธฐ์กด YOLOv5 ๋๋น ์ฑ๋ฅ ํฅ์
์๋์ ์ ํ๋ ๋ชจ๋ ํฅ์๋์ผ๋ฉฐ ํนํ ์์ ๋ชจ๋ธ(YOLOv8n)์์๋ ๋์ mAP ์ ์ง
| ๋ชจ๋ธ | ํ๋ผ๋ฏธํฐ ์ | ์ฑ๋ฅ (COCO val2017, mAP) | ๋ชฉ์ |
|---|---|---|---|
| YOLOv8n | ~3.2M | ์ค๊ฐ ์ฑ๋ฅ, ๋น ๋ฅธ ์๋ | Mobile / ์ค์๊ฐ |
| YOLOv8s | ~11.2M | ์๋-์ฑ๋ฅ ๊ท ํ | ์ค๊ฐ |
| YOLOv8m | ~25.9M | ๋์ ์ ํ๋ | ์ผ๋ฐ ๋ชฉ์ |
| YOLOv8l | ~43.7M | ๋ ๋์ ์ ํ๋ | ๊ณ ์ ๋ฐ ํ์ง |
| YOLOv8x | ~68.2M | ์ต๊ณ ์ ํ๋ | ์คํ๋ผ์ธ ํ์ง |
'Backbone -> Neck -> Head' ํํ๋ฅผ ๋ฐ๋ฅด๋ ๊ฐ ๊ตฌ์ฑ ์์์ ๋ค์ํ ๊ฐ์ ์ด ์ด๋ฃจ์ด์ง
[์
๋ ฅ ์ด๋ฏธ์ง]
โ
[Backbone: CSPDarknet with C2f]
โ
[Neck: FPN-like ๊ตฌ์กฐ (PANeck)]
โ
[Head: Anchor-Free Detection Head]
โ
[์ถ๋ ฅ: class, bbox(x, y, w, h), objectness]
Input โ Conv โ Bottleneck Blocks (split path) โ Concat โ Conv โ Output
Anchor-Free ๋ฐฉ์
์ค์ฌ์ ๊ธฐ๋ฐ ์์ธก (center-based point regression)
Anchor ์ค์ ๋ฐ prior box๊ฐ ํ์ ์์
๋์ฑ ๋จ์ํ๋ ์ถ๋ ฅ ๊ตฌ์กฐ
[batch, grid_h, grid_w, (num_classes + 4 + 1)]
โ 4: [x_center, y_center, width, height]
โ 1: objectness
โ num_classes: softmax ๋๋ sigmoid



(ํ๋ผ๋ฏธํฐ ๊ฐ์)

๋ค์ํ ํ์คํฌ(Object Detection, Classification, Segmentation)๋ฅผ ํ๋์ ํ๋ ์์ํฌ์์ ์ง์ํ๋ฉฐ ํ์ต ๋ฐ ์ถ๋ก ๊ณผ์ ์์๋ ์ง๊ด์ ์ด๊ณ ์ ์ฐํ๊ฒ ์ค๊ณ๋จ
๊ธฐ๋ณธ ์
๋ ฅ ํด์๋ : 640 x 640
์
๋ ฅ ํ์ : [batch_size, 3, H, W]
์ ์ฒ๋ฆฌ ๋ด์ฉ :
์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง (๋น์จ ์ ์ง)
Padding (Letterbox ๋ฐฉ์)
์ ๊ทํ (0~1 ์ค์ผ์ผ)
์ฑ๋ ์์ ๋ณํ (HWC -> CHW)
๊ธฐ๋ณธ ์ ๊ณต๋๋ ์ฆ๊ฐ ๊ธฐ๋ฒ
| ๊ธฐ๋ฒ๋ช | ์ค๋ช |
|---|---|
| Mosaic | 4์ฅ์ ์ด๋ฏธ์ง๋ฅผ ํ๋๋ก ๊ฒฐํฉํด ๋ค์ํ ๊ฐ์ฒด ์๋ฅผ ํํ |
| HSV ๋ณํ | ์์กฐ, ์ฑ๋, ๋ช ๋ ๋ณํ |
| Flip | ์ข์ฐ ๋ฐ์ |
| Scale | ์ด๋ฏธ์ง ํ๋/์ถ์ |
| Random crop | ์ผ๋ถ ์์ญ๋ง ์๋ฅด๊ธฐ (์ ํ) |
-> Albumentations ๋๋ cv2 ๊ธฐ๋ฐ์ผ๋ก ์ถ๊ฐ ์ปค์คํฐ๋ง์ด์ง ๊ฐ๋ฅ
๋ค์ํ ์์ค ํญ ์กฐํฉ
| ํญ๋ชฉ | ์์ค ์ข ๋ฅ | ์ค๋ช |
|---|---|---|
| bbox ์์น | CIoU Loss | ์ค์ฌ์ ๊ณผ ํฌ๊ธฐ ์ฐจ์ด ๋ชจ๋ ๋ฐ์ |
| class ์์ธก | BCEWithLogitsLoss | ๋ฉํฐ ํด๋์ค ๋ถ๋ฅ์ฉ binary cross entropy |
| objectness | BCEWithLogitsLoss | ๊ฐ์ฒด ์ฌ๋ถ ํ๋จ์ฉ ํ๋ฅ ์ถ๋ ฅ |
-> Loss๋ ๊ฐ ํญ์ ๊ฐ์ค์น๋ฅผ ์กฐ์ ํด ์ ์ฒด Loss๋ก ํตํฉ
๊ธฐ๋ณธ ์ค์
Optimizer : SGD or AdamW
์ด๊ธฐ Learning : 0.01(SGD), 0.001(AdamW)
Scheduler : Cosine Annealing, Linear Decay ๋๋ ์ฌ์ฉ์ ์ ์
์
๋ ฅ ์ด๋ฏธ์ง
โ
์ ์ฒ๋ฆฌ ๋ฐ ํฌ๊ธฐ ์กฐ์ (letterbox)
โ
๋ชจ๋ธ ์ถ๋ก (feature ์ถ์ถ + head ์์ธก)
โ
NMS ํ ์ต์ข
bbox/class ๋ฐํ
โ
์๋ณธ ์ด๋ฏธ์ง ์ขํ๋ก bbox ์ฌ์กฐ์
์ถ๋ก ์๋ : YOLOv8n ๊ธฐ์ค 30~100 FPS ์ด์ ๊ฐ๋ฅ (GPU ๊ธฐ์ค)
์ถ๋ ฅ ํ์ : bbox ์ขํ [x1, y1, x2, y2], class index + confidence
๋ค์ํ ํฌ๊ธฐ(n, s, m, l, x)์ ๋ชจ๋ธ ์ ๊ณต, ์ ํ๋์ ์ถ๋ก ์๋์์ ๊ท ํ ์กํ ์ฑ๋ฅ์ ๋ณด์ฌ์ค
anchor-free ๋ฐฉ์ ๋์
์ดํ YOLOv5 ๋๋น ์ฑ๋ฅ ํฅ์, ์ค์๊ฐ ๋ฐ ๊ณ ์ ๋ฐ ์์
๋ชจ๋์์ ์ฐ์ํ ํจ์จ์ ๋ณด์
| ๋ชจ๋ธ | ํ๋ผ๋ฏธํฐ ์ | FPS (Tesla T4) | mAP50 | mAP50-95 |
|---|---|---|---|---|
| YOLOv8n | ~3.2M | ~150 FPS | 70.3 | 37.3 |
| YOLOv8s | ~11.2M | ~100 FPS | 78.4 | 44.9 |
| YOLOv8m | ~25.9M | ~70 FPS | 82.3 | 50.2 |
| YOLOv8l | ~43.7M | ~45 FPS | 84.5 | 52.9 |
| YOLOv8x | ~68.2M | ~30 FPS | 85.9 | 53.9 |
| ๋ชจ๋ธ | Params | mAP50-95 | FPS | ๋น๊ณ |
|---|---|---|---|---|
| YOLOv5s | 7.2M | 36.7 | ~110 | anchor-based |
| YOLOv7 | 37.2M | 51.2 | ~50 | task-optimized |
| YOLOv8m | 25.9M | 50.2 | ~70 | ๊ฒฝ๋ํ + anchor-free |
| Faster R-CNN (R50) | 41.5M | 42.1 | ~10 | 2-stage, ๊ณ ์ ๋ฐ but ๋๋ฆผ |
โ YOLOv8์ ์๋์ ์ ํ๋ ์๋ฉด์์ ๋งค์ฐ ๊ฐ๋ ฅํ ์ค์๊ฐ ํ์ง ์ต์ ํ ๋ชจ๋ธ
| ํน์ง | ์ฅ์ | ๋จ์ |
|---|---|---|
| Anchor-Free | ๋จ์ ๊ตฌ์กฐ, ์ ์ prior ์ค์ | ์์ ๊ฐ์ฒด ํ์ง ์ฑ๋ฅ ๋ฏผ๊ฐ๋ โ |
| C2f ๋ชจ๋ | ๊ฒฝ๋ํ + ์ ํ๋ ์ ์ง | ๊ตฌ์กฐ๊ฐ ๋ ์ง๊ด์ ์ผ ์ ์์ |
| NMS ๊ฐ์ | ํด๋์ค ๊ฐ ์ต์ ๋ฐฉ์ง | ์ฌ์ ํ ๋์ ์ค๋ณต ์ ๊ฑฐ ์ด๋ ค์ ์กด์ฌ |
| ๋ค์ํ ์ฌ์ด์ฆ ์ ๊ณต | ๋๋ฐ์ด์ค ์ฑ๋ฅ์ ๋ง๋ ์ ํ ๊ฐ๋ฅ | ์ด๊ฒฝ๋ ๋ชจ๋ธ์ ์ฑ๋ฅ ์ ํ ์กด์ฌ |
| ํ๊ฒฝ | ๊ฒฐ๊ณผ |
|---|---|
| Raspberry Pi | YOLOv8n ๊ธฐ์ค 10~15 FPS (TensorRT ์ต์ ํ ์) |
| Jetson Nano | YOLOv8n ๊ธฐ์ค 8~12 FPS (fp16 ์ต์ ํ ์) |
| Google Colab T4 | YOLOv8s ๊ธฐ์ค 100+ FPS (์ค์๊ฐ ๊ฐ๋ฅ) |
| RTX 3090 | YOLOv8x๋ 40+ FPS ์ฒ๋ฆฌ ๊ฐ๋ฅ |
๋จ์ํ ๊ฐ์ฒด ํ์ง๋ฅผ ๋์ด ๋ค์ํ ์ปดํจํฐ ๋น์ ์์
์ ํ์ฉ๋ ์ ์๋๋ก ์ค๊ณ๋จ
ํนํ Ultralytics ํ์ Detection ์ธ์๋ Classification, Instance Segmentation, Object Tracking๊น์ง ํตํฉ ์ง์ํจ
| ํ์คํฌ ์ ํ | ์ค๋ช |
|---|---|
| Object Detection | ์ผ๋ฐ์ ์ธ bounding box ๊ธฐ๋ฐ ํ์ง |
| Instance Segmentation | ํฝ์ ๋จ์ ๊ฐ์ฒด ๋ถํ (mask ์์ธก ํฌํจ) |
| Classification | ์ด๋ฏธ์ง ์ ์ฒด์ ํด๋์ค ๋ถ๋ฅ |
| Object Tracking (beta) | ๋์์์์ ๊ฐ์ฒด ์ถ์ (SORT ๋ฑ๊ณผ ํตํฉ) |
| ๋ถ์ผ | ํ์ฉ ์์ |
|---|---|
| ์์ฝ/ํฌ์ค์ผ์ด | ์ฝ๋ฌผ ์๋ณ, ๋ณ๋ณ ํ์ง (์๋ฃ ์์) |
| ์ ์กฐ/์ฐ์ | ๊ฒฐํจ ํ์ง, ๋ก๋ด ๋น์ |
| ๋ฆฌํ ์ผ | POS ๋ชจ๋ํฐ๋ง, ์ฌ๊ณ ์๋ ์ธ์ |
| ๊ตํต | ๋ฒํธํ ์ธ์, ์ฐจ๋/์ฌ๋ ์ถ์ |
| ๋์ | ์๋ฌผ ๋ถ๋ฅ, ํด์ถฉ ํ์ง |
| ๋ณด์ | ์นจ์ ์ ํ์ง, CCTV ๋ถ์ |
๋ค์ํ edge-device์์๋ ์คํ ๊ฐ๋ฅํด ์ค์๊ฐ ์์ฉ ๋ถ์ผ์ ์ต์ ํ๋จ
Ultralytics API
ONNX / TensorRT / OpenVINO ๋ด๋ณด๋ด๊ธฐ
yolo export model=yolov8n.pt format=onnx
Edge ํ๊ฒฝ ์ต์ ํ
Ultralytics์์๋ ๋ค์ํ ํ์์ ๋ฐ์ดํฐ์ ์ ์ง์
| ํ์ | ์ค๋ช |
|---|---|
| YOLO | ๊ธฐ๋ณธ .txt ํฌ๋งท |
| COCO | .json ์ด๋ ธํ ์ด์ |
| VOC | .xml |
| Custom | .yaml ํ์ผ๋ก ๊ฒฝ๋ก๋ง ์ค์ ํ๋ฉด OK |
# data.yaml ์์
train: ../images/train
val: ../images/val
nc: 3
names: ['pill', 'capsule', 'tablet']
์ฐธ๊ณ ๋งํฌ
Ultralytics ๊ณต์ ํํ ๋ฆฌ์ผ
YOLOv8 Python API
๋ ผ๋ฌธ 1 : "What is YOLOv8?"
YOLOv8์ ๊ตฌ์กฐ์ ์ผ๋ก YOLO ์๋ฆฌ์ฆ์ ๋จ์์ฑ๊ณผ ์ค์ฉ์ฑ์ ์ ์งํ๋ฉด์๋ ์ฑ๋ฅ ํฅ์์ ๋ฌ์ฑํ "engineering-optimized model"
๋ ผ๋ฌธ ๋งํฌ
๋ ผ๋ฌธ 2 : "A Comprehensive Review of YOLO Architectures in Computer Vision"
์ฌ์ฉ์ ์ค์ฌ์ผ๋ก ์งํํ ์ต์ YOLO
๋ ผ๋ฌธ ๋งํฌ
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| ๊ณต์ ๋ ผ๋ฌธ ๋ถ์ฌ | ๊ธฐ์ ์ ์ ํฉ์ฑ ๋ฐ peer-review ํต๊ณผ๋ ๊ทผ๊ฑฐ ๋ถ์กฑ |
| small object ๋์ ๋ฏธํก | anchor-free ๊ตฌ์กฐ์์ ์์ ๊ฐ์ฒด ํ์ง ๋ฏผ๊ฐ๋ ๋ฎ์ ์ ์์ |
| custom training ์ ์ด ํ๊ณ | ํ์ด๋ ๋ฒจ API ์์ฃผ โ ์ธ๋ถ ํ๋์ ์ ์ฝ ๊ฐ๋ฅ์ฑ ์์ |
| ๋ณต์กํ ๊ตฌ์กฐ ํด์ ์ด๋ ค์ | C2f ๊ตฌ์กฐ๋ custom NMS ๋ฑ์ ์ง๊ด์ ์ด์ง ์์ |
anchor-free์ ๊ณผ์ฅ๋ ์ฅ์ ?
๊ฒฐ๋ก :
YOLOv8์ ์ค์ฉ์ฑ๊ณผ ์๋๋ฅผ ์ต์ ํํ ์ต์ ๋ชจ๋ธ์ด๋ฉฐ ์ค๋ฌด์ ์ ํฉํ ๋ฐ๋ฉด ์ฐ๊ตฌ ์คํ์๋ ๊ตฌ์กฐ ๋ถ์๊ณผ ํ๋ ์ธก๋ฉด์์ ๋ค์ ์ ํ์ด ์์ ์ ์์