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

์ผ๋ฐ˜์ ์ธ YOLO ๋ฌธ์ œ ํ•ด๊ฒฐ

YOLO ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ ์ด๋ฏธ์ง€

์†Œ๊ฐœ

์ด ๊ฐ€์ด๋“œ๋Š” Ultralytics ํ”„๋กœ์ ํŠธ์—์„œ YOLOv8 ๋กœ ์ž‘์—…ํ•˜๋Š” ๋™์•ˆ ๋ฐœ์ƒํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ข…ํ•ฉ์ ์ธ ์•ˆ๋‚ด์„œ์ž…๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์ง€์นจ์„ ๋”ฐ๋ฅด๋ฉด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ถˆํ•„์š”ํ•œ ์ง€์—ฐ ์—†์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ

์„ค์น˜ ์˜ค๋ฅ˜

์„ค์น˜ ์˜ค๋ฅ˜๋Š” ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฒ„์ „, ์ข…์†์„ฑ ๋ˆ„๋ฝ, ์ž˜๋ชป๋œ ํ™˜๊ฒฝ ์„ค์ • ๋“ฑ ๋‹ค์–‘ํ•œ ์›์ธ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”:

  • ๊ถŒ์žฅ๋˜๋Š” Python 3.8 ์ด์ƒ์„ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค.

  • PyTorch (1.8 ์ด์ƒ)์˜ ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ์ถฉ๋Œ์„ ํ”ผํ•˜๋ ค๋ฉด ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • ๊ณต์‹ ์„ค์น˜ ๊ฐ€์ด๋“œ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ๋”ฐ๋ผํ•˜์„ธ์š”.

๋˜ํ•œ ์‚ฌ์šฉ์ž๋“ค์ด ํ”ํžˆ ๊ฒช๋Š” ๋ช‡ ๊ฐ€์ง€ ์„ค์น˜ ๋ฌธ์ œ์™€ ๊ทธ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค:

  • ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ค๋ฅ˜ ๋˜๋Š” ์ข…์†์„ฑ ๋ฌธ์ œ - YOLOv8 ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋™์•ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ข…์†์„ฑ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋‹จ๊ณ„๋ฅผ ๊ณ ๋ คํ•˜์„ธ์š”:

    • ์ƒˆ๋กœ ์„ค์น˜: ์ƒˆ๋กœ ์„ค์น˜ํ•˜๋ฉด ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Ultralytics ์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ๋กœ ์ธํ•ด ํŒŒ์ผ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋‚˜ ๊ธฐ๋Šฅ์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์ •๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค: ์ตœ์‹  ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ด์ „ ๋ฒ„์ „์€ ์ตœ์‹  ์—…๋ฐ์ดํŠธ์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์•„ ์ž ์žฌ์ ์ธ ์ถฉ๋Œ์ด๋‚˜ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์ข…์†์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค: ๋ชจ๋“  ํ•„์ˆ˜ ์ข…์†์„ฑ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์น˜๋˜์–ด ์žˆ๊ณ  ํ˜ธํ™˜๋˜๋Š” ๋ฒ„์ „์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    • ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๊ฒ€ํ† : ์ฒ˜์Œ์— ์ด์ „ ๋ฒ„์ „์„ ๋ณต์ œํ•˜๊ฑฐ๋‚˜ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ, ์ค‘์š”ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ตฌ์กฐ๋‚˜ ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. ํ•ญ์ƒ ๊ณต์‹ ๋ฌธ์„œ๋‚˜ ๋ณ€๊ฒฝ ๋กœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํŒŒ์•…ํ•˜์„ธ์š”.

    • ์›ํ™œํ•˜๊ณ  ์˜ค๋ฅ˜ ์—†๋Š” ๊ฒฝํ—˜์„ ์œ„ํ•ด์„œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ข…์†์„ฑ์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  • GPU์—์„œ YOLOv8 ์‹คํ–‰ - GPU์—์„œ YOLOv8 ์‹คํ–‰์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋‹จ๊ณ„๋ฅผ ๊ณ ๋ คํ•˜์„ธ์š”:

    • CUDA ํ˜ธํ™˜์„ฑ ๋ฐ ์„ค์น˜ ํ™•์ธ: GPU๊ฐ€ CUDA์™€ ํ˜ธํ™˜๋˜๊ณ  CUDA๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Use the nvidia-smi ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ NVIDIA GPU ๋ฐ CUDA ๋ฒ„์ „ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • PyTorch ๋ฐ CUDA ํ†ตํ•ฉ ํ™•์ธ: PyTorch ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ CUDA๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. import torch; print(torch.cuda.is_available()) ๋ฅผ Python ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. 'True'๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด PyTorch ์ด CUDA๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    • ํ™˜๊ฒฝ ํ™œ์„ฑํ™”: ํ•„์š”ํ•œ ๋ชจ๋“  ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ์˜ฌ๋ฐ”๋ฅธ ํ™˜๊ฒฝ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    • ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ: ์˜ค๋ž˜๋œ ํŒจํ‚ค์ง€๋Š” GPU์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜์„ธ์š”.

    • ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์„ฑ: ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์ฝ”๋“œ์— GPU ์‚ฌ์šฉ๋Ÿ‰์ด ๋ช…์‹œ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. YOLOv8 ์—์„œ ์„ค์ • ๋˜๋Š” ๊ตฌ์„ฑ์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ ๊ต์œก ๋ฌธ์ œ

