[CV] YOLO (You Only Look Once)
YOLO (You Only Look Once)
YOLO(You Only Look Once)์ ์ค์๊ฐ ๊ฐ์ฒด ํ์ง ์์คํ ์ผ๋ก, ์ด๋ฏธ์ง๋ ๋น๋์ค์์ ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ๋์์ ํ์งํ๊ณ ๋ถ๋ฅํ๋ ๋ฅ๋ฌ๋ ๊ธฐ๋ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
YOLO: Real-Time Object Detection
YOLO: Real-Time Object Detection You only look once (YOLO) is a state-of-the-art, real-time object detection system. On a Pascal Titan X it processes images at 30 FPS and has a mAP of 57.9% on COCO test-dev. Comparison to Other Detectors YOLOv3 is extremel
pjreddie.com
- YOLO์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ๋น ๋ฅธ ์๋์ ๋์ ์ ํ๋์ ๋๋ค.
YOLO์ ์๋ฆฌ
- ๋จ์ผ ์ ๊ฒฝ๋ง์ ์ฌ์ฉํ ์ ์ฒด ์ด๋ฏธ์ง ์ฒ๋ฆฌ: YOLO๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฌ ๋ถ๋ถ์ผ๋ก ๋๋์ง ์๊ณ , ์ ์ฒด ์ด๋ฏธ์ง๋ฅผ ํ ๋ฒ์ ์ฒ๋ฆฌํฉ๋๋ค.
- Grid Cell ๋ก ์ด๋ฏธ์ง ๋ถํ : ์ด๋ฏธ์ง๋ฅผ ๊ทธ๋ฆฌ๋ ์ ๋ก ๋๋๋๋ค. ๊ฐ ๊ทธ๋ฆฌ๋ ์ ์ ํน์ ๊ฐ์ฒด๋ฅผ ํฌํจํ ํ๋ฅ ๊ณผ ๊ทธ ๊ฐ์ฒด์ ๊ฒฝ๊ณ ์์(Bounding Box) ์ขํ๋ฅผ ์์ธกํฉ๋๋ค.
- ๊ฒฝ๊ณ ์์ ์์ธก: ๊ฐ ๊ทธ๋ฆฌ๋ ์ ์ BB๊ฐ์ ๊ฒฝ๊ณ ์์๋ฅผ ์์ธกํฉ๋๋ค. ๊ฒฝ๊ณ ์์๋ ์ค์ฌ ์ขํ (x,y, ๋๋น w, ๋์ด , ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด ํด๋์ค์ ๋ํ ํ๋ฅ ๊ฐ์ ํฌํจํฉ๋๋ค.
- ํด๋์ค ํ๋ฅ ์ง๋: ๊ฐ ๊ทธ๋ฆฌ๋ ์ ์ ํน์ ํด๋์ค์ ์ํ ํ๋ฅ ์ ์์ธกํฉ๋๋ค. ์ต์ข ๊ฐ์ฒด ํ์ง๋ ๊ฒฝ๊ณ ์์์ ํ๋ฅ ๊ณผ ํด๋์ค ํ๋ฅ ์ ๊ณฑํ ๊ฐ์ด ๊ฐ์ฅ ๋์ ๊ฒ์ ์ ํํฉ๋๋ค.
YOLO์ ํน์ง
- ์๋: YOLO๋ ์ด๋ฏธ์ง ๋น ํ ๋ฒ์ ์ ๊ฒฝ๋ง ํ๊ฐ๋ก ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค. ์ด๋ ๋งค์ฐ ๋น ๋ฅธ ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ ์ฒด ์ด๋ฏธ์ง ๋งฅ๋ฝ ์ด์ฉ: YOLO๋ ์ ์ฒด ์ด๋ฏธ์ง๋ฅผ ๊ณ ๋ คํ์ฌ ์์ธก์ ์ํํ๋ฏ๋ก, ๋ค๋ฅธ ๊ฐ์ฒด ํ์ง ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ์ ์ ์์ false positives(์๋ชป๋ ํ์ง)๊ฐ ๋ฐ์ํฉ๋๋ค.
- ์ข ๋จ๊ฐ ํ๋ จ: ์ด๋ฏธ์ง ๋ถํ , ๊ฐ์ฒด ํ์ง, ๊ทธ๋ฆฌ๊ณ ํด๋์ค ์์ธก์ ๋ชจ๋ ๋จ๊ณ๋ฅผ ๋จ์ผ ์ ๊ฒฝ๋ง์ด ๋์์ ์ฒ๋ฆฌํฉ๋๋ค.
YOLO v3 ์ฑ๋ฅ
Speed + Accuracy
- YOLO v3 ๋ชจ๋ธ์ ๊ธฐ์กด ๋ชจ๋ธ๋ณด๋ค ๋ค์ํ ๋ค์ง์ ๊ฐ์ ์ ํตํด ์ฑ๋ฅ์ด ํฅ์๋์์ต๋๋ค.
- 320x320 ํด์๋์์๋ 22ms์ ์ถ๋ก ์๊ฐ๊ณผ 28.2 mAP๋ฅผ ๊ธฐ๋กํ๋ฉฐ, SSD์ ๋์ผํ ์ ํ๋๋ฅผ ์ ์งํ๋ฉด์ ์ธ ๋ฐฐ ๋ ๋น ๋ฆ ๋๋ค.
- ๋ํ, 416x416 ํด์๋์์๋ 29ms์ ์ถ๋ก ์๊ฐ๊ณผ 31.0 mAP, 608x608 ํด์๋์์๋ 51ms์ ์ถ๋ก ์๊ฐ๊ณผ 33.0 mAP๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ธ๊ณผ ๋น๊ตํ ๋, YOLOv3๋ ๋งค์ฐ ๋น ๋ฅธ ์๋์ ๋์ ์ ํ๋๋ฅผ ์๋ํ๋ฉฐ, RetinaNet๋ณด๋ค 3.8๋ฐฐ ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค.
- ์ด๋ฌํ ํน์ฑ ๋๋ถ์ ์์จ์ฃผํ, ๊ฐ์ ์์คํ ๋ฑ ๋ค์ํ ์ค์๊ฐ ์์ฉ ๋ถ์ผ์์ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
YOLO Version
- YOLOv1: ์ฒซ ๋ฒ์งธ ๋ฒ์ ์ผ๋ก, ์ด๋ฏธ์ง ๋น ํ ๋ฒ์ ์์ธก์ ์ํํ๋ ๋จ์ผ ์ ๊ฒฝ๋ง์ ์ฌ์ฉํฉ๋๋ค. ๋น ๋ฅธ Detection ์๋๋ฅผ ๋ณด์์ง๋ง, ์ ํ๋๊ฐ ๋ฎ๋ค๋ ๋จ์ ์ด ์์์ต๋๋ค.
- YOLOv2 (๋๋ YOLO9000): ๊ธฐ์กด ๋ฒ์ ๋ณด๋ค๋ ๋ ๋์ ์ ํ๋์ ๋น ๋ฅธ ์๋๋ฅผ ์ํด ๋ช ๊ฐ์ง ๊ฐ์ ์ฌํญ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, anchor boxes๋ฅผ ๋์ ํ์ฌ ๊ฒฝ๊ณ ์์ ์์ธก์ ๋ ์ํ๊ฒ ๋ง๋ค์์ต๋๋ค. ๋ํ, ๋ค์ค ์ค์ผ์ผ ํ์ต์ ํตํด ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ๋ ์ ํ์งํ ์ ์์ต๋๋ค.
- YOLOv3: ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ๋ ์ ํ์งํ ์ ์๋๋ก multi-scale detection ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค. ์ด๋ฅผ ํตํด ์์ ๊ฐ์ฒด์ ํฐ ๊ฐ์ฒด ๋ชจ๋์ ๋ํด ๋์ ํ์ง ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ํ์๊ฐ์ ์กฐ๊ธ ๊ธฐ์กด ๋ฒ์ ๋ณด๋ค๋ ๋๋ ค์ก์ผ๋, ์ฑ๋ฅ์ด ๋ํญ ๊ฐ์ ๋์๋ค๋ ์ ์ด ์์ต๋๋ค.
- YOLOv4, YOLOv5: ์ฑ๋ฅ ์ต์ ํ๋ฅผ ํตํด ๋ ๋น ๋ฅด๊ณ ์ ํํ ๊ฐ์ฒด ํ์ง๊ฐ ๊ฐ๋ฅํด์ก์ต๋๋ค. YOLOv4๋ CSPDarknet-53 ๋ฐฑ๋ณธ ๋คํธ์ํฌ์ ์ต์ ๊ธฐ๋ฒ๋ค์ ์ ์ฉํ์ฌ ์ฑ๋ฅ์ ๊ทน๋ํํ์ผ๋ฉฐ, YOLOv5๋ PyTorch๋ก ๊ตฌํ๋์ด ์ฌ์ฉ์ด ๊ฐํธํ๊ณ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค. ์ด๋ค ๋ฒ์ ์ ๋์ ํจ์จ์ฑ๊ณผ ์ ํ๋๋ก ์ค์๊ฐ ์์ฉ ๋ถ์ผ์์ ํ์ํ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
YOLO - V1
- Yolo v1 ์ ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ S X S Grid๋ก ๋๋๊ณ ๊ฐ Grid์ Cell์ด ํ๋์ Object์ ๋ํ Detection์ ์ํํฉ๋๋ค.
- ๊ฐ Grid Cell ์ด 2๊ฐ์ Bounding Box ํ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Object์ Bounding Box ๋ฅผ ์์ธกํ๋ ๋ฐฉ์์ ๋๋ค.
YOLO-V1 Detection Model
YOLO V1 ๋ชจ๋ธ์ Inference๋ฅผ ํ๋ฒ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค.
Inference ๊ณผ์
์ ๋ ฅ ์ด๋ฏธ์ง (Input image)
- ํฌ๊ธฐ (Size): 448×448×3
- ์ค๋ช (Description): ์์ ์ฑ๋(RGB)์ ํฌํจํ 448x448 ํฌ๊ธฐ์ ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Convolutional Layers ๋ฐ GoogLeNet ์์ (20 layers)
- ์ค๋ช (Description): ์ ๋ ฅ ์ด๋ฏธ์ง๋ ๋ค์์ Convolutional Layers๋ฅผ ๊ฑฐ์นฉ๋๋ค. ์ด ๊ณผ์ ์์ ์ด๋ฏธ์ง์ ํน์ง์ด ์ถ์ถ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ GoogLeNet์ ์์ ํ์ฌ 20๊ฐ์ ๋ ์ด์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Fully Connected Layers (FC)์ ReLU ํ์ฑํ ํจ์ (R)
- ์ค๋ช (Description): Convolutional Layers ์ดํ์๋ Fully Connected Layers๊ฐ ๋ค๋ฐ๋ฆ ๋๋ค. ์ด ๋ ์ด์ด๋ค์ ์ด๋ฏธ์ง์ ์ ์ญ ์ ๋ณด๋ฅผ ํตํฉํ์ฌ ์ต์ข ์์ธก์ ๊ธฐ์ฌํฉ๋๋ค.
์ต์ข ์ถ๋ ฅ (7x7x30 Tensor)
- ์ค๋ช (Description): ์ต์ข ์ ์ผ๋ก 7x7x30 ํฌ๊ธฐ์ ํ ์๋ก ์ถ๋ ฅ์ด ๋ณํ๋ฉ๋๋ค. ์ด ํ ์๋ ๊ฐ ๊ทธ๋ฆฌ๋ ์ ์ด ์์ธกํ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
ํ ์ ๊ฐ ํด์ (Tensor values interpretation)
- ์ค๋ช (Description): ์ถ๋ ฅ ํ ์๋ S×S×(B×5+C) ํํ๋ก ํด์๋ฉ๋๋ค. ์ฌ๊ธฐ์ S๋ ๊ทธ๋ฆฌ๋ ์ ์ ํฌ๊ธฐ (์ฌ๊ธฐ์๋ 7x7), B๋ ๊ฐ ์ ์์ ์์ธกํ ๊ฒฝ๊ณ ์์ ์ (์ฌ๊ธฐ์๋ 2), C๋ ํด๋์ค ์ (์ฌ๊ธฐ์๋ 20)์ ๋๋ค. ๋ฐ๋ผ์ ํ ์ ํฌ๊ธฐ๋ 7×7×30์ด ๋ฉ๋๋ค.
์ธ๋ถ ๊ตฌ์กฐ (Detailed Structure):
- ๊ฐ ๊ทธ๋ฆฌ๋ ์
์ 30๊ฐ์ ๊ฐ์ ์์ธกํฉ๋๋ค:
- 5๊ฐ์ ๊ฐ: ๊ฐ ๊ฒฝ๊ณ ์์๋ง๋ค (x, y, w, h, confidence)
- 20๊ฐ์ ํด๋์ค ํ๋ฅ ๊ฐ.
์์ธก ํด์ (Prediction Interpretation)
๊ทธ๋ฆฌ๋ ์ ์์ธก (Grid Cell Prediction)
- ์ค๋ช (Description): ์ ๋ ฅ ์ด๋ฏธ์ง๊ฐ 7x7 ๊ทธ๋ฆฌ๋๋ก ๋๋์ด์ง๊ณ , ๊ฐ ์ ์ ๊ฐ์ฒด๊ฐ ํด๋น ์ ์์ ์๋์ง๋ฅผ ์์ธกํฉ๋๋ค. ๋นจ๊ฐ์ ๋ฐ์ค๋ ๊ทธ๋ฆฌ๋ ์ ์ด ํ์งํ ๊ฐ์ฒด์ ์์น๋ฅผ ๋ํ๋ ๋๋ค.
๊ฒฝ๊ณ ์์ (Bounding Box)์ ํด๋์ค ํ๋ฅ (Class Probabilities)
- ์ค๋ช (Description): ๊ฐ ๊ทธ๋ฆฌ๋ ์ ์ B๊ฐ์ ๊ฒฝ๊ณ ์์๋ฅผ ์์ธกํฉ๋๋ค. ๊ฐ ๊ฒฝ๊ณ ์์๋ ์ค์ฌ ์ขํ(x, y), ๋๋น(w), ๋์ด(h), ๊ทธ๋ฆฌ๊ณ confidence score(๊ฐ์ฒด๊ฐ ํฌํจ๋ ํ๋ฅ )๋ฅผ ํฌํจํฉ๋๋ค. ๊ฐ ๊ฒฝ๊ณ ์์๋ ํด๋์ค ํ๋ฅ ๊ณผ ๊ณฑํด์ ธ ์ต์ข ํ์ง ๊ฒฐ๊ณผ๋ฅผ ๋์ถํฉ๋๋ค.
Detection Procedure
- ์ค๋ช (Description): ์ต์ข ์ ์ผ๋ก ๋ชจ๋ ๊ทธ๋ฆฌ๋ ์ ์ ์์ธก์ ํตํฉํ์ฌ ๊ฐ์ฒด์ ์์น์ ํด๋์ค๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์์ธก๋ ๊ฒฝ๊ณ ์์์ ํด๋์ค ํ๋ฅ ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง์ ๊ฐ์ฒด๋ฅผ ํ์งํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํฉ๋๋ค.
๊ฐ Grid Cell ๋ณ๋ก ์๋๋ฅผ ๊ณ์ฐํฉ๋๋ค.
A. 2๊ฐ์ Bounding Box ํ๋ณด์ ์ขํ์ ํด๋น Box๋ณ
Confidence Score
Confidence Score = ์ค๋ธ์ ํธ์ผ ํ๋ฅ * IOU ๊ฐ
x, y, w, h : Ground Truth box์ ํ๋ณด Box๊ฐ offset ์ขํ
B. ํด๋์ค ํ๋ฅ . Pascal VOC ๊ธฐ์ค 20๊ฐ ํด๋์ค์ ํ๋ฅ
NMS(Non Max Suppression)์ผ๋ก ์ต์ข Bbox ์์ธก
๊ฐ๋ณ ํด๋์ค๋ณ NMS๋ฅผ ์ํํ์ฌ ์ต์ข Bounding Box๋ฅผ ์์ธกํ๋ ๊ณผ์ ์ ํ๋ฒ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค.
๊ฐ๋ณ Class ๋ณ NMS ์ํ
- ํน์ Confidence ๊ฐ ์ดํ๋ ๋ชจ๋ ์ ๊ฑฐํฉ๋๋ค.
- ๊ฐ์ฅ ๋์ Confidence๊ฐ์ ๊ฐ์ง ์์ผ๋ก Bounding Box๋ฅผ ์ ๋ ฌํฉ๋๋ค.
- ๊ฐ์ฅ ๋์ Confidence๋ฅผ ๊ฐ์ง Bounding Box์ IOU์ ๊ฒน์น๋ ๋ถ๋ถ์ด IOU Threshold ๋ณด๋ค ํฐ Bounding Box๋ ๋ชจ๋ ์ ๊ฑฐํฉ๋๋ค.
- ๋จ์ ์๋ Bounding Box์ ๋ํด 3๋ฒ Step์ ๋ฐ๋ณตํฉ๋๋ค.
Object Confidence์ IOU Threshold๋ก Filtering์ ์กฐ์ ํฉ๋๋ค.
YOLO-V1 Issue
Detection ์๊ฐ์ ๋น ๋ฅด๋ Detection ์ฑ๋ฅ์ด ๋จ์ด์ง๋๋ค. ํนํ ์์ Object์ ๋ํ ์ฑ๋ฅ์ด ๋์ฉ๋๋ค.
YOLO v1, v2, v3 ๋น๊ต
- YOLOv1์ 446x446 ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ Inception ๋ณํ ๋คํธ์ํฌ๋ก ์ฒ๋ฆฌํ๋ฉฐ, ๊ฐ ๊ทธ๋ฆฌ๋ ์ ์ด 2๊ฐ์ ์ต์ปค ๋ฐ์ค๋ฅผ ์์ธกํฉ๋๋ค.
- YOLOv2๋ 416x416 ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ฉฐ, Darknet 19 ๋คํธ์ํฌ๋ฅผ ์ฑํํ๊ณ , ๊ฐ ๊ทธ๋ฆฌ๋ ์ ์ด 5๊ฐ์ ์ต์ปค ๋ฐ์ค๋ฅผ ์์ธกํฉ๋๋ค.์ต์ปค ๋ฐ์ค๋ K-Means ํด๋ฌ์คํฐ๋ง์ผ๋ก ๊ฒฐ์ ๋ฉ๋๋ค.
- YOLOv3๋ 416x416 ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ Darknet 53 ๋คํธ์ํฌ๋ก ์ฒ๋ฆฌํ๊ณ , ๋ค์ํ ํฌ๊ธฐ์ Feature Map์ ์ฌ์ฉํ์ฌ ์ด 9๊ฐ์ ์ต์ปค ๋ฐ์ค๋ฅผ ์์ธกํฉ๋๋ค.
- ์ด ๋ฒ์ ์์๋ 13x13, 26x26, 52x52 ํฌ๊ธฐ์ ์ธ ๊ฐ์ง Feature Map์ ์ฌ์ฉํ๋ฉฐ, Feature Pyramid Network(FPN) ๊ธฐ๋ฒ์ ํตํด ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ๋ ์ ํ์งํ ์ ์์ต๋๋ค.
YOLO-v2
YOLO-v2 Detection ์๊ฐ ๋ฐ ์ฑ๋ฅ
- YOLOv2๋ PASCAL VOC 2007 ๋ฐ์ดํฐ์ ์์ ๋์ ์ ํ๋(mAP)์ ๋น ๋ฅธ ์ฒ๋ฆฌ ์๋(FPS)๋ฅผ ๋ณด์ฌ์ค๋๋ค. ๋ค๋ฅธ ๋ชจ๋ธ๋ค์ ๋นํด ์ ๋ฐ์ ์ผ๋ก ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ณด์ ๋๋ค.
- MS-COCO ๋ฐ์ดํฐ์ ์์๋ YOLOv2๋ ๋์ ์ฑ๋ฅ์ ์ ์งํ๋ฉฐ, ํนํ ํฐ ๊ฐ์ฒด์ ๋ํด ์ฐ์ํ ํ์ง ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค. ์์ ๊ฐ์ฒด์ ๋ํ ํ์ง ์ฑ๋ฅ์ ์๋์ ์ผ๋ก ๋ฎ์ง๋ง, ์ฌ์ ํ ์ ๋ฐ์ ์ผ๋ก ๊ท ํ ์กํ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- YOLOv2๋ ์ ํ๋์ ์๋๋ฅผ ๋ชจ๋ ์ค์์ํ๋ ์์ฉ ๋ถ์ผ์์ ๋งค์ฐ ํจ๊ณผ์ ์ธ ๋ชจ๋ธ์์ ์ ์ฆํฉ๋๋ค.
YOLO v2์ ํน์ง
- Batch Normalization
- ๊ฐ ์ปจ๋ณผ๋ฃจ์ ๋ ์ด์ด ๋ค์ ๋ฐฐ์น ์ ๊ทํ๋ฅผ ์ ์ฉํ์ฌ ๋ชจ๋ธ์ ํ์ต์ ์์ ํํ๊ณ , ๊ณผ์ ํฉ(overfitting)์ ์ค์ ๋๋ค.
- High Resolution Classifier
- ๋คํธ์ํฌ์ ๋ถ๋ฅ(Classifier) ๋จ์ ๋ ๋์ ํด์๋(448x448)๋ก ๋ฏธ์ธ ์กฐ์ (fine-tuning)ํฉ๋๋ค.
- 13 x 13 Feature Map ๊ธฐ๋ฐ์ Anchor Box
- 13 x 13 ํฌ๊ธฐ์ Feature Map์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- ๊ฐ Grid cell์ 5๊ฐ์ Anchor Box๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ธกํฉ๋๋ค.
- Anchor Box๋ฅผ ํตํด ๋ค์ํ ํฌ๊ธฐ์ ํํ์ ๊ฐ์ฒด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์งํ ์ ์์ต๋๋ค.
- Darknet-19 Classification ๋ชจ๋ธ ์ฑํ
- YOLOv2๋ Darknet-19 ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
- Darknet-19๋ 19๊ฐ์ Convolutional ๋ ์ด์ด์ 5๊ฐ์ Max-Pooling ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋ ๊ฒฝ๋์ ํจ์จ์ ์ธ ๋ถ๋ฅ ๋คํธ์ํฌ์ ๋๋ค.
- ๋ค์ํ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ก ๋คํธ์ํฌ ํ์ต
- ์๋ก ๋ค๋ฅธ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ค์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ๋ฅผ ํ์ต์ํต๋๋ค.
- ์ด๋ฅผ ํตํด ๋ชจ๋ธ์ ๋ค์ํ ํด์๋์ ์ด๋ฏธ์ง์์ ์ผ๊ด๋๊ฒ ๋์ ์ฑ๋ฅ์ ๋ฐํํ ์ ์์ต๋๋ค.
YOLO-v2 Network ๊ตฌ์กฐ
- Conv 3x3: 3x3 ํฌ๊ธฐ์ Convolution Layer(์ปจ๋ณผ๋ฃจ์ ๋ ์ด์ด)๋ก Feature(ํน์ง)์ ์ถ์ถํฉ๋๋ค.
- Maxpool: Maxpooling Layer(์ต๋ ํ๋ง ๋ ์ด์ด)๋ก ๊ณต๊ฐ ํด์๋๋ฅผ ์ค์ด๊ณ ์ค์ํ Feature(ํน์ง)์ ์ถ์ถํฉ๋๋ค.
- Conv 1x1: 1x1 ํฌ๊ธฐ์ Convolution Layer(์ปจ๋ณผ๋ฃจ์ ๋ ์ด์ด)๋ก ์ฑ๋ ์๋ฅผ ์ค์ด๊ฑฐ๋ ๋๋ฆฝ๋๋ค.
- Passthrough Module: ๋ฎ์ ํด์๋์์ ๋์ ํด์๋๋ก ํน์ง์ ์ ๋ฌํ์ฌ ์์ ๊ฐ์ฒด์ ๋ํ ํ์ง ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- Merge Module: ๋ค์ํ ํฌ๊ธฐ์ Featuer Map(ํน์ฑ ๋งต)์ ๋ณํฉํ์ฌ ๋ ํ๋ถํ ํน์ง์ ์ถ์ถํฉ๋๋ค.
Yolo v2 Anchor Box๋ก 1 Cell์์ ์ฌ๋ฌ ๊ฐ Object Detection
- SSD์ ๋ง์ฐฌ๊ฐ์ง๋ก 1๊ฐ์ Cell์์ ์ฌ๋ฌ ๊ฐ์ Anchor๋ฅผ ํตํด ๊ฐ๋ณ Cell์์ ์ฌ๋ฌ ๊ฐ Object Detection์ด ๊ฐ๋ฅํฉ๋๋ค.
- K-Means Clustering ์ ํตํด ๋ฐ์ดํฐ ์ธํธ์ ์ด๋ฏธ์ง ํฌ๊ธฐ์ Shape Ratio ๋ฐ๋ฅธ 5๊ฐ์ ๊ตฐ์งํ ๋ถ๋ฅ๋ฅผ ํ์ฌ Anchor Box๋ฅผ ๊ณ์ฐํฉ๋๋ค.
YOLO v2 Output Feature Map
๊ฐ๋จํ๊ฒ ์ฌ์ง์ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
- Grid Cell: 13x13 ํฌ๊ธฐ์ ๊ทธ๋ฆฌ๋๋ก ๋๋์ด, ๊ฐ ์ ์ด ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- Bounding Box: ๊ฐ ๊ทธ๋ฆฌ๋ ์ ์ 5๊ฐ์ Bounding Box๋ฅผ ์์ธกํ๋ฉฐ, ๊ฐ Bounding Box๋ 25๊ฐ์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.
- Bounding Box ์์ฑ: ์ค์ฌ ์ขํ, ๋๋น, ๋์ด, ๊ฐ์ฒด ํฌํจ ํ๋ฅ , ํด๋์ค ํ๋ฅ ๋ฑ์ด ํฌํจ๋์ด ์์ต๋๋ค.
One Stage Detector
One-stage object detectors๋ ๊ฐ์ฒด ํ์ง์์ ๋จ์ผ ์ ๊ฒฝ๋ง์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ฐ์ฒด์ ์์น์ ํด๋์ค๋ฅผ ๋์์ ์์ธกํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์๋๊ฐ ๋น ๋ฅด๊ณ ์ค์๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ํฉํฉ๋๋ค.
YOLOv1 (You Only Look Once)
- ์ถ์: 2016๋
- ์ฃผ์ ํน์ง:
- ์ด๋ฏธ์ง ์ ์ฒด๋ฅผ ํ ๋ฒ์ ์ฒ๋ฆฌํ์ฌ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- ๋จ์ผ ์ปจ๋ณผ๋ฃจ์ ์ ๊ฒฝ๋ง์ ์ฌ์ฉํ์ฌ ์ ์ฒด ์ด๋ฏธ์ง์์ ๊ฐ์ฒด๋ฅผ ์์ธกํฉ๋๋ค.
- ๋น ๋ฅธ ์๋์ ๋น๊ต์ ๋์ ์ ํ๋๋ฅผ ์๋ํฉ๋๋ค.
- ๋จ์ : ์์ ๊ฐ์ฒด์ ๋ํ ํ์ง ์ฑ๋ฅ์ด ๋ฎ๊ณ , ๊ฐ์ฒด๊ฐ ๋ฐ์ง๋ ์ํฉ์์ ์ฑ๋ฅ์ด ๋จ์ด์ง๋๋ค.
SSD (Single Shot MultiBox Detector)
- ์ถ์: 2016๋
- ์ฃผ์ ํน์ง:
- ๋ค์ํ ํฌ๊ธฐ์ ๋ํดํธ ๋ฐ์ค(default boxes)๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- ์ฌ๋ฌ ํด์๋์ ํผ์ฒ ๋งต(feature map)์์ ์์ธก์ ์ํํ์ฌ ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- ๊ท ํ ์กํ ์ ํ๋์ ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋จ์ : ๊ณ ํด์๋ ๊ฐ์ฒด์ ๋ํ ํ์ง ์ฑ๋ฅ์ด ์๋์ ์ผ๋ก ๋ฎ์ต๋๋ค.
YOLOv2 (YOLO9000)
- ์ถ์: 2017๋
- ์ฃผ์ ํน์ง:
- ์ต์ปค ๋ฐ์ค(anchor boxes)๋ฅผ ๋์ ํ์ฌ ๊ฒฝ๊ณ ์์ ์์ธก ์ฑ๋ฅ์ ๊ฐ์ ํ์์ต๋๋ค.
- ๋ค์ค ์ค์ผ์ผ ํ์ต์ ํตํด ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด ํ์ง ์ฑ๋ฅ์ด ํฅ์๋์์ต๋๋ค.
- ๋ฐฐ์น ์ ๊ทํ(batch normalization)์ ๊ณ ํด์๋ ๋ถ๋ฅ๊ธฐ(high resolution classifier)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ฅ์ : ๋์ ์ ํ๋์ ๋น ๋ฅธ ์๋, ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ํ์งํ ์ ์์ต๋๋ค.
RetinaNet
- ์ถ์: 2017๋
- ์ฃผ์ ํน์ง:
- ํฌ์ปฌ ๋ก์ค(Focal Loss)๋ฅผ ๋์ ํ์ฌ ํด๋์ค ๋ถ๊ท ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
- ResNet๊ณผ FPN(Feature Pyramid Network)์ ๋ฐฑ๋ณธ ๋คํธ์ํฌ๋ก ์ฌ์ฉํฉ๋๋ค.
- ๋์ ์ ํ๋์ ์ฐ์ํ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋จ์ : YOLO ์๋ฆฌ์ฆ์ ๋นํด ๋ค์ ๋๋ฆฝ๋๋ค.
YOLOv3
- ์ถ์: 2018๋
- ์ฃผ์ ํน์ง:
- Darknet-53 ๋ฐฑ๋ณธ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ค์ค ์ค์ผ์ผ ์์ธก: ์ธ ๊ฐ์ง ๋ค๋ฅธ ํฌ๊ธฐ์์ ์์ธก์ ์ํํ์ฌ ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- ๊ฐ์ ๋ ์ต์ปค ๋ฐ์ค์ ๋ก์ง์คํฑ ํ๊ท๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ฅ์ : ๋์ mAP(mean Average Precision)๊ณผ ๋น ๋ฅธ ์ถ๋ก ์๋๋ฅผ ์๋ํฉ๋๋ค.
Feature Pyramid Network (FPN)
- ์ค๋ช : ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์งํ๊ธฐ ์ํด ๋ค์ค ์ค์ผ์ผ ํผ์ฒ๋ฅผ ํตํฉํ๋ ๊ธฐ๋ฒ์ ๋๋ค.
- ํน์ง:
- ํผ๋ผ๋ฏธ๋ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ํด์๋์ ํผ์ฒ ๋งต์์ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- ๊ณ ํด์๋์ ์ ํด์๋ ํผ์ฒ ๋งต์ ๊ฒฐํฉํ์ฌ ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด ํ์ง ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
- RetinaNet๊ณผ ๊ฐ์ ๋ชจ๋ธ์์ ์ฌ์ฉ๋์ด ๋์ ์ ํ๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
YOLO-v3
YOLO v3์ ํน์ง
- Feature Pyramid Network (FPN) ์ ์ฌํ ๊ธฐ๋ฒ ์ ์ฉ
- ์ค๋ช : YOLOv3๋ Feature Pyramid Network(FPN)์ ์ ์ฌํ ๊ธฐ๋ฒ์ ์ ์ฉํ์ฌ ๋ค์ค ์ค์ผ์ผ ๊ฐ์ฒด ํ์ง๋ฅผ ์ํํฉ๋๋ค.
- ํน์ง: 3๊ฐ์ ์๋ก ๋ค๋ฅธ ํฌ๊ธฐ์ ์ค์ผ์ผ์ ๊ฐ์ง Feature Map์์ ๊ฐ๊ฐ 3๊ฐ์ Anchor Box๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- 13x13 ํฌ๊ธฐ์ Feature Map: ํฐ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- 26x26 ํฌ๊ธฐ์ Feature Map: ์ค๊ฐ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- 52x52 ํฌ๊ธฐ์ Feature Map: ์์ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- ์ฅ์ : ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์งํ ์ ์์ผ๋ฉฐ, ์์ ๊ฐ์ฒด์ ๋ํ ํ์ง ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋ฉ๋๋ค.
- ๋์ ๋ถ๋ฅ ์ฑ๋ฅ์ ๊ฐ์ง๋ Darknet-53
- ์ค๋ช : YOLOv3๋ Darknet-53์ ๋ฐฑ๋ณธ ๋คํธ์ํฌ๋ก ์ฌ์ฉํฉ๋๋ค.
- ํน์ง: Darknet-53์ 53๊ฐ์ Convolutional Layer๋ก ๊ตฌ์ฑ๋ ๊น์ ์ ๊ฒฝ๋ง์ ๋๋ค.
- ์ฅ์ : ๋ ๋์ ํน์ง ์ถ์ถ ๋ฅ๋ ฅ์ ์ ๊ณตํ์ฌ ๊ฐ์ฒด ํ์ง์ ์ ํ๋๋ฅผ ํฅ์์ํต๋๋ค. ์ด์ ๋ฒ์ ์ Darknet-19๋ณด๋ค ๋ ๊น๊ณ ๊ฐ๋ ฅํ ๋ชจ๋ธ์ ๋๋ค.
- Multi-Label ์์ธก
- ์ค๋ช : YOLOv3๋ ๊ฐ๋ณ ๊ฐ์ฒด์ ๋ํด ๋ค์ค ๋ ์ด๋ธ์ ์์ธกํ ์ ์๋ ๋ฅ๋ ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค.
- ํน์ง: Softmax ๋์ Sigmoid ๊ธฐ๋ฐ์ Logistic Classifier๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๊ฐ์ฒด์ ๋ํด ๋ค์ค ๋ ์ด๋ธ์ ์์ธกํฉ๋๋ค.
- ์ฅ์ : ํ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ํด๋์ค์ ์ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์ ํํ๊ฒ ์์ธกํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ ๊ฐ์ฒด๊ฐ ๋์์ '๊ฐ'์ '์ ์๋๋ฌผ'์ผ ์ ์์ต๋๋ค.
YOLO v3 Network ๊ตฌ์กฐ
๋จผ์ , ์์ฝ๋ด์ฉ์ ์ค๋ช ๋๋ฆฌ๋ฉด, Multi-Scale Object Detection์ ์ํ FPN (Feature Pyramid Network) ๊ธฐ๋ฒ์ด ์ ์ฉ๋์ด ์์ต๋๋ค.
- Backbone Network: Darknet-53
- YOLOv3๋ 53๊ฐ์ Convolution Layer๋ก ๊ตฌ์ฑ๋ Darknet-53์ Backbone Network๋ก ์ฌ์ฉํฉ๋๋ค.
- ์ด Backbone Network๋ ์ด๋ฏธ์ง์์ ๊ณ ์์ค์ ํน์ง์ ์ถ์ถํฉ๋๋ค.
- Residual Blocks
- ๋คํธ์ํฌ๋ Residual Blocks๋ฅผ ์ฌ์ฉํ์ฌ ํ์ต ์๋๋ฅผ ํฅ์์ํค๊ณ , ๊น์ ๋คํธ์ํฌ์์ ๋ฐ์ํ ์ ์๋ Gradient Loss ๋ฌธ์ ๋ฅผ ์ํํฉ๋๋ค.
- Residual Blocks๋ ์ ๋ ฅ์ ์ถ๋ ฅ์ ๋ํ๋ ์คํต ์ฐ๊ฒฐ(skip connection)์ ํฌํจํฉ๋๋ค.
- Feature Pyramid Network (FPN)
- YOLOv3๋ FPN ๊ธฐ๋ฒ์ ์ ์ฉํ์ฌ ๋ค์ค ์ค์ผ์ผ์์ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- 3๊ฐ์ ์๋ก ๋ค๋ฅธ ํฌ๊ธฐ์ Feature Map์ ์ฌ์ฉํ์ฌ ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- Scale 1: 13x13 Feature Map (Stride: 32) - ํฐ ๊ฐ์ฒด ํ์ง
- Scale 2: 26x26 Feature Map (Stride: 16) - ์ค๊ฐ ํฌ๊ธฐ ๊ฐ์ฒด ํ์ง
- Scale 3: 52x52 Feature Map (Stride: 8) - ์์ ๊ฐ์ฒด ํ์ง
- Detection Heads
- ๊ฐ Feature Map์ ๊ฐ๊ฐ์ Detection Head๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์์ธกํฉ๋๋ค.
- ๊ฐ Detection Head๋ 3๊ฐ์ Anchor Box๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ๊ฒฝ๊ณ ์์์ ํด๋์ค ํ๋ฅ ์ ์์ธกํฉ๋๋ค.
- ์ด๋ก์จ ๊ฐ Feature Map์์ ์ด 9๊ฐ์Anchor Box๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ํ์งํฉ๋๋ค.
- Upsampling and Merging
- ๋์ ํด์๋์ Feature Map์์ ์์ธก์ ๋ ์ํ๊ธฐ ์ํด ๋ฎ์ ํด์๋์ Feature Map์ Upsamplingํ์ฌ ๋์ ํด์๋์ Feature Map๊ณผ ๋ณํฉํฉ๋๋ค.
YOLO์ SSD์ ๋น๊ต
3๊ฐ์ง์ ์ฃผ์ ๋ก ๋น๊ต๋ฅผ ํ๋ฒ ํด๋ณด๊ฒ ์ต๋๋ค
- Feature Map์ ํด์๋:
- YOLOv2๋ ๋จ์ผ ํด์๋(13x13)๋ง ์ฌ์ฉํฉ๋๋ค.
- YOLOv3๋ 3๊ฐ์ ํด์๋(52x52, 26x26, 13x13)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- SSD๋ 6๊ฐ์ ํด์๋(1x1, 2x2, 3x3, 5x5, 10x10, 19x19)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ค์ค ์ค์ผ์ผ ๊ฐ์ฒด ํ์ง:
- YOLOv3์ SSD๋ ๋ค์ค ์ค์ผ์ผ ๊ฐ์ฒด ํ์ง๋ฅผ ์ง์ํ์ฌ ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ํ์งํ ์ ์์ต๋๋ค.
- YOLOv2๋ ๋จ์ผ ํด์๋๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์๋์ ์ผ๋ก ๋ค์ค ์ค์ผ์ผ ๊ฐ์ฒด ํ์ง์ ์ ํ์ ์ ๋๋ค.
- ์์ ๊ฐ์ฒด ํ์ง ์ฑ๋ฅ:
- YOLOv3์ SSD๋ ์์ ๊ฐ์ฒด์ ๋ํ ํ์ง ์ฑ๋ฅ์ด ๋ฐ์ด๋จ. ์ด๋ ์์ ํฌ๊ธฐ์ Feature Map์ ์ฌ์ฉํ์ฌ ๋ ์ธ๋ฐํ ํ์ง๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- YOLOv2๋ ๋จ์ผ ํด์๋(13x13)๋ก ์ธํด ์์ ๊ฐ์ฒด์ ๋ํ ํ์ง ์ฑ๋ฅ์ด ์๋์ ์ผ๋ก ๋ฎ์ต๋๋ค.
YOLO v3 Output Feature Map
- YOLOv3๋ ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ํ์งํ๊ธฐ ์ํด 13x13, 26x26, 52x52 ํฌ๊ธฐ์ ์ธ ๊ฐ์ง Feature Map์ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ Feature Map์ ํด๋น ํด์๋์์ ๊ฐ์ฒด๋ฅผ ํ์งํ๋ฉฐ, ์ฌ๋ฌ ๊ฐ์ Anchor Box๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฝ๊ณ ์์์ ํด๋์ค ํ๋ฅ ์ ์์ธกํฉ๋๋ค.
- ์ด๋, Bounding Box๋ค์ Attribute๋ค์ ํ๋ฒ ์์๋ณด๋ฉด?
- Box Coordinates (tx, ty, tw, th): Bounding Box์ ์ค์ฌ ์ขํ (tx, ty)์ ๋๋น (tw), ๋์ด (th)๋ฅผ ๋ํ๋ ๋๋ค. aka. ์ขํ๊ฐ
- Objectness Score (p0): ํด๋น ์ต์ปค ๋ฐ์ค๊ฐ ๊ฐ์ฒด๋ฅผ ํฌํจํ ํ๋ฅ ์ ๋ํ๋ ๋๋ค. aka. Object ํฌํจ ํ๋ฅ x IOU
- Class Scores (p1, p2, ..., pc): ๊ฐ ํด๋์ค์ ๋ํ ํ๋ฅ ์ ๋ํ๋ ๋๋ค. ์ด๋ class์ score๋ค์ ๋ํ๋ด๊ธฐ ์ํ์ฌ ์ฌ์ฉํ๋ Dataset๋ค์ Pretrained๋ Coco Dataset์ ๋๋ค.
- ๋ํ ๊ฐ Anchor Box๋ ์ด B๊ฐ์ ์ ๋ณด๋ฅผ ์์ธกํฉ๋๋ค. ์ฌ๊ธฐ์ B๋ Anchor Box์ ์์ ๋๋ค.
Darknet-53 ํน์ฑ
- Top-1 ์ ํ๋: 77.2%
- Top-5 ์ ํ๋: 93.8%
- Bn Ops (Billion Operations): 18.7
- BFLOP/s (Billion Floating Point Operations per Second): 1457
- FPS (Frames Per Second): 78
- ์ด๊ธฐ Convolutional Layer: 32๊ฐ์ 3x3 ํํฐ (์ถ๋ ฅ: 256x256).
- ์ดํ Residual Block: ๊ฐ ๋ธ๋ก์ 1x1๊ณผ 3x3 Convolutional Layer๋ก ๊ตฌ์ฑ, ๋ธ๋ก๋ง๋ค ์ถ๋ ฅ ํฌ๊ธฐ๋ ์ ๋ฐ์ผ๋ก ์ค์ด๋ญ๋๋ค.
- ์ต์ข ๋ ์ด์ด: Global Average Pooling, Fully Connected Layer, Softmax Layer.
Darknet-53์ YOLOv3์ ๋ฐฑ๋ณธ ๋คํธ์ํฌ๋ก ์ฌ์ฉ๋๋ฉฐ, ๋์ ํน์ง ์ถ์ถ ๋ฅ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
Residual Block์ ์ฌ์ฉํ์ฌ ๊น์ ๋คํธ์ํฌ์์๋ ํจ์จ์ ์ธ ํ์ต์ด ๊ฐ๋ฅํ๋ฉฐ, ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์ ๋ฅผ ์ํํฉ๋๋ค.
Training
YOLO v3 ๋ชจ๋ธ์ด Training๋๋ Flow๋ฅผ ํ๋ฒ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค.
- ๋ฐ์ดํฐ ์ค๋น (Data Preparation)
- Annotation ํ์ผ: XML ํ์์ ์ฃผ์ ํ์ผ์ ์ฌ์ฉํ์ฌ ๊ฐ ์ด๋ฏธ์ง์ ๋ํ ๊ฐ์ฒด์ ์์น์ ํด๋์ค ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค. ์์์์๋ PASCAL VOC ํ์์ ๋ฐ๋ฆ
๋๋ค.
- <object> ํ๊ทธ ๋ด์ ๊ฐ์ฒด์ ํด๋์ค ์ด๋ฆ๊ณผ Bounding Box ์ขํ(xmin, ymin, xmax, ymax)๊ฐ ํฌํจ๋ฉ๋๋ค.
- Annotation ํ์ผ: XML ํ์์ ์ฃผ์ ํ์ผ์ ์ฌ์ฉํ์ฌ ๊ฐ ์ด๋ฏธ์ง์ ๋ํ ๊ฐ์ฒด์ ์์น์ ํด๋์ค ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค. ์์์์๋ PASCAL VOC ํ์์ ๋ฐ๋ฆ
๋๋ค.
- ๋ฐ์ดํฐ ์ฆ๊ฐ (Data Augmentation)
- ํ์ต ๋ฐ์ดํฐ์ ๋ค์์ฑ์ ๋์ด๊ธฐ ์ํด ๋ค์ํ ๋ณํ์ ์ ์ฉํฉ๋๋ค.
- ์ด๋ฏธ์ง ํ์ , ํฌ๊ธฐ ์กฐ์ , ์์ ๋ณํ ๋ฑ์ ํตํด ๋ชจ๋ธ์ด ๋ค์ํ ์ํฉ์ ๋์ํ ์ ์๋๋ก ํ์ตํฉ๋๋ค.
- ๋ค์ค ์ค์ผ์ผ ํ์ต (Multi-Scale Training)
- YOLOv3๋ ๋ค์ํ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ํ์ตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋ธ์ด ์ฌ๋ฌ ํด์๋์ ๊ฐ์ฒด๋ฅผ ์ธ์ํ ์ ์๋๋ก ํฉ๋๋ค.
- ์ด๋ฏธ์ง์ ํด์๋๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณ๊ฒฝํ์ฌ ๋ชจ๋ธ์ด ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ํ์ตํ๋๋ก ํฉ๋๋ค.
- ํผ์ฒ ๋งต ์์ฑ (Feature Map Generation)
- Prediction Feature Map: ์ ๋ ฅ ์ด๋ฏธ์ง๊ฐ ๋คํธ์ํฌ๋ฅผ ํต๊ณผํ๋ฉด์ ๋ค์ํ ํฌ๊ธฐ์ Feature Map์ด ์์ฑ๋ฉ๋๋ค.
- 13x13, 26x26, 52x52 Feature Map: ์๋ก ๋ค๋ฅธ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ํ์งํ๊ธฐ ์ํด ์ฌ๋ฌ ํด์๋์ Feature Map์ ์ฌ์ฉํฉ๋๋ค.
- ์ต์ปค ๋ฐ์ค ์ค์ (Anchor Box Setting)
- ์ค๋ช : ๊ฐ ๊ทธ๋ฆฌ๋ ์ ์์ ์ฌ๋ฌ ๊ฐ์ ์ต์ปค ๋ฐ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ธกํฉ๋๋ค.
- ๊ตฌ์ฑ ์์:
- Box Coordinates (tx,ty,tw,th): Bounding Box์ ์ค์ฌ ์ขํ์ ํฌ๊ธฐ.
- Objectness Score (p0p_0): ํด๋น ๋ฐ์ค๊ฐ ๊ฐ์ฒด๋ฅผ ํฌํจํ ํ๋ฅ .
- Class Scores (p1,p2,...,pc): ๊ฐ ํด๋์ค์ ๋ํ ํ๋ฅ .
- ์์ธก (Prediction)
- ์ค๋ช : ๊ฐ Feature Map์ Grid Cell์์ Anchor Box๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ์์น์ ํด๋์ค๋ฅผ ์์ธกํฉ๋๋ค.
- ๊ณผ์ :
- ๊ฐ Grid Cell์ ์ฌ๋ฌ Anchor Box๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์์ธกํฉ๋๋ค.
- ์์ธก๋ Bounding Box์ ํด๋์ค ํ๋ฅ ์ ํตํด ์ต์ข ๊ฐ์ฒด ํ์ง ๊ฒฐ๊ณผ๋ฅผ ๋์ถํฉ๋๋ค.
Location Prediction
- ๊ทธ๋ฆฌ๋ ์
๋ด์ Bounding Box ์ค์ฌ ๊ณ์ฐ
- ๋ชจ๋ธ์ด ์์ธกํ tx, ty ๊ฐ์ Sigmoid Function(์๊ทธ๋ชจ์ด๋ ํจ์)๋ฅผ ํตํด 0์์ 1 ์ฌ์ด๋ก ์กฐ์ ๋ฉ๋๋ค.
- ์ด ๊ฐ์ ๊ทธ๋ฆฌ๋ ์ ์ ์คํ์ cx, cy์ ๋ํด์ ธ Bounding Box์ ์ค์ฌ ์ขํ bx, by๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- ์ด๋ ๊ฒ ํ๋ฉด Bounding Box์ ์ค์ฌ์ด ํด๋น Grid Cell ๋ด์ ์์นํ๊ฒ ๋ฉ๋๋ค.
- Bounding Box ํฌ๊ธฐ ๊ณ์ฐ
- ๋ชจ๋ธ์ด ์์ธกํ tw, th ๊ฐ์ ๊ฐ๊ฐ Anchor Box์ ๋๋น pw์ ๋์ด ph์ ์ง์ ํจ์๋ฅผ ์ ์ฉํ์ฌ ๊ณฑํด์ง๋๋ค.
- ์ด๋ฅผ ํตํด ์ต์ข Bounding Box์ ๋๋น bw์ ๋์ด bh๋ฅผ ์ป์ต๋๋ค.
- ๊ฐ์ฒด ํ๋ฅ ๊ณ์ฐ
- ๋ชจ๋ธ์ด ์์ธกํ ๊ฐ์ฒด ํ๋ฅ ๊ฐ to๋ Sigmoid Function(์๊ทธ๋ชจ์ด๋ ํจ์)๋ฅผ ํตํด 0์์ 1 ์ฌ์ด๋ก ์กฐ์ ๋ฉ๋๋ค.
- ์ด ๊ฐ์ ํด๋น Bounding Box๊ฐ ๊ฐ์ฒด๋ฅผ ํฌํจํ ํ๋ฅ ์ ๋ํ๋ ๋๋ค.
๋ชจ๋ธ์ด ์์ธกํ ๊ฐ์ฒด ํ๋ฅ ๊ฐ σ(toโ)๋ฅผ ์ ์ฉ ํ๋ ์ด์ ๋ Center(์ค์) ์ขํ๊ฐ Cell ์ค์ฌ์ ๋๋ฌด ๋ฒ์ด๋์ง ์๋๋ก 0~1 ์ฌ์ด์ Sigmoid ๊ฐ์ผ๋ก ์กฐ์ ํฉ๋๋ค. ์ด์ ๋ ์ ์ฉํ์ง ์์ผ๋ฉด ์ด๋ฏธ์ง ๋์ผ๋ก๊ฐ๊ฑฐ๋ ๋ฒ์ด๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
Multi Label ์์ธก
YOLO v3 ๋ชจ๋ธ์ ์ต์ข Detection ๋จ๊ณ์์ Softmax Function(์ํํธ๋งฅ์ ํจ์)๋ฅผ ์์๋๋ค.
๋์ , ์ฌ๋ฌ๊ฐ์ ๋ ๋ฆฝ์ ์ธ Logistic Classifier๋ฅผ ์ฌ์ฉํฉ๋๋ค. (ํด๋์ค ๋ณ๋ก)
YOLO v3 ์ฑ๋ฅ ๋น๊ต
COCO AP ๊ธฐ์ค ์ฑ๋ฅ ๋น๊ต
YOLOv3
- mAP: YOLOv3-320: 28.2, YOLOv3-416: 31.0, YOLOv3-608: 33.0
- ์ถ๋ก ์๊ฐ: YOLOv3-320: 22ms, YOLOv3-416: 29ms, YOLOv3-608: 51ms
- ํน์ง: ๋น ๋ฅธ ์๋์ ๋์ ์ ํ๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์์ ๋ชจ๋ธ(YOLOv3-320)์ ํนํ ๋น ๋ฅธ ์ถ๋ก ์๊ฐ์ ๊ฐ์ง๋๋ค.
RetinaNet
- mAP: RetinaNet-50: 32.5, RetinaNet-101: 34.4
- ์ถ๋ก ์๊ฐ: RetinaNet-50: 73ms, RetinaNet-101: 90ms
- ํน์ง: ๋์ ์ ํ๋ ์ ๊ณตํ์ง๋ง YOLOv3๋ณด๋ค ์ถ๋ก ์๊ฐ์ด ๋ ๊น๋๋ค.
SSD
- mAP: SSD321: 28.0, SSD513: 31.2
- ์ถ๋ก ์๊ฐ: SSD321: 61ms, SSD513: 125ms
- ํน์ง: ์ค๊ฐ ์ ๋์ ์ ํ๋์ ์ถ๋ก ์๊ฐ. YOLOv3๋ณด๋ค ์ฑ๋ฅ์ด ๋จ์ด์ง๋๋ค.
๋ค๋ฅธ ๋ชจ๋ธ
- R-FCN: mAP: 29.9, ์ถ๋ก ์๊ฐ: 85ms
- FPN FRCN: mAP: 36.2, ์ถ๋ก ์๊ฐ: 172ms
COCO mAP-50 ๊ธฐ์ค ์ฑ๋ฅ ๋น๊ต
YOLOv3
- mAP-50: YOLOv3-320: 51.5, YOLOv3-416: 55.3, YOLOv3-608: 57.9
- ์ถ๋ก ์๊ฐ: YOLOv3-320: 22ms, YOLOv3-416: 29ms, YOLOv3-608: 51ms
- ํน์ง: ๋์ mAP-50 ์ ๊ณต. ํนํ YOLOv3-608์ ๊ฐ์ฅ ๋์ mAP-50๊ณผ ๋น ๋ฅธ ์ถ๋ก ์๊ฐ์ ๊ฐ์ง๋๋ค.
RetinaNet
- mAP-50: RetinaNet-50: 53.1, RetinaNet-101: 57.5
- ์ถ๋ก ์๊ฐ: RetinaNet-50: 73ms, RetinaNet-101: 198ms
- ํน์ง: ๋์ mAP-50 ์ ๊ณตํ์ง๋ง, ์ถ๋ก ์๊ฐ์ด ์๋์ ์ผ๋ก ๊น๋๋ค.
SSD
- mAP-50: SSD321: 45.4, SSD513: 50.3
- ์ถ๋ก ์๊ฐ: SSD321: 61ms, SSD513: 125ms
- ํน์ง: ์ค๊ฐ ์ ๋์ ์ฑ๋ฅ ์ ๊ณต. YOLOv3๋ณด๋ค ์ฑ๋ฅ์ด ๋จ์ด์ง๋๋ค.
๋ค๋ฅธ ๋ชจ๋ธ
- R-FCN: mAP-50: 51.9, ์ถ๋ก ์๊ฐ: 85ms
- FPN FRCN: mAP-50: 59.1, ์ถ๋ก ์๊ฐ: 172ms