Ultralytics YOLOv5 ð AWS ãã£ãŒãã©ãŒãã³ã°ã€ã³ã¹ã¿ã³ã¹å®å šã¬ã€ã
髿§èœãªãã£ãŒãã©ãŒãã³ã°ç°å¢ã®ã»ããã¢ããã¯ãç¹ã«åå¿è ã«ãšã£ãŠå°é£ã«æããããšããããŸããã§ããå®å¿ãã ããïŒð ïž ãã®ã¬ã€ãã§ã¯ãUltralytics YOLOv5ãAWSãã£ãŒãã©ãŒãã³ã°ã€ã³ã¹ã¿ã³ã¹äžã§èµ·åããããã®ã¹ããããã€ã¹ãããã®æé ã説æããŸããAmazon Web ServicesïŒAWSïŒã®åãæŽ»çšããããšã§ãæ©æ¢°åŠç¿ïŒMLïŒã®åå¿è ã§ãè¿ éãã€ã³ã¹ãå¹çããå§ããããŸããAWSãã©ãããã©ãŒã ã®ã¹ã±ãŒã©ããªãã£ã¯ãå®éšãšæ¬çªãããã€ã®äž¡æ¹ã«æé©ã§ãã
YOLOv5ã®ãã®ä»ã®ã¯ã€ãã¯ã¹ã¿ãŒããªãã·ã§ã³ã«ã¯ãGoogle Colab Notebook ãKaggleç°å¢
ãGCPãã£ãŒãã©ãŒãã³ã°VMãããã³Docker Hubã§å©çšå¯èœãªãã«ãæžã¿Dockerã€ã¡ãŒãž
ããããŸãã
ã¹ããã1: AWSã³ã³ãœãŒã«ãžã®ãµã€ã³ã€ã³
ãŸããAWS Management Consoleã§ã¢ã«ãŠã³ããäœæããããµã€ã³ã€ã³ããŸãããã°ã€ã³åŸãä»®æ³ãµãŒããŒïŒã€ã³ã¹ã¿ã³ã¹ïŒã管çã§ããEC2ãµãŒãã¹ããã·ã¥ããŒãã«ç§»åããŸãã

ã¹ããã2: ã€ã³ã¹ã¿ã³ã¹ã®èµ·å
EC2ããã·ã¥ããŒãããLaunch Instanceãã¿ã³ãã¯ãªãã¯ããŸããããã«ãããããŒãºã«åãããæ°ããä»®æ³ãµãŒããŒã®äœæããã»ã¹ãéå§ãããŸãã

é©åãªAmazon Machine ImageïŒAMIïŒã®éžæ
æ£ããAMIãéžæããããšãéèŠã§ããããã«ããã€ã³ã¹ã¿ã³ã¹ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšããªã€ã³ã¹ããŒã«ããããœãããŠã§ã¢ã決ãŸããŸããæ€çŽ¢ããŒã«ãDeep Learningããšå ¥åããææ°ã®UbuntuããŒã¹ã®ãã£ãŒãã©ãŒãã³ã°AMIãéžæããŸãïŒå¥ã®OSã«ç¹å®ã®èŠä»¶ãããå Žåãé€ãïŒãAmazonã®ãã£ãŒãã©ãŒãã³ã°AMIã«ã¯ã人æ°ã®ãã£ãŒãã©ãŒãã³ã°ãã¬ãŒã ã¯ãŒã¯ïŒYOLOv5ã䜿çšããPyTorchãªã©ïŒãšå¿ èŠãªGPUãã©ã€ããŒãäºåèšå®ãããŠãããã»ããã¢ããããã»ã¹ãå€§å¹ ã«ç°¡ç¥åããŸãã