์ด ์„น์…˜์—์„œ๋Š” ๊ต์œก ์ค‘์— ์ง๋ฉดํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์™€ ๊ทธ์— ๋Œ€ํ•œ ์„ค๋ช… ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์„ค์ • ํ™•์ธ

์ด์Šˆ: ๊ตฌ์„ฑ ์„ค์ •์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .yaml ํŒŒ์ผ์ด ๋ชจ๋ธ ํ•™์Šต ์ค‘์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜: ๊ตฌ์„ฑ ์„ค์ •์˜ .yaml ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. model.train() ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด๋Ÿฌํ•œ ์„ค์ •์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”:

  • ๊ฒฝ๋กœ๊ฐ€ .yaml ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฝ๋กœ๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .yaml ํŒŒ์ผ์„ data ์ธ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ model.train()๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค:
model.train(data='/path/to/your/data.yaml', batch=4)

๋‹ค์ค‘ GPU๋กœ ํ›ˆ๋ จ ๊ฐ€์†ํ™”

๋ฌธ์ œ: ๋‹จ์ผ GPU์—์„œ๋Š” ํŠธ๋ ˆ์ด๋‹ ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ GPU๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค ์†๋„๋ฅผ ๋†’์ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜: ๋ฐฐ์น˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๋ฉด ํ›ˆ๋ จ ์†๋„๊ฐ€ ๋นจ๋ผ์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ GPU ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ GPU๋กœ ํ›ˆ๋ จ ์†๋„๋ฅผ ๋†’์ด๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”:

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ GPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • .yaml ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•  GPU ์ˆ˜(์˜ˆ: gpus)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค: 4.

  • ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ์˜ GPU๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๋ ค๋ฉด ๋ฐฐ์น˜ ํฌ๊ธฐ๋ฅผ ์ ์ ˆํžˆ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.

  • ์—ฌ๋Ÿฌ GPU๋ฅผ ํ™œ์šฉํ•˜๋„๋ก ํ›ˆ๋ จ ๋ช…๋ น์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค:

# Adjust the batch size and other settings as needed to optimize training speed
model.train(data='/path/to/your/data.yaml', batch=32, multi_scale=True)

์ง€์†์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง ๋งค๊ฐœ๋ณ€์ˆ˜

์ด์Šˆ: ์†์‹ค๊ณผ ๋ณ„๋„๋กœ ํ›ˆ๋ จ ์ค‘์— ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜: ์†์‹ค์€ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ์ง€ํ‘œ์ด์ง€๋งŒ, ๋ชจ๋ธ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ๋‹ค๋ฅธ ์ง€ํ‘œ๋„ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ํ›ˆ๋ จ ์ค‘์— ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ์ง€ํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ์ •๋ฐ€๋„
  • ๋ฆฌ์ฝœ
  • ํ‰๊ท  ํ‰๊ท  ์ •๋ฐ€๋„(mAP)

