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

YOLOv8 AzureML์˜ ๐Ÿš€

Azure๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

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

AzureML(Azure ๋จธ์‹  ๋Ÿฌ๋‹)์ด๋ž€?

์ผ๋ฐ˜์ ์œผ๋กœ AzureML์ด๋ผ๊ณ  ํ•˜๋Š” Azure ๊ธฐ๊ณ„ ํ•™์Šต์€ ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜ˆ์ธก ๋ถ„์„์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํšจ์œจ์ ์œผ๋กœ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋กœ, ์กฐ์ง์ด ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜๊ณ  ํด๋ผ์šฐ๋“œ์˜ ๋ชจ๋“  ์ด์ ์„ ๊ธฐ๊ณ„ ํ•™์Šต์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. AzureML์€ ๋จธ์‹  ๋Ÿฌ๋‹์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ฑ, ์‚ฌ์šฉ ํŽธ์˜์„ฑ, ํ™•์žฅ์„ฑ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค์™€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋จธ์‹  ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž๋™ํ™”๋œ ๋จธ์‹  ๋Ÿฌ๋‹, ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๋ชจ๋ธ ํ•™์Šต๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ•๋ ฅํ•œ Python SDK๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

AzureML์€ YOLO ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ด๋–ค ์ด์ ์ด ์žˆ๋‚˜์š”?

YOLO (You Only Look Once) ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด AzureML์€ ๋จธ์‹  ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ํšจ์œจ์ ์ธ ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ž…์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๋” ๊ด‘๋ฒ”์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ™•์žฅํ•˜๋ ค๋Š” ๊ฒฝ์šฐ, AzureML์˜ ์œ ์—ฐํ•˜๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ํ™˜๊ฒฝ์€ ์‚ฌ์šฉ์ž์˜ ํ•„์š”์— ๋งž๋Š” ๋‹ค์–‘ํ•œ ๋„๊ตฌ์™€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. AzureML์„ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

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

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์ปดํ“จํŒ… ํ„ฐ๋ฏธ๋„ ๋˜๋Š” ๋…ธํŠธ๋ถ์—์„œ AzureML์„ ์‚ฌ์šฉํ•˜์—ฌ YOLOv8 ๊ฐœ์ฒด ํƒ์ง€ ๋ชจ๋ธ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋Š” ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์ œ ์กฐ๊ฑด

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— AzureML ์ž‘์—… ์˜์—ญ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์—†๋Š” ๊ฒฝ์šฐ Azure์˜ ๊ณต์‹ ์„ค๋ช…์„œ์— ๋”ฐ๋ผ ์ƒˆ AzureML ์ž‘์—… ์˜์—ญ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—… ์˜์—ญ์€ ๋ชจ๋“  AzureML ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ๊ณต๊ฐ„์˜ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ปดํ“จํŒ… ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ

AzureML ์ž‘์—… ์˜์—ญ์—์„œ ์ปดํ“จํŒ… > ์ธ์Šคํ„ด์Šค ์ปดํ“จํŒ… > ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

Azure ์ปดํ“จํŒ… ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ

ํ„ฐ๋ฏธ๋„์—์„œ ๋น ๋ฅธ ์‹œ์ž‘

์ปดํ“จํŒ…์„ ์‹œ์ž‘ํ•˜๊ณ  ํ„ฐ๋ฏธ๋„์„ ์—ฝ๋‹ˆ๋‹ค:

ํ„ฐ๋ฏธ๋„ ์—ด๊ธฐ

๊ฐ€์ƒ ํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ

์ฝ˜๋‹ค ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์•ˆ์— pip๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

conda create --name yolov8env -y
conda activate yolov8env
conda install pip -y

ํ•„์š”ํ•œ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

cd ultralytics
pip install -r requirements.txt
pip install ultralytics
pip install onnx>=1.12.0

YOLOv8 ์ž‘์—… ์ˆ˜ํ–‰

์˜ˆ์ธก:

yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'

์ดˆ๊ธฐ ํ•™์Šต๋ฅ  0.01๋กœ 10๊ฐœ์˜ ์—ํฌํฌ์— ๋Œ€ํ•œ ํƒ์ง€ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•ฉ๋‹ˆ๋‹ค:

yolo train data=coco8.yaml model=yolov8n.pt epochs=10 lr0=0.01

์ž์„ธํ•œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ Ultralytics CLI ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ธํŠธ๋ถ์—์„œ ๋น ๋ฅธ ์‹œ์ž‘

์ƒˆ IPython ์ปค๋„ ์ƒ์„ฑ

์ปดํ“จํŒ… ํ„ฐ๋ฏธ๋„์„ ์—ฝ๋‹ˆ๋‹ค.

ํ„ฐ๋ฏธ๋„ ์—ด๊ธฐ

์ปดํ“จํŒ… ํ„ฐ๋ฏธ๋„์—์„œ ๋…ธํŠธ๋ถ์—์„œ ์ข…์†์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ƒˆ ์•„์ดํ”ผ์ปค๋„์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

conda create --name yolov8env -y
conda activate yolov8env
conda install pip -y
conda install ipykernel -y
python -m ipykernel install --user --name yolov8env --display-name "yolov8env"

ํ„ฐ๋ฏธ๋„์„ ๋‹ซ๊ณ  ์ƒˆ ๋…ธํŠธ๋ถ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋…ธํŠธ๋ถ์—์„œ ์ƒˆ ์ปค๋„์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋…ธํŠธ๋ถ ์…€์„ ์—ด๊ณ  ํ•„์š”ํ•œ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

%%bash
source activate yolov8env
cd ultralytics
pip install -r requirements.txt
pip install ultralytics
pip install onnx>=1.12.0

์ฃผ์˜ํ•  ์ ์€ source activate yolov8env ๋ฅผ ๋ชจ๋“  %%bash ์…€์— ์ ์šฉํ•˜์—ฌ %%bash ์…€์ด ์›ํ•˜๋Š” ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์ธก์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Ultralytics CLI:

%%bash
source activate yolov8env
yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'

๋˜๋Š” Ultralytics Python ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official YOLOv8n model

# Use the model
model.train(data="coco8.yaml", epochs=3)  # train the model
metrics = model.val()  # evaluate model performance on the validation set
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image
path = model.export(format="onnx")  # export the model to ONNX format

์œ„์˜ ํ„ฐ๋ฏธ๋„ ์„น์…˜์— ์„ค๋ช…๋œ ๋Œ€๋กœ YOLOv8 ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Ultralytics CLI ๋˜๋Š” Python ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

AzureML๋กœ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

์ด ๊ฐ€์ด๋“œ๋Š” AzureML์—์„œ YOLOv8 ์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์†Œ๊ฐœ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ฐ€์ด๋“œ๋Š” AzureML์ด ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์˜ ์ผ๋ถ€์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋จธ์‹  ๋Ÿฌ๋‹ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ  AzureML์˜ ์ž ์žฌ๋ ฅ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”:

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


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

๋Œ“๊ธ€