YOLO Vision 2026:

AzureML์˜ Ultralytics YOLOv5 ๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘#

Microsoft Azure Machine Learning (AzureML)์˜ Ultralytics YOLOv5 ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ ์ƒ์„ฑ๋ถ€ํ„ฐ ๋ชจ๋ธ ํ•™์Šต ๋ฐ ์ถ”๋ก  ์‹คํ–‰๊นŒ์ง€ AzureML ์ปดํ“จํŒ… ์ธ์Šคํ„ด์Šค์—์„œ YOLOv5๋ฅผ ์„ค์ •ํ•˜๋Š” ์ „์ฒด ๊ณผ์ •์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

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

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

Azure Machine Learning(AzureML)์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?#

Azure Machine Learning(AzureML)์€ ๋จธ์‹  ๋Ÿฌ๋‹ ๋ชจ๋ธ์˜ ๊ฐœ๋ฐœ, ํ•™์Šต ๋ฐ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ ํŠนํ™”๋œ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ˆ˜์ค€์˜ ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž์™€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ ํ•ฉํ•œ ๋„๊ตฌ๋ฅผ ๊ฐ–์ถ˜ ํ˜‘์—… ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ๊ธฐ๋Šฅ์œผ๋กœ๋Š” ์ž๋™ํ™”๋œ ๋จธ์‹  ๋Ÿฌ๋‹(AutoML), ๋ชจ๋ธ ์ƒ์„ฑ์„ ์œ„ํ•œ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ์ธํ„ฐํŽ˜์ด์Šค, ML ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ Python SDK๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. AzureML์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์˜ˆ์ธก ๋ชจ๋ธ๋ง์„ ํ†ตํ•ฉํ•˜๋Š” ๊ณผ์ •์„ ๊ฐ„์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ์กฐ๊ฑด#

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

์ปดํ“จํŒ… ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ#

AzureML์˜ ์ปดํ“จํŒ… ์ธ์Šคํ„ด์Šค๋Š” ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž๋ฅผ ์œ„ํ•œ ๊ด€๋ฆฌํ˜• ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ์›Œํฌ์Šคํ…Œ์ด์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  1. AzureML ์ž‘์—… ์˜์—ญ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  2. ์™ผ์ชฝ ์ฐฝ์—์„œ Compute๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. Compute instances ํƒญ์œผ๋กœ ์ด๋™ํ•œ ๋‹ค์Œ New๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ํ•™์Šต ๋˜๋Š” ์ถ”๋ก  ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ CPU ๋˜๋Š” GPU ๋ฆฌ์†Œ์Šค๋ฅผ ์„ ํƒํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
Azure ML create compute instance interface

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

์ปดํ“จํŒ… ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹คํ–‰๋˜๋ฉด AzureML ์ŠคํŠœ๋””์˜ค์—์„œ ํ•ด๋‹น ํ„ฐ๋ฏธ๋„์— ์ง์ ‘ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์™ผ์ชฝ ์ฐฝ์—์„œ Notebooks ์„น์…˜์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ƒ๋‹จ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ ์ปดํ“จํŒ… ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
  3. ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ € ์•„๋ž˜์˜ Terminal ์˜ต์…˜์„ ํด๋ฆญํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

Azure ML ํ„ฐ๋ฏธ๋„ ์—ด๊ธฐ ๋ฒ„ํŠผ ์œ„์น˜

YOLOv5 ์„ค์ • ๋ฐ ์‹คํ–‰#

์ด์ œ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ณ  Ultralytics YOLOv5๋ฅผ ์‹คํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ๊ฐ€์ƒ ํ™˜๊ฒฝ ์ƒ์„ฑ#

์ข…์†์„ฑ์„ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. AzureML ์ปดํ“จํŒ… ์ธ์Šคํ„ด์Šค์— ์‚ฌ์ „ ์„ค์น˜๋œ Conda๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ Conda ์„ค์ • ๊ฐ€์ด๋“œ๋Š” Ultralytics Conda ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŠน์ • Python ๋ฒ„์ „์œผ๋กœ Conda ํ™˜๊ฒฝ(์˜ˆ: yolov5env)์„ ์ƒ์„ฑํ•˜๊ณ  ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค:

conda create --name yolov5env -y python=3.10 # Create a new Conda environment
conda activate yolov5env                     # Activate the environment
conda install pip -y                         # Ensure pip is installed

2. YOLOv5 ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ#

Git์„ ์‚ฌ์šฉํ•˜์—ฌ GitHub์—์„œ ๊ณต์‹ Ultralytics YOLOv5 ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค:

git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5                                       # Navigate into the directory
# Initialize submodules (if any, though YOLOv5 typically doesn't require this step)
# git submodule update --init --recursive

3. ์ข…์†์„ฑ ์„ค์น˜#

