Houdini 21.0 リファレンス ペイン

PDG ML Training Monitor

機械学習の実験のためのインタラクティブなリアルタイムデータ可視化ツール

On this page

概要

PDG ML Training Monitorは、機械学習系TOPノードのインタラクティブ且つリアルタイムな可視化を行なうことができるHoudiniのPythonパネルです。

  • 異なるノード間を自由に切り替えることができます。選択したノードがこのパネル用に正しく設定されていれば、このパネルはその関連情報を自動的に表示します。

  • CSVファイルのデータに基づいたインタラクティブなプロットで、時間軸に沿ってトレーニング指標や傾向を可視化することができます。このデータには、カスタムファイルまたは選択したMLノードの一部を指定することができます。

  • テスト結果を確認する時は、MLノードによって生成された画像データを表示することができます。

対応しているノード

このパネル用にノードを設定する方法

このパネルは、上記の対応しているノードではすぐにでも動作するよう設計されていますが、適切に設定すれば他のノードでも使用することができます。 このパネルを使用するには、選択したMLノードのHDAモジュールの一部にml_descriptionアトリビュートが含まれている必要があります。 詳細は、HDAModule を参照してください。

ノードにml_descriptionアトリビュートを追加するには:

  1. ノードをクリックして、 Type Properties を選択します。

  2. Edit Operator Type Propertiesウィンドウで、 Scripts タブを選択します。

  3. Event Handler ドロップダウンから Python Module を選択します。

  4. 右側のエディタ内に、def ml_description(node):関数を追加します。

    • このml_description関数は、プロパティを含んだ辞書のリストを返す必要があります。 各ノードは複数のMLモデルを持つことができるので、各辞書は特定のモデルに関する情報を参照します。

構成プロパティ

プロパティ名

プロパティのタイプ

プロパティの値

name

文字列

MLモデルの名前。このフィールドは必須です。

first_epoch

正の整数

MLモデルがトレーニングを開始する最初のエポック番号。 このフィールドを指定しなかった場合のデフォルトは0です。

max_epochs

正の整数

MLモデルがトレーニングに必要とする最大エポック数。 このフィールドを指定しなかった場合のデフォルトは500です。

plots

辞書のリスト

プロットに必要な情報。 各辞書のキーと値は、 Plot Properties テーブルで指定します。 各MLモデルは複数のプロットを持つことができるので、各辞書は別々のプロットに呼応します。 このフィールドを指定しなかった場合、このモデルのプロットデータは表示されません。

test

辞書

テスト結果を画像形式で表示するのに必要な情報。 キーと値は、 Test Results Properties テーブルで指定します。 このフィールドを指定しなかった場合、このモデルのテストデータは表示されません。

プロットのプロパティ

プロパティ名

プロパティのタイプ

プロパティの値

title

文字列

プロットのタイトル。このフィールドは必須です。

x_axis

文字列

X軸のラベル。このフィールドは必須です。

y_axis

文字列

Y軸のラベル。このフィールドは必須です。

x_range

リスト/タプル

X軸の範囲を定義する最小値と最大値。 データに基づいて範囲を自動で決めるには、このフィールドをnullまたは未定義のままにしてください。

y_range

リスト/タプル

Y軸の範囲を定義する最小値と最大値。 データに基づいて範囲を自動で決めるには、このフィールドをnullまたは未定義のままにしてください。

path_format

文字列

プロットデータが書き出されるCSVファイルの絶対パス。 このパネルは文字列フォーマットを適用しないため、指定する文字列はテンプレート文字列であってはなりません。 このフィールドは必須です。

テスト結果のプロパティ

プロパティ名

プロパティのタイプ

プロパティの値

path_format

文字列

テスト結果を表示する画像ファイルのファイルパステンプレート文字列。 パス内には、{epoch}, {component}, {test}という名前のプレースホルダーを含めなければなりません。 その他のプレースホルダーをパス内に含めないでください。 このフィールドは必須です。

count

正の整数

エポック毎のテストサイズ。 この場合のテストサイズとは、テスト画像のセット数を指します。 このフィールドを指定しなかった場合、テストサイズは1と想定されます。 テスト番号自体は0インデックスです。

rate

正の整数

テスト結果を表示する間隔(エポック単位)。 このフィールドを指定しなかった場合、テスト結果はエポック毎に表示されます。

components

文字列のリスト

各テスト結果に含める画像を指定します。

ノード設定の例

以下は、ml_description関数が返すオブジェクトの例です。

[{'name': 'Generator',
  'first_epoch': 10,
  'max_epochs': 100,
  'plots': [{'title': 'Loss',
             'x_axis': 'Training Progress',
             'y_axis': 'Loss Values',
             'x_range': None,
             'y_range': None,
             'path_format': '/home/user/path/to/csv/loss.csv'},
            {'title': 'SSIM Scores',
             'x_axis': 'Training Progress',
             'y_axis': 'SSIM Score',
             'x_range': None,
             'y_range': (0, 1),
             'path_format': '/home/user/path/to/csv/ssim.csv'}],
  'test': {'path_format': '/home/user/path/to/image/{epoch}.{test}.{component}.png',
           'count': 2,
           'rate': 5,
           'components': ['input', 'reference', 'generated']}},
 {'name': 'Discriminator',
  'first_epoch': 10,
  'max_epochs': 100,
  'plots': [{'title': 'Discriminator Score',
             'x_axis': 'Training Progress',
             'y_axis': 'Score',
             'x_range': None,
             'y_range': (0, 1),
             'path_format': '/home/user/path/to/csv/score.csv'}]}]

CSVプロットの設定

  • このパネルは、指定されたCSVファイルのみを読み込みます。 つまり、ノードがクックされた時にデータをCSVへ書き込むロジックを実装しなければなりません。

