OpenMMLab の MMDetection==3.0.0rc を試してみる

公開日: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