DockerでYOLOv5 🚀を始める
このチュートリアルでは、Docker コンテナ内で YOLOv5 をセットアップして実行する手順を説明します。Docker を使用すると、隔離された一貫性のある環境で YOLOv5 を実行できるため、異なるシステム間でのデプロイや依存関係の管理が簡単になります。この方法ではコンテナ化を利用して、アプリケーションと依存関係をまとめてパッケージ化します。
別のセットアップ方法として、Colab Notebook
、GCP Deep Learning VM、またはAmazon AWSのガイドをご覧ください。UltralyticsモデルでのDockerの使い方全般については、Ultralytics Dockerクイックスタートガイドをご覧ください。
前提条件#
始める前に、次のソフトウェアがインストールされていることを確認してください。
- Docker:Dockerは、Docker公式ウェブサイトからダウンロードしてインストールしてください。Dockerはコンテナの作成と管理に不可欠です。
- NVIDIAドライバー(GPUサポートに必要):バージョン455.23以降のNVIDIAドライバーがインストールされていることを確認してください。最新のドライバーはNVIDIAのウェブサイトからダウンロードできます。
- 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 デバイスが利用可能であることを確認します(ツールキットの nvidia-cdi-refresh サービスは、ツールキット >= 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 コンテナ内に入りました。ここから、機械学習やディープラーニングのさまざまなタスクに標準的な 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詳しい使い方については、カスタムデータのトレーニングとモデルのエクスポートのチュートリアルをご覧ください。
val.py は適合率、再現率、mAPを報告し、export.py は選択したデプロイ方法に応じて、ONNX、CoreML、TFLite などの形式で出力します。

Dockerコンテナ内でYOLOv5を正常にセットアップして実行できました。
よくある質問#
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/出力を使って結果を保存してください。
コメント3
質問したり、結果を共有したり、ほかの人をサポートしたりできます。
Letícia RamaHello,
Is this workflow suitable for other YOLO families, such as YOLO26?
Paula DerrengerUltralyticsYes—the same Docker concepts apply to YOLO26, but use the current Ultralytics Docker Quickstart and
ultralytics/ultralyticsimages rather than the YOLOv5-specific image. Please continue dropping any setup questions in this discussion so the Ultralytics team can assist.1
Letícia RamaGot it, thanks Paula