ã€ã³ã¹ã¿ã³ã¹ã¿ã€ãã®éžæ
ãã£ãŒãã©ãŒãã³ã°ã¢ãã«ã®ãã¬ãŒãã³ã°ãªã©ã®é«è² è·ã¿ã¹ã¯ã«ã¯ãGPUé«éåã€ã³ã¹ã¿ã³ã¹ã¿ã€ãã®éžæã匷ããå§ãããŸããGPUã¯CPUãšæ¯èŒããŠã¢ãã«ãã¬ãŒãã³ã°ã«å¿ èŠãªæéãå€§å¹ ã«ççž®ã§ããŸããã€ã³ã¹ã¿ã³ã¹ãµã€ãºãéžæããéã¯ãã¢ãã«ãšããŒã¿ã»ããã«ååãªã¡ã¢ãªå®¹éïŒRAMïŒãããããšã確èªããŠãã ããã
泚æ: ã¢ãã«ãšããŒã¿ã»ããã®ãµã€ãºã¯éèŠãªèŠçŽ ã§ããMLã¿ã¹ã¯ãéžæããã€ã³ã¹ã¿ã³ã¹ã®ã¡ã¢ãªãè¶ ããå Žåã¯ãããã©ãŒãã³ã¹ã®åé¡ããšã©ãŒãé¿ããããã«ããã倧ããªã€ã³ã¹ã¿ã³ã¹ã¿ã€ããéžæããå¿ èŠããããŸãã
EC2ã€ã³ã¹ã¿ã³ã¹ã¿ã€ãããŒãžã§å©çšå¯èœãªGPUã€ã³ã¹ã¿ã³ã¹ã¿ã€ãã確èªããŠãã ãããç¹ã«Accelerated Computingã«ããŽãªãã芧ãã ããã

GPU䜿çšç¶æ³ã®ç£èŠãšæé©åã®è©³çްã«ã€ããŠã¯ãAWSã®GPUç£èŠãšæé©åã¬ã€ããåç §ããŠãã ããããªã³ããã³ãæéã§ã³ã¹ããæ¯èŒããã¹ãããã€ã³ã¹ã¿ã³ã¹æéã§æœåšçãªç¯çŽãæ¢ã£ãŠãã ããã
ã€ã³ã¹ã¿ã³ã¹ã®èšå®
ããã³ã¹ãå¹çã®é«ãã¢ãããŒããšããŠãAmazon EC2ã¹ãããã€ã³ã¹ã¿ã³ã¹ã®äœ¿çšãæ€èšããŠãã ãããã¹ãããã€ã³ã¹ã¿ã³ã¹ã§ã¯æªäœ¿çšã®EC2ãã£ãã·ãã£ã«å ¥æã§ãããªã³ããã³ãäŸ¡æ Œãšæ¯ã¹ãŠå€§å¹ ãªå²åŒãåŸãããããšãå€ãã§ããæ°žç¶æ§ãå¿ èŠãªã¿ã¹ã¯ïŒã¹ãããã€ã³ã¹ã¿ã³ã¹ãäžæãããå Žåã§ãããŒã¿ãä¿åããïŒã«ã¯ãpersistent requestãéžæããŠãã ãããããã«ããã¹ãã¬ãŒãžããªã¥ãŒã ãä¿æãããŸãã

ã€ã³ã¹ã¿ã³ã¹èµ·åãŠã£ã¶ãŒãã®ã¹ããã4ã7ã«é²ã¿ãã¹ãã¬ãŒãžã®èšå®ãã¿ã°ã®è¿œå ãã»ãã¥ãªãã£ã°ã«ãŒãã®èšå®ïŒIPã¢ãã¬ã¹ããSSHããŒã22ãéããŠããããšã確èªïŒãLaunchãã¯ãªãã¯ããåã«èšå®ã確èªããŸããã»ãã¥ã¢ãªSSHã¢ã¯ã»ã¹ã®ããã«ãæ°ããããŒãã¢ãäœæãããæ¢åã®ãã®ãéžæããå¿ èŠããããŸãã
ã¹ããã3: ã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶
ã€ã³ã¹ã¿ã³ã¹ã®ç¶æ
ããrunningããšè¡šç€ºãããããEC2ããã·ã¥ããŒãããéžæããŸããConnectãã¿ã³ãã¯ãªãã¯ããŠæ¥ç¶ãªãã·ã§ã³ã衚瀺ããŸããããŒã«ã«ã¿ãŒããã«ïŒmacOS/Linuxã®TerminalããŸãã¯Windowsã®PuTTY/WSLïŒã§æäŸãããSSHã³ãã³ãäŸã䜿çšããŠãã»ãã¥ã¢ãªæ¥ç¶ã確ç«ããŸããèµ·åæã«äœæãŸãã¯éžæããç§å¯éµãã¡ã€ã«ïŒ.pemïŒãå¿
èŠã§ãã

