👏

mmdetection環境構築(Windows編)

2023/06/03に公開

はじめに

この記事はWindows 10でmmdetectionを動作させるための環境構築についてのメモである。
環境構築の手順を記載した後、instance segmentationのサンプルの実行方法を記載する。

本記事をまとめたGitHubリポジトリはこちら

対象環境

  • OS: Windows 10 Pro
  • CPU: Core i9-9900K
  • RAM: 64GB
  • GPU: RTX2080Ti
    • CUDA 11.3

構築手順

1. PyTorchをインストール

自分のPCの環境にあったPyTorchをインストールする。

pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

2. その他必要なライブラリをインストール

pip install -U openmim opencv-python Pillow matplotlib

3. mmcvをインストール

# 任意のディレクトリで実行する
git clone https://github.com/open-mmlab/mmcv.git
cd mmcv
pip install -r requirements.txt
mim install -e .

4. mmdetectionをインストール

# 任意のディレクトリで実行する
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -e .

Instance Segmentationを試す

コード自体は本家リポジトリのサンプルコードを流用する。

まずモデルをcheckpointディレクトリにダウンロードする。

mim download mmdet --config mask-rcnn_r50-caffe_fpn_ms-poly-3x_coco --dest ./checkpoints

コードを実装する。

import argparse

import mmcv
import mmdet
from mmdet.apis import init_detector, inference_detector
from mmdet.utils import register_all_modules
from mmdet.registry import VISUALIZERS


def parse_args():
    parser = argparse.ArgumentParser(description='MMDetection instance segmentation demo')
    parser.add_argument('image', help='image file')
    parser.add_argument('--out', type=str, default=None, help='Output image file')
    parser.add_argument("--config", type=str, required=True, help="config file")
    parser.add_argument("--checkpoint", type=str, required=True, help="checkpoint file")
    args = parser.parse_args()
    return args


def main() -> None:
    args = parse_args()

    register_all_modules()

    model = init_detector(args.config, args.checkpoint,
                          device='cuda:0')  # or device='cuda:0'

    # Use the detector to do inference
    image = mmcv.imread(
        args.image, channel_order='rgb')
    result = inference_detector(model, image)

    visualizer = VISUALIZERS.build(model.cfg.visualizer)

    # the dataset_meta is loaded from the checkpoint and
    # then pass to the model in init_detector
    visualizer.dataset_meta = model.dataset_meta
    # show the results
    visualizer.add_datasample(
        'result',
        image,
        data_sample=result,
        draw_gt=None,
        wait_time=0,
    )
    visualizer.show()

    if args.out is not None:
        frame = visualizer.get_image()
        frame = mmcv.imconvert(frame, 'rgb', 'bgr')
        mmcv.imwrite(frame, args.out)


if __name__ == "__main__":
    main()

以下コマンドで実行する。

python test_mmdet.py {画像ファイルのパス} --config {設定ファイルのパス} --checkpoint {チェックポイントファイルのパス}

# 今回ダウンロードしたチェックポイントの場合は、--config mmdetection/configs/mask_rcnn/mask-rcnn_r50-caffe_fpn_ms-poly-3x_coco.py となる

おわりに

今回は環境構築とinstance segmentationを動かしただけだが、今後は他の公開されているモデルを試したり、トレーニングも行いたい。

Discussion