์ด๋Ÿฌํ•œ ๋ฉ”ํŠธ๋ฆญ์€ ํŠธ๋ ˆ์ด๋‹ ๋กœ๊ทธ์—์„œ ๋˜๋Š” ์‹œ๊ฐํ™”๋ฅผ ์œ„ํ•ด TensorBoard ๋˜๋Š” wandb์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”ํŠธ๋ฆญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์กฐ๊ธฐ ์ค‘์ง€๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ต์œก ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•˜๋Š” ๋„๊ตฌ

์ด์Šˆ: ๊ต์œก ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์— ๋Œ€ํ•œ ์ถ”์ฒœ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜: ๊ต์œก ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ํ…์„œ๋ณด๋“œ: TensorBoard๋Š” ์†์‹ค, ์ •ํ™•๋„ ๋“ฑ์˜ ๊ต์œก ๋ฉ”ํŠธ๋ฆญ์„ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. YOLOv8 ๊ต์œก ํ”„๋กœ์„ธ์Šค์™€ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CometComet ์€ ์‹คํ—˜ ์ถ”์  ๋ฐ ๋น„๊ต๋ฅผ ์œ„ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ํˆดํ‚ท์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฉ”ํŠธ๋ฆญ, ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ, ์‹ฌ์ง€์–ด ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๊นŒ์ง€ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. YOLO ๋ชจ๋ธ๊ณผ์˜ ํ†ตํ•ฉ๋„ ๊ฐ„๋‹จํ•˜์—ฌ ์‹คํ—˜ ์ฃผ๊ธฐ์— ๋Œ€ํ•œ ์ „์ฒด ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Ultralytics HUBUltralytics HUB ์€ YOLO ๋ชจ๋ธ ์ถ”์ ์— ํŠนํ™”๋œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜์—ฌ ๋ฉ”ํŠธ๋ฆญ, ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํŒ€๊ณผ ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ์›์Šคํ†ฑ ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. YOLO , ๋ณด๋‹ค ๋งž์ถคํ™”๋œ ์ถ”์  ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋„๊ตฌ๋Š” ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ์žฅ์ ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์„ ํƒํ•  ๋•Œ ํ”„๋กœ์ ํŠธ์˜ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GPU์—์„œ ํ›ˆ๋ จ์ด ์ง„ํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฌธ์ œ: ํŠธ๋ ˆ์ด๋‹ ๋กœ๊ทธ์˜ '์žฅ์น˜' ๊ฐ’์ด 'null'์ด๋ฉฐ, ํŠธ๋ ˆ์ด๋‹์ด GPU์—์„œ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…: 'device' ๊ฐ’์ด 'null'์ด๋ผ๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•™์Šต ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ธฐ๋ณธ ๋™์ž‘์ธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ GPU๋ฅผ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • GPU์—์„œ ํ•™์Šต์ด ์ด๋ฃจ์–ด์ง€๋„๋ก ํ•˜๋ ค๋ฉด .yaml ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ 'device' ๊ฐ’์„ GPU ์ธ๋ฑ์Šค(์˜ˆ: ์ฒซ ๋ฒˆ์งธ GPU์˜ ๊ฒฝ์šฐ '0')๋กœ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:

device: 0

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํŠธ๋ ˆ์ด๋‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง€์ •๋œ GPU์— ๋ช…์‹œ์ ์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. CPU์—์„œ ํ›ˆ๋ จํ•˜๋ ค๋ฉด 'device'๋ฅผ 'cpu'๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

'์‹คํ–‰' ํด๋”์—์„œ ๋กœ๊ทธ์™€ ๋ฉ”ํŠธ๋ฆญ์„ ํ™•์ธํ•˜์—ฌ ํ›ˆ๋ จ ์ง„ํ–‰ ์ƒํ™ฉ์„ ํšจ๊ณผ์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์„ธ์š”.

ํšจ๊ณผ์ ์ธ ๋ชจ๋ธ ํŠธ๋ ˆ์ด๋‹์„ ์œ„ํ•œ ์ฃผ์š” ๊ณ ๋ ค ์‚ฌํ•ญ

