ショートカット

はじめに

前提条件

このセクションでは、PyTorch を使用した環境を準備する方法を説明します。

MMDetection は Linux、Windows、および macOS で動作します。Python 3.7+、CUDA 9.2+、および PyTorch 1.8+ が必要です。

PyTorch に詳しい方で、すでにインストール済みの場合は、この部分はスキップして、次のセクションに進んでください。そうでない場合は、次の手順に従って準備を行ってください。

ステップ 0. 公式ウェブサイトから Miniconda をダウンロードしてインストールします。

ステップ 1. conda 環境を作成してアクティブにします。

conda create --name openmmlab python=3.8 -y
conda activate openmmlab

ステップ 2. 公式の手順に従って PyTorch をインストールします。例:

GPU プラットフォームの場合

conda install pytorch torchvision -c pytorch

CPU プラットフォームの場合

conda install pytorch torchvision cpuonly -c pytorch

インストール

MMDetection をインストールするには、ベストプラクティスに従うことをお勧めします。ただし、プロセス全体は高度にカスタマイズ可能です。詳細については、「インストールのカスタマイズ」セクションを参照してください。

ベストプラクティス

ステップ 0. MMEngine および MMCVMIM を使用してインストールします。

pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"

注: MMCV-v2.x では、mmcv-fullmmcv に名前変更されました。CUDA ops なしで mmcv をインストールする場合は、mim install "mmcv-lite>=2.0.0rc1" を使用してライトバージョンをインストールできます。

ステップ 1. MMDetection をインストールします。

ケース a: mmdet を直接開発および実行する場合は、ソースからインストールします

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .
# "-v" means verbose, or more output
# "-e" means installing a project in editable mode,
# thus any local modifications made to the code will take effect without reinstallation.

ケース b: mmdet を依存関係またはサードパーティパッケージとして使用する場合は、MIM でインストールします

mim install mmdet

インストールの検証

MMDetection が正しくインストールされているかどうかを確認するために、推論デモを実行するためのサンプルコードを提供します。

ステップ 1. 設定ファイルとチェックポイントファイルをダウンロードする必要があります。

mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .

ダウンロードには、ネットワーク環境に応じて数秒以上かかる場合があります。完了すると、現在のフォルダーに 2 つのファイル rtmdet_tiny_8xb32-300e_coco.pyrtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth が見つかります。

ステップ 2. 推論デモを検証します。

ケース a: MMDetection をソースからインストールした場合は、次のコマンドを実行するだけです。

python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpu

車のベンチなどにバウンディングボックスがプロットされた新しい画像 demo.jpg が、./outputs/vis フォルダーに表示されます。

ケース b: MIM で MMDetection をインストールした場合は、python インタープリターを開き、次のコードをコピー&ペーストします。

from mmdet.apis import init_detector, inference_detector

config_file = 'rtmdet_tiny_8xb32-300e_coco.py'
checkpoint_file = 'rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth'
model = init_detector(config_file, checkpoint_file, device='cpu')  # or device='cuda:0'
inference_detector(model, 'demo/demo.jpg')

DetDataSample のリストが表示され、予測が pred_instance にあります。これは、検出されたバウンディングボックス、ラベル、およびスコアを示します。

トラッキングのインストール

トラッキングタスク用に MMDetection をインストールするには、ベストプラクティスに従うことをお勧めします。

ベストプラクティス

ステップ 0. MMEngine および MMCVMIM を使用してインストールします。

pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"

ステップ 1. MMDetection をインストールします。

ケース a: mmdet を直接開発および実行する場合は、ソースからインストールします

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e . -r requirements/tracking.txt
# "-v" means verbose, or more output
# "-e" means installing a project in editable mode,
# thus any local modifications made to the code will take effect without reinstallation.

ケース b: mmdet を依存関係またはサードパーティパッケージとして使用する場合は、MIM でインストールします

mim install mmdet[tracking]

ステップ 2. TrackEval をインストールします。

pip install git+https://github.com/JonathonLuiten/TrackEval.git

インストールの検証

MMDetection が正しくインストールされているかどうかを確認するために、推論デモを実行するためのサンプルコードを提供します。

ステップ 1. 設定ファイルとチェックポイントファイルをダウンロードする必要があります。

mim download mmdet --config bytetrack_yolox_x_8xb4-amp-80e_crowdhuman-mot17halftrain_test-mot17halfval --dest .

ダウンロードには、ネットワーク環境に応じて数秒以上かかる場合があります。完了すると、現在のフォルダーに 2 つのファイル bytetrack_yolox_x_8xb4-amp-80e_crowdhuman-mot17halftrain_test-mot17halfval.pybytetrack_yolox_x_crowdhuman_mot17-private-half_20211218_205500-1985c9f0.pth が見つかります。

ステップ 2. 推論デモを検証します。

ケース a: MMDetection をソースからインストールした場合は、次のコマンドを実行するだけです。

python demo/mot_demo.py demo/demo_mot.mp4 bytetrack_yolox_x_8xb4-amp-80e_crowdhuman-mot17halftrain_test-mot17halfval.py --checkpoint bytetrack_yolox_x_crowdhuman_mot17-private-half_20211218_205500-1985c9f0.pth --out mot.mp4

