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

๋ชจ๋ธ ๊ต์œก Ultralytics YOLO

Ultralytics YOLO ์—์ฝ”์‹œ์Šคํ…œ ๋ฐ ํ†ตํ•ฉ

์†Œ๊ฐœ

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



Watch: Google Colab์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ์ดํ„ฐ ์„ธํŠธ์—์„œ YOLO ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•˜๋Š” ๋ฐฉ๋ฒ•.

๊ต์œก์„ ์œ„ํ•ด Ultralytics YOLO ์„ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

YOLO11 ์˜ ๊ธฐ์ฐจ ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฐ•๋ ฅํ•œ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ํšจ์œจ์„ฑ: ๋‹จ์ผ ์„ค์ •(GPU )์„ ์‚ฌ์šฉํ•˜๋“  ์—ฌ๋Ÿฌ GPU๋กœ ํ™•์žฅํ•˜๋“  ํ•˜๋“œ์›จ์–ด๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์„ธ์š”.
  • ๋‹ค๋ชฉ์ ์„ฑ: COCO, VOC, ImageNet๊ณผ ๊ฐ™์ด ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ ์™ธ์— ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๋Œ€ํ•ด์„œ๋„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์นœํ™”์ : ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ๊ฐ•๋ ฅํ•œ CLI ๋ฐ Python ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํ•œ ๊ต์œก ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ์œ ์—ฐ์„ฑ: ๊ด‘๋ฒ”์œ„ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ๊ฐ€๋Šฅํ•œ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ชจ๋ธ ์„ฑ๋Šฅ์„ ๋ฏธ์„ธ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์ฐจ ๋ชจ๋“œ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

๋‹ค์Œ์€ YOLO11 ์˜ ๊ธฐ์ฐจ ๋ชจ๋“œ์—์„œ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค:

  • ์ž๋™ ๋ฐ์ดํ„ฐ ์„ธํŠธ ๋‹ค์šด๋กœ๋“œ: COCO, VOC, ImageNet๊ณผ ๊ฐ™์€ ํ‘œ์ค€ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋Š” ์ฒ˜์Œ ์‚ฌ์šฉํ•  ๋•Œ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฉ€ํ‹ฐGPU ์ง€์›: ์—ฌ๋Ÿฌ GPU์—์„œ ํ›ˆ๋ จ ์ž‘์—…์„ ์›ํ™œํ•˜๊ฒŒ ํ™•์žฅํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์†ํ™”ํ•˜์„ธ์š”.
  • ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ๊ตฌ์„ฑ: ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ๊ตฌ์„ฑ: YAML ๊ตฌ์„ฑ ํŒŒ์ผ ๋˜๋Š” CLI ์ธ์ˆ˜๋ฅผ ํ†ตํ•ด ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.
  • ์‹œ๊ฐํ™” ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง: ๊ต์œก ๋ฉ”ํŠธ๋ฆญ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถ”์ ํ•˜๊ณ  ํ•™์Šต ๊ณผ์ •์„ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋” ๋‚˜์€ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ

  • YOLO11 COCO, VOC, ImageNet ๋“ฑ์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋Š” ์ฒ˜์Œ ์‚ฌ์šฉํ•  ๋•Œ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. yolo train data=coco.yaml

์‚ฌ์šฉ ์˜ˆ

COCO8 ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๋Œ€ํ•ด YOLO11n์„ 100์œผ๋กœ ํ›ˆ๋ จํ•ฉ๋‹ˆ๋‹ค. epochs ๋ฅผ ์ด๋ฏธ์ง€ ํฌ๊ธฐ 640์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ต์œก ์žฅ์น˜๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. device ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š์œผ๋ฉด GPU device=0 ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด device='cpu' ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ต์œก ์ธ์ˆ˜์˜ ์ „์ฒด ๋ชฉ๋ก์€ ์•„๋ž˜ ์ธ์ˆ˜ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์‹ฑ๊ธ€-GPU ๋ฐ CPU ๊ต์œก ์˜ˆ์‹œ

