公開日:2022年9月28日
最終更新日:2022年11月26日
初めに
2022年11月25日現在MMDetectionの最新は2.26.0です。公式ページによると3.xの公開に向けて開発を進めているとのことです。2.xから3.xになると少なからず変化があるようです。さっそくベータ版で試してみました。インストール
オリジナル
pip install torch==1.12.1 torchvision==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116 pip install mmcv==2.0.0rc1 -f https://download.openmmlab.com/mmcv/dist/cu116/torch1.12.0/index.html pip install mmdet==3.0.0rc1 pip install openmim==0.3.2 pip install mmengine==0.1.0
動作確認済みの最新環境
2022年11月26日に動作確認行いました。pip install torch==1.12.1 torchvision==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116 pip install mmcv==2.0.0rc3 -f https://download.openmmlab.com/mmcv/dist/cu116/torch1.12.0/index.html pip install mmdet==3.0.0rc4 pip install openmim==0.3.3 pip install mmengine==0.3.2
推論のためのPythonスクリプト
import os import torch from mmdet.apis import inference_detector, init_detector from torchvision.datasets.utils import download_url from mim.commands.download import download import mmcv from mmdet.utils import register_all_modules register_all_modules() device = 'cuda' if torch.cuda.is_available() else 'cpu' os.makedirs('models', exist_ok=True) checkpoint_name = 'yolov3_mobilenetv2_8xb24-320-300e_coco' config_fname = checkpoint_name + '.py' checkpoint = download(package="mmdet", configs=[checkpoint_name], dest_root="models")[0] model = init_detector(os.path.join('models', config_fname), os.path.join('models', checkpoint), device = 'cuda') img_url = 'https://raw.githubusercontent.com/zhreshold/mxnet-ssd/master/data/demo/person.jpg' img_fname = img_url.split('/')[-1] download_url(img_url, root = '.', filename = img_fname) result = inference_detector(model, img_fname) from mmdet.registry import VISUALIZERS visualizer = VISUALIZERS.build(model.cfg.visualizer) visualizer.dataset_meta = model.dataset_meta img = mmcv.imread(img_fname) img = mmcv.imconvert(img, 'bgr', 'rgb') visualizer.add_datasample( 'result', img, data_sample=result, draw_gt=False, show=True, pred_score_thr=0.8)
以下の部分を変更するだけでいろいろなモデルが使用可能です。
checkpoint_name = 'yolov3_mobilenetv2_8xb24-320-300e_coco'
バージョン2.x用のスクリプトはこちらです。
気付いた変更点
- 「MMCV-full」が「MMCV」に名称変更されています。
- 以下の2行が必要のようです。おまじないみたいなものでしょうか?
from mmdet.utils import register_all_modules register_all_modules()
- 「show_result_pyplot」が使えなくなっています。
- 代わりに「VISUALIZERS」というのを使うようです。
学習編
学習編はこちらです。touch-sp.hatenablog.com