AzureMLã§ã®Ultralytics YOLOv5 ð ã¯ã€ãã¯ã¹ã¿ãŒã#
ãã®ã¬ã€ãã§ã¯ãä»®æ³ç°å¢ã®äœæããã¢ãã«ã®ãã¬ãŒãã³ã°ãæšè«ã®å®è¡ãŸã§ãMicrosoft Azure Machine LearningïŒAzureMLïŒã®ã³ã³ãã¥ãŒãã£ã³ã°ã€ã³ã¹ã¿ã³ã¹ã« Ultralytics YOLOv5 ãã»ããã¢ããããæé ã説æããŸãã
Azureãšã¯ïŒ#
Azure ã¯ãMicrosoft ã®ã¯ã©ãŠãã³ã³ãã¥ãŒãã£ã³ã°ãã©ãããã©ãŒã ã§ããã³ã³ãã¥ãŒãã£ã³ã°èœåãããŒã¿ããŒã¹ãåæããŒã«ãæ©æ¢°åŠç¿æ©èœããããã¯ãŒã¯ãœãªã¥ãŒã·ã§ã³ãªã©ã®ãµãŒãã¹ãæäŸããŠããŸããAzure ãå©çšãããšãMicrosoft ã管çããããŒã¿ã»ã³ã¿ãŒãéããŠã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãæ§ç¯ããããã€ã管çã§ãããªã³ãã¬ãã¹ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ããã¯ã©ãŠããžã®ã¯ãŒã¯ããŒãç§»è¡ã容æã«ãªããŸãã
Azure Machine LearningïŒAzureMLïŒãšã¯ïŒ#
Azure Machine LearningïŒAzureMLïŒã¯ãæ©æ¢°åŠç¿ã¢ãã«ã®éçºããã¬ãŒãã³ã°ããããã€åãã«èšèšãããå°çšã®ã¯ã©ãŠããµãŒãã¹ã§ããããããã¹ãã«ã¬ãã«ã®ããŒã¿ãµã€ãšã³ãã£ã¹ããéçºè ã«é©ããããŒã«ãåããå ±åäœæ¥ç°å¢ãæäŸããŸããäž»ãªæ©èœã«ã¯ãèªåæ©æ¢°åŠç¿ïŒAutoMLïŒãã¢ãã«äœæçšã®ãã©ãã°ïŒããããã€ã³ã¿ãŒãã§ã€ã¹ãML ã©ã€ããµã€ã¯ã«ã詳现ã«å¶åŸ¡ããããã® Python SDK ããããŸããAzureML ã«ãããã¢ããªã±ãŒã·ã§ã³ã«äºæž¬ã¢ããªã³ã°ãçµã¿èŸŒãããã»ã¹ãç°¡çŽ åãããŸãã
åææ¡ä»¶#
ãã®ã¬ã€ãã«æ²¿ã£ãŠäœæ¥ããã«ã¯ãæå¹ãªAzureãµãã¹ã¯ãªãã·ã§ã³ãšAzureMLã¯ãŒã¯ã¹ããŒã¹ãžã®ã¢ã¯ã»ã¹ãå¿ èŠã§ããã¯ãŒã¯ã¹ããŒã¹ããŸã èšå®ããŠããªãå Žåã¯ãå ¬åŒã®Azureããã¥ã¡ã³ããåç §ããŠäœæããŠãã ããã
ã³ã³ãã¥ãŒãã£ã³ã°ã€ã³ã¹ã¿ã³ã¹ãäœæãã#
AzureMLã®ã³ã³ãã¥ãŒãã£ã³ã°ã€ã³ã¹ã¿ã³ã¹ã¯ãããŒã¿ãµã€ãšã³ãã£ã¹ãåãã®ãããŒãžãã¯ã©ãŠãã¯ãŒã¯ã¹ããŒã·ã§ã³ã§ãã
- AzureMLã¯ãŒã¯ã¹ããŒã¹ã«ç§»åããŸãã
- å·ŠåŽã®ãã€ã³ã§ComputeãéžæããŸãã
- Compute instancesã¿ãã«ç§»åããNewãã¯ãªãã¯ããŸãã
- ãã¬ãŒãã³ã°ãŸãã¯æšè«ã®ããŒãºã«å¿ããŠãé©åãªCPUãŸãã¯GPUãªãœãŒã¹ãéžæããã€ã³ã¹ã¿ã³ã¹ãæ§æããŸãã
ã¿ãŒããã«ãéã#
ã³ã³ãã¥ãŒãã£ã³ã°ã€ã³ã¹ã¿ã³ã¹ãèµ·åããããAzureML StudioããçŽæ¥ã¿ãŒããã«ã«ã¢ã¯ã»ã¹ã§ããŸãã
- å·ŠåŽã®ãã€ã³ã§Notebooksã»ã¯ã·ã§ã³ã«ç§»åããŸãã
- äžéšã®ããããããŠã³ã¡ãã¥ãŒããã³ã³ãã¥ãŒãã£ã³ã°ã€ã³ã¹ã¿ã³ã¹ãæ¢ããŸãã
- ãã¡ã€ã«ãã©ãŠã¶ãŒã®äžã«ããTerminalãã¯ãªãã¯ãããšãã€ã³ã¹ã¿ã³ã¹ã®ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹ãéããŸãã

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 installed2. YOLOv5ãªããžããªãã¯ããŒã³ãã#
Git ã䜿çšããŠãGitHub ããå ¬åŒã® Ultralytics YOLOv5 ãªããžããªãã¯ããŒã³ããŸãã
git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5 # Navigate into the directory3. äŸåé¢ä¿ãã€ã³ã¹ããŒã«ãã#
requirements.txtãã¡ã€ã«ã«èšèŒãããŠããå¿
èŠãªPythonããã±ãŒãžãã€ã³ã¹ããŒã«ããŸããã¢ãã«ã®ãšã¯ã¹ããŒãæ©èœãå©çšã§ããããã«ãONNXãã€ã³ã¹ããŒã«ããŸãã
pip install -r requirements.txt # Install core dependencies
pip install "onnx>=1.12.0" # Install ONNX for exporting4. 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 -
PrecisionãRecallãmAPãªã©ã®ææšã䜿ã£ãŠããã¬ãŒãã³ã°æžã¿ã¢ãã«ã®æ§èœãæ€èšŒããŸãããã¹ãŠã®ãªãã·ã§ã³ã確èªããã«ã¯ã
python val.py --helpãå®è¡ããŠãã ããã# Validate the yolov5s model on the COCO128 validation set python val.py --weights yolov5s.pt --data coco128.yaml --img 640 -
æ°ããç»åãåç»ã§æšè«ãå®è¡ããŸãã察å¿ããŠããæšè«ãœãŒã¹ã«ã€ããŠã¯ãYOLOv5ã¯ã€ãã¯ã¹ã¿ãŒããã芧ãã ããã
# 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
ããŒãããã¯ã䜿çšãã#
察話çã«æäœãããå Žåã¯ã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ããŒãããã¯ãã¡ã€ã«ãéããäœæãããšãã«ãå³äžã®ã«ãŒãã«ã®ããããããŠã³ã¡ãã¥ãŒãããæ°ããã«ãŒãã«ïŒ"Python (yolov5env)"ïŒãéžæããŸãã
ããŒãããã¯ã®ã»ã«ã§ã³ãã³ããå®è¡ãã#
-
Pythonã»ã«ïŒPythonã»ã«å ã®ã³ãŒãã¯ãéžæãã
yolov5envã«ãŒãã«ã䜿çšããŠèªåçã«å®è¡ãããŸãã -
Bashã»ã«ïŒã·ã§ã«ã³ãã³ããå®è¡ããã«ã¯ãã»ã«ã®å é ã§
%%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ãã»ããã¢ããããŠå®è¡ã§ããŸããã忣ãã¬ãŒãã³ã°ããšã³ããã€ã³ããšããŠã®ã¢ãã«ãããã€ãªã©ãé«åºŠãªã·ããªãªã«ã€ããŠã¯ãAzureMLã®ããã¥ã¡ã³ããåèã«ãªããŸãã
ãããã質å#
æšè«ãCOCO128ã䜿ã£ãçæéã®ãã¹ãå®è¡ã«ã¯CPUã€ã³ã¹ã¿ã³ã¹ã§ååã§ãããæ¬æ Œçãªãã¬ãŒãã³ã°ã«ã¯GPUãµã€ãºãå¿ èŠã§ããã³ã³ãã¥ãŒãã£ã³ã°ã€ã³ã¹ã¿ã³ã¹ã®äœææã«GPUä»®æ³ãã·ã³ãéžæãã
python -c "import torch; print(torch.cuda.is_available())"ã§PyTorchãGPUãèªèããŠããããšã確èªããŠãã ãããBashã»ã«ã¯ããŒãããã¯ã«ãŒãã«ã®ç°å¢ãåŒãç¶ããŸãããå
%%bashã»ã«ã®å é ã«source activate yolov5envã远å ããããäœæããPython (yolov5env)ã«ãŒãã«ã§Pythonã»ã«ãå®è¡ããŠãã ããã~/cloudfilesã«ããŠã³ããããã¯ãŒã¯ã¹ããŒã¹ã®ãã¡ã€ã«å ±æå ã®ãã¡ã€ã«ã¯ã忢åŸãä¿æãããã»ãã®ã³ã³ãã¥ãŒãã£ã³ã°ã€ã³ã¹ã¿ã³ã¹ãããã¢ã¯ã»ã¹ã§ããŸããã€ã³ã¹ã¿ã³ã¹ãã£ã¹ã¯äžã®ãã以å€ã®ãã¡ã€ã«ã¯ãã€ã³ã¹ã¿ã³ã¹ãååšããéã¯ä¿æãããŸãããã€ã³ã¹ã¿ã³ã¹ãåé€ãããšå€±ãããŸããã¯ãã
yoloCLIã䜿çšãããšãåãCondaç°å¢å ã§pip install ultralyticsã«ããYOLO26ã®ãã¬ãŒãã³ã°ãæ€èšŒããšã¯ã¹ããŒããå¯èœã§ãã
ã³ã¡ã³ã
質åããããçµæãå ±æããããã»ãã®äººããµããŒããããã§ããŸãã