๋‹ค์Œ์€ ๋ชจ๋ธ ํŠธ๋ ˆ์ด๋‹๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์„ ๋•Œ ์—ผ๋‘์— ๋‘์–ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์„ธํŠธ ํ˜•์‹ ๋ฐ ๋ ˆ์ด๋ธ”

  • ์ค‘์š”์„ฑ: ๋ชจ๋“  ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์˜ ๊ธฐ์ดˆ๋Š” ํ•™์Šตํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํ’ˆ์งˆ๊ณผ ํ˜•์‹์— ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ถŒ์žฅ ์‚ฌํ•ญ: ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ์ดํ„ฐ ์„ธํŠธ์™€ ๊ด€๋ จ ๋ ˆ์ด๋ธ”์ด ์˜ˆ์ƒ ํ˜•์‹์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ฃผ์„์ด ์ •ํ™•ํ•˜๊ณ  ๊ณ ํ’ˆ์งˆ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ถ€์ •ํ™•ํ•˜๊ฑฐ๋‚˜ ํ’ˆ์งˆ์ด ๋–จ์–ด์ง€๋Š” ์ฃผ์„์€ ๋ชจ๋ธ์˜ ํ•™์Šต ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐฉํ•ดํ•˜์—ฌ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ ์ปจ๋ฒ„์ „์Šค

  • ์ค‘์š”์„ฑ: ๋ชจ๋ธ ์ˆ˜๋ ด์„ ๋‹ฌ์„ฑํ•˜๋ฉด ๋ชจ๋ธ์ด ํ•™์Šต ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ์ถฉ๋ถ„ํžˆ ํ•™์Šตํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ถŒ์žฅ ์‚ฌํ•ญ: ๋ชจ๋ธ์„ '์ฒ˜์Œ๋ถ€ํ„ฐ' ํ›ˆ๋ จํ•  ๋•Œ๋Š” ๋ชจ๋ธ์ด ๋งŒ์กฑํ•  ๋งŒํ•œ ์ˆ˜์ค€์˜ ์ˆ˜๋ ด์— ๋„๋‹ฌํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๊ธฐ์กด ๋ชจ๋ธ์„ ๋ฏธ์„ธ ์กฐ์ •ํ•  ๋•Œ๋ณด๋‹ค ๋” ๊ธด ํ›ˆ๋ จ ๊ธฐ๊ฐ„๊ณผ ๋” ๋งŽ์€ ์—ํฌํฌ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต๋ฅ  ๋ฐ ๋ฐฐ์น˜ ํฌ๊ธฐ

  • ์ค‘์š”์„ฑ: ์ด๋Ÿฌํ•œ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•™์Šต ์ค‘์— ๋ชจ๋ธ์ด ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์ค‘์ถ”์ ์ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ถŒ์žฅ ์‚ฌํ•ญ: ์„ ํƒํ•œ ํ•™์Šต ์†๋„์™€ ๋ฐฐ์น˜ ํฌ๊ธฐ๊ฐ€ ํŠน์ • ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ์ตœ์ ์ธ์ง€ ์ •๊ธฐ์ ์œผ๋กœ ํ‰๊ฐ€ํ•˜์„ธ์š”. ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ํŠน์„ฑ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ์ €ํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ž˜์Šค ๋ฐฐํฌ

  • ์ค‘์š”์„ฑ: ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์˜ ํด๋ž˜์Šค ๋ถ„ํฌ๋Š” ๋ชจ๋ธ์˜ ์˜ˆ์ธก ๊ฒฝํ–ฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ถŒ์žฅ ์‚ฌํ•ญ: ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ ๋‚ด์˜ ํด๋ž˜์Šค ๋ถ„ํฌ๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ํ‰๊ฐ€ํ•˜์„ธ์š”. ํด๋ž˜์Šค ๋ถˆ๊ท ํ˜•์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ชจ๋ธ์ด ๋” ๋งŽ์ด ๋ถ„ํฌํ•˜๋Š” ํด๋ž˜์Šค์— ํŽธํ–ฅ๋  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŽธํ–ฅ์€ ํ˜ผ๋™ ํ–‰๋ ฌ์—์„œ ๋ถ„๋ช…ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๋ชจ๋ธ์ด ์ฃผ๋กœ ๋‹ค์ˆ˜ ํด๋ž˜์Šค๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ „ ํ›ˆ๋ จ๋œ ์›จ์ดํŠธ์™€ ๊ต์ฐจ ํ™•์ธ

  • ์ค‘์š”์„ฑ: ์‚ฌ์ „ ํ•™์Šต๋œ ๊ฐ€์ค‘์น˜๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํŠนํžˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œํ•œ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ชจ๋ธ ํ•™์Šต์„ ์œ„ํ•œ ํ™•์‹คํ•œ ์ถœ๋ฐœ์ ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ถŒ์žฅ ์‚ฌํ•ญ: ์ง„๋‹จ ๋‹จ๊ณ„๋กœ, ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚ค๋˜ ๋ฏธ๋ฆฌ ํ•™์Šต๋œ ๊ฐ€์ค‘์น˜๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด ๋ณด์„ธ์š”. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ด ํ˜ผ๋™ ํ–‰๋ ฌ์ด ์ž˜ ํ˜•์„ฑ๋˜๋ฉด '์ฒ˜์Œ๋ถ€ํ„ฐ' ๋ชจ๋ธ์— ์ถ”๊ฐ€ ํ•™์Šต์ด๋‚˜ ์กฐ์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ์„ ์‹œ์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์„น์…˜์—์„œ๋Š” ๋ชจ๋ธ ์˜ˆ์ธก ์ค‘์— ์ง๋ฉดํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