requirements.txt ํŒŒ์ผ์— ๋‚˜์—ด๋œ ํ•„์ˆ˜ Python ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ชจ๋ธ ๋‚ด๋ณด๋‚ด๊ธฐ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ONNX๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

pip install -r requirements.txt # Install core dependencies
pip install "onnx>=1.12.0"      # Install ONNX for exporting

4. YOLOv5 ์ž‘์—… ์ˆ˜ํ–‰#

์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด YOLOv5 ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ณ , ๊ฒ€์ฆํ•˜๊ณ , ์ถ”๋ก ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • COCO128๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์…‹์—์„œ ๋ชจ๋ธ์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•™์Šต ๋ชจ๋“œ ์„ค๋ช…์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

    # Start training using yolov5s pretrained weights on the COCO128 dataset
    python train.py --data coco128.yaml --weights yolov5s.pt --img 640 --epochs 10 --batch 16
  • ์ •๋ฐ€๋„, ์žฌํ˜„์œจ, mAP์™€ ๊ฐ™์€ ์ง€ํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•™์Šต๋œ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์€ ๊ฒ€์ฆ ๋ชจ๋“œ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    # Validate the yolov5s model on the COCO128 validation set
    python val.py --weights yolov5s.pt --data coco128.yaml --img 640
  • ์ƒˆ ์ด๋ฏธ์ง€ ๋˜๋Š” ๋™์˜์ƒ์—์„œ ์ถ”๋ก ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ถ”๋ก  ์†Œ์Šค๋Š” ์˜ˆ์ธก ๋ชจ๋“œ ์„ค๋ช…์„œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    # Run inference with yolov5s on sample images
    python detect.py --weights yolov5s.pt --source data/images --img 640
  • ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ๋ชจ๋ธ์„ ONNX, TensorRT, CoreML๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋‚ด๋ณด๋‚ด๊ธฐ ๋ชจ๋“œ ๊ฐ€์ด๋“œ์™€ ONNX ํ†ตํ•ฉ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    # Export yolov5s to ONNX format
    python export.py --weights yolov5s.pt --include onnx --img 640

Notebook ์‚ฌ์šฉ#

๋Œ€ํ™”ํ˜• ํ™˜๊ฒฝ์„ ์„ ํ˜ธํ•œ๋‹ค๋ฉด AzureML Notebook์—์„œ ์ด๋Ÿฌํ•œ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Conda ํ™˜๊ฒฝ์— ์—ฐ๊ฒฐ๋œ ์‚ฌ์šฉ์ž ์ง€์ • IPython ์ปค๋„์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ปดํ“จํŒ… ์ธ์Šคํ„ด์Šค ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

# Ensure your Conda environment is active
# conda activate yolov5env

# Install ipykernel if not already present
conda install ipykernel -y

# Create a new kernel linked to your environment
python -m ipykernel install --user --name yolov5env --display-name "Python (yolov5env)"

์ปค๋„์„ ์ƒ์„ฑํ•œ ํ›„ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ƒˆ๋กœ ๊ณ ์นฉ๋‹ˆ๋‹ค. .ipynb Notebook ํŒŒ์ผ์„ ์—ด๊ฑฐ๋‚˜ ์ƒ์„ฑํ•  ๋•Œ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์˜ ์ปค๋„ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ ์ƒˆ ์ปค๋„("Python (yolov5env)")์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

Notebook ์…€์—์„œ ๋ช…๋ น ์‹คํ–‰#

  • Python ์…€: Python ์…€์˜ ์ฝ”๋“œ๋Š” ์„ ํƒํ•œ yolov5env ์ปค๋„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  • Bash ์…€: ์…ธ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์…€์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— %%bash ๋งค์ง ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ bash ์…€ ๋‚ด์—์„œ Conda ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. bash ์…€์€ Notebook ์ปค๋„์˜ ํ™˜๊ฒฝ ์ปจํ…์ŠคํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์†ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

    %%bash
    source activate yolov5env # Activate environment within the cell
    
    # Example: Run validation using the activated environment
    python val.py --weights yolov5s.pt --data coco128.yaml --img 640

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค! AzureML์—์„œ Ultralytics YOLOv5๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋” ์‚ดํŽด๋ณด๋ ค๋ฉด ๋‹ค๋ฅธ Ultralytics ํ†ตํ•ฉ ๋˜๋Š” ์ž์„ธํ•œ YOLOv5 ์„ค๋ช…์„œ๋ฅผ ํ™•์ธํ•ด ๋ณด์„ธ์š”. ๋ถ„์‚ฐ ํ•™์Šต์ด๋‚˜ ์—”๋“œํฌ์ธํŠธ๋กœ์˜ ๋ชจ๋ธ ๋ฐฐํฌ์™€ ๊ฐ™์€ ๊ณ ๊ธ‰ ์‹œ๋‚˜๋ฆฌ์˜ค์—๋Š” AzureML ์„ค๋ช…์„œ๋„ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์—ฌ์ž

๋Œ“๊ธ€