์žฅ์น˜๊ฐ€ ์ž๋™์œผ๋กœ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. GPU ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์žฅ์น˜๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ CPU ์—์„œ ๊ต์œก์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.yaml")  # build a new model from YAML
model = YOLO("yolo11n.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo11n.yaml").load("yolo11n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo detect train data=coco8.yaml model=yolo11n.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640

# Build a new model from YAML, transfer pretrained weights to it and start training
yolo detect train data=coco8.yaml model=yolo11n.yaml pretrained=yolo11n.pt epochs=100 imgsz=640

๋ฉ€ํ‹ฐGPU ๊ต์œก

๋‹ค์ค‘GPU ํŠธ๋ ˆ์ด๋‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠธ๋ ˆ์ด๋‹ ๋ถ€ํ•˜๋ฅผ ์—ฌ๋Ÿฌ GPU์— ๋ถ„์‚ฐํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•˜๋“œ์›จ์–ด ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ Python API์™€ ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์ค‘GPU ํŠธ๋ ˆ์ด๋‹์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ์‚ฌ์šฉํ•˜๋ ค๋Š” GPU ์žฅ์น˜ ID๋ฅผ ์ง€์ •ํ•˜์„ธ์š”.

๋ฉ€ํ‹ฐGPU ๊ต์œก ์˜ˆ์‹œ

2๊ฐœ์˜ GPU๋กœ ํ›ˆ๋ จํ•˜๋ ค๋ฉด CUDA ์žฅ์น˜ 0๊ณผ 1์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ์ถ”๊ฐ€ GPU๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load a pretrained model (recommended for training)

# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])
# Start training from a pretrained *.pt model using GPUs 0 and 1
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=0,1

์• ํ”Œ ์‹ค๋ฆฌ์ฝ˜ MPS ๊ต์œก

์ด์ œ Ultralytics YOLO ๋ชจ๋ธ์— ํ†ตํ•ฉ๋œ Apple ์‹ค๋ฆฌ์ฝ˜ ์นฉ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ๊ฐ•๋ ฅํ•œ ๊ธˆ์† ์„ฑ๋Šฅ ์…ฐ์ด๋”(MPS) ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์žฅ์น˜์—์„œ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MPS ์€ Apple์˜ ๋งž์ถคํ˜• ์‹ค๋ฆฌ์ฝ˜์—์„œ ์—ฐ์‚ฐ ๋ฐ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๊ณ ์„ฑ๋Šฅ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Apple ์‹ค๋ฆฌ์ฝ˜ ์นฉ์—์„œ ๊ต์œก์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ๊ต์œก ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ 'mps'๋ฅผ ์žฅ์น˜๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” Python ๋ฐ ๋ช…๋ น์ค„์„ ํ†ตํ•ด ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค:

MPS ๊ต์œก ์˜ˆ์‹œ

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load a pretrained model (recommended for training)

# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")
# Start training from a pretrained *.pt model using MPS
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=mps

Apple ์‹ค๋ฆฌ์ฝ˜ ์นฉ์˜ ์—ฐ์‚ฐ ๋Šฅ๋ ฅ์„ ํ™œ์šฉํ•˜๋ฉด์„œ ๊ต์œก ์ž‘์—…์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์ง€์นจ๊ณผ ๊ณ ๊ธ‰ ๊ตฌ์„ฑ ์˜ต์…˜์€ PyTorch MPS ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ค‘๋‹จ๋œ ๊ต์œก ์žฌ๊ฐœํ•˜๊ธฐ

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

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

Ultralytics YOLO ์—์„œ ์‰ฝ๊ฒŒ ๊ต์œก์„ ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. resume ์ธ์ˆ˜๋ฅผ True ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ train ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๊ณ  .pt ํŒŒ์ผ์— ๋ถ€๋ถ„์ ์œผ๋กœ ํ•™์Šต๋œ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ Python ๋ฐ ๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋‹จ๋œ ๊ต์œก์„ ์žฌ๊ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค:

๊ต์œก ์žฌ๊ฐœ ์˜ˆ์‹œ

from ultralytics import YOLO

# Load a model
model = YOLO("path/to/last.pt")  # load a partially trained model

# Resume training
results = model.train(resume=True)
# Resume an interrupted training
yolo train resume model=path/to/last.pt

์„ค์ •์œผ๋กœ resume=True์—์„œ train ํ•จ์ˆ˜๋Š” 'path/to/last.pt' ํŒŒ์ผ์— ์ €์žฅ๋œ ์ƒํƒœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋‹จ๋œ ์ง€์ ๋ถ€ํ„ฐ ํ›ˆ๋ จ์„ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ resume ์ธ์ˆ˜๊ฐ€ ์ƒ๋žต๋˜๊ฑฐ๋‚˜ False์—์„œ train ํ•จ์ˆ˜๋Š” ์ƒˆ ๊ต์œก ์„ธ์…˜์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ฒดํฌํฌ์ธํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์—ํฌํฌ๊ฐ€ ๋๋‚  ๋•Œ๋งˆ๋‹ค ์ €์žฅ๋˜๊ฑฐ๋‚˜, ๊ณ ์ •๋œ ๊ฐ„๊ฒฉ์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. save_period ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํŠธ๋ ˆ์ด๋‹ ์‹คํ–‰์„ ์žฌ๊ฐœํ•˜๋ ค๋ฉด ์ตœ์†Œ 1์—ํฌํฌ๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ด์ฐจ ์„ค์ •

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

์ธ์ˆ˜ ๊ธฐ๋ณธ๊ฐ’ ์„ค๋ช…
model None ํ•™์Šตํ•  ๋ชจ๋ธ ํŒŒ์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์˜ ๊ฒฝ๋กœ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. .pt ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ ๋˜๋Š” .yaml ๊ตฌ์„ฑ ํŒŒ์ผ. ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ค‘์น˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.
data None ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ(์˜ˆ:, coco8.yaml). ์ด ํŒŒ์ผ์—๋Š” ํŠธ๋ ˆ์ด๋‹ ๊ฒฝ๋กœ๋ฅผ ๋น„๋กฏํ•œ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ณ„ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ์ดํ„ฐ, ํด๋ž˜์Šค ์ด๋ฆ„, ํด๋ž˜์Šค ์ˆ˜๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
epochs 100 ์ด ํ›ˆ๋ จ ์—ํฌํฌ ์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ฐ ์—ํฌํฌ๋Š” ์ „์ฒด ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๋Œ€ํ•œ ์ „์ฒด ํŒจ์Šค๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ์กฐ์ •ํ•˜๋ฉด ํ•™์Šต ๊ธฐ๊ฐ„๊ณผ ๋ชจ๋ธ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
time None ์ตœ๋Œ€ ํ›ˆ๋ จ ์‹œ๊ฐ„(์‹œ๊ฐ„). ์„ค์ •ํ•˜๋ฉด ์ด ๊ฐ’์€ epochs ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ์‹œ๊ฐ„ ํ›„์— ํŠธ๋ ˆ์ด๋‹์„ ์ž๋™์œผ๋กœ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ์ œ์•ฝ์ด ์žˆ๋Š” ๊ต์œก ์‹œ๋‚˜๋ฆฌ์˜ค์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
patience 100 ํ›ˆ๋ จ์„ ์กฐ๊ธฐ ์ค‘๋‹จํ•˜๊ธฐ ์ „์— ๊ฒ€์ฆ ์ง€ํ‘œ์˜ ๊ฐœ์„  ์—†์ด ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์—ํฌํฌ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์ด ์ •์ฒด๋  ๋•Œ ํ›ˆ๋ จ์„ ์ค‘๋‹จํ•˜์—ฌ ๊ณผ์ ํ•ฉ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
batch 16 ๋ฐฐ์น˜ ํฌ๊ธฐ์„ธ ๊ฐ€์ง€ ๋ชจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์ •์ˆ˜๋กœ ์„ค์ •), batch=16), 60% GPU ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์˜ ์ž๋™ ๋ชจ๋“œ(batch=-1) ๋˜๋Š” ์ง€์ •๋œ ์‚ฌ์šฉ๋ฅ  ๋น„์œจ์˜ ์ž๋™ ๋ชจ๋“œ(batch=0.70).
imgsz 640 ํ•™์Šต์„ ์œ„ํ•œ ๋ชฉํ‘œ ์ด๋ฏธ์ง€ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ด๋ฏธ์ง€๋Š” ๋ชจ๋ธ์— ์ž…๋ ฅ๋˜๊ธฐ ์ „์— ์ด ํฌ๊ธฐ๋กœ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ์ •ํ™•๋„์™€ ๊ณ„์‚ฐ ๋ณต์žก๋„์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.
save True ํ›ˆ๋ จ ์ฒดํฌํฌ์ธํŠธ์™€ ์ตœ์ข… ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ›ˆ๋ จ ๋˜๋Š” ๋ชจ๋ธ ๋ฐฐํฌ๋ฅผ ์žฌ๊ฐœํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
save_period -1 ๋ชจ๋ธ ์ฒดํฌํฌ์ธํŠธ ์ €์žฅ ๋นˆ๋„(์—ํฌํฌ ๋‹จ์œ„๋กœ ์ง€์ •)์ž…๋‹ˆ๋‹ค. ๊ฐ’์ด -1์ด๋ฉด ์ด ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ๊ธด ํ›ˆ๋ จ ์„ธ์…˜ ๋™์•ˆ ์ค‘๊ฐ„ ๋ชจ๋ธ์„ ์ €์žฅํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
cache False ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ด๋ฏธ์ง€์˜ ์บ์‹ฑ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค(True/ram), ๋””์Šคํฌ(disk) ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”(False). ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๋Š˜๋ฆฌ๋Š” ๋Œ€์‹  ๋””์Šคํฌ I/O๋ฅผ ์ค„์—ฌ ํ›ˆ๋ จ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
device None ๊ต์œก์šฉ ๊ณ„์‚ฐ ์žฅ์น˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค: ๋‹จ์ผ GPU (device=0), ๋‹ค์ค‘ GPU(device=0,1), CPU (device=cpu) ๋˜๋Š” ์• ํ”Œ ์‹ค๋ฆฌ์ฝ˜์˜ ๊ฒฝ์šฐ MPS (device=mps).
workers 8 ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ์„ ์œ„ํ•œ ์›Œ์ปค ์Šค๋ ˆ๋“œ ์ˆ˜(๋‹น RANK ๋‹ค์ค‘GPU ํ›ˆ๋ จ์ธ ๊ฒฝ์šฐ). ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ๋ฐ ๋ชจ๋ธ์— ๊ณต๊ธ‰ํ•˜๋Š” ์†๋„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ, ํŠนํžˆ ๋‹ค์ค‘GPU ์„ค์ •์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
project None ๊ต์œก ๊ฒฐ๊ณผ๋ฌผ์ด ์ €์žฅ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์‹คํ—˜์„ ์ฒด๊ณ„์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
name None ํŠธ๋ ˆ์ด๋‹ ์‹คํ–‰์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด์— ํŠธ๋ ˆ์ด๋‹ ๋กœ๊ทธ ๋ฐ ๊ฒฐ๊ณผ๋ฌผ์ด ์ €์žฅ๋˜๋Š” ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
exist_ok False True๋กœ ์„ค์ •ํ•˜๋ฉด ๊ธฐ์กด ํ”„๋กœ์ ํŠธ/์ด๋ฆ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๊ฒฐ๊ณผ๋ฌผ์„ ์ˆ˜๋™์œผ๋กœ ์ง€์šธ ํ•„์š” ์—†์ด ๋ฐ˜๋ณต์ ์ธ ์‹คํ—˜์„ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
pretrained True ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ์—์„œ ํ•™์Šต์„ ์‹œ์ž‘ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜๋ฅผ ๋กœ๋“œํ•  ํŠน์ • ๋ชจ๋ธ์— ๋Œ€ํ•œ ๋ถ€์šธ ๊ฐ’ ๋˜๋Š” ๋ฌธ์ž์—ด ๊ฒฝ๋กœ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•™์Šต ํšจ์œจ์„ฑ๊ณผ ๋ชจ๋ธ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
optimizer 'auto' ๊ต์œก์šฉ ์˜ตํ‹ฐ๋งˆ์ด์ € ์„ ํƒ. ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. SGD, Adam, AdamW, NAdam, RAdam, RMSProp ๋“ฑ ๋˜๋Š” auto ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจ๋ฒ„์ „์Šค ์†๋„์™€ ์•ˆ์ •์„ฑ์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.
seed 0 ํŠธ๋ ˆ์ด๋‹์„ ์œ„ํ•œ ๋ฌด์ž‘์œ„ ์‹œ๋“œ๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋™์ผํ•œ ๊ตฌ์„ฑ์œผ๋กœ ์‹คํ–‰ํ•  ๋•Œ ๊ฒฐ๊ณผ์˜ ์žฌํ˜„์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
deterministic True ๊ฒฐ์ •๋ก ์  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ์„ ๊ฐ•์ œํ•˜์—ฌ ์žฌํ˜„์„ฑ์„ ๋ณด์žฅํ•˜์ง€๋งŒ ๋น„๊ฒฐ์ •๋ก ์  ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•œ ์ œํ•œ์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ๊ณผ ์†๋„์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
single_cls False ํ›ˆ๋ จ ์ค‘์— ๋‹ค์ค‘ ํด๋ž˜์Šค ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ๋‹จ์ผ ํด๋ž˜์Šค๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด์ง„ ๋ถ„๋ฅ˜ ์ž‘์—…์ด๋‚˜ ๋ถ„๋ฅ˜๋ณด๋‹ค๋Š” ๊ฐ์ฒด์˜ ์กด์žฌ ์—ฌ๋ถ€์— ์ดˆ์ ์„ ๋งž์ถœ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
rect False ์ง์‚ฌ๊ฐํ˜• ํ•™์Šต์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ ๋ฐฐ์น˜ ๊ตฌ์„ฑ์„ ์ตœ์ ํ™”ํ•˜์—ฌ ํŒจ๋”ฉ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค. ํšจ์œจ์„ฑ๊ณผ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋ธ ์ •ํ™•๋„์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
cos_lr False ์ฝ”์‚ฌ์ธ ํ•™์Šต๋ฅ  ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ธฐ๊ฐ„๋ณ„ ์ฝ”์‚ฌ์ธ ๊ณก์„ ์— ๋”ฐ๋ผ ํ•™์Šต๋ฅ ์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ์ปจ๋ฒ„์ „์Šค๋ฅผ ์œ„ํ•ด ํ•™์Šต ์†๋„๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
close_mosaic 10 ์™„๋ฃŒํ•˜๊ธฐ ์ „์— ํ›ˆ๋ จ์„ ์•ˆ์ •ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ง€๋‚œ N๊ฐœ์˜ ์—ํฌํฌ์—์„œ ๋ชจ์ž์ดํฌ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ•์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. 0์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์ด ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
resume False ๋งˆ์ง€๋ง‰์œผ๋กœ ์ €์žฅํ•œ ์ฒดํฌํฌ์ธํŠธ๋ถ€ํ„ฐ ํ›ˆ๋ จ์„ ์žฌ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ๊ฐ€์ค‘์น˜, ์ตœ์ ํ™” ์ƒํƒœ ๋ฐ ์—ํฌํฌ ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ๋กœ๋“œํ•˜์—ฌ ํ›ˆ๋ จ์„ ์›ํ™œํ•˜๊ฒŒ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค.
amp True ์ž๋™ ํ˜ผํ•ฉ ์ •๋ฐ€๋„ (AMP) ํ›ˆ๋ จ์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๊ณ  ์ •ํ™•๋„์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ํ›ˆ๋ จ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
fraction 1.0 ํ•™์Šต์— ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ์ผ๋ถ€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ํ•™์Šต์„ ํ—ˆ์šฉํ•˜๋ฉฐ, ์‹คํ—˜์ด๋‚˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
profile False ํ›ˆ๋ จ ์ค‘์— ONNX ๋ฐ TensorRT ์†๋„๋ฅผ ํ”„๋กœํŒŒ์ผ๋งํ•˜์—ฌ ๋ชจ๋ธ ๋ฐฐํฌ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
freeze None ๋ชจ๋ธ์˜ ์ฒ˜์Œ N๊ฐœ์˜ ๋ ˆ์ด์–ด ๋˜๋Š” ์ธ๋ฑ์Šค๋ณ„๋กœ ์ง€์ •๋œ ๋ ˆ์ด์–ด๋ฅผ ๊ณ ์ •ํ•˜์—ฌ ํ•™์Šต ๊ฐ€๋Šฅํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ˆ˜๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. ๋ฏธ์„ธ ์กฐ์ • ๋˜๋Š” ์ „์ด ํ•™์Šต์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
lr0 0.01 ์ดˆ๊ธฐ ํ•™์Šต๋ฅ (์˜ˆ SGD=1E-2, Adam=1E-3) . ์ด ๊ฐ’์„ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์ตœ์ ํ™” ํ”„๋กœ์„ธ์Šค์—์„œ ๋งค์šฐ ์ค‘์š”ํ•˜๋ฉฐ, ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋Š” ์†๋„์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.
lrf 0.01 ์ดˆ๊ธฐ ํ•™์Šต๋ฅ ์˜ ์ผ๋ถ€๋ถ„์ธ ์ตœ์ข… ํ•™์Šต๋ฅ  = (lr0 * lrf), ์Šค์ผ€์ค„๋Ÿฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ํ•™์Šต ์†๋„๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
momentum 0.937 SGD ๋˜๋Š” ์•„๋‹ด ์˜ตํ‹ฐ๋งˆ์ด์ €์šฉ ๋ฒ ํƒ€1์˜ ๋ชจ๋ฉ˜ํ…€ ๊ณ„์ˆ˜๋กœ, ํ˜„์žฌ ์—…๋ฐ์ดํŠธ์—์„œ ๊ณผ๊ฑฐ ๊ทธ๋ผ๋ฐ์ด์…˜์˜ ํ†ตํ•ฉ์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.
weight_decay 0.0005 L2 ์ •๊ทœํ™” ๊ธฐ๊ฐ„, ๊ณผ์ ํ•ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํฐ ๊ฐ€์ค‘์น˜์— ๋ถˆ์ด์ต์„ ์ค๋‹ˆ๋‹ค.
warmup_epochs 3.0 ํ•™์Šต ์†๋„ ์›Œ๋ฐ์—…์„ ์œ„ํ•œ ์—ํฌํฌ ์ˆ˜๋กœ, ํ•™์Šต ์†๋„๋ฅผ ๋‚ฎ์€ ๊ฐ’์—์„œ ์ดˆ๊ธฐ ํ•™์Šต ์†๋„๊นŒ์ง€ ์„œ์„œํžˆ ๋†’์—ฌ ์กฐ๊ธฐ์— ํ•™์Šต์„ ์•ˆ์ •ํ™”ํ•ฉ๋‹ˆ๋‹ค.
warmup_momentum 0.8 ์›Œ๋ฐ์—… ๋‹จ๊ณ„์˜ ์ดˆ๊ธฐ ์šด๋™๋Ÿ‰์œผ๋กœ, ์›Œ๋ฐ์—… ๊ธฐ๊ฐ„ ๋™์•ˆ ์„ค์ •๋œ ์šด๋™๋Ÿ‰์— ์ ์ฐจ์ ์œผ๋กœ ์ ์‘ํ•ฉ๋‹ˆ๋‹ค.
warmup_bias_lr 0.1 ์›Œ๋ฐ์—… ๋‹จ๊ณ„์—์„œ ๋ฐ”์ด์–ด์Šค ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ํ•™์Šต ์†๋„๋ฅผ ๋†’์—ฌ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๋ชจ๋ธ ํ•™์Šต์„ ์•ˆ์ •ํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
box 7.5 ์†์‹ค ํ•จ์ˆ˜์—์„œ ๋ฐ•์Šค ์†์‹ค ์„ฑ๋ถ„์˜ ๊ฐ€์ค‘์น˜๋กœ, ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค ์ขŒํ‘œ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์˜ˆ์ธกํ•˜๋Š” ๋ฐ ์–ผ๋งˆ๋‚˜ ์ค‘์ ์„ ๋‘๋Š”์ง€์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.
cls 0.5 ์ด ์†์‹ค ํ•จ์ˆ˜์—์„œ ๋ถ„๋ฅ˜ ์†์‹ค์˜ ๊ฐ€์ค‘์น˜๋กœ, ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์— ๋น„ํ•ด ์ •ํ™•ํ•œ ํด๋ž˜์Šค ์˜ˆ์ธก์˜ ์ค‘์š”๋„์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.
dfl 1.5 ์„ธ๋ถ„ํ™”๋œ ๋ถ„๋ฅ˜๋ฅผ ์œ„ํ•ด ํŠน์ • YOLO ๋ฒ„์ „์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ถ„ํฌ ์ดˆ์  ์†์‹ค์˜ ๊ฐ€์ค‘์น˜์ž…๋‹ˆ๋‹ค.
pose 12.0 ํฌ์ฆˆ ์ถ”์ •์„ ์œ„ํ•ด ํ•™์Šต๋œ ๋ชจ๋ธ์—์„œ ํฌ์ฆˆ ์†์‹ค์˜ ๊ฐ€์ค‘์น˜๋กœ, ํฌ์ฆˆ ํ‚คํฌ์ธํŠธ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์˜ˆ์ธกํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.
kobj 2.0 ํฌ์ฆˆ ์ถ”์ • ๋ชจ๋ธ์—์„œ ํ‚คํฌ์ธํŠธ ๊ฐ์ฒด์„ฑ ์†์‹ค์˜ ๊ฐ€์ค‘์น˜๋กœ, ๊ฐ์ง€ ์‹ ๋ขฐ๋„์™€ ํฌ์ฆˆ ์ •ํ™•๋„ ๊ฐ„์˜ ๊ท ํ˜•์„ ๋งž์ถฅ๋‹ˆ๋‹ค.
label_smoothing 0.0 ๋ผ๋ฒจ ํ‰ํ™œํ™”๋ฅผ ์ ์šฉํ•˜์—ฌ ๋Œ€์ƒ ๋ผ๋ฒจ์˜ ํ˜ผํ•ฉ์— ํ•˜๋“œ ๋ผ๋ฒจ์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ•˜๊ณ  ๋ผ๋ฒจ์„ ๊ท ์ผํ•˜๊ฒŒ ๋ถ„ํฌํ•˜๋ฉด ์ผ๋ฐ˜ํ™”๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
nbs 64 ์†์‹ค ์ •๊ทœํ™”๋ฅผ ์œ„ํ•œ ๊ณต์นญ ๋ฐฐ์น˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.
overlap_mask True ํ•™์Šต์„ ์œ„ํ•ด ๊ฐ์ฒด ๋งˆ์Šคํฌ๋ฅผ ํ•˜๋‚˜์˜ ๋งˆ์Šคํฌ๋กœ ๋ณ‘ํ•ฉํ• ์ง€, ์•„๋‹ˆ๋ฉด ๊ฐ ๊ฐ์ฒด๋งˆ๋‹ค ๋ณ„๋„๋กœ ์œ ์ง€ํ• ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ ๋ณ‘ํ•ฉํ•˜๋Š” ๋™์•ˆ ์ž‘์€ ๋งˆ์Šคํฌ๊ฐ€ ํฐ ๋งˆ์Šคํฌ ์œ„์— ์˜ค๋ฒ„๋ ˆ์ด๋ฉ๋‹ˆ๋‹ค.
mask_ratio 4 ์„ธ๋ถ„ํ™” ๋งˆ์Šคํฌ์˜ ๋‹ค์šด์ƒ˜ํ”Œ ๋น„์œจ๋กœ, ํ›ˆ๋ จ ์ค‘์— ์‚ฌ์šฉ๋˜๋Š” ๋งˆ์Šคํฌ์˜ ํ•ด์ƒ๋„์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.
dropout 0.0 ๋ถ„๋ฅ˜ ์ž‘์—…์˜ ์ •๊ทœํ™”๋ฅผ ์œ„ํ•œ ํƒˆ๋ฝ๋ฅ , ํ›ˆ๋ จ ์ค‘ ๋ฌด์ž‘์œ„๋กœ ๋‹จ์œ„๋ฅผ ์ƒ๋žตํ•˜์—ฌ ๊ณผ์ ํ•ฉ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
val True ํ›ˆ๋ จ ์ค‘ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ ๋ณ„๋„์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ์—์„œ ๋ชจ๋ธ ์„ฑ๋Šฅ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
plots False ํ•™์Šต ๋ฐ ๊ฒ€์ฆ ๋ฉ”ํŠธ๋ฆญ๊ณผ ์˜ˆ์ธก ์˜ˆ์ œ์˜ ํ”Œ๋กฏ์„ ์ƒ์„ฑํ•˜๊ณ  ์ €์žฅํ•˜์—ฌ ๋ชจ๋ธ ์„ฑ๋Šฅ ๋ฐ ํ•™์Šต ์ง„ํ–‰ ์ƒํ™ฉ์— ๋Œ€ํ•œ ์‹œ๊ฐ์  ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ์น˜ ํฌ๊ธฐ ์„ค์ •์— ๋Œ€ํ•œ ์ฐธ๊ณ  ์‚ฌํ•ญ

