Ultralytics YOLO27:
Get Started

DockerでYOLOv5 🚀を始める#

Ultralytics YOLOv5 Dockerクイックスタートガイドへようこそ。このチュートリアルでは、Dockerコンテナ内でYOLOv5をセットアップして実行する手順を順を追って説明します。Dockerを使用すると、分離された一貫性のある環境でYOLOv5を実行できるため、異なるシステム間でのデプロイと依存関係の管理が簡単になります。この方法では、コンテナ化によってアプリケーションと依存関係をまとめてパッケージ化します。

別のセットアップ方法として、Colab Notebook Open In Colab Open In Kaggle、GCP Deep Learning VM、またはAmazon AWSのガイドをご覧ください。UltralyticsモデルでのDockerの使い方全般については、Ultralytics Dockerクイックスタートガイドをご覧ください。

前提条件#

始める前に、次のソフトウェアがインストールされていることを確認してください。

  1. Docker:Dockerは、Docker公式ウェブサイトからダウンロードしてインストールしてください。Dockerはコンテナの作成と管理に不可欠です。
  2. NVIDIAドライバー(GPUサポートに必要):バージョン455.23以降のNVIDIAドライバーがインストールされていることを確認してください。最新のドライバーはNVIDIAのウェブサイトからダウンロードできます。
  3. 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 update
sudo apt-get install -y nvidia-container-toolkit

Docker で CDI デバイスを確認する#

nvidia-ctk cdi list を実行して、GPU の CDI デバイスが利用可能であることを確認します(ツールキットの nvidia-cdi-refresh サービスは、ツールキット >= 1.18 で仕様を自動的に生成、管理します)。

nvidia-ctk cdi list

nvidia.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 $t

GPUを使用する#

コンテナ内で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

詳しい使い方については、カスタムデータのトレーニングとモデルのエクスポートのチュートリアルをご覧ください。

Precision、Recall、mAPなどの評価指標について詳しく学びましょう。ONNX、CoreML、TFLiteなどのさまざまなエクスポート形式を理解し、多様なモデルのデプロイオプションを確認してください。モデルの重みを適切に管理することも重要です。

Running YOLOv5 inside a Docker container on GCP

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/ 出力を使って結果を保存してください。

コメント