YOLOv8 ์‚ฌ์šฉ์ž ์ง€์ • ๋ชจ๋ธ๋กœ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค ์˜ˆ์ธก ์–ป๊ธฐ

์ด์Šˆ: ์‚ฌ์šฉ์ž ์ง€์ • YOLOv8 ๋ชจ๋ธ๋กœ ์˜ˆ์ธก์„ ์‹คํ–‰ํ•  ๋•Œ ๊ฒฝ๊ณ„ ์ƒ์ž ์ขŒํ‘œ์˜ ํ˜•์‹ ๋ฐ ์‹œ๊ฐํ™”์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜:

  • ์ขŒํ‘œ ํ˜•์‹: YOLOv8 ์€ ์ ˆ๋Œ€ ํ”ฝ์…€ ๊ฐ’์˜ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค ์ขŒํ‘œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ƒ๋Œ€ ์ขŒํ‘œ(0~1 ๋ฒ”์œ„)๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ 640x640์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:
# Convert absolute coordinates to relative coordinates
x1 = x1 / 640  # Divide x-coordinates by image width
x2 = x2 / 640
y1 = y1 / 640  # Divide y-coordinates by image height
y2 = y2 / 640
  • ํŒŒ์ผ ์ด๋ฆ„: ์˜ˆ์ธก ๋Œ€์ƒ ์ด๋ฏธ์ง€์˜ ํŒŒ์ผ ์ด๋ฆ„์„ ์–ป์œผ๋ ค๋ฉด ์˜ˆ์ธก ๋ฃจํ”„ ๋‚ด์˜ ๊ฒฐ๊ณผ ๊ฐœ์ฒด์—์„œ ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฒฝ๋กœ์— ์ง์ ‘ ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.

YOLOv8 ์˜ˆ์ธก์—์„œ ๊ฐœ์ฒด ํ•„ํ„ฐ๋งํ•˜๊ธฐ

์ด์Šˆ: Ultralytics ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ YOLOv8 ์„ ์‹คํ–‰ํ•  ๋•Œ ์˜ˆ์ธก ๊ฒฐ๊ณผ์—์„œ ํŠน์ • ๊ฐœ์ฒด๋งŒ ํ•„ํ„ฐ๋งํ•˜์—ฌ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…: ํŠน์ • ํด๋ž˜์Šค๋ฅผ ๊ฐ์ง€ํ•˜๋ ค๋ฉด classes ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ๋ ฅ์— ํฌํ•จํ•  ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ž๋™์ฐจ๋งŒ ๊ฐ์ง€ํ•˜๋ ค๋ฉด('cars'์˜ ํด๋ž˜์Šค ์ธ๋ฑ์Šค๊ฐ€ 2๋ผ๊ณ  ๊ฐ€์ •):