๊ทธ๋ฆฌ๊ณ  batch ์ธ์ˆ˜๋Š” ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๊ณ ์ • ๋ฐฐ์น˜ ํฌ๊ธฐ: ์ •์ˆ˜ ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ batch=16)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์น˜๋‹น ์ด๋ฏธ์ง€ ์ˆ˜๋ฅผ ์ง์ ‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž๋™ ๋ชจ๋“œ(60% GPU ๋ฉ”๋ชจ๋ฆฌ): ์‚ฌ์šฉ batch=-1 ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฝ 60%์˜ CUDA ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์— ๋งž๊ฒŒ ๋ฐฐ์น˜ ํฌ๊ธฐ๋ฅผ ์ž๋™์œผ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ๋ฅ  ๋น„์œจ์„ ์‚ฌ์šฉํ•œ ์ž๋™ ๋ชจ๋“œ: ๋ถ„์ˆ˜ ๊ฐ’ ์„ค์ •(์˜ˆ:, batch=0.70)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GPU ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์˜ ์ง€์ •๋œ ๋น„์œจ์— ๋”ฐ๋ผ ๋ฐฐ์น˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ๊ฐ• ์„ค์ • ๋ฐ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ

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

์ธ์ˆ˜ ์œ ํ˜• ๊ธฐ๋ณธ๊ฐ’ ๋ฒ”์œ„ ์„ค๋ช…
hsv_h float 0.015 0.0 - 1.0 ์ด๋ฏธ์ง€์˜ ์ƒ‰์กฐ๋ฅผ ์ปฌ๋Ÿฌํ™˜์˜ ์ผ๋ถ€๋ถ„์œผ๋กœ ์กฐ์ •ํ•˜์—ฌ ์ƒ‰์ƒ ๊ฐ€๋ณ€์„ฑ์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์กฐ๋ช… ์กฐ๊ฑด์—์„œ ๋ชจ๋ธ์„ ์ผ๋ฐ˜ํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
hsv_s float 0.7 0.0 - 1.0 ์ด๋ฏธ์ง€์˜ ์ฑ„๋„๋ฅผ ์ผ๋ถ€ ๋ณ€๊ฒฝํ•˜์—ฌ ์ƒ‰์ƒ์˜ ๊ฐ•๋„์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ ์กฐ๊ฑด์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
hsv_v float 0.4 0.0 - 1.0 ์ด๋ฏธ์ง€์˜ ๊ฐ’(๋ฐ๊ธฐ)์„ ์ผ๋ถ€ ์ˆ˜์ •ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์กฐ๋ช… ์กฐ๊ฑด์—์„œ ๋ชจ๋ธ์ด ์ž˜ ์ž‘๋™ํ•˜๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.
degrees float 0.0 -180 - +180 ์ง€์ •๋œ ๊ฐ๋„ ๋ฒ”์œ„ ๋‚ด์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ž„์˜๋กœ ํšŒ์ „ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฐฉํ–ฅ์—์„œ ๋ฌผ์ฒด๋ฅผ ์ธ์‹ํ•˜๋Š” ๋ชจ๋ธ์˜ ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
translate float 0.1 0.0 - 1.0 ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ๊ฐ€๋กœ ๋ฐ ์„ธ๋กœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ถ€๋ถ„์ ์œผ๋กœ ๋ณด์ด๋Š” ๋ฌผ์ฒด๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ํ•™์Šต์„ ๋•์Šต๋‹ˆ๋‹ค.
scale float 0.5 >=0.0 ๊ฒŒ์ธ ๊ณ„์ˆ˜์— ๋”ฐ๋ผ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜์—ฌ ์นด๋ฉ”๋ผ์—์„œ ๋‹ค์–‘ํ•œ ๊ฑฐ๋ฆฌ์— ์žˆ๋Š” ๋ฌผ์ฒด๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.
shear float 0.0 -180 - +180 ์ด๋ฏธ์ง€๋ฅผ ์ง€์ •๋œ ๊ฐ๋„๋งŒํผ ์ž˜๋ผ๋‚ด์–ด ๋ฌผ์ฒด๋ฅผ ๋‹ค๋ฅธ ๊ฐ๋„์—์„œ ๋ณด๋Š” ํšจ๊ณผ๋ฅผ ๋ชจ๋ฐฉํ•ฉ๋‹ˆ๋‹ค.
perspective float 0.0 0.0 - 0.001 ์ด๋ฏธ์ง€์— ๋ฌด์ž‘์œ„ ์›๊ทผ ๋ณ€ํ™˜์„ ์ ์šฉํ•˜์—ฌ 3D ๊ณต๊ฐ„์—์„œ ๋ฌผ์ฒด๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ชจ๋ธ์˜ ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
flipud float 0.0 0.0 - 1.0 ์ง€์ •๋œ ํ™•๋ฅ ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ฑฐ๊พธ๋กœ ๋’ค์ง‘์–ด ์˜ค๋ธŒ์ ํŠธ์˜ ํŠน์„ฑ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ ๊ฐ€๋ณ€์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
fliplr float 0.5 0.0 - 1.0 ์ง€์ •๋œ ํ™•๋ฅ ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋’ค์ง‘์–ด ๋Œ€์นญ ๊ฐœ์ฒด๋ฅผ ํ•™์Šตํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ๋‹ค์–‘์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
bgr float 0.0 0.0 - 1.0 ์ง€์ •๋œ ํ™•๋ฅ ๋กœ ์ด๋ฏธ์ง€ ์ฑ„๋„์„ RGB์—์„œ BGR๋กœ ์ „ํ™˜ํ•˜์—ฌ ์ž˜๋ชป๋œ ์ฑ„๋„ ์ˆœ์„œ์— ๋Œ€ํ•œ ๊ฒฌ๊ณ ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
mosaic float 1.0 0.0 - 1.0 4๊ฐœ์˜ ํ›ˆ๋ จ ์ด๋ฏธ์ง€๋ฅผ ํ•˜๋‚˜๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์žฅ๋ฉด ๊ตฌ์„ฑ๊ณผ ๋ฌผ์ฒด ์ƒํ˜ธ ์ž‘์šฉ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์žฅ๋ฉด ์ดํ•ด์— ๋งค์šฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.
mixup float 0.0 0.0 - 1.0 ๋‘ ์ด๋ฏธ์ง€์™€ ํ•ด๋‹น ๋ ˆ์ด๋ธ”์„ ํ˜ผํ•ฉํ•˜์—ฌ ํ•ฉ์„ฑ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ ˆ์ด๋ธ” ๋…ธ์ด์ฆˆ์™€ ์‹œ๊ฐ์  ๊ฐ€๋ณ€์„ฑ์„ ๋„์ž…ํ•˜์—ฌ ๋ชจ๋ธ์˜ ์ผ๋ฐ˜ํ™” ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
copy_paste float 0.0 0.0 - 1.0 ํ•œ ์ด๋ฏธ์ง€์—์„œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€์— ๋ถ™์—ฌ๋„ฃ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ์˜ค๋ธŒ์ ํŠธ ์ธ์Šคํ„ด์Šค๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์˜ค๋ธŒ์ ํŠธ ์˜คํด๋ฃจ์ „์„ ํ•™์Šตํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
copy_paste_mode str flip - ์˜ ์˜ต์…˜ ์ค‘ ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ํ™•๋Œ€ ๋ฐฉ๋ฒ• ์„ ํƒ("flip", "mixup").
auto_augment str randaugment - ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ฆ๊ฐ• ์ •์ฑ…์„ ์ž๋™์œผ๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค(randaugment, autoaugment, augmix), ์‹œ๊ฐ์  ๊ธฐ๋Šฅ์„ ๋‹ค์–‘ํ™”ํ•˜์—ฌ ๋ถ„๋ฅ˜ ์ž‘์—…์— ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
erasing float 0.4 0.0 - 0.9 ๋ถ„๋ฅ˜ ํ›ˆ๋ จ ์ค‘์— ์ด๋ฏธ์ง€์˜ ์ผ๋ถ€๋ฅผ ์ž„์˜๋กœ ์ง€์›Œ ๋ชจ๋ธ์ด ๋œ ๋ถ„๋ช…ํ•œ ํŠน์ง•์— ์ง‘์ค‘ํ•˜์—ฌ ์ธ์‹ํ•˜๋„๋ก ์œ ๋„ํ•ฉ๋‹ˆ๋‹ค.
crop_fraction float 1.0 0.1 - 1.0 ๋ถ„๋ฅ˜ ์ด๋ฏธ์ง€๋ฅผ ์ผ๋ถ€ ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋‚ด์–ด ์ค‘์‹ฌ ํŠน์ง•์„ ๊ฐ•์กฐํ•˜๊ณ  ๋ฌผ์ฒด ํฌ๊ธฐ์— ๋งž๊ฒŒ ์กฐ์ •ํ•˜์—ฌ ๋ฐฐ๊ฒฝ์˜ ์‚ฐ๋งŒํ•จ์„ ์ค„์ž…๋‹ˆ๋‹ค.

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

