10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【MMDetection】 学習済モデルで物体検出編

Last updated at Posted at 2021-01-27

概要

まだまだ日本語情報が少ない物体検出フレームワーク"MMDetection"について、学んだことを記録していこうと思います。間違い等ありましたらぜひコメントで教えてください。よろしくお願いします。

前回:環境構築&インストール編

学習済モデルについて

ありがたいことに、MMDetectionは多くの学習済物体検出・セグメンテーションモデルを用意してくれています。これらの学習済モデルを用いることで、私たちは簡単にモデルを動かして遊ぶことができます。
学習済モデルの一覧はこちら

学習済モデルのダウンロード

今回は物体検出モデルのFaster R-CNNとインスタンスセグメンテーションモデルのMask R-CNNを使って遊びます。

1. checkpointsディレクトリの作成

まずはmmdetectionの直下にcheckpointsディレクトリを作成します。

cd mmdetection
mkdir checkpoints

2. ダウンロード

checkpointsディレクトリにFaster-RCNNとMask-RCNNの学習済モデルをダウンロードします。

# Faster R-CNN
wget -P ./checkpoints http://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth

# Mask R-CNN
wget -P ./checkpoints http://download.openmmlab.com/mmdetection/v2.0/mask_rcnn/mask_rcnn_r50_fpn_1x_coco/mask_rcnn_r50_fpn_1x_coco_20200205-d4b0c5d6.pth

Faster R-CNNで物体検出

デモ用の画像がmmdetection/demo/demo.jpgに用意されているのでこの画像で物体検出してみます。

demo.jpg

今回は試しに動かすことを目的にしているので詳細は触れませんが、MMDetectionは非常に便利なAPIが用意されているので、それを使って驚くほど簡単にモデルを使ってテストが行えます。

1. テスト用コードの作成

以下の内容のmmdetection/demo/my_test.pyというファイルを作成します。

my_test.py
from mmdet.apis import init_detector, inference_detector
import mmcv

# モデルの設定ファイルと学習済モデルへのパスを指定する
config_file = '../configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
checkpoint_file = '../checkpoints/mask_rcnn_r50_fpn_1x_coco_20200205-d4b0c5d6.pth'

# モデルの初期化
model = init_detector(config_file, checkpoint_file, device='cuda:0')

# テストする画像を指定
img = 'demo.jpg'

# テスト
result = inference_detector(model, img)

# 結果の保存
model.show_result(img, result, out_file='result_faster_rcnn.jpg')

2. 実行

※ 仮想環境の起動conda activate open-mmlabを忘れがちなので気をつけましょう。

python my_test.py

3. 結果の確認

実行がうまくいくと(多分UserWarningは出てきます)、mmdetection/demo直下にresult_faster_rcnn.jpgというファイルが生成されているはずです。
ファイルを開くと、、、
result.jpg
ご覧のように、正しく物体検出が行われていることがわかります。

Mask R-CNNでインスタンスセグメンテーション

基本的にはテスト用コードのconfig_filecheckpoint_fileを変更するだけで動きます。

1. テスト用コードの作成

mmdetection/demo/my_test.pyの内容を修正します。

my_test.py
from mmdet.apis import init_detector, inference_detector
import mmcv

# モデルの設定ファイルと学習済モデルへのパスを指定する
config_file = '../configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py'
checkpoint_file = '../checkpoints/mask_rcnn_r50_fpn_1x_coco_20200205-d4b0c5d6.pth'

# モデルの初期化
model = init_detector(config_file, checkpoint_file, device='cuda:0')

# テストする画像を指定
img = 'demo.jpg'

# テスト
result = inference_detector(model, img)

# 結果の保存
model.show_result(img, result, out_file='result_mask_rcnn.jpg')

2. 実行

python my_test.py

3. 結果の確認

result_maskrcnn.jpg

とても簡単に実行できていることがわかります。

おまけ

僕が大好きなあいみょんのライブ映像にセグメンテーションをかけてみました。
でもよく考えたら著作権的にあげられませんね、、笑

次は既存モデルの学習についてまとめようと思います。

参考文献

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?