ํ๋ก์ ํธ ์ ํ: ์ ์ฅ ์ธ์ ์ฐ๊ตฌ / ๊ฐ์ฒด ํ์ง ํ๋ ์์ํฌ: PyTorch ๋ชจ๋ธ ๊ตฌ์กฐ: Anomaly-Aware CNN Stem โ ViT Encoder โ ๋ฐ๋ณต์ ํผ๋๋ฐฑ โ PANLite Neck โ YOLOHead ๋ชฉํ: CNN์ ๊ตญ์ ํน์ง๊ณผ ViT์ ์ ์ญ ๋ฌธ๋งฅ์ ๋ฐ๋ณต์ ํผ๋๋ฐฑ ๋ฃจํ๋ก ๊ฒฐํฉํ์ฌ ํ์ง ์ ํ๋ ํฅ์
์ฌ์ฉํ์ผ: model.ipynb ๋ชจ๋ธ ๊ตฌ์กฐ ๊ฐ์ : Flash Attention ์ ์ฉ, Dynamic Positional Embedding resizing, torch.compile ์ง์
์ ์ฅ ํ๊ฒฝ์ ๊ฐ์ฒด ํ์ง๋ ์์ฅ, ๊ฐ๋ฆผ, ์์ ํฌ๊ธฐ ๋ฑ ๋น์ ํ์ ํน์ง ๋๋ฌธ์ ๊ธฐ์กด ๋ชจ๋ธ๋ก ์ด๋ ต์ต๋๋ค. CNN์ ํ ์ค์ฒ ๋ฑ ๊ตญ์ ์ ๋ณด์ ๊ฐํ์ง๋ง ์ ์ฒด์ ์ธ ๋งฅ๋ฝ ํ์ ์ด ์ด๋ ต๊ณ , ViT๋ ์ ์ญ ๊ด๊ณ ์ถ๋ก ์ ์ ๋ฆฌํ์ง๋ง ์ธ๋ฐํ ๊ณต๊ฐ ์ ๋ณด๋ฅผ ๋์น ์ ์์ต๋๋ค.
๋ณธ ํ๋ก์ ํธ๋ ์ด ๋ ์ฅ์ ์ ๊ฒฐํฉํ๊ณ , ViT๊ฐ ํ์ ํ **์ ์ญ ๋ฌธ๋งฅ์ ๋ค์ CNN ํน์ง๋งต์ ์ฃผ์ (Feedback)**ํ์ฌ ๊ตญ์ ํน์ง์ ์ฌ์กฐ์ ํ๋ ๋ฐ๋ณต์ ๊ตฌ์กฐ๋ฅผ ํตํด ํ์ง ์ฑ๋ฅ์ ๊ทน๋ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ํนํ Anomaly-Aware ํน์ง ์ถ์ถ๊ณผ ๋ฐ๋ณต์ ํผ๋๋ฐฑ ๋ฉ์ปค๋์ฆ์ ํตํด ์ ์ฅ ํ๊ฒฝ์ ๋์ ์ ์ธ ์กฐ๊ฑด์ ๊ฐ๊ฑดํ ํ์ง ๋ชจ๋ธ์ ๊ฐ๋ฐํฉ๋๋ค.
- Anomaly-Aware Stem: ์ด๊ธฐ CNN ๋จ๊ณ์์ ๊ณ ์ฃผํ(High-Frequency) ํน์ง(์์ง, ์ง๊ฐ)์ ๋ณ๋ ๋ถ๊ธฐ๋ก ์ถ์ถํ์ฌ ์ผ๋ฐ ํน์ง๊ณผ ์ตํฉํจ์ผ๋ก์จ, ์์ฅ ๊ฐ์ฒด๋ ๋น์ ํ ํน์ง์ ๋ํ ๋ฏผ๊ฐ๋๋ฅผ ๋์ ๋๋ค. Gaussian blur๋ฅผ ์ ์ฉํ ์๋ณธ๊ณผ์ ์ฐจ์ด๋ฅผ ํตํด ๊ณ ์ฃผํ ์ฑ๋ถ์ ์ถ์ถํฉ๋๋ค.
- Global Context Encoding: CNN ํน์ง๋งต์ ViT์ ์ ๋ ฅํ์ฌ ์ด๋ฏธ์ง ์ ์ฒด์ ๊ด๊ณ์ฑ์ ๋ชจ๋ธ๋งํ๊ณ , ๊ฐ์ฒด์ ๋ฐฐ๊ฒฝ, ๊ฐ์ฒด์ ๊ฐ์ฒด ๊ฐ์ ์ ์ญ ๋ฌธ๋งฅ ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค. Positional Embedding์ ์ถ๊ฐํ์ฌ ๊ณต๊ฐ ์ ๋ณด๋ฅผ ๋ณด์กดํฉ๋๋ค.
- Iterative Feedback: ViT๊ฐ ์ถ์ถํ ์ ์ญ ๋ฌธ๋งฅ์ Feedback Adapter๋ฅผ ํตํด CNN ํน์ง๋งต์ ๋ค์ ์ฃผ์ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํตํด ๊ตญ์ ํน์ง์ด ์ ์ญ ๋ฌธ๋งฅ์ ๋ง๊ฒ ๋ณด์ ๋ฉ๋๋ค. ์ด ํผ๋๋ฐฑ์ ๋ฐ๋ณต์ ์ผ๋ก ์ํ๋์ด ์ ์ง์ ์ธ ํน์ง ๊ฐ์ ์ ๋ฌ์ฑํฉ๋๋ค.
- Multi-Scale Detection: PANLite ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ P3, P4, P5 ๋ค์ค ์ค์ผ์ผ ํผ์ฒ๋ฅผ ์์ฑํ๊ณ , YOLOHeadLite๋ฅผ ํตํด ๊ฐ ์ค์ผ์ผ์์ ํด๋์ค, ์ ๋ขฐ๋, ๋ฐ์ด๋ฉ๋ฐ์ค ์์ธก์ ์ํํฉ๋๋ค.
์
๋ ฅ ์ด๋ฏธ์ง (์: 640ร640)
โ
โผ
โ AnomalyAwareStem (CNN)
โโ 3๊ฐ์ conv-bn-act ๋ธ๋ก (stride=2) โ (B, Cs, H/8, W/8)
โโ ๊ณ ์ฃผํ ํน์ง ์ถ์ถ: ์๋ณธ - Gaussian blur โ ๊ณ ์ฃผํ ์ฑ๋ถ ๋ถ๋ฆฌ
โโ ๋ก์ปฌ ํน์ง๊ณผ ๊ณ ์ฃผํ ํน์ง ์ตํฉ
โโ ๊ฐ์์ฑ ๋งต(visibility map) ์์ฑ (์ต์
)
โ
โผ
โก PatchEmbed1x1
โโ CNN ํน์ง์ ์ฑ๋์ Cs โ ViT ์๋ฒ ๋ฉ์ฐจ์ D๋ก 1ร1 conv
โโ ๊ณต๊ฐ ํฌ๊ธฐ ์ ์ง (H/8, W/8)
โ
โผ
โข Positional Embedding
โโ 2D ๊ณต๊ฐ ์ ๋ณด๋ฅผ 1D ์ํ์ค์ ์ถ๊ฐ
โโ ์ด๋ฏธ์ง ํฌ๊ธฐ(640x640) ๊ธฐ์ค์ผ๋ก ์ฌ์ ํ์ต๋ ์์น ์๋ฒ ๋ฉ
โโ ๋ค์ด๋๋ฏน ๋ฆฌ์ฌ์ด์ง ์ง์ (bicubic interpolation)
โ
โผ
โฃ ViT Encoder
โโ CNN feature๋ฅผ flatten โ (B, N=HtรWt, D)
โโ Multihead Self-Attention์ผ๋ก ์ ์ญ ๋ฌธ๋งฅ ํ์ต
โโ Flash Attention ์ ์ฉ (scaled_dot_product_attention)
โโ Transformer ๋ธ๋ก์ผ๋ก ๊ตฌ์ฑ (LayerNorm + Attention + MLP)
โโ ์ถ๋ ฅ ํ ํฐ (B, N, D)
โ
โผ
โค FeedbackAdapter
โโ ViT ํ ํฐ์ reshape โ (B, D, Ht, Wt)
โโ 1ร1 conv๋ก (ฮณ, ฮฒ) ์์ฑ (c_stem * 2 ์ฑ๋)
โโ CNN ์ถ๋ ฅ ๋ณด์ :
f_fb = f_stem ร (1 + tanh(ฮณ)) + ฮฒ
โโ CNN์ ์ง์ญ ํน์ง์ ViT๊ฐ ๋ณธ ์ ์ญ ๋ฌธ๋งฅ์ผ๋ก ์ฌ์กฐ์
โ
โผ
โฅ PatchEmbed1x1 (๋ค์)
โโ ๋ณด์ ๋ f_fb๋ฅผ ViT ์ฐจ์ D๋ก ์ฌ๋งคํ
โ
โผ
โฆ ๋ฐ๋ณต (iters ์ง์ ํ์๋งํผ)
โโ ViT ์ฒ๋ฆฌ โ Feedback ์ ์ฉ (detach_feedback ์ต์
)
โโ Neck/Head ์์ธก
โโ ๋ค์ ๋ฐ๋ณต์ ์ํ ํ ํฐ ์ค๋น
โ
โผ
โง PANLite (neck)
โโ P3 (80ร80), P4 (40ร40), P5 (20ร20) ๋ฉํฐ์ค์ผ์ผ ์์ฑ
โโ top-down & bottom-up ํผ์ฒ ์ตํฉ ๊ตฌ์กฐ
โโ ์ต์ข
๋ฉํฐ์ค์ผ์ผ ํผ์ฒ๋งต ๋ฐํ
โ
โผ
โจ YOLOHeadLite
โโ P3, P4, P5 ๊ฐ๊ฐ์ ๋ํด (cls, obj, box) ์์ธก
โโ 3x3 conv stem + 1x1 conv head ๋ธ๋ก
โโ obj ๋ ์ด์ด bias ์ด๊ธฐ๊ฐ: -4.59 (confidence ๋ง์ถค)
โโ ๊ฐ ์ค์ผ์ผ์์ ํด๋์ค, ์ ๋ขฐ๋, ๋ฐ์ด๋ฉ๋ฐ์ค ์์ธก
โ
โผ
โฉ Focal Loss + GIoU ์์ค
โโ ํด๋์ค ๋ฐ ์ ๋ขฐ๋ ์์ธก: Focal Loss
โโ ๋ฐ์ด๋ฉ๋ฐ์ค ์์ธก: GIoU Loss
โโ ๋ค์ค ์ค์ผ์ผ ์์ธก ํตํฉ ์์ค
โ
โผ
์ถ๋ ฅ
โโ ์์ธก: [(cls,obj,box)_P3, P4, P5]
โโ ์ค๊ฐ feature: {'P3', 'P4', 'P5', 'V'}
- in_ch: 3 (์ ๋ ฅ ์ฑ๋ ์)
- stem_base: 32 (AnomalyAwareStem ๊ธฐ๋ณธ ์ฑ๋ ์)
- embed_dim: 256 (ViT ์๋ฒ ๋ฉ ์ฐจ์)
- vit_depth: 4 (ViT ์ธ์ฝ๋ ๋ธ๋ก ์)
- vit_heads: 4 (Multihead Attention ํค๋ ์)
- num_classes: 3 (ํด๋์ค ์)
- iters: 1 (๋ฐ๋ณต ํ์)
- detach_feedback: True (ํผ๋๋ฐฑ ํ ํฐ detach ์ฌ๋ถ)
- img_size: 640 (์ ๋ ฅ ์ด๋ฏธ์ง ํฌ๊ธฐ)
- Python >= 3.8
- torch >= 2.0 (Flash Attention, torch.compile ์ง์)
- torchvision
- numpy
- opencv-python
- tqdm
- pillow
- matplotlib
- roboflow (๋ฐ์ดํฐ์ ๋ค์ด๋ก๋์ฉ)
- albumentations (๋ฐ์ดํฐ ์ฆ๊ฐ์ฉ - ์ ํ์ )
model.ipynb ๊ธฐ์ค์ด๋ฉฐ, ๋ฐ์ดํฐ ์ฆ๊ฐ, ํ์ฒ๋ฆฌ ๋ฑ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
๋ชจ๋ธ ํ์ต์ YOLO ์คํ์ผ์ ์์ค ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์งํ๋ฉ๋๋ค:
- ํด๋์ค ์์ธก: Focal Loss (alpha=0.25, gamma=2.0)
- ์ ๋ขฐ๋ ์์ธก: Focal Loss (alpha=0.25, gamma=2.0)
- ๋ฐ์ด๋ฉ๋ฐ์ค ์์ธก: GIoU Loss
๊ฐ ์ค์ผ์ผ(P3, P4, P5)์์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ธก์ ์ํํ๊ณ , ๋ชจ๋ ์ค์ผ์ผ์ ์์ธก์ ํตํฉํ์ฌ ์ต์ข ์์ค์ ๊ณ์ฐํฉ๋๋ค.
ํ์ต ์ค์ :
- ์ตํฐ๋ง์ด์ : Adam (lr=1e-4)
- ์ํฌํฌ ์: 5
- ๋ฐฐ์น ํฌ๊ธฐ: 8
- AMP (Automatic Mixed Precision): ํ์ฑํ (torch.amp.autocast)
- Gradient Scaler: torch.cuda.amp.GradScaler
- num_workers: 2
- pin_memory: True
torch.compile ์ง์:
- torch.compile: ๋ชจ๋ธ ์ปดํ์ผ ์ต์ (PyTorch 2.0+ ์ง์)
- Flash Attention: torch.nn.functional.scaled_dot_product_attention ์ฌ์ฉ
ํ์ต๋ ๋ชจ๋ธ์ mAP@0.5 ์งํ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ฆ ๋ฐ ํ ์คํธ ๋ฐ์ดํฐ์ ์์ ํ๊ฐ๋ฉ๋๋ค.
ํ๊ฐ ์งํ ๋ฐ ๋ฐฉ๋ฒ:
- mAP@0.5: 0.5 IoU ์๊ณ๊ฐ ๊ธฐ์ค ํ๊ท ์ ๋ฐ๋
- Confidence threshold: 0.25
- NMS IoU threshold: 0.5
- ํด๋์ค ์: 3 (num_classes ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ผ ์กฐ์ ๊ฐ๋ฅ)
- ์ด๋ฏธ์ง ํฌ๊ธฐ: 640 (img_size ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ผ ์กฐ์ ๊ฐ๋ฅ)
- ์์ธก ๋์ฝ๋ฉ: NMS (Non-Maximum Suppression) ์ ์ฉ
- ์ฑ๋ฅ ์ ์ฅ: ์ต๊ณ ์ฑ๋ฅ ๋ชจ๋ธ์ 'hybrid_two_way_best.pt'๋ก ์ ์ฅ
ํ๋ก์ ํธ ์ ํ: ์ ์ฅ ์ธ์ ์ฐ๊ตฌ / ๊ฐ์ฒด ํ์ง ํ๋ ์์ํฌ: PyTorch + Timm ๋ชจ๋ธ ๊ตฌ์กฐ: Anomaly-Aware CNN Stem โ Pretrained ViT Encoder โ ๋ฐ๋ณต์ ํผ๋๋ฐฑ โ PANLite Neck โ YOLOHead ๋ชฉํ: ์ฌ์ ํ์ต๋ ViT์ ํํ๋ ฅ์ ํ์ฉํ๊ณ , CNN์ ๊ตญ์ ํน์ง๊ณผ ViT์ ์ ์ญ ๋ฌธ๋งฅ์ ๋ฐ๋ณต์ ํผ๋๋ฐฑ ๋ฃจํ๋ก ๊ฒฐํฉํ์ฌ ํ์ง ์ ํ๋ ํฅ์
์ฌ์ฉํ์ผ: advanced_model.ipynb ๋ชจ๋ธ ๊ตฌ์กฐ ๊ฐ์ : Timm ์ฌ์ ํ์ต ๋ชจ๋ธ ์ ์ฉ, Task Aligned Assignment (TAL) Loss, Mosaic Augmentation, torch.compile ์ง์
์ ์ฅ ํ๊ฒฝ์ ๊ฐ์ฒด ํ์ง๋ ์์ฅ, ๊ฐ๋ฆผ, ์์ ํฌ๊ธฐ ๋ฑ ๋น์ ํ์ ํน์ง ๋๋ฌธ์ ๊ธฐ์กด ๋ชจ๋ธ๋ก ์ด๋ ต์ต๋๋ค. CNN์ ํ ์ค์ฒ ๋ฑ ๊ตญ์ ์ ๋ณด์ ๊ฐํ์ง๋ง ์ ์ฒด์ ์ธ ๋งฅ๋ฝ ํ์ ์ด ์ด๋ ต๊ณ , ViT๋ ์ ์ญ ๊ด๊ณ ์ถ๋ก ์ ์ ๋ฆฌํ์ง๋ง ์ธ๋ฐํ ๊ณต๊ฐ ์ ๋ณด๋ฅผ ๋์น ์ ์์ต๋๋ค.
Advanced ๋ชจ๋ธ์ ์ฌ์ ํ์ต๋ ViT ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ ๊ฐ๋ ฅํ ์ ์ญ ๋ฌธ๋งฅ ํํ์ ์ถ์ถํ๊ณ , ViT๊ฐ ํ์ ํ **์ ์ญ ๋ฌธ๋งฅ์ ๋ค์ CNN ํน์ง๋งต์ ์ฃผ์ (Feedback)**ํ์ฌ ๊ตญ์ ํน์ง์ ์ฌ์กฐ์ ํ๋ ๋ฐ๋ณต์ ๊ตฌ์กฐ๋ฅผ ํตํด ํ์ง ์ฑ๋ฅ์ ๊ทน๋ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ํนํ Anomaly-Aware ํน์ง ์ถ์ถ๊ณผ ๋ฐ๋ณต์ ํผ๋๋ฐฑ ๋ฉ์ปค๋์ฆ, Task Aligned Assignment (TAL) ์์ค์ ํตํด ์ ์ฅ ํ๊ฒฝ์ ๋์ ์ ์ธ ์กฐ๊ฑด์ ๊ฐ๊ฑดํ ํ์ง ๋ชจ๋ธ์ ๊ฐ๋ฐํฉ๋๋ค.
- Timm Pretrained ViT Integration: ์ฌ์ ํ์ต๋ ViT ๋ชจ๋ธ(vit_base_patch16_224.augreg_in21k_ft_in1k ๋ฑ)์ ํตํฉํ์ฌ ๊ฐ๋ ฅํ ํน์ง ์ธ์ฝ๋ฉ ๋ฅ๋ ฅ์ ํ๋ณดํฉ๋๋ค. Positional Embedding์ ๋์ ์ผ๋ก ๋ฆฌ์ฌ์ด์ฆํ์ฌ ๋ค์ํ ์ ๋ ฅ ํฌ๊ธฐ์ ๋์ํฉ๋๋ค.
- Anomaly-Aware Stem: ์ด๊ธฐ CNN ๋จ๊ณ์์ ๊ณ ์ฃผํ(High-Frequency) ํน์ง(์์ง, ์ง๊ฐ)์ ๋ณ๋ ๋ถ๊ธฐ๋ก ์ถ์ถํ์ฌ ์ผ๋ฐ ํน์ง๊ณผ ์ตํฉํจ์ผ๋ก์จ, ์์ฅ ๊ฐ์ฒด๋ ๋น์ ํ ํน์ง์ ๋ํ ๋ฏผ๊ฐ๋๋ฅผ ๋์ ๋๋ค. Gaussian blur๋ฅผ ์ ์ฉํ ์๋ณธ๊ณผ์ ์ฐจ์ด๋ฅผ ํตํด ๊ณ ์ฃผํ ์ฑ๋ถ์ ์ถ์ถํฉ๋๋ค.
- Global Context Encoding: ์ฌ์ ํ์ต๋ ViT๋ฅผ ํตํด ์ด๋ฏธ์ง ์ ์ฒด์ ๊ด๊ณ์ฑ์ ๋ชจ๋ธ๋งํ๊ณ , ๊ฐ์ฒด์ ๋ฐฐ๊ฒฝ, ๊ฐ์ฒด์ ๊ฐ์ฒด ๊ฐ์ ์ ์ญ ๋ฌธ๋งฅ ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค. Positional Embedding์ ์ถ๊ฐํ์ฌ ๊ณต๊ฐ ์ ๋ณด๋ฅผ ๋ณด์กดํฉ๋๋ค.
- Iterative Feedback: ViT๊ฐ ์ถ์ถํ ์ ์ญ ๋ฌธ๋งฅ์ Feedback Adapter๋ฅผ ํตํด CNN ํน์ง๋งต์ ๋ค์ ์ฃผ์ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํตํด ๊ตญ์ ํน์ง์ด ์ ์ญ ๋ฌธ๋งฅ์ ๋ง๊ฒ ๋ณด์ ๋ฉ๋๋ค. ์ด ํผ๋๋ฐฑ์ ๋ฐ๋ณต์ ์ผ๋ก ์ํ๋์ด ์ ์ง์ ์ธ ํน์ง ๊ฐ์ ์ ๋ฌ์ฑํฉ๋๋ค.
- Task Aligned Assignment (TAL): YOLOv8 ์คํ์ผ์ TAL์ ๊ตฌํํ์ฌ ๋ ์ ํํ ์์ธก-์ ๋ต ํ ๋น์ ํตํด ํ์ต ํจ์จ์ฑ๊ณผ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. ํด๋์ค ์ ์์ IoU ์งํ๋ฅผ ๊ฒฐํฉํ์ฌ ํ๋ณด ์ต์ปค๋ฅผ ํ๊ฐํ๊ณ ํ ๋นํฉ๋๋ค.
- Mosaic Augmentation: 4์ฅ์ ์ด๋ฏธ์ง๋ฅผ ์กฐํฉํ์ฌ ํ์ต ๋ฐ์ดํฐ์ ๋ค์์ฑ์ ํ๋ณดํ๊ณ , ์๊ท๋ชจ ๊ฐ์ฒด ํ์ง ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- Multi-Scale Detection: PANLite ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ P3, P4, P5 ๋ค์ค ์ค์ผ์ผ ํผ์ฒ๋ฅผ ์์ฑํ๊ณ , YOLOHeadLite๋ฅผ ํตํด ๊ฐ ์ค์ผ์ผ์์ ํด๋์ค, ์ ๋ขฐ๋, ๋ฐ์ด๋ฉ๋ฐ์ค ์์ธก์ ์ํํฉ๋๋ค.
์
๋ ฅ ์ด๋ฏธ์ง (์: 640ร640)
โ
โผ
โ AnomalyAwareStem (CNN)
โโ 3๊ฐ์ conv-bn-act ๋ธ๋ก (stride=2) โ (B, Cs, H/8, W/8)
โโ ๊ณ ์ฃผํ ํน์ง ์ถ์ถ: ์๋ณธ - Gaussian blur โ ๊ณ ์ฃผํ ์ฑ๋ถ ๋ถ๋ฆฌ
โโ ๋ก์ปฌ ํน์ง๊ณผ ๊ณ ์ฃผํ ํน์ง ์ตํฉ
โโ ๊ฐ์์ฑ ๋งต(visibility map) ์์ฑ (์ต์
)
โ
โผ
โก ViT Dimension Adapter
โโ CNN ํน์ง์ ์ฑ๋์ Cs โ ViT ์๋ฒ ๋ฉ์ฐจ์ D๋ก 1ร1 conv
โโ BatchNorm + SiLU ์ ์ฉ
โ
โผ
โข Positional Embedding (Dynamic)
โโ Timm ์ฌ์ ํ์ต ๋ชจ๋ธ์ 2D ๊ณต๊ฐ ์ ๋ณด๋ฅผ ํ์ฌ ์
๋ ฅ ํฌ๊ธฐ๋ก ๋ณด๊ฐ
โโ Bicubic interpolation์ ์ฌ์ฉํ ๋์ ๋ฆฌ์ฌ์ด์ง
โ
โผ
โฃ Pretrained ViT Encoder (from Timm)
โโ ์ฌ์ ํ์ต๋ ViT ๋ธ๋ก (Transformer blocks)
โโ Multihead Self-Attention์ผ๋ก ์ ์ญ ๋ฌธ๋งฅ ํ์ต
โโ ImageNet-21k์์ ์ฌ์ ํ์ต๋ ๋ชจ๋ธ ์ฌ์ฉ
โโ Fine-tuning์ฉ์ผ๋ก ImageNet-1k ๋ฐ์ดํฐ๋ก ํ์ธํ๋๋จ
โโ ์ถ๋ ฅ ํ ํฐ (B, N, D)
โ
โผ
โค FeedbackAdapter
โโ ViT ํ ํฐ์ reshape โ (B, D, Ht, Wt)
โโ 1ร1 conv๋ก (ฮณ, ฮฒ) ์์ฑ (c_stem * 2 ์ฑ๋)
โโ CNN ์ถ๋ ฅ ๋ณด์ :
f_fb = f_stem ร (1 + tanh(ฮณ)) + ฮฒ
โโ CNN์ ์ง์ญ ํน์ง์ ViT๊ฐ ๋ณธ ์ ์ญ ๋ฌธ๋งฅ์ผ๋ก ์ฌ์กฐ์
โ
โผ
โฅ Neck Dimension Adapter
โโ ๋ณด์ ๋ f_fb๋ฅผ Neck ์ฐจ์์ผ๋ก ์ฌ๋งคํ (์: 128โ256)
โ
โผ
โฆ ๋ฐ๋ณต (iters ์ง์ ํ์๋งํผ)
โโ ViT ์ฒ๋ฆฌ โ Feedback ์ ์ฉ (detach_feedback ์ต์
)
โโ Neck/Head ์์ธก
โโ ๋ค์ ๋ฐ๋ณต์ ์ํ ํ ํฐ ์ค๋น
โ
โผ
โง PANLite (neck)
โโ P3 (80ร80), P4 (40ร40), P5 (20ร20) ๋ฉํฐ์ค์ผ์ผ ์์ฑ
โโ top-down & bottom-up ํผ์ฒ ์ตํฉ ๊ตฌ์กฐ
โโ ์ต์ข
๋ฉํฐ์ค์ผ์ผ ํผ์ฒ๋งต ๋ฐํ
โ
โผ
โจ YOLOHeadLite
โโ P3, P4, P5 ๊ฐ๊ฐ์ ๋ํด (cls, obj, box) ์์ธก
โโ 3x3 conv stem + 1x1 conv head ๋ธ๋ก
โโ obj ๋ ์ด์ด bias ์ด๊ธฐ๊ฐ: -4.59 (confidence ๋ง์ถค)
โโ ๊ฐ ์ค์ผ์ผ์์ ํด๋์ค, ์ ๋ขฐ๋, ๋ฐ์ด๋ฉ๋ฐ์ค ์์ธก
โ
โผ
โฉ Task Aligned Assignment (TAL) ์์ค
โโ ํด๋์ค ์ ์์ IoU ์งํ๋ฅผ ๊ฒฐํฉ (s^alpha * u^beta)
โโ Top-k ํ๋ณด ์ ํ ๋ฐ ๊ฐ์ฅ ๋ง์ด ๊ฒน์น๋ GT ํฌํจ ๋ณด์ฅ
โโ Anchor-free ๋ฐฉ์์ด ์๋ Anchor-based ๋ฐฉ์
โโ ๋ค์ค ์ค์ผ์ผ ์์ธก ํตํฉ ์์ค
โ
โผ
์ถ๋ ฅ
โโ ์์ธก: [(cls,obj,box)_P3, P4, P5]
โโ ์ค๊ฐ feature: {'P3', 'P4', 'P5', 'V'}
- in_ch: 3 (์ ๋ ฅ ์ฑ๋ ์)
- stem_base: 64 (AnomalyAwareStem ๊ธฐ๋ณธ ์ฑ๋ ์ - Advanced ๋ชจ๋ธ์์๋ ์ฆ๊ฐ)
- embed_dim: 768 (ViT Base ์๋ฒ ๋ฉ ์ฐจ์ - ์ฌ์ ํ์ต ๋ชจ๋ธ์ ๋ฐ๋ผ ์กฐ์ )
- vit_model_name: 'vit_base_patch16_224.augreg_in21k_ft_in1k' (Timm ์ฌ์ ํ์ต ๋ชจ๋ธ๋ช )
- num_classes: 3 (ํด๋์ค ์)
- iters: 1 (๋ฐ๋ณต ํ์ - Notebook์์๋ Safe Mode๋ก 1๋ก ์ค์ )
- detach_feedback: False (ํผ๋๋ฐฑ ํ ํฐ detach ์ฌ๋ถ - Advanced ๋ชจ๋ธ์์๋ False)
- img_size: 512 (์ ๋ ฅ ์ด๋ฏธ์ง ํฌ๊ธฐ)
- Python >= 3.8
- torch >= 2.0 (Flash Attention, torch.compile ์ง์)
- torchvision
- timm (์ฌ์ ํ์ต ViT ๋ชจ๋ธ์ฉ)
- numpy
- opencv-python
- albumentations (๋ฐ์ดํฐ ์ฆ๊ฐ์ฉ)
- tqdm
- pillow
- matplotlib
- roboflow (๋ฐ์ดํฐ์ ๋ค์ด๋ก๋์ฉ)
advanced_model.ipynb ๊ธฐ์ค์ด๋ฉฐ, ๋ฐ์ดํฐ ์ฆ๊ฐ, ํ์ฒ๋ฆฌ ๋ฑ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
Advanced ๋ชจ๋ธ ํ์ต์ YOLOv8 ์คํ์ผ์ Task Aligned Assignment (TAL) ์์ค ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์งํ๋ฉ๋๋ค:
- ํด๋์ค ์์ธก: Task Aligned Assignment ๊ธฐ๋ฐ BCE ์์ค
- ์ ๋ขฐ๋ ์์ธก: TAL ๊ธฐ๋ฐ ํ ๋น์ผ๋ก ๋์ฒด (Objectness ํ์ต ์์)
- ๋ฐ์ด๋ฉ๋ฐ์ค ์์ธก: GIoU Loss (1 - IoU)
๊ฐ ์ค์ผ์ผ(P3, P4, P5)์์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ธก์ ์ํํ๊ณ , Task Aligned Assignment๋ฅผ ํตํด ์์ธก-์ ๋ต ํ ๋น์ ์ต์ ํํ ํ ์์ค์ ๊ณ์ฐํฉ๋๋ค.
ํ์ต ์ค์ :
- ์ตํฐ๋ง์ด์ : AdamW (lr=2e-5, weight_decay=0.05) - Notebook "Safe Mode" ์ค์
- ์ํฌํฌ ์: 15 (์ ์ฒด ํ์ต์ ์ํด 50~100 ํ์)
- ๋ฐฐ์น ํฌ๊ธฐ: 4 (VRAM ์ ์ฝ์ ์ํด ๊ฐ์)
- AMP (Automatic Mixed Precision): ํ์ฑํ (torch.amp.autocast, float16)
- Gradient Scaler: torch.cuda.amp.GradScaler
- num_workers: 2
- pin_memory: True
- Gradient Clipping: max_norm=0.5 (ViT ํ์ต์์ ์ค์)
- Gradient Accumulation: 4์คํ (์ค์ ๋ฐฐ์น ํฌ๊ธฐ 16์ผ๋ก ์ฆ๊ฐ)
- Learning Rate Scheduler: OneCycleLR (max_lr=2e-5, pct_start=0.3)
torch.compile ์ง์:
- torch.compile: ๋ชจ๋ธ ์ปดํ์ผ ์ต์ (PyTorch 2.0+ ์ง์)
- Flash Attention: torch.nn.functional.scaled_dot_product_attention ์ฌ์ฉ
ํ์ต๋ ๋ชจ๋ธ์ mAP@0.5 ์งํ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ฆ ๋ฐ ํ ์คํธ ๋ฐ์ดํฐ์ ์์ ํ๊ฐ๋ฉ๋๋ค.
ํ๊ฐ ์งํ ๋ฐ ๋ฐฉ๋ฒ:
- mAP@0.5: 0.5 IoU ์๊ณ๊ฐ ๊ธฐ์ค ํ๊ท ์ ๋ฐ๋
- Confidence threshold: 0.001 (TAL์์๋ ๋ฎ์ ์๊ณ๊ฐ์ด ์ผ๋ฐ์ )
- NMS IoU threshold: 0.5
- ํด๋์ค ์: 3 (num_classes ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ผ ์กฐ์ ๊ฐ๋ฅ)
- ์ด๋ฏธ์ง ํฌ๊ธฐ: 640 (img_size ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ผ ์กฐ์ ๊ฐ๋ฅ)
- ์์ธก ๋์ฝ๋ฉ: NMS (Non-Maximum Suppression) ์ ์ฉ
- ์ฑ๋ฅ ์ ์ฅ: ์ต๊ณ ์ฑ๋ฅ ๋ชจ๋ธ์ 'hybrid_two_way_best.pt'๋ก ์ ์ฅ
ํ๋ก์ ํธ ์ ํ: ์ ์ฅ ์ธ์ ์ฐ๊ตฌ / ๊ฐ์ฒด ํ์ง ํ๋ ์์ํฌ: PyTorch ๋ชจ๋ธ ๊ตฌ์กฐ: Frozen SAM Encoder โ FPN-like Adapter โ Detection Heads ๋ชฉํ: Segment Anything Model(SAM)์ ๊ฐ๋ ฅํ ์ฌ์ ํ์ต ํน์ง ์ถ์ถ๊ธฐ๋ฅผ ๊ฐ์ฒด ํ์ง(Object Detection)์ ์ ์ฉํ์ฌ, ์ ์ ํ์ต ๋น์ฉ์ผ๋ก ๋์ ์ฑ๋ฅ์ ๋ฌ์ฑ. ์ฌ์ฉํ์ผ: sam_model.ipynb ๋ชจ๋ธ ๊ตฌ์กฐ ํน์ง: SAM์ ViT-B ์ธ์ฝ๋๋ฅผ ๋๊ฒฐ(freeze)ํ์ฌ ๋ฐฑ๋ณธ์ผ๋ก ์ฌ์ฉํ๊ณ , ๊ฐ๋ฒผ์ด ์ด๋ํฐ์ ํ์ง ํค๋๋ง ํ์ต.
Segment Anything Model(SAM)์ ๋๋ผ์ด ์ ๋ก์ท(zero-shot) ๋ถํ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ๋ฉฐ ๊ฐ๋ ฅํ ์๊ฐ์ ํน์ง์ ํ์ตํ์์ ์ ์ฆํ์ต๋๋ค. ๋ณธ ํ๋ก์ ํธ๋ ์ด SAM์ ์ธ์ฝ๋๋ฅผ ํน์ง ์ถ์ถ๊ธฐ๋ก ํ์ฉํ์ฌ ๊ฐ์ฒด ํ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ํฉ๋๋ค. ๋ฐฑ๋ณธ ์ ์ฒด๋ฅผ ์ฌํ์ตํ๋ ๋์ , ์ฌ์ ํ์ต๋ SAM์ ๊ฐ์ค์น๋ ๊ณ ์ ํ ์ฑ ๊ฐ๋จํ FPN ์คํ์ผ์ ์ด๋ํฐ์ ํ์ง ํค๋๋ง์ ์ถ๊ฐํ์ฌ ํ์ตํจ์ผ๋ก์จ ํจ์จ์ฑ๊ณผ ์ฑ๋ฅ์ ๋์์ ์ถ๊ตฌํฉ๋๋ค.
- Frozen Backbone: SAM์ ์ด๋ฏธ์ง ์ธ์ฝ๋(ViT-B)๋ฅผ ๋๊ฒฐํ์ฌ ์ฌ์ฉํ์ฌ, ๊ฑฐ๋ํ ๋ชจ๋ธ์ ํ์ตํ๋ ๋ฐ ํ์ํ ๋ง๋ํ ๊ณ์ฐ ๋ฆฌ์์ค๋ฅผ ์ ์ฝํ๊ณ ๊ณผ์ ํฉ(overfitting)์ ๋ฐฉ์งํฉ๋๋ค.
- Lightweight Adapter: SAM ์ธ์ฝ๋๊ฐ ์ถ๋ ฅํ ๋จ์ผ ์ค์ผ์ผ์ ํน์ง ๋งต์ ์ ๋ ฅ๋ฐ์, ๊ฐ๋จํ ์ปจ๋ณผ๋ฃจ์ ๊ณผ ์ ์ํ๋ง์ ํตํด FPN(Feature Pyramid Network)๊ณผ ์ ์ฌํ ๋ค์ค ์ค์ผ์ผ(P3, P4, P5) ํน์ง์ ์์ฑํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ํ์งํ ์ ์์ต๋๋ค.
- Simple Detection Head: ๊ฐ ์ค์ผ์ผ์ ํน์ง ๋งต์ ๋ํด 1x1 ์ปจ๋ณผ๋ฃจ์ ์ผ๋ก ๊ตฌ์ฑ๋ ๊ฐ๋จํ ํ์ง ํค๋๋ฅผ ์ ์ฉํ์ฌ ํด๋์ค, ๊ฐ์ฒด ์กด์ฌ ์ฌ๋ถ(objectness), ๊ทธ๋ฆฌ๊ณ ๋ฐ์ด๋ฉ ๋ฐ์ค๋ฅผ ์์ธกํฉ๋๋ค. ๊ตฌ์กฐ๊ฐ ๊ฐ๋จํ์ฌ ํ์ต์ด ๋น ๋ฆ ๋๋ค.
์
๋ ฅ ์ด๋ฏธ์ง (1024x1024)
โ
โผ
โ SAM Image Encoder (vit_b, Frozen)
โโ ๊ทธ๋๋์ธํธ ๊ณ์ฐ ๋นํ์ฑํ (torch.no_grad())
โโ ํน์ง ๋งต ์ถ๋ ฅ (B, 256, 64, 64) โ P4์ ์
๋ ฅ์ผ๋ก ์ฌ์ฉ๋จ
โ
โผ
โก FPN-like Adapter (ํ์ต ๋์)
โโ P4 ๊ฒฝ๋ก: SAM ํน์ง์ ConvNormAct ์ ์ฉ โ P4 (B, 256, 64, 64)
โโ P3 ๊ฒฝ๋ก: P4๋ฅผ ์
์ํ๋ง(Upsample) โ ConvNormAct ์ ์ฉ โ P3 (B, 256, 128, 128)
โโ P5 ๊ฒฝ๋ก: P4์ ConvNormAct(stride=2) ์ ์ฉ โ P5 (B, 256, 32, 32)
โ
โผ
โข Detection Heads (ํ์ต ๋์)
โโ P3, P4, P5 ๊ฐ ์ค์ผ์ผ์ 1x1 Conv ํค๋ ์ ์ฉ
โโ ๊ฐ ํค๋๋ (ํด๋์ค ์ + 5) ์ฑ๋์ ์์ธก (ํด๋์ค, ์ ๋ขฐ๋, ๋ฐ์ค ์ขํ)
โ
โผ
โฃ ์์ค ๊ณ์ฐ (ComputeLoss)
โโ ๋ฐ์ค ์์ธก: IoU Loss
โโ ํด๋์ค/์ ๋ขฐ๋ ์์ธก: BCEWithLogitsLoss
โโ YOLO์ ์ ์ฌํ ๋ฐฉ์์ ํ๊ฒ ํ ๋น ๋ฐ ์์ค ๊ณ์ฐ
- SAM checkpoint: "sam_vit_b_01ec64.pth"
- num_classes: 3
- img_size: 1024
- batch_size: 4
- torch, torchvision
- opencv-python, numpy, matplotlib
- roboflow (๋ฐ์ดํฐ์ )
- segment-anything (SAM ๋ชจ๋ธ)
- torchmetrics (mAP ๊ณ์ฐ)
- ์์ค ํจ์: IoU Loss(๋ฐ์ค)์ BCE Loss(ํด๋์ค/์ ๋ขฐ๋)๋ฅผ ๊ฒฐํฉํ ์ปค์คํ ์์ค
- ์ตํฐ๋ง์ด์ : AdamW (lr=1e-4)
- ํ๊ฐ ์งํ: torchmetrics๋ฅผ ์ฌ์ฉํ mAP@0.5
- ํ์ต ์ ๋ต: SAM ๋ฐฑ๋ณธ์ ๋๊ฒฐํ๊ณ ์ด๋ํฐ์ ํค๋๋ง ํ์ต.
ํ๋ก์ ํธ ์ ํ: ์ ์ฅ ์ธ์ ์ฐ๊ตฌ / ๊ฐ์ฒด ํ์ง ํ๋ ์์ํฌ: PyTorch, Ultralytics YOLOv8 ๋ชจ๋ธ ๊ตฌ์กฐ: YOLOv8m Backbone + CBAM โ YOLOv8 PAN Head โ YOLOv8 Detect Head ๋ชฉํ: YOLOv8 ์ํคํ ์ฒ์ CBAM(Convolutional Block Attention Module)์ ํตํฉํ์ฌ, ์ฑ๋๊ณผ ๊ณต๊ฐ์ ํน์ง์ ์ค์๋๋ฅผ ํ์ตํ๊ณ ์ ๋ฐ์ ์ธ ํ์ง ์ฑ๋ฅ์ ํฅ์. ์ฌ์ฉํ์ผ: yolo_cbam_fix.ipynb ๋ชจ๋ธ ๊ตฌ์กฐ ํน์ง: Ultralytics ํ๋ ์์ํฌ๋ฅผ ํ์ฉํ์ฌ ์ปค์คํ ๋ชจ๋(CBAM)์ YOLOv8m ๋ฐฑ๋ณธ์ ์ฃผ์ . YAML ํ์ผ์ ํตํด ์ํคํ ์ฒ๋ฅผ ์ ์ฐํ๊ฒ ์ ์.
YOLOv8์ ๋น ๋ฅธ ์๋์ ๋์ ์ ํ๋๋ฅผ ์๋ํ๋ ๊ฐ์ฒด ํ์ง ๋ชจ๋ธ์ด์ง๋ง, ๋ชจ๋ ํน์ง์ ๋๋ฑํ๊ฒ ์ฒ๋ฆฌํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. CBAM์ ์ฑ๋ ์ฃผ์(Channel Attention)์ ๊ณต๊ฐ ์ฃผ์(Spatial Attention) ๋ฉ์ปค๋์ฆ์ ์์ฐจ์ ์ผ๋ก ์ ์ฉํ์ฌ, "๋ฌด์์" ๋ณผ์ง(์ฑ๋)์ "์ด๋์" ์ง์คํ ์ง(๊ณต๊ฐ)๋ฅผ ๋ชจ๋ธ์ด ์ค์ค๋ก ํ์ตํ๊ฒ ํฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ YOLOv8 ๋ฐฑ๋ณธ์ ์ฃผ์ ํน์ง ์ถ์ถ ๋จ๊ณ ์ดํ์ CBAM์ ์ ์ฉํ์ฌ ํน์ง ํํ๋ ฅ์ ๊ฐํํ๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ํ์ง ์ ํ๋๋ฅผ ๋์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
- Dynamic Module Injection: Ultralytics YOLOv8์ ์ ์ฐ์ฑ์ ํ์ฉํ์ฌ,
CBAM_Universal์ด๋ผ๋ ์ปค์คํ ๋ชจ๋์ ํ์ด์ฌ ์ฝ๋ ๋ ๋ฒจ์์ ์ ์ํ๊ณ ์์คํ ์ ๋ฑ๋กํฉ๋๋ค. ์ดํ YAML ์ค์ ํ์ผ์ ํตํด ์ํ๋ ์์น์ CBAM ๋ชจ๋์ ๋์ ์ผ๋ก ์ฝ์ ํฉ๋๋ค. - Attention on Key Features: ๋ฐฑ๋ณธ(Backbone)์์ ๋ค์ด์ํ๋ง์ด ์ผ์ด๋๋ ์ธ ๊ตฐ๋ฐ์ C2f ๋ธ๋ก ๋ฐ๋ก ๋ค์์ CBAM ๋ชจ๋์ ๋ฐฐ์นํ์ฌ, ํด์๋๊ฐ ๋ฐ๋๊ธฐ ์ง์ ์ ํน์ง ๋งต์ ์ ์ (refine)ํ๋๋ก ์ค๊ณํ์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๊ธฐ ๋ค๋ฅธ ์ค์ผ์ผ์ ํน์ง๋ค์ด ์ดํ ์ ๋ฉ์ปค๋์ฆ์ ํํ์ ๋ฐ๋๋ก ํฉ๋๋ค.
- Multi-Stage Training: ์ฒ์์๋ ๋น๊ต์ ์์ ์ด๋ฏธ์ง ํฌ๊ธฐ(640x640)๋ก ๋ชจ๋ธ์ ์์ ์ ์ผ๋ก ํ์ต์ํจ ํ, ๋ ํฐ ์ด๋ฏธ์ง ํฌ๊ธฐ(800x800, 1280x1280)๋ก ์ ์ง์ ์ผ๋ก ํ์ต์ ์ด์ด๊ฐ๋๋ค. ์ด๋ ๋ชจ๋ธ์ด ๋ค์ํ ์ค์ผ์ผ์ ๊ฐ์ฒด์ ๋ ์ ์ ์ํ๋๋ก ๋๋ ํจ๊ณผ์ ์ธ fine-tuning ์ ๋ต์ ๋๋ค.
์
๋ ฅ ์ด๋ฏธ์ง (640, 800, 1280 ๋ฑ)
โ
โผ
โ YOLOv8m Backbone (CBAM ์ฝ์
)
โโ ...
โโ C2f ๋ธ๋ก (idx 4)
โโ CBAM ๋ชจ๋ 1 (์ฑ๋ 192)
โโ ...
โโ C2f ๋ธ๋ก (idx 7)
โโ CBAM ๋ชจ๋ 2 (์ฑ๋ 384)
โโ ...
โโ C2f ๋ธ๋ก (idx 10)
โโ CBAM ๋ชจ๋ 3 (์ฑ๋ 576)
โโ SPPF
โ
โผ
โก YOLOv8 PAN Head
โโ Top-down & Bottom-up ํน์ง ์ตํฉ
โโ ๋ค์ค ์ค์ผ์ผ ํน์ง๋งต (P3, P4, P5) ์์ฑ
โ
โผ
โข YOLOv8 Detect Head
โโ ๊ฐ ์ค์ผ์ผ์์ (ํด๋์ค, ๋ฐ์ค) ์์ธก
โโ Ultralytics ํ๋ ์์ํฌ์ ๋ด์ฅ ์์ค ํจ์ ์ฌ์ฉ
- base_model: YOLOv8m
- custom_yaml: yolov8m_cbam_real_final.yaml
- img_size: 640 -> 800 -> 1280 (๋จ๊ณ์ ํ์ต)
- optimizer: AdamW
- ultralytics (YOLOv8 ํ๋ ์์ํฌ)
- roboflow (๋ฐ์ดํฐ์ )
- pyyaml (YAML ์ค์ ํ์ผ ์์ฑ)
- torch, torchvision
- ์์ค ํจ์: YOLOv8 ๊ธฐ๋ณธ ์์ค ํจ์ (Box: CIoU Loss, Cls: VFL, DFL)
- ์ตํฐ๋ง์ด์ : AdamW
- ํ์ต ์ ๋ต: ์ฌ์ ํ์ต๋
yolov8m.pt๊ฐ์ค์น์์ ์์. 640x640 ํฌ๊ธฐ๋ก 1์ฐจ ํ์ต ํ, 800x800, 1280x1280 ํฌ๊ธฐ๋ก 2, 3์ฐจ ํ์ต ์งํ. - ํ๊ฐ ์งํ: mAP50-95, mAP50