์ •๋ณด

๊ต์œก ์ฆ๊ฐ• ์ž‘์—…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฐธ์กฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋กœ๊น…

YOLO11 ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚ฌ ๋•Œ ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ฅธ ๋ชจ๋ธ์˜ ์„ฑ๊ณผ๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ๋กœ๊น…์ด ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. Ultralytics' YOLO ์€ Comet, ClearML, TensorBoard ๋“ฑ ์„ธ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๋กœ๊ฑฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์œ„์˜ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์˜ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ ๋กœ๊ฑฐ๋ฅผ ์„ ํƒํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ๋กœ๊ฑฐ๊ฐ€ ์„ค์น˜๋˜๊ณ  ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

Comet

Comet ๋Š” ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹คํ—˜๊ณผ ๋ชจ๋ธ์„ ์ถ”์ , ๋น„๊ต, ์„ค๋ช… ๋ฐ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ๋ฉ”ํŠธ๋ฆญ, ์ฝ”๋“œ ์ฐจ์ด์ , ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”์ ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ• Comet:

์˜ˆ

# pip install comet_ml
import comet_ml

comet_ml.init()

์›น์‚ฌ์ดํŠธ์˜ Comet ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•˜์—ฌ API ํ‚ค๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”. ์ด๋ฅผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ์— ์ถ”๊ฐ€ํ•˜์—ฌ ์‹คํ—˜์„ ๊ธฐ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ClearML