yolo task=detect mode=segment model=yolov8n-seg.pt source='path/to/car.mp4' show=True classes=2

์ •๋ฐ€๋„ ์ง€ํ‘œ์˜ ์ดํ•ด YOLOv8

์ด์Šˆ: YOLOv8 ์—์„œ ๋ฐ•์Šค ์ •๋ฐ€๋„, ๋งˆ์Šคํฌ ์ •๋ฐ€๋„ ๋ฐ ํ˜ผ๋™ ํ–‰๋ ฌ ์ •๋ฐ€๋„์˜ ์ฐจ์ด์— ๋Œ€ํ•œ ํ˜ผ๋™ .

์†”๋ฃจ์…˜: ๋ฐ•์Šค ์ •๋ฐ€๋„๋Š” IoU(Intersection over Union)๋ฅผ ๋ฉ”ํŠธ๋ฆญ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์ œ ๊ธฐ์ค€ ๋ฐ์ดํ„ฐ ๋ฐ•์Šค์™€ ๋น„๊ตํ•˜์—ฌ ์˜ˆ์ธก๋œ ๊ฒฝ๊ณ„ ๋ฐ•์Šค์˜ ์ •ํ™•๋„๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์Šคํฌ ์ •๋ฐ€๋„๋Š” ํ”ฝ์…€ ๋‹จ์œ„ ๊ฐ์ฒด ๋ถ„๋ฅ˜์—์„œ ์˜ˆ์ธก๋œ ์„ธ๋ถ„ํ™” ๋งˆ์Šคํฌ์™€ ๊ธฐ์ค€ ๋ฐ์ดํ„ฐ ๋งˆ์Šคํฌ ๊ฐ„์˜ ์ผ์น˜๋„๋ฅผ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ํ˜ผ๋™ ํ–‰๋ ฌ ์ •๋ฐ€๋„๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์— ๊ฑธ์นœ ์ „๋ฐ˜์ ์ธ ๋ถ„๋ฅ˜ ์ •ํ™•๋„์— ์ดˆ์ ์„ ๋งž์ถ”๋ฉฐ ์˜ˆ์ธก์˜ ๊ธฐํ•˜ํ•™์  ์ •ํ™•๋„๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฝ๊ณ„ ์ƒ์ž๋Š” ํด๋ž˜์Šค ์˜ˆ์ธก์ด ์ž˜๋ชป๋˜์—ˆ๋”๋ผ๋„ ๊ธฐํ•˜ํ•™์ ์œผ๋กœ ์ •ํ™•ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ(์ง„์–‘์„ฑ), ์ด๋กœ ์ธํ•ด ์ƒ์ž ์ •๋ฐ€๋„์™€ ํ˜ผ๋™ ํ–‰๋ ฌ ์ •๋ฐ€๋„ ์‚ฌ์ด์— ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”ํŠธ๋ฆญ์€ ๋ชจ๋ธ ์„ฑ๋Šฅ์˜ ๋‹ค์–‘ํ•œ ์ธก๋ฉด์„ ํ‰๊ฐ€ํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ์ž‘์—…์—์„œ ๋‹ค์–‘ํ•œ ํ‰๊ฐ€ ๋ฉ”ํŠธ๋ฆญ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์ ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์—์„œ ๊ฐœ์ฒด ์น˜์ˆ˜ ์ถ”์ถœ YOLOv8

์ด์Šˆ: YOLOv8 ์—์„œ ๊ฐ์ง€๋œ ๋ฌผ์ฒด์˜ ๊ธธ์ด์™€ ๋†’์ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์–ด๋ ค์›€, ํŠนํžˆ ์ด๋ฏธ์ง€์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌผ์ฒด๊ฐ€ ๊ฐ์ง€๋œ ๊ฒฝ์šฐ ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜: ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค ์น˜์ˆ˜๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด ๋จผ์ € Ultralytics YOLOv8 ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€์˜ ๊ฐ์ฒด๋ฅผ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์˜ˆ์ธก ๊ฒฐ๊ณผ์—์„œ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค์˜ ๋„ˆ๋น„์™€ ๋†’์ด ์ •๋ณด๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

