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

์ตœ๊ณ ์˜ ํ›ˆ๋ จ ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•œ ํŒ

์ด ๊ฐ€์ด๋“œ๋Š” 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 ๊ตฌ๋ฌธ ๋ถ„์„๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‹œ๋Œ€. 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/).

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค ๐Ÿ€ ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”!



์ƒ์„ฑ๋จ 2023-11-12, ์—…๋ฐ์ดํŠธ๋จ 2024-01-12
์ž‘์„ฑ์ž: glenn-jocher (3)

๋Œ“๊ธ€