ClearML ๋Š” ์‹คํ—˜ ์ถ”์ ์„ ์ž๋™ํ™”ํ•˜๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ณต์œ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ํŒ€์ด ๋จธ์‹ ๋Ÿฌ๋‹ ์ž‘์—…์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ, ์‹คํ–‰ ๋ฐ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ• ClearML:

์˜ˆ

# pip install clearml
import clearml

clearml.browser_login()

์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•œ ํ›„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ClearML ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๊ณ  ์„ธ์…˜์„ ์ธ์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ…์„œ๋ณด๋“œ

ํ…์„œ๋ณด๋“œ๋Š” ์‹œ๊ฐํ™” ๋„๊ตฌ ํ‚คํŠธ์ž…๋‹ˆ๋‹ค. TensorFlow. ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด TensorFlow ๊ทธ๋ž˜ํ”„๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ณ , ๊ทธ๋ž˜ํ”„์˜ ์‹คํ–‰์— ๋Œ€ํ•œ ์ •๋Ÿ‰์  ๋ฉ”ํŠธ๋ฆญ์„ ํ‘œ์‹œํ•˜๊ณ , ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ด๋ฏธ์ง€์™€ ๊ฐ™์€ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Google Colab์—์„œ ํ…์„œ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด:

์˜ˆ

