MMDetection
MMDetectionは、PyTorchに基づくオープンソースのオブジェクト検出ツールボックスであり、OpenMMLabの一部です。組み立てやすいモジュール式のAPIデザインを提供しており、カスタムオブジェクト検出やセグメンテーション開発フローを簡単に構築することができます。
Weights and Biasesは、MMDetectionに専用のMMDetWandbHook
を介して直接統合されており、次のことができます。
✅ トレーニングと評価のメトリクスをロギングする。
✅ バージョン管理されたモデルのチェックポイントをロギングする。
✅ バージョン管理された検証データセットと正解のバウンディングボックスをロギングする。
✅ モデル予測のロギングと可視化。
🔥 はじめに
wandbにサインアップしてログインする
b) wandb
ライブラリをpipでインストール
c) トレーニングスクリプトでログインするには、www.wandb.aiでアカウントにサインインして、[**Authorizeページ**](https://wandb.ai/authorize)で**APIキーを見つけます。**
もし、Weights and Biasesを初めて使う場合は、クイックスタートをチェックしてみてください。
- コマンドライン
- ノートブック
pip install wandb
wandb login
!pip install wandb
wandb.login()
MMDetWandbHook
を使う方法
Weights and Biasesを使い始めるには、MMDetectionのlog_config
メソッドにMMDetWandbHook
を追加して、設定システムを利用します。
MMDetWandbHook
は、MMDetection v2.25.0以降でサポートされています。
import wandb
...
config_file = 'mmdetection/configs/path/to/config.py'
cfg = Config.fromfile(config_file)
cfg.log_config.hooks = [
dict(type='TextLoggerHook'),
dict(type='MMDetWandbHook',
init_kwargs={'project': 'mmdetection'},
interval=10,
log_checkpoint=True,
log_checkpoint_metadata=True,
num_eval_images=100,
bbox_score_thr=0.3)]
Name | Description |
---|---|
init_kwargs | (dict ) W&B runを初期化するためにwandb.initに渡される辞書。 |
interval | (int ) ロギング間隔(k回のイテレーションごと)。デフォルトは50 。 |
log_checkpoint | (bool ) チェックポイント間隔ごとにチェックポイントをW&Bアーティファクトとして保存します。各バージョンがチェックポイントであるモデルバージョニングに使用してください。デフォルトはFalse 。 |
log_checkpoint_metadata | (bool ) 検証データで計算された評価メトリクスを、現在のエポックと共に、そのチェックポイントのメタデータとしてログします。デフォルトは True 。 |
num_eval_images | (int ) ログされる検証画像の数。ゼロの場合、評価はログされません。デフォルトは 100 。 |
bbox_score_thr | (float ) バウンディングボックススコアの閾値。デフォルトは 0.3 。 |
:chart_with_upwards_trend: メトリクスのログ
MMDetWandbHook
のinit_kwargs
引数を使って、トレーニングと評価のメトリクスのトラッキングを開始します。この引数は、キーと値のペアを持つディクショナリを受け取り、これがwandb.init
に渡されて、runがどのプロジェクトにログされるかやその他のrunの機能を制御します。
init_kwargs={
'project': 'mmdetection',
'entity': 'my_team_name',
'config': {'lr': 1e-4, 'batch_size':32},
'tags': ['resnet50', 'sgd']
}
wandb.initの全ての引数については、こちらをご覧ください。
:checkered_flag: チェックポイント
MMDetWandbHook
のlog_checkpoint=True
引数を使って、これらのチェックポイントをW&B Artifactsとして確実に保存できます。この機能は、MMCVのCheckpointHook
に依存しており、チェックポイントのモデルを定期的に保存します。期間はcheckpoint_config.interval
で決定されます。
すべてのW&Bアカウントには、データセットとモデル用に100 GBの無料ストレージが付属しています。
📣 メタデータ付きチェックポイント
log_checkpoint_metadata
がTrue
の場合、すべてのチェックポイントバージョンには、関連するメタデータが付いています。この機能は、CheckpointHook
、EvalHook
、またはDistEvalHook
に依存します。メタデータは、チェックポイント間隔が評価間隔で割り切れる場合にのみログされます。
データセットとモデル予測の可視化
データセットや特にモデル予測をインタラクティブに可視化する能力は、より良いモデルの構築やデバッグに役立ちます。MMDetWandbHook
を使用することで、W&B Tablesで検証データをログし、モデル予測のバージョン管理されたW&B Tablesを作成できるようになります。
num_eval_images
引数は、W&B Tablesとしてログされる検証サンプルの数を制御します。以下の点に注意してください。
num_eval_images=0
の場合、検証データおよびモデル予測はログされません。mmdet.core.train_detector
APIのvalidate=False
の場合、検証データおよびモデル予測はログされません。num_eval_images
が検証サンプルの総数よりも大きい場合、完全な検証データセットがログされます。
val_data
は一度だけアップロードされます。run_<id>_pred
テーブルおよびその後の実行は、アップロードされたデータへの参照を使用してメモリを節約します。val_data
の新しいバージョンは、変更された場合にのみ作成されます。
次のステップ
カスタムデータセットでインスタンスセグメンテーションモデル(Mask R-CNN)をトレーニングしたい場合は、MMDetectionとWeights & Biasesを使った方法 のW&BレポートをFully Connectedでチェックしてください。
Weights & Biasesとの統合に関する質問や問題はありますか?MMDetection githubリポジトリにイシューをオープンしていただければ、対応して回答を提供いたします。:)