์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

์ตœ์ƒ์˜ ๊ต์œก ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•œ ํŒ

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” YOLOv5 ๐Ÿš€์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ๊ณ ์˜ ๋งต๊ณผ ํ›ˆ๋ จ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ์ถฉ๋ถ„ํžˆ ํฌ๊ณ  ๋ ˆ์ด๋ธ”์ด ์ž˜ ์ง€์ •๋˜์–ด ์žˆ๋‹ค๋ฉด ๋ชจ๋ธ์ด๋‚˜ ํ•™์Šต ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์— ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์ง€ ๋ชปํ•œ๋‹ค๋ฉด ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ๊ณ„๊ฐ€ ์žˆ์ง€๋งŒ, ๋ณ€๊ฒฝ์„ ๊ณ ๋ คํ•˜๊ธฐ ์ „์— ํ•ญ์ƒ ๋ชจ๋“  ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ๋จผ์ € ํ›ˆ๋ จํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์„ฑ๋Šฅ ๊ธฐ์ค€์„ ์„ ์„ค์ •ํ•˜๊ณ  ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ต์œก ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ๋Œ€ํ•œ์˜ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ ํ”Œ๋กฏ(ํ›ˆ๋ จ ์†์‹ค, ๋ฐธ ์†์‹ค, P, R, mAP), PR ๊ณก์„ , ํ˜ผ๋™ ํ–‰๋ ฌ, ํ›ˆ๋ จ ๋ชจ์ž์ดํฌ, ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋ฐ ๋ฐ์ดํ„ฐ ์„ธํŠธ ํ†ต๊ณ„ ์ด๋ฏธ์ง€(์˜ˆ: labels.png)๋ฅผ ํฌํ•จํ•œ ์œ ์šฉํ•œ ์‘๋‹ต์„ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”. ์ด ๋ชจ๋“  ๊ฒƒ์€ project/name ๋””๋ ‰ํ† ๋ฆฌ, ์ผ๋ฐ˜์ ์œผ๋กœ yolov5/runs/train/exp.

์•„๋ž˜ YOLOv5 ๊ต์œก์—์„œ ์ตœ์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ณ ์ž ํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์ „์ฒด ๊ฐ€์ด๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์„ธํŠธ

  • ์ˆ˜์—…๋‹น ์ด๋ฏธ์ง€: ์ˆ˜์—…๋‹น 1500๊ฐœ ์ด์ƒ์˜ ์ด๋ฏธ์ง€ ๊ถŒ์žฅ
  • ํด๋ž˜์Šค๋‹น ์ธ์Šคํ„ด์Šค ์ˆ˜. ํด๋ž˜์Šค๋‹น 10000๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค(๋ ˆ์ด๋ธ”์ด ์ง€์ •๋œ ๊ฐœ์ฒด)๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ์ด๋ฏธ์ง€. ๋ฐฐํฌ๋œ ํ™˜๊ฒฝ์„ ๋Œ€ํ‘œํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฏธ์ง€์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ ๋‹ค์–‘ํ•œ ์‹œ๊ฐ„๋Œ€, ๋‹ค์–‘ํ•œ ๊ณ„์ ˆ, ๋‹ค์–‘ํ•œ ๋‚ ์”จ, ๋‹ค์–‘ํ•œ ์กฐ๋ช…, ๋‹ค์–‘ํ•œ ๊ฐ๋„, ๋‹ค์–‘ํ•œ ์†Œ์Šค(์˜จ๋ผ์ธ ์Šคํฌ๋žฉ, ๋กœ์ปฌ์—์„œ ์ˆ˜์ง‘, ๋‹ค์–‘ํ•œ ์นด๋ฉ”๋ผ) ๋“ฑ์˜ ์ด๋ฏธ์ง€๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ผ๋ฒจ ์ผ๊ด€์„ฑ. ๋ชจ๋“  ์ด๋ฏธ์ง€์— ์žˆ๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค์— ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ถ„์ ์ธ ๋ผ๋ฒจ๋ง์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ ˆ์ด๋ธ” ์ •ํ™•๋„. ๋ ˆ์ด๋ธ”์€ ๊ฐ ๊ฐœ์ฒด๋ฅผ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๋‘˜๋Ÿฌ์‹ธ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด์™€ ๊ฐ์ฒด์˜ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค ์‚ฌ์ด์— ๊ณต๋ฐฑ์ด ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ์ด๋ธ”์ด ๋ˆ„๋ฝ๋œ ๊ฐœ์ฒด๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ผ๋ฒจ ํ™•์ธ. ๋ณด๊ธฐ train_batch*.jpg ๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋ ˆ์ด๋ธ”์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ ๋ชจ์ž์ดํฌ.
  • ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€. ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋Š” ์˜คํƒ(FP)์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ์ถ”๊ฐ€๋˜๋Š” ๊ฐ์ฒด๊ฐ€ ์—†๋Š” ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. FP๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์•ฝ 0~10%์˜ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค(์ฐธ๊ณ ๋กœ COCO์˜ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋Š” ์ „์ฒด์˜ 1%์ธ 1000๊ฐœ์ž…๋‹ˆ๋‹ค). ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€์—๋Š” ๋ ˆ์ด๋ธ”์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

COCO ๋ถ„์„

๋ชจ๋ธ ์„ ํƒ

