可視化¶
このチュートリアルを読む前に、MMEngine の可視化ドキュメントを読んで、Visualizer
の定義と使い方を最初に把握することをお勧めします。
簡単に言うと、Visualizer
は、日常の可視化ニーズを満たすために MMEngine で実装されており、3 つの主な機能が含まれています。
draw_bboxes
(バウンディング ボックスの描画機能)、draw_lines
(線の描画機能) など、一般的な描画 API を実装します。ローカル ディスクや、TensorBoard や Wandb などの一般的な深層学習トレーニング ロギング ツールなど、さまざまなバックエンドへの可視化結果、学習率曲線、損失関数曲線、検証精度曲線の書き込みをサポートします。
トレーニングまたはテスト中に、フィーチャ マップや検証結果など、モデルの中間状態を可視化または記録するために、コードの任意の位置で呼び出すことをサポートします。
MMEngine の Visualizer に基づいて、MMDet には、ユーザーが次の構成ファイルを変更するだけで使用できる、さまざまな組み込みの可視化ツールが付属しています。
tools/analysis_tools/browse_dataset.py
スクリプトは、browse_dataset.py
で説明されているように、データ変換後の画像と対応するアノテーションを描画するデータセット可視化機能を提供します。MMEngine は
LoggerHook
を実装しており、Visualizer
を使用して、Visualizer
で設定されたバックエンドに学習率、損失、評価結果を書き込みます。したがって、構成ファイルでVisualizer
バックエンドを、たとえばTensorBoardVISBackend
またはWandbVISBackend
に変更することで、TensorBoard
やWandB
などの一般的なトレーニング ロギング ツールへのロギングを実装でき、ユーザーがこれらの可視化ツールを使用してトレーニング プロセスを分析および監視することを容易にします。VisualizerHook
は MMDet に実装されており、Visualizer
を使用して、検証または予測フェーズの予測結果をVisualizer
で設定されたバックエンドに可視化または保存します。したがって、構成ファイルでVisualizer
バックエンドを、たとえばTensorBoardVISBackend
またはWandbVISBackend
に変更することで、予測された画像をTensorBoard
またはWandb
に保存することを実装できます。
構成¶
登録メカニズムを使用しているため、MMDet では、構成ファイルを変更することで、Visualizer
の動作を設定できます。通常、configs/_base_/default_runtime.py
でビジュアライザーのデフォルト構成を定義します。詳細については、構成チュートリアルを参照してください。
vis_backends = [dict(type='LocalVisBackend')]
visualizer = dict(
type='DetLocalVisualizer',
vis_backends=vis_backends,
name='visualizer')
上記の例に基づいて、Visualizer
の構成は、Visualizer
のタイプと、使用する可視化バックエンド vis_backends
という 2 つの主要な部分で構成されていることがわかります。
ユーザーは、
DetLocalVisualizer
を直接使用して、サポートタスクのラベルまたは予測を可視化できます。MMDet は、可視化バックエンド
vis_backend
をデフォルトでローカル可視化バックエンドLocalVisBackend
に設定し、すべての可視化結果およびその他のトレーニング情報をローカル フォルダーに保存します。
ストレージ¶
MMDet は、デフォルトでローカル可視化バックエンド LocalVisBackend
を使用します。モデルの損失、学習率、モデルの評価精度、可視化 VisualizerHook
および LoggerHook
に格納されている情報 (損失、学習率、評価精度を含む) は、デフォルトで {work_dir}/{config_name}/{time}/{vis_data}
フォルダーに保存されます。さらに、MMDet は TensorboardVisBackend
や WandbVisBackend
など、他の一般的な可視化バックエンドもサポートしており、構成ファイルで vis_backends
のタイプを対応する可視化バックエンドに変更するだけで済みます。たとえば、次のコード ブロックを構成ファイルに挿入するだけで、データを TensorBoard
および Wandb
に保存できます。
# https://mmengine.readthedocs.io/en/latest/api/visualization.html
_base_.visualizer.vis_backends = [
dict(type='LocalVisBackend'), #
dict(type='TensorboardVisBackend'),
dict(type='WandbVisBackend'),]
プロット¶
予測結果をプロットする¶
MMDet は主に、DetVisualizationHook
を使用して、検証とテストの予測結果をプロットします。デフォルトでは、DetVisualizationHook
はオフになっており、デフォルト構成は次のとおりです。
visualization=dict( # user visualization of validation and test results
type='DetVisualizationHook',
draw=False,
interval=1,
show=False)
次の表に、DetVisualizationHook
でサポートされているパラメーターを示します。
パラメーター | 説明 |
---|---|
描画 | DetVisualizationHookは、デフォルト状態であるenableパラメータによってオン/オフが切り替えられます。 |
間隔 | VisualizationHookが有効な場合に、valまたはtestの結果を保存または表示する反復回数を制御します。 |
表示 | valまたはtestの結果を可視化するかどうかを制御します。 |
トレーニングまたはテスト中にDetVisualizationHook
関連の機能と設定を有効にするには、設定を変更するだけで済みます。例としてconfigs/rtmdet/rtmdet_tiny_8xb32-300e_coco.py
を取り上げ、アノテーションと予測を同時に描画して画像を表示する場合、設定は次のように変更できます。
visualization = _base_.default_hooks.visualization
visualization.update(dict(draw=True, show=True))

test.py
の手順は、--show
および--show-dir
パラメータを提供することにより、設定を変更せずにテスト中にアノテーションと予測の結果を可視化するようにさらに簡素化されています。
# Show test results
python tools/test.py configs/rtmdet/rtmdet_tiny_8xb32-300e_coco.py https://download.openmmlab.com/mmdetection/v3.0/rtmdet/rtmdet_tiny_8xb32-300e_coco/rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --show
# Specify where to store the prediction results
python tools/test.py configs/rtmdet/rtmdet_tiny_8xb32-300e_coco.py https://download.openmmlab.com/mmdetection/v3.0/rtmdet/rtmdet_tiny_8xb32-300e_coco/rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --show-dir imgs/
