Dockerã§YOLOv5 ðãå§ãã#
Ultralytics YOLOv5 Dockerã¯ã€ãã¯ã¹ã¿ãŒãã¬ã€ããžããããïŒãã®ãã¥ãŒããªã¢ã«ã§ã¯ãDockerã³ã³ããå ã§YOLOv5ãã»ããã¢ããããŠå®è¡ããããã®æé ã説æããŸããDockerã䜿çšãããšãåé¢ãããäžè²«æ§ã®ããç°å¢ã§YOLOv5ãå®è¡ã§ãããããç°ãªãã·ã¹ãã éã§ã®ãããã€ãšäŸåé¢ä¿ã®ç®¡çãç°¡åã«ãªããŸãããã®ã¢ãããŒãã§ã¯ãã¢ããªã±ãŒã·ã§ã³ãšãã®äŸåé¢ä¿ããŸãšããŠããã±ãŒãžåããã³ã³ããåãæŽ»çšããŸãã
å¥ã®ã»ããã¢ããæ¹æ³ãšããŠãColab Notebook
ãGCP Deep Learning VMããŸãã¯Amazon AWSã®ã¬ã€ãããå©çšãã ãããUltralyticsã¢ãã«ã§ã®Dockeräœ¿çšæ¹æ³ã®æŠèŠã«ã€ããŠã¯ãUltralytics Docker Quickstart Guideãã芧ãã ããã
åææ¡ä»¶#
å§ããåã«ã次ã®ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ãããŠããããšã確èªããŠãã ããã
- Docker: Dockerå ¬åŒWebãµã€ãããDockerãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããŸããDockerã¯ã³ã³ããã®äœæãšç®¡çã«äžå¯æ¬ ã§ãã
- NVIDIA DriversïŒGPUãµããŒãã«å¿ èŠïŒ: NVIDIAãã©ã€ããŒã®ããŒãžã§ã³455.23以éãã€ã³ã¹ããŒã«ãããŠããããšã確èªããŠãã ãããææ°ã®ãã©ã€ããŒã¯NVIDIAã®Webãµã€ãããããŠã³ããŒãã§ããŸãã
- NVIDIA Container ToolkitïŒGPUãµããŒãã«å¿ èŠïŒ: ãã®ããŒã«ãããã䜿çšãããšãDockerã³ã³ãããããã¹ããã·ã³ã®NVIDIA GPUã«ã¢ã¯ã»ã¹ã§ããŸãã詳ããæé ã«ã€ããŠã¯ãNVIDIA Container Toolkitã®å ¬åŒã€ã³ã¹ããŒã«ã¬ã€ãã«åŸã£ãŠãã ããã
NVIDIA Container Toolkitã®ã»ããã¢ããïŒGPUå©çšè åãïŒ#
ãŸããæ¬¡ã®ã³ãã³ããå®è¡ããŠãNVIDIAãã©ã€ããŒãæ£ããã€ã³ã¹ããŒã«ãããŠããããšã確èªããŸãã
nvidia-smiãã®ã³ãã³ããå®è¡ãããšãGPUãšã€ã³ã¹ããŒã«ãããŠãããã©ã€ããŒã®ããŒãžã§ã³ã«é¢ããæ å ±ã衚瀺ãããŸãã
次ã«ãNVIDIA Container Toolkitãã€ã³ã¹ããŒã«ããŸãã以äžã®ã³ãã³ãã¯ãUbuntuãªã©ã®DebianããŒã¹ã®ã·ã¹ãã ããã³Fedora/CentOSãªã©ã®RHELããŒã¹ã®ã·ã¹ãã ã§äžè¬çã«äœ¿çšãããŸãããã䜿ãã®ãã£ã¹ããªãã¥ãŒã·ã§ã³åºæã®æé ã«ã€ããŠã¯ãäžèšã®å ¬åŒã¬ã€ããåç §ããŠãã ããã
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.listããã±ãŒãžãªã¹ããæŽæ°ããNVIDIA Container Toolkitãã€ã³ã¹ããŒã«ããŸãã
sudo apt-get updatesudo apt-get install -y nvidia-container-toolkitDockerã§CDIããã€ã¹ã確èªãã#
nvidia-ctk cdi listãå®è¡ããŠãGPUã®CDIããã€ã¹ãå©çšå¯èœã§ããããšã確èªããŸãïŒToolkitã®nvidia-cdi-refreshãµãŒãã¹ã¯ãToolkit >= 1.18ã§ã¯ä»æ§ãèªåçã«çæããã³ç®¡çããŸãïŒã
nvidia-ctk cdi listnvidia.com/gpu=0ãnvidia.com/gpu=allãªã©ã®ãšã³ããªã衚瀺ãããŸããLinuxã§ã¯ãCDIããã€ã¹ãªã¯ãšã¹ãã«Docker >= 28.2.0ããã³NVIDIA Container Toolkit >= 1.18ãå¿
èŠã§ããåŸæ¥ã®--gpus allãã©ã°ã¯ããã¹ãããŒã¢ã³ã®ãªããŒãåŸã«GPUãžã®ã¢ã¯ã»ã¹ã倱ãå¯èœæ§ããããããå€ãLinuxãã¹ããã¢ããã°ã¬ãŒããã代ããã«--deviceã䜿çšããŠãã ããã
ã¹ããã1: YOLOv5 Dockerã€ã¡ãŒãžããã«ãã#
Ultralyticsã¯ãDocker Hubã§å
¬åŒã®YOLOv5ã€ã¡ãŒãžãæäŸããŠããŸããlatestã¿ã°ã¯ææ°ã®ãªããžããªã³ãããã远跡ãããããåžžã«ææ°ããŒãžã§ã³ãååŸã§ããŸããæ¬¡ã®ã³ãã³ãã䜿çšããŠã€ã¡ãŒãžããã«ããŸãã
# Define the image name with tag
t=ultralytics/yolov5:latest
# Pull the latest YOLOv5 image from Docker Hub
sudo docker pull $tå©çšå¯èœãªãã¹ãŠã®ã€ã¡ãŒãžã¯ãUltralytics YOLOv5 Docker Hubãªããžããªã§ç¢ºèªã§ããŸãã
ã¹ããã2: Dockerã³ã³ãããå®è¡ãã#
ã€ã¡ãŒãžããã«ããããã³ã³ãããšããŠå®è¡ã§ããŸãã
CPUã®ã¿ã䜿çšããå Žå#
CPUã®ã¿ã䜿çšããŠã€ã³ã¿ã©ã¯ãã£ããªã³ã³ããã€ã³ã¹ã¿ã³ã¹ãå®è¡ããã«ã¯ã-itãã©ã°ã䜿çšããŸãã--ipc=hostãã©ã°ã䜿çšãããšããã¹ãã®IPCåå空éãå
±æã§ããŸããããã¯å
±æã¡ã¢ãªãžã®ã¢ã¯ã»ã¹ã«éèŠã§ãã
# Run an interactive container instance using CPU
sudo docker run -it --ipc=host $tGPUã䜿çšããå Žå#
ã³ã³ããå
ã§GPUãžã®ã¢ã¯ã»ã¹ãæå¹ã«ããã«ã¯ã--device nvidia.com/gpu=... CDIãã©ã°ã䜿çšããŸããããã«ã¯ãNVIDIA Container Toolkitãæ£ããã€ã³ã¹ããŒã«ãããŠããå¿
èŠããããŸãã
# Run with access to all available GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all $t
# Run with access to specific GPUs (e.g., GPUs 2 and 3)
sudo docker run -it --ipc=host --device nvidia.com/gpu=2 --device nvidia.com/gpu=3 $tã³ãã³ããªãã·ã§ã³ã®è©³çްã«ã€ããŠã¯ãDocker runãªãã¡ã¬ã³ã¹ãåç §ããŠãã ããã
ããŒã«ã«ãã£ã¬ã¯ããªãããŠã³ããã#
ã³ã³ããå
ã§ããŒã«ã«ãã¡ã€ã«ïŒããŒã¿ã»ãããã¢ãã«ãŠã§ã€ããªã©ïŒãæäœããã«ã¯ã-vãã©ã°ã䜿çšããŠãã¹ããã£ã¬ã¯ããªãã³ã³ããã«ããŠã³ãããŸãã
# Mount /path/on/host (your local machine) to /path/in/container (inside the container)
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container $t/path/on/hostããã·ã³äžã®å®éã®ãã¹ã«ã/path/in/containerãDockerã³ã³ããå
ã®ç®çã®ãã¹ïŒäŸ: /usr/src/datasetsïŒã«çœ®ãæããŠãã ããã
ã¹ããã3: Dockerã³ã³ããå ã§YOLOv5 ðã䜿çšãã#
ããã§ãå®è¡äžã®YOLOv5 Dockerã³ã³ããå ã«å ¥ã£ãŠããŸãããããããMachine LearningãDeep Learningã®ããŸããŸãªã¿ã¹ã¯ïŒObject Detectionãªã©ïŒã§ãæšæºã®YOLOv5ã³ãã³ããå®è¡ã§ããŸãã
# Train a YOLOv5 model on your custom dataset (ensure data is mounted or downloaded)
python train.py --data your_dataset.yaml --weights yolov5s.pt --img 640 # Start training
# Validate the trained model's performance (Precision, Recall, mAP)
python val.py --weights path/to/your/best.pt --data your_dataset.yaml # Validate accuracy
# Run inference on images or videos using a trained model
python detect.py --weights yolov5s.pt --source path/to/your/images_or_videos # Perform detection
# Export the trained model to various formats like ONNX, CoreML, or TFLite for deployment
python export.py --weights yolov5s.pt --include onnx coreml tflite # Export model詳现ãªäœ¿ç𿹿³ã«ã€ããŠã¯ãã«ã¹ã¿ã ããŒã¿ã®åŠç¿ãšã¢ãã«ã®ãšã¯ã¹ããŒãã®ãã¥ãŒããªã¢ã«ãã芧ãã ããã
PrecisionãRecallãmAPãªã©ã®è©äŸ¡ææšã«ã€ããŠè©³ããåŠç¿ã§ããŸããONNXãCoreMLãTFLiteãªã©ã®ããŸããŸãªãšã¯ã¹ããŒã圢åŒãçè§£ããããŸããŸãªã¢ãã«ãããã€ãªãã·ã§ã³ã確èªããŠãã ãããã¢ãã«ãŠã§ã€ããé©åã«ç®¡çããããšãå¿ããªãã§ãã ããã