YOLOv5x ๋ฐ YOLOv5x6๊ณผ ๊ฐ™์€ ๋” ํฐ ๋ชจ๋ธ์€ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜์ง€๋งŒ, ๋” ๋งŽ์€ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ํŠธ๋ ˆ์ด๋‹์— ๋” ๋งŽ์€ CUDA ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ฆฝ๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ ๋ฐฐํฌ์˜ ๊ฒฝ์šฐ YOLOv5s/m์„, ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ์˜ ๊ฒฝ์šฐ YOLOv5l/x๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ชจ๋ธ์— ๋Œ€ํ•œ ์ „์ฒด ๋น„๊ต๋Š” README ํ‘œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

YOLOv5 ๋ชจ๋ธ

  • ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๊ฐ€์ค‘์น˜๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”. ์ค‘์†Œ๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(์˜ˆ VOC, VisDrone, ๊ธ€๋กœ๋ฒŒ ๋ฐ€). ๋ชจ๋ธ ์ด๋ฆ„์„ --weights ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์€ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ์ตœ์‹  YOLOv5 ๋ฆด๋ฆฌ์Šค.
python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”. ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(์˜ˆ COCO, ์˜ค๋ธŒ์ ํŠธ365, OIv6). ๊ด€์‹ฌ ์žˆ๋Š” ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜ YAML์„ ๋นˆ --weights '' ์ธ์ˆ˜์ž…๋‹ˆ๋‹ค:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

๊ต์œก ์„ค์ •

์ˆ˜์ •ํ•˜๊ธฐ ์ „์— ๋จผ์ € ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ํ›ˆ๋ จํ•˜์—ฌ ์„ฑ๋Šฅ ๊ธฐ์ค€์„ ์„ ์„ค์ •ํ•˜์„ธ์š”. train.py ์„ค์ •์˜ ์ „์ฒด ๋ชฉ๋ก์€ train.py argparser์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์—ํฌํฌ. 300 ์—ํฌํฌ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ธฐ์— ์˜ค๋ฒ„ํ•์ด ๋ฐœ์ƒํ•˜๋ฉด ์—ํฌํฌ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 300 ์—ํฌํฌ ํ›„์—๋„ ์˜ค๋ฒ„ํ•์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด 600, 1200 ๋“ฑ ๋” ๊ธด ์—ํฌํฌ๋กœ ํ›ˆ๋ จํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฏธ์ง€ ํฌ๊ธฐ. COCO๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ํ•ด์ƒ๋„๋กœ ํ›ˆ๋ จํ•ฉ๋‹ˆ๋‹ค. --img 640๋ฐ์ดํ„ฐ ์„ธํŠธ์— ์ž‘์€ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋” ๋†’์€ ํ•ด์ƒ๋„์—์„œ ํ›ˆ๋ จํ•˜๋ฉด ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --img 1280. ์ž‘์€ ๊ฐœ์ฒด๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ์ดํ„ฐ ์„ธํŠธ๋Š” ๊ธฐ๋ณธ ํ•ด์ƒ๋„ ๋˜๋Š” ๊ทธ ์ด์ƒ์˜ ํ•ด์ƒ๋„๋กœ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ตœ์ƒ์˜ ์ถ”๋ก  ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --img ์—์„œ ํ›ˆ๋ จํ•˜๋Š” ๊ฒฝ์šฐ์™€ ๊ฐ™์ด, ์ฆ‰ --img 1280 ์—์„œ๋„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๊ฐ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. --img 1280.
  • ๋ฐฐ์น˜ ํฌ๊ธฐ. ๊ฐ€์žฅ ํฐ --batch-size ๋กœ ์„ค์ •ํ•˜์„ธ์š”. ๋ฐฐ์น˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์œผ๋ฉด ๋ฐฐ์น˜ ํ‘œ์ค€ ํ†ต๊ณ„๊ฐ€ ์ œ๋Œ€๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ. ๊ธฐ๋ณธ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋Š” hyp.scratch-low.yaml. ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜์ •์„ ๊ณ ๋ คํ•˜๊ธฐ ์ „์— ๋จผ์ € ๊ธฐ๋ณธ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ํ›ˆ๋ จํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ฆ๊ฐ• ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋Š˜๋ฆฌ๋ฉด ๊ณผ์ ํ•ฉ์ด ๊ฐ์†Œํ•˜๊ณ  ์ง€์—ฐ๋˜๋ฏ€๋กœ ํ›ˆ๋ จ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ณ  ์ตœ์ข… mAP๊ฐ€ ๋†’์•„์ง‘๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†์‹ค ๊ตฌ์„ฑ ์š”์†Œ ์ด๋“ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ์†Œ hyp['obj'] ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ์†์‹ค ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ณผ์ ํ•ฉ์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ์ž๋™ํ™”๋œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ์ง„ํ™” ํŠœํ† ๋ฆฌ์–ผ.

์ถ”๊ฐ€ ์ฝ๊ธฐ

๋” ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ๋ชจ๋“  ML ์˜์—ญ์— ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ ์šฉ๋˜๋Š” ํ›ˆ๋ จ์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ์•„์ด๋””์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” Karpathy์˜ '์‹ ๊ฒฝ๋ง ํ›ˆ๋ จ ๋ ˆ์‹œํ”ผ'๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”( https://karpathy.github.io/2019/04/25/recipe/).

ํ–‰์šด์„ ๋นŒ๋ฉฐ ๋‹ค๋ฅธ ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”!



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (4), Burhan-Q (1)

๋Œ“๊ธ€