from ultralytics import YOLO

# Load a pre-trained YOLOv8 model
model = YOLO('yolov8n.pt')

# Specify the source image
source = 'https://ultralytics.com/images/bus.jpg'

# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.5)

# Extract bounding box dimensions
boxes = results[0].boxes.xywh.cpu()
for box in boxes:
    x, y, w, h = box
    print(f"Width of Box: {w}, Height of Box: {h}")

๋ฐฐํฌ ๊ณผ์ œ

GPU ๋ฐฐํฌ ๋ฌธ์ œ

๋ฌธ์ œ: ๋ฉ€ํ‹ฐ GPU ํ™˜๊ฒฝ์—์„œ ๋ชจ๋ธ์„ ๋ฐฐํฌํ•˜๋ฉด ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, GPU ๊ฐ„ ์ผ๊ด€์„ฑ ์—†๋Š” ๊ฒฐ๊ณผ ๋“ฑ๊ณผ ๊ฐ™์€ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋™์ž‘์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ๊ธฐ๋ณธ GPU ์ดˆ๊ธฐํ™”๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. PyTorch ์™€ ๊ฐ™์€ ์ผ๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ง€์ •๋œ GPU๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์ „์— ๊ธฐ๋ณธ GPU์—์„œ CUDA ์ž‘์—…์„ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๊ธฐ๋ณธ ์ดˆ๊ธฐํ™”๋ฅผ ์šฐํšŒํ•˜๋ ค๋ฉด ๋ฐฐํฌ ๋ฐ ์˜ˆ์ธก ์ค‘์— GPU๋ฅผ ์ง์ ‘ ์ง€์ •ํ•˜์„ธ์š”. ๊ทธ๋Ÿฐ ๋‹ค์Œ GPU ์‚ฌ์šฉ๋ฅ ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ƒ ์ง•ํ›„๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํŒŒ์•…ํ•˜์„ธ์š”. ๋˜ํ•œ ์ตœ์‹  ๋ฒ„์ „์˜ ํ”„๋ ˆ์ž„์›Œํฌ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

๋ชจ๋ธ ๋ณ€ํ™˜/๋‚ด๋ณด๋‚ด๊ธฐ ๋ฌธ์ œ

๋ฌธ์ œ: ๋จธ์‹  ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ๋‹ค๋ฅธ ํ˜•์‹์ด๋‚˜ ํ”Œ๋žซํผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ ๋‚ด๋ณด๋‚ด๋Š” ๊ณผ์ •์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ค๋ฅ˜๋‚˜ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋™์ž‘์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜:

  • ํ˜ธํ™˜์„ฑ ํ™•์ธ: ์„œ๋กœ ํ˜ธํ™˜๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๋ฒ„์ „์ด ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณ€ํ™˜ ์ค‘์— ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ™˜๊ฒฝ ์žฌ์„ค์ •: Jupyter ๋˜๋Š” Colab๊ณผ ๊ฐ™์€ ๋Œ€ํ™”ํ˜• ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ์ด๋‚˜ ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„ ํ™˜๊ฒฝ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ ์‹œ์ž‘ํ•˜๋ฉด ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ณต์‹ ๋ฌธ์„œ: ๋ณ€ํ™˜์— ์‚ฌ์šฉ ์ค‘์ธ ๋„๊ตฌ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ•ญ์ƒ ์ฐธ์กฐํ•˜์„ธ์š”. ์—ฌ๊ธฐ์—๋Š” ๋ชจ๋ธ ๋‚ด๋ณด๋‚ด๊ธฐ์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์ง€์นจ๊ณผ ๋ชจ๋ฒ” ์‚ฌ๋ก€๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

  • ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ณต์‹ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๊ณ ํ•œ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๊ด€๋ฆฌ์ž๋‚˜ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ํ† ๋ก  ์Šค๋ ˆ๋“œ์—์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋‚˜ ํ•ด๊ฒฐ์ฑ…์„ ์ œ๊ณตํ–ˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ •๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค: ์ตœ์‹  ๋ฒ„์ „์˜ ๋„๊ตฌ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๊ฐœ๋ฐœ์ž๋Š” ์•Œ๋ ค์ง„ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ์—…๋ฐ์ดํŠธ๋ฅผ ์ž์ฃผ ๋ฆด๋ฆฌ์Šคํ•ฉ๋‹ˆ๋‹ค.

  • ์ ์ง„์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜์„ธ์š”: ์ „์ฒด ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ๋” ์ž‘์€ ๋ชจ๋ธ์ด๋‚˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•˜์—ฌ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ์กฐ๊ธฐ์— ํŒŒ์•…ํ•˜์„ธ์š”.