load_ext tensorboard
tensorboard --logdir ultralytics/runs  # replace with 'runs' directory

์•„๋ž˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ http://localhost:6006/ ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜์—ฌ ๋กœ์ปฌ์—์„œ TensorBoard๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

์˜ˆ

tensorboard --logdir ultralytics/runs  # replace with 'runs' directory

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ…์„œ๋ณด๋“œ๊ฐ€ ๋กœ๋“œ๋˜๊ณ  ๊ต์œก ๋กœ๊ทธ๊ฐ€ ์ €์žฅ๋œ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

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

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

Ultralytics YOLO11 ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด ๊ฐ์ง€ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?

Ultralytics YOLO11 ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด ๊ฐ์ง€ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•˜๋ ค๋ฉด Python API ๋˜๋Š” CLI ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘์— ๋Œ€ํ•œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค:

์‹ฑ๊ธ€-GPU ๋ฐ CPU ๊ต์œก ์˜ˆ์‹œ

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ด์ฐจ ์„ค์ • ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Ultralytics YOLO11 ์˜ ๊ธฐ์ฐจ ๋ชจ๋“œ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Ultralytics YOLO11 ์˜ ๊ธฐ์ฐจ ๋ชจ๋“œ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ์ž๋™ ๋ฐ์ดํ„ฐ ์„ธํŠธ ๋‹ค์šด๋กœ๋“œ: COCO, VOC, ImageNet๊ณผ ๊ฐ™์€ ํ‘œ์ค€ ๋ฐ์ดํ„ฐ์„ธํŠธ๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค์ค‘GPU ์ง€์›: ์—ฌ๋Ÿฌ GPU์—์„œ ํ›ˆ๋ จ์„ ํ™•์žฅํ•˜์—ฌ ๋” ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ๊ตฌ์„ฑ: YAML ํŒŒ์ผ ๋˜๋Š” CLI ์ธ์ˆ˜๋ฅผ ํ†ตํ•ด ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ๊ฐํ™” ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง: ๊ต์œก ๋ฉ”ํŠธ๋ฆญ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถ”์ ํ•˜์—ฌ ๋” ๋‚˜์€ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํšจ์œจ์ ์ด๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๋งž์ถค ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋ ˆ์ด๋‹์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ›ˆ๋ จ ๋ชจ๋“œ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Ultralytics YOLO11 ์—์„œ ์ค‘๋‹จ๋œ ์„ธ์…˜์—์„œ ๊ต์œก์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?