人物にバウンディングボックスがプロットされた新しいビデオ mot.mp4 がフォルダーに表示されます。

ケース b: MIM で MMDetection をインストールした場合は、python インタープリターを開き、demo/mot_demo.py を開き、ケース a と同じように実行します。

インストールのカスタマイズ

CUDA バージョン

PyTorch をインストールするときは、CUDA のバージョンを指定する必要があります。どれを選択すればよいかわからない場合は、次の推奨事項に従ってください。

  • GeForce 30 シリーズや NVIDIA A100 などの Ampere ベースの NVIDIA GPU の場合は、CUDA 11 が必須です。

  • 古い NVIDIA GPU の場合、CUDA 11 は下位互換性がありますが、CUDA 10.2 の方が互換性が高く、軽量です。

GPU ドライバーが最小バージョン要件を満たしていることを確認してください。詳細については、この表を参照してください。

ローカルで CUDA コードがコンパイルされないため、ベストプラクティスに従っていれば、CUDA ランタイムライブラリをインストールするだけで十分です。ただし、MMCV をソースからコンパイルしたり、他の CUDA オペレーターを開発したりする場合は、NVIDIA のウェブサイトから完全な CUDA ツールキットをインストールする必要があり、そのバージョンは PyTorch の CUDA バージョンと一致する必要があります。つまり、conda install コマンドで指定された cudatoolkit のバージョンです。

MIM なしで MMEngine をインストールする

MIM の代わりに pip で MMEngine をインストールするには、MMEngine インストールガイドに従ってください。

たとえば、次のコマンドで MMEngine をインストールできます。

pip install mmengine

MIM なしで MMCV をインストールする

MMCV には C++ および CUDA 拡張機能が含まれているため、複雑な方法で PyTorch に依存しています。MIM はこのような依存関係を自動的に解決し、インストールを簡単にします。ただし、必須ではありません。

MIMの代わりにpipを使用してMMCVをインストールするには、MMCVのインストールガイドに従ってください。これには、PyTorchのバージョンとCUDAのバージョンに基づいてfind-urlを手動で指定する必要があります。

たとえば、次のコマンドはPyTorch 1.12.xおよびCUDA 11.6用にビルドされたMMCVをインストールします。

pip install "mmcv>=2.0.0" -f https://download.openmmlab.com/mmcv/dist/cu116/torch1.12.0/index.html

CPU専用プラットフォームへのインストール

MMDetectionはCPU専用環境向けにビルドできます。CPUモードでは、モデルのトレーニング(MMCVバージョン>= 2.0.0rc1が必要)、テスト、または推論を実行できます。

ただし、このモードではいくつかの機能が失われます。

  • Deformable Convolution

  • Modulated Deformable Convolution

  • ROI pooling

  • Deformable ROI pooling

  • CARAFE

  • SyncBatchNorm

  • CrissCrossAttention

  • MaskedConv2d

  • Temporal Interlace Shift

  • nms_cuda

  • sigmoid_focal_loss_cuda

  • bbox_overlaps

上記の演算を含むモデルをトレーニング/テスト/推論しようとすると、エラーが発生します。以下の表に、影響を受けるアルゴリズムを示します。

演算子 モデル
Deformable Convolution/Modulated Deformable Convolution DCN, Guided Anchoring, RepPoints, CentripetalNet, VFNet, CascadeRPN, NAS-FCOS, DetectoRS
MaskedConv2d Guided Anchoring
CARAFE CARAFE
SyncBatchNorm ResNeSt

Google Colabへのインストール

Google Colabには通常PyTorchがインストールされているため、以下のコマンドでMMEngine、MMCV、およびMMDetectionをインストールするだけで済みます。

ステップ1. MMEngineMMCVMIMを使用してインストールします。

!pip3 install openmim
!mim install mmengine
!mim install "mmcv>=2.0.0,<2.1.0"

ステップ2. MMDetectionをソースからインストールします。

!git clone https://github.com/open-mmlab/mmdetection.git
%cd mmdetection
!pip install -e .

ステップ3. 検証。

import mmdet
print(mmdet.__version__)
# Example output: 3.0.0, or an another version.

Jupyter内では、感嘆符 ! は外部実行可能ファイルを呼び出すために使用され、%cd はPythonの現在の作業ディレクトリを変更するためのマジックコマンドです。

DockerでのMMDetectionの使用

イメージを構築するためのDockerfileを提供します。dockerバージョンが19.03以上であることを確認してください。

# build an image with PyTorch 1.9, CUDA 11.1
# If you prefer other versions, just modified the Dockerfile
docker build -t mmdetection docker/

次のように実行します。

docker run --gpus all --shm-size=8g -it -v {DATA_DIR}:/mmdetection/data mmdetection

トラブルシューティング

インストール中に問題が発生した場合は、最初にFAQページをご覧ください。解決策が見つからない場合は、GitHubでissueをオープンできます。

開発でのMMDetectionの複数バージョンの使用

トレーニングおよびテストスクリプトは、スクリプトがMMDetectionの独自のバージョンを使用していることを確認するために、PYTHONPATH で既に変更されています。

環境にMMDetectionのデフォルトバージョンをインストールするには、関連するスクリプトで次のコードを除外できます。

PYTHONPATH="$(dirname $0)/..":$PYTHONPATH