はじめに¶
前提条件¶
このセクションでは、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 および MMCV を MIM を使用してインストールします。
pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"
注: MMCV-v2.x では、mmcv-full
が mmcv
に名前変更されました。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.py
と rtmdet_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 および MMCV を MIM を使用してインストールします。
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.py
と bytetrack_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. MMEngineとMMCVをMIMを使用してインストールします。
!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