์ค‘๋‹จ๋œ ์„ธ์…˜์—์„œ ํŠธ๋ ˆ์ด๋‹์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๋ฉด resume ์ธ์ˆ˜๋ฅผ True ๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ์ €์žฅ๋œ ์ฒดํฌํฌ์ธํŠธ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ต์œก ์žฌ๊ฐœ ์˜ˆ์‹œ

from ultralytics import YOLO

# Load the partially trained model
model = YOLO("path/to/last.pt")

# Resume training
results = model.train(resume=True)
yolo train resume model=path/to/last.pt

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ค‘๋‹จ๋œ ๊ต์œก ์žฌ๊ฐœํ•˜๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Apple ์‹ค๋ฆฌ์ฝ˜ ์นฉ์—์„œ YOLO11 ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์˜ˆ, Ultralytics YOLO11 ์€ ๋ฉ”ํƒˆ ํผํฌ๋จผ์Šค ์…ฐ์ด๋”(MPS) ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ Apple ์‹ค๋ฆฌ์ฝ˜ ์นฉ์— ๋Œ€ํ•œ ๊ต์œก์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. 'mps'๋ฅผ ํŠธ๋ ˆ์ด๋‹ ์žฅ์น˜๋กœ ์ง€์ •ํ•˜์„ธ์š”.