์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐ ์ง€์›

๊ฐ™์€ ์ƒ๊ฐ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค๋กœ ๊ตฌ์„ฑ๋œ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ฐธ์—ฌํ•˜๋ฉด YOLOv8 ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝํ—˜๊ณผ ์„ฑ๊ณต์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฑ„๋„๊ณผ ๋ฆฌ์†Œ์Šค์ž…๋‹ˆ๋‹ค.

๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํฌ๋Ÿผ ๋ฐ ์ฑ„๋„

GitHub ์ด์Šˆ: GitHub์˜ YOLOv8 ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—๋Š” ์งˆ๋ฌธํ•˜๊ณ , ๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•˜๊ณ , ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ๋Š” ์ด์Šˆ ํƒญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๊ด€๋ฆฌ์ž๊ฐ€ ํ™œ๋ฐœํ•˜๊ฒŒ ํ™œ๋™ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํŠน์ • ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ณณ์ž…๋‹ˆ๋‹ค.

Ultralytics Discord ์„œ๋ฒ„: Ultralytics ์—๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ๋ฐ ๊ฐœ๋ฐœ์ž์™€ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” Discord ์„œ๋ฒ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ ๋ฐ ๋ฆฌ์†Œ์Šค

Ultralytics YOLOv8 Docs: ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋Š” ์„ค์น˜, ์‚ฌ์šฉ ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋Œ€ํ•œ ๊ฐ€์ด๋“œ์™€ ํ•จ๊ป˜ YOLOv8 ์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋Š” YOLOv8 ํ”„๋กœ์ ํŠธ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ YOLOv8 ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” ํƒ„ํƒ„ํ•œ ํ† ๋Œ€๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

๋ฌธ์ œ ํ•ด๊ฒฐ์€ ๋ชจ๋“  ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์—์„œ ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์ด๋ฉฐ, ์˜ฌ๋ฐ”๋ฅธ ์ง€์‹์„ ๊ฐ–์ถ”๋ฉด ๋ฌธ์ œ ํ•ด๊ฒฐ์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” Ultralytics ์ƒํƒœ๊ณ„ ๋‚ด์—์„œ YOLOv8 ๋ชจ๋ธ ์‚ฌ์šฉ์ž๊ฐ€ ์ง๋ฉดํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ํ•ด๊ฒฐํ•จ์œผ๋กœ์จ ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ์›ํ™œํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๊ณ  ์ปดํ“จํ„ฐ ๋น„์ „ ์ž‘์—…์—์„œ ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Ultralytics ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๊ท€์ค‘ํ•œ ๋ฆฌ์†Œ์Šค์ž„์„ ๊ธฐ์–ตํ•˜์„ธ์š”. ๋™๋ฃŒ ๊ฐœ๋ฐœ์ž ๋ฐ ์ „๋ฌธ๊ฐ€์™€ ์†Œํ†ตํ•˜๋ฉด ํ‘œ์ค€ ๋ฌธ์„œ์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š์€ ์ถ”๊ฐ€์ ์ธ ์ธ์‚ฌ์ดํŠธ์™€ ์†”๋ฃจ์…˜์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ๋ฐฐ์šฐ๊ณ , ์‹คํ—˜ํ•˜๊ณ , ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜์—ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ง‘๋‹จ์  ์ง€์‹์— ๊ธฐ์—ฌํ•˜์„ธ์š”.

๋ฌธ์ œ ํ•ด๊ฒฐ์— ์„ฑ๊ณตํ•˜์„ธ์š”!



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

๋Œ“๊ธ€