ã¹ããã4: Ultralytics YOLOv5ã®å®è¡
SSHã§æ¥ç¶ããããYOLOv5ãã»ããã¢ããããŠå®è¡ã§ããŸãããŸããGitHubããå
¬åŒYOLOv5ãªããžããªãã¯ããŒã³ãããã£ã¬ã¯ããªã«ç§»åããŸããæ¬¡ã«ãpipã䜿çšããŠå¿
èŠãªäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŸããPython 3.8以éã®ç°å¢ã䜿çšããããšããå§ãããŸãããã¬ãŒãã³ã°ãæ€åºãªã©ã®ã³ãã³ããå®è¡ãããšãå¿
èŠãªã¢ãã«ãšããŒã¿ã»ãããææ°ã®YOLOv5ãªãªãŒã¹ããèªåçã«ããŠã³ããŒããããŸãã
# Clone the YOLOv5 repository
git clone https://github.com/ultralytics/yolov5
cd yolov5
# Install required packages
pip install -r requirements.txtç°å¢ã®æºåãã§ããããããŸããŸãªã¿ã¹ã¯ã«YOLOv5ã䜿çšã§ããŸãïŒ
# Train a YOLOv5 model on a custom dataset (e.g., coco128.yaml)
python train.py --data coco128.yaml --weights yolov5s.pt --img 640
# Validate the performance (Precision, Recall, mAP) of a trained model (e.g., yolov5s.pt)
python val.py --weights yolov5s.pt --data coco128.yaml --img 640
# Run inference (object detection) on images or videos using a trained model
python detect.py --weights yolov5s.pt --source path/to/your/images_or_videos/ --img 640
# Export the trained model to various formats like ONNX, CoreML, TFLite for deployment
# See https://docs.ultralytics.com/modes/export/ for more details
python export.py --weights yolov5s.pt --include onnx coreml tflite --img 640ãã¬ãŒãã³ã°ãæ€èšŒãäºæž¬ïŒæšè«ïŒããšã¯ã¹ããŒãã®è©³çްã¬ã€ãã«ã€ããŠã¯ãUltralyticsããã¥ã¡ã³ããåç §ããŠãã ããã
ãªãã·ã§ã³: ã¹ã¯ããã¡ã¢ãªã®å¢å
éåžžã«å€§ããªããŒã¿ã»ãããæ±ãå Žåããã¬ãŒãã³ã°äžã«ã¡ã¢ãªå¶éã«ééããå Žåãã€ã³ã¹ã¿ã³ã¹ã®ã¹ã¯ããã¡ã¢ãªãå¢ããããšãæå¹ãªå ŽåããããŸããã¹ã¯ããé åã¯ã·ã¹ãã ããã£ã¹ã¯ã¹ããŒã¹ãä»®æ³RAMãšããŠäœ¿çšã§ããããã«ããŸãã
# Allocate a 64GB swap file (adjust size as needed)
sudo fallocate -l 64G /swapfile
# Set correct permissions
sudo chmod 600 /swapfile
# Set up the file as a Linux swap area
sudo mkswap /swapfile
# Enable the swap file
sudo swapon /swapfile
# Verify the swap memory is active
free -hããã§ãšãããããŸãïŒð AWSãã£ãŒãã©ãŒãã³ã°ã€ã³ã¹ã¿ã³ã¹ã®ã»ããã¢ãããUltralytics YOLOv5ã®ã€ã³ã¹ããŒã«ãå®äºããç©äœæ€åºã¿ã¹ã¯ãå®è¡ããæºåãæŽããŸãããäºååŠç¿æžã¿ã¢ãã«ã®å®éšã§ããç¬èªããŒã¿ã§ã®ãã¬ãŒãã³ã°ã§ãããã®åŒ·åãªã»ããã¢ããã¯ã³ã³ãã¥ãŒã¿ãŒããžã§ã³ãããžã§ã¯ãã®ã¹ã±ãŒã©ãã«ãªåºç€ãæäŸããŸããåé¡ãçºçããå Žåã¯ãå å®ããAWSããã¥ã¡ã³ããšFAQãªã©ã®Ultralyticsã³ãã¥ããã£ãªãœãŒã¹ãåç §ããŠãã ãããæ€åºã楜ããã§ãã ããïŒ