MPS ๊ต์œก ์˜ˆ์‹œ

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo11n.pt")

# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=mps

์ž์„ธํ•œ ๋‚ด์šฉ์€ Apple Silicon MPS ๊ต์œก ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ผ๋ฐ˜์ ์ธ ๊ต์œก ์„ค์ •์€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•˜๋‚˜์š”?

Ultralytics YOLO11 ์ธ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐฐ์น˜ ํฌ๊ธฐ, ํ•™์Šต ์†๋„, ์—ํฌํฌ ๋“ฑ ๋‹ค์–‘ํ•œ ํ•™์Šต ์„ค์ •์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ฐ„๋žตํ•œ ๊ฐœ์š”์ž…๋‹ˆ๋‹ค:

์ธ์ˆ˜ ๊ธฐ๋ณธ๊ฐ’ ์„ค๋ช…
model None ํ•™์Šต์šฉ ๋ชจ๋ธ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.
data None ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ(์˜ˆ:, coco8.yaml).
epochs 100 ์ด ๊ต์œก ์—ํฌํฌ ์ˆ˜์ž…๋‹ˆ๋‹ค.
batch 16 ๋ฐฐ์น˜ ํฌ๊ธฐ, ์ •์ˆ˜ ๋˜๋Š” ์ž๋™ ๋ชจ๋“œ๋กœ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
imgsz 640 ๊ต์œก์šฉ ๋ชฉํ‘œ ์ด๋ฏธ์ง€ ํฌ๊ธฐ.
device None ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ต์œก์šฉ ์ปดํ“จํ„ฐ ์žฅ์น˜ cpu, 0, 0,1๋˜๋Š” mps.
save True ํ›ˆ๋ จ ์ฒดํฌํฌ์ธํŠธ์™€ ์ตœ์ข… ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ต์œก ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๊ฐ€์ด๋“œ๋Š” ๊ต์œก ์„ค์ • ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ“…1 ๋…„ ์ „ ์ƒ์„ฑ๋จ โœ๏ธ ์—…๋ฐ์ดํŠธ๋จ 17 ์ผ ์ „

๋Œ“๊ธ€