YOLO Vision 2026:

AzureML์—์„œ์˜ Ultralytics YOLOv5 ๐Ÿš€ ํ€ต์Šคํƒ€ํŠธ#

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

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

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

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

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

์‚ฌ์ „ ์š”๊ตฌ ์‚ฌํ•ญ#

์ด ๊ฐ€์ด๋“œ๋ฅผ ๋”ฐ๋ฅด๋ ค๋ฉด ํ™œ์„ฑํ™”๋œ Azure subscription๊ณผ AzureML workspace์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์›Œํฌ์ŠคํŽ˜์ด์Šค๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๊ณต์‹ Azure documentation์„์ฐธ์กฐํ•˜์—ฌ ์ƒ์„ฑํ•ด ์ฃผ์„ธ์š”.

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

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 open terminal button location

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

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

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

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

ํŠน์ • 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

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

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

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

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

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

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

  • COCO128๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ๋ชจ๋ธ์„ **ํ•™์Šต(Train)**ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Training Mode ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

    # 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
  • Precision, Recall, mAP ๋“ฑ์˜ ์ง€ํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•™์Šต๋œ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ **๊ฒ€์ฆ(Validate)**ํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ Validation Mode ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    # Validate the yolov5s model on the COCO128 validation set
    python val.py --weights yolov5s.pt --data coco128.yaml --img 640
  • ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๋‚˜ ๋น„๋””์˜ค์— ๋Œ€ํ•ด **์ถ”๋ก ์„ ์‹คํ–‰(Run Inference)**ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ถ”๋ก  ์†Œ์Šค์— ๋Œ€ํ•ด์„œ๋Š” Prediction Mode ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”.

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

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

๋…ธํŠธ๋ถ ์‚ฌ์šฉํ•˜๊ธฐ#

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

์ƒˆ 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 ๋…ธํŠธ๋ถ ํŒŒ์ผ์„ ์—ด๊ฑฐ๋‚˜ ๋งŒ๋“ค ๋•Œ, ์šฐ์ธก ์ƒ๋‹จ์˜ ์ปค๋„ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ ์ƒˆ ์ปค๋„("Python (yolov5env)")์„ ์„ ํƒํ•˜์„ธ์š”.

๋…ธํŠธ๋ถ ์…€์—์„œ ๋ช…๋ น ์‹คํ–‰#

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

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

    %%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 Integrations ๋˜๋Š” ์ž์„ธํ•œ YOLOv5 documentation์„ ํ™•์ธํ•ด ๋ณด์„ธ์š”. ๋ถ„์‚ฐ ํ•™์Šต์ด๋‚˜ ์—”๋“œํฌ์ธํŠธ๋กœ์„œ์˜ ๋ชจ๋ธ ๋ฐฐํฌ์™€ ๊ฐ™์€ ๊ณ ๊ธ‰ ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ๊ฒฝ์šฐ AzureML documentation๋„ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ์—ฌ์ž

๋Œ“๊ธ€