Dockerã³ã³ããå ã§YOLOv5ã®ã»ããã¢ãããšå®è¡ãæ£åžžã«å®äºããŸããã
FAQ#
PyTorch ã®ããŒã¿ããŒããŒã®ã¯ãŒã«ãŒã¯å ±æã¡ã¢ãªãä»ããŠãã³ãœã«ãå ±æããŸãããDocker ã®ããã©ã«ãã§ãã 64 MB ã§ã¯å°ããããŸãã
--ipc=hostã¯ãã¹ãã®ã¡ã¢ãªã»ã°ã¡ã³ããå ±æããŸããã³ã³ãããåé¢ãããŸãŸã«ãããå Žåã¯ã--shm-size=8gãä»£æ¿ææ®µãšãªããŸãããã¹ãäžã§
nvidia-smiãå®è¡ããŠãã©ã€ããŒãåäœããããšã確èªããnvidia-ctk cdi listã§ NVIDIA Container Toolkit ãã€ã³ã¹ããŒã«ãããŠããããšã確èªãã--device nvidia.com/gpu=allãåãå ¥ããããããã« Docker ã 28.2 以éã§ããããšã確èªããŠãã ããã-v /path/on/host:/path/in/containerã§ãã¹ããã£ã¬ã¯ããªãããŠã³ããã--dataããã³--projectãããŠã³ãããããã¹ã«æå®ããŸããã³ã³ããå ã®å¥ã®å Žæã«æžã蟌ãŸãããã¡ã€ã«ã¯ãã³ã³ãããåé€ããããšãã«ç Žæ£ãããŸããã¯ãããã ãã³ã³ããããã£ã¹ãã¬ã€ãµãŒããŒã«ã¢ã¯ã»ã¹ã§ããå¿ èŠããããŸããUltralytics Docker ã¬ã€ãã® X11 ãš Wayland ã®èª¬æãã芧ãã ããããã£ã¹ãã¬ã€ããªãå Žåã¯ã代ããã«
--save-txtãŸãã¯ããã©ã«ãã®runs/detect/åºåã§çµæãä¿åããŠãã ããã