概要
まだまだ日本語情報が少ない物体検出フレームワーク"MMDetection"について、学んだことを記録していこうと思います。間違い等ありましたらぜひコメントで教えてください。よろしくお願いします。
前回:config基礎編
今回は、実践的にconfigを利用してオリジナルのMask R-CNNを学習していきます。
configファイルの構造
configファイルにはモデルの構造だけでなく、データセットに関する設定等も記述します。
基本的に、configファイルは以下の4つのパートで構成します。
- model:モデルに関する記述
- dataset:データセットに関する記述
- schedule:学習のスケジュールに関する記述
- runtime:実行時の設定に関する記述(ログやチェックポイント等)
MMDetectionでは、各パートについてベースとなる設定が記述されたファイルが用意されています。詳しくはこちらを覗いてみてください。
モデルの構築
今回は、既存のモジュールを組み合わせてオリジナルのMask R-CNNを構築します。
既存のモジュールの一覧はこちら。
- Mask R-CNN
- バックボーンはResNet50
- ネックはPath Aggregation Feature Pyramid Network(名前は正確かわからないです)
- 学習は12エポック
- データセットはCOCO
1. configの作成
Mask R-CNNのデフォルト設定とはネック部分だけが異なるので、その部分だけ修正します。
ファイル名はルールに従ってmask_rcnn_r50_pafpn_1x_coco.py
となります。
# 各パートのdefault設定を継承
_base_ = [
'../_base_/models/mask_rcnn_r50_fpn.py',
'../_base_/datasets/coco_instance.py',
'../_base_/schedules/schedule_1x.py',
'../_base_/default_runtime.py'
]
# modelのneck部分を修正
model = dict(
neck=dict(
type='PAFPN', # neckの名前
in_channels=[256, 512, 1024, 2048], # 各スケールの入力チャンネル数
out_channels=256, # 各スケールの出力チャンネル数
num_outs=5 # 出力スケール数
)
)
具体的に各モジュールのどのkeyを修正すれば良いかは、各モジュールのソースコードを確認して、クラスのコンストラクタの引数を確認すればわかります。
モジュールはmmdetection/mmdet/models/*/*.py
にあります。
2. 学習と評価
モデルの学習・評価はこちらを参照してください。