CSVファイルの内容は、以下の形式でなければなりません

  • 最初の行はカラム名で、残りの行はデータとなります。

  • 最初のカラムのデータはX軸の値となります。

  • その他のカラムのデータは Y軸の値となり、各カラムがグラフ内の別々の線を表現します。

  • 行に不足データがあってはなりません。

この例を示します:

  • X軸はEpochです。

  • プロットには2本の線が表示され、その1本はGenerator L1 Loss、もう1本はGenerator Model Lossを表しています

Epoch,Generator L1 Loss, Generator Model Loss
0,0.9,0.6
1,0.8,0.5
2,0.7,0.4

テスト結果の設定

上記のセクションの例に従うと、その結果は次のようになります

  • rate = 5

  • first_epoch = 10

  • max_epochs = 100

  • path_format = '/home/user/path/to/image/{epoch}.{test}.{component}.png'

  • count = 2

  • components = ['input', 'reference', 'generated']

このパネルは、first_epochからmax_epochsまでrateおきに画像を表示するように設定されます。 このテストでは、10、15、20、…、95、100のエポックで画像が表示されます。

このパネルは、最初のエポック(10エポック)で次のファイルを読み込みます

  • /home/user/path/to/image/10.0.input.png

  • /home/user/path/to/image/10.0.reference.png

  • /home/user/path/to/image/10.0.generated.png

  • /home/user/path/to/image/10.1.input.png

  • /home/user/path/to/image/10.1.reference.png

  • /home/user/path/to/image/10.1.generated.png

各ファイルパスは、テスト番号とコンポーネントのすべての組み合わせを受け取って、指定されたパス形式にそれらを適用して生成されます。

  • count = 2なので、テスト番号は0および1となります。

トレーニングモニターの使い方

PDG ML Training Monitorウィンドウを開くには:

  • シーンビュー上部の + をクリックします。

  • New Pane Tab Type ▸ TOPs から PDG ML Training Monitor を選択します。

プロットの表示

有効なTOPノードを選択すると、このパネルはml_descriptionで指定されているファイルの変更を監視して、そのノードがクックされた時にプロットをリアルタイムで更新します。

1 - Panel Modeドロップダウン : このパネルの表示内容を決定します。オプションは PlotsTest Results です。

  • Plots: 時間軸に沿ってトレーニング指標や傾向をインタラクティブなプロットで表示します。これは、損失カーブや評価スコアなどを可視化するのに役立ちます。

  • Test Results: テスト中にモデルが生成した画像出力を表示します。

2 - Refresh : このパネルを更新します。
3 - Light Mode : プロットの明暗モードを切り替えます。
4 - Sourceドロップダウン : オプションは Selected NodeCustom File です。

  • Selected Node: プロットのソースは、ノードのml_description関数で指定されたCSVファイルに基づきます。

  • Custom File: プロットのソースは、選択したノードとは関係なく、ユーザがアップロードしたCSVファイルに基づきます。

5 - Plotドロップダウン : 表示されている特定のプロット。この表記規則は、常にモデル名の後にプロットタイトルが付いた形式となります。

  • 例えば、ノードにGeneratorモデルとDiscriminatorモデルがあって、そのGeneratorモデルにはLossプロットとScoreプロットが、DiscriminatorモデルにはScoreプロットがあると、このドロップダウンオプションは以下のようになります:

    • Generator: Loss

    • Generator: Score

    • Discriminator: Score

6 - Home : 元のプロットビューをリセットします。
7 - Back : 前のプロットビューに戻ります。
8 - Forward : 次のプロットビューに進みます。
9 - Pan Mode : ドラッグすると、ズームレベルを変更せずにプロットビューが移動します。このモードはデフォルトでオンになっています。
10 - Zoom Mode : ドラッグしてプロットビュー上に矩形を描画します。すると、プロットビューはその領域にズームインします。

  • スクロールホイールを使用してズームすることもできます。これにはズームモードは不要です。

カスタムファイルパスでプロットする方法

デフォルトでは、プロットされるデータは、選択したMLノードに基づきます。 しかし、Sourceドロップダウンで Custom File を選択することで、カスタムCSVファイルからプロットを表示することもできます。 ファイルをアップロードするか、または、Sourceドロップダウン横のテキストフィールドにパスを入力することができます。 Houdini形式のパスにも対応しています。

ユーザがアップロードしたカスタムCSVファイルから生成されたプロットの例。時間軸に沿った評価スコアを示しています。

テスト結果の表示

Test Resultsパネルは、テスト中のモデルの出力画像を表示することができます。 表示される画像とそのカテゴリ(例えば、入力、参照、生成)は、ノード設定、モデル、テスト番号、エポックによって異なります。

1 - Model Nameドロップダウン : 表示するMLモデルの画像。

  • 例えば、ノードにGeneratorモデルとDiscriminatorモデルがある場合、このドロップダウンオプションは以下のようになります。

    Generator Discriminator

2 - Test Numberドロップダウン : 表示するテストの画像。

  • このドロップダウンの項目数は、エポック毎のテストサイズに基づきます。

  • 例えば、テストサイズが2の場合、エポック毎に2セットのテスト画像があるため、このドロップダウンオプションは以下のようになります。

    • Test: 0

    • Test: 1

3 - Epoch Text Field : 表示するエポックの画像。これは、テキストフィールドの編集、または、矢印キー、マウスドラッグ、マウススクロールによるスライダ操作で変更することができます。
4 - View in Mplay : 外部画像/アニメーションビューアに画像を表示します。

ペイン

一般

アニメーション

レンダリング

上級

その他