ML デフォーマのトレーニング設定では、トレーニング データで機械学習モデルをトレーニングする方法を設定します。トレーニング データを書き出す方法の詳細については、「ML デフォーマ(ML Deformer)のトレーニング データを書き出し(Export Training Data)ウィンドウ」を参照してください。
フォルダ設定(Folder Settings)
このセクションでは、書き出したトレーニング データとトレーニング済みモデルへのパスを設定できます。
- トレーニング データの場所(Training Data Location)
-
- ML モデル ルートの場所(ML Model Root Location)
- トレーニング済み ML モデルが保存されるフォルダが表示されます。このフォルダは、既定ではプロジェクト フォルダ内にあります。ML デフォーマを機能させるには ML モデルが必要です。そのため、通常、ML モデルは共有を容易にするためにシーンと同じプロジェクトに保持する必要があります。
- 参照(Browse)をクリックして、ML モデルを保存するフォルダに移動します。
トレーニング設定(Training Settings)
このセクションでは、ML デフォーマの学習に使用するトレーニング データを定義できます。
- トレーニング データ名(Training Data Name)
- モデルのトレーニングに使用するトレーニング データ セットの名前を指定します。これは、ML デフォーマ(ML Deformer)のトレーニング データを書き出し(Export Training Data)ウィンドウでトレーニング データを書き出すときに指定した名前と一致する必要があります。
- 出力 ML モデル名(Output ML Model Name)
- トレーニング済み ML モデル ファイルとそれに関連付けられたメタデータを保持するために作成されるフォルダの名前。このフォルダには接尾辞「.mldf」が付けられます。たとえば、「test」という名前で書き出すと、Training Data Name フォルダの ML Model Root Location フォルダに test.mldf というフォルダが作成されます。
- データをプリロード(Preload Data)
- データをプリロード(Preload Data)をアクティブにすると、トレーニング プロセス中にすべてのトレーニング データを一括でロードする代わりに、メモリにロードできます。トレーニング データ セット全体をメモリに収めることができる場合は、データをプリロード(Preload Data)を有効にすることをお勧めします。これにより、トレーニング プロセスが大幅に高速化されます。GPU でトレーニングする場合、速度の違いがさらに大きくなる可能性があります。
- 学習サーフェス(Learn Surface)
- 学習サーフェス(Learn Surface)をアクティブにすると、モデルにデルタとサーフェスを推測させるのではなく、追加の頂点フレームでデフォーマをトレーニングできます。これにより、ノイズの多い結果を改善できます。この機能を使用するには、デルタ モード(Delta Mode)がサーフェス(Surface)に設定され、トレーニング データを書き出し(Export Training Data)設定で サーフェス情報を書き出し(Export Surface Information)が有効になっていることを確認します。
注: この設定では、モデルはメッシュが存在する空間に依存するため、トレーニング中に回転の影響を受けるようになります。

学習サーフェスをオフにした場合(左)とオンにした場合(右)の比較
- バッチ サイズ(Batch Size)
- データ セットを分割する「バッチ」のサイズを指定します。バッチはメモリに同時にロードされるため、指定したバッチ サイズをサポートするのに十分な RAM (および GPU を使用している場合は VRAM)が必要です。
- エポック(Epochs)
- トレーニングが完全なデータ セットを処理する回数を設定します。エポック(Epochs)の数は、モデルのトレーニングにかかる時間に影響します。
- 結果に満足できない場合は、エポック数を増やす前に、より小さいエポック数(100 未満)で実験してください。トレーニングに多くのエポックを使用すると、モデルはデータからより多くのことを学習できますが、「過剰適合」に注意してください。
- 過剰適合は、モデルが指定された特定のデータの一致に慣れ過ぎ、新しい制御値に対して一般化できなくなると発生します。トレーニング データの過剰適合デルタを解析するには、ML デフォーマのトレーニング結果(Training Results)ウィンドウを参照してください。

過剰適合の例: 青い線はトレーニングを表し、オレンジの線は検証を表します
- 過剰適合を確認するには、トレーニングと検証損失を比較します。検証エラーがトレーニング エラーよりも大きい場合、トレーニング データに対してモデルが過剰適合している兆候になります(上記の例を参照)。
- 検証率(Validation Ratio)
- 検証のために確保する必要があるトレーニング データ サンプルのパーセンテージを指定します。検証セットは、トレーニングに使用しないトレーニング データのランダム サンプリングです。これは、未知のデータに対してモデルがどの程度良好に動作するかを示し、過剰適合のチェックにも使用できます。
高度な設定(Advanced Settings)
ML デフォーマの高度なトレーニング設定により、近似を制御する方法がさらに増えました。既定の設定のままにして、特定のニーズがある場合にのみ詳細設定(Advanced Settings)を調整することをお勧めします。
- 学習率(Learning Rate)
- モデルがバッチの結果に基づいてモデル自身を調整するためにバッチごとに実行すべき学習「ステップ」の大きさを設定します。値が小さいほどトレーニングに必要なエポックが増え、過負荷になる場合があります。値が大きいほど無秩序になり、適切な近似が生成されない場合があります。
- 非表示レイヤ数(Hidden Layer Count)
- 入力レイヤと出力レイヤを含まない、ニューラル ネットワークのレイヤ数。現在、すべての設定は非表示の各レイヤに均一に適用されます。
- 指定するレイヤを増やすと、コントロールと生成される変形されたジオメトリ間の複雑な関係をモデルで近似できますが、モデルの実行やトレーニングが遅くなり、矛盾が生じる可能性があります。
- レイヤあたりのニューロン数(Neurons per layer)
- モデルの各レイヤに存在する人工的なニューロンの数。
- これらのニューロンは、上記のレイヤから入力値のセットを取り、出力値を生成します。ニューロンの数を増やすと、モデルはより多くのデフォメーションを学習します。ただし、ニューロンの数を増やすと、モデルのサイズも大きくなり、実行やトレーニングが遅くなります(特に高解像度メッシュの場合)。これは過剰適合の原因になります。
- 一般に、ディープ ニューラル ネットワークは非常に広いニューラル ネットワークよりも効率的です。
- アクティベーション関数(Activation Function)
-
ニューロンの入力の合計に適用して出力を生成する関数を選択します。これらの関数は出力に非線形を導入し、モデルが入力と出力の間の非線形の関係を学習できるようにします。
- Sigmoid
- S シェイプのカーブ関数。
- 説明については、PySthoch のドキュメントの「Sigmoid」を参照してください。
- TanH
- 双曲線正接関数。
- 説明については、PyStatch のドキュメントの「TanH」を参照してください。
- Leaky ReLU
- ReLU に似ていますが、負の値がすべて 0 となる代わりに、f(x) = 0.01 * x のような小さな傾斜を持つという点が異なります。
- これにより、負の値でフリーズしてニューロンが消滅するのを防ぎます。
- 説明については、PyStatch のドキュメントの「LeakyReLU」を参照してください。
- ReLU (修正された長さ単位)
- 単純な区分関数。x が正の場合は f(x) = x、x が負の場合は f(x) = 0 です。
- この関数は単純であるため、他の関数よりも速く良好な結果を返します。ただし、負の値間には傾斜がないため、入力が負の値でフリーズし、トレーニングできなくなることがあります。
- 説明については、PyStone のドキュメントの「ReLU」を参照してください。
- リニア(Linear)
- リニアは最も基本的なアクティベーション関数です(f(x) = x)。リニア アクティベーションのみからなるネットワークはノンリニア デフォメーションを学習できないため、そのことが望ましい場合や、他のアクティベーション関数と組み合わせて使用する場合にのみ適しています。
- 説明については、PyStoch のドキュメントの「Linear」を参照してください。
- ドロップアウト率(Dropout Ratio)
- ドロップアウト率(Dropout Ratio)を使用して、過剰適合を防ぎます。ドロップアウト率(Dropout Ratio)を使用する場合、各レイヤごとに比率で設定される入力の割合は、トレーニング中にゼロに設定されます。入力をゼロに設定すると、モデルは冗長接続を学習するようになり、より堅牢になります。
- ただしこの方法では、出力に影響しないようにすべきコントロールが出力にリンクされるなど、望ましくない結果が生じる可能性があります。たとえば、手首のジョイントを移動すると、肩が変形します。
- 既定にリセット(Reset to Defaults)
- ML デフォーマのトレーニング設定の既定のオプションを復元します。
- トレーニング(Train)
- ML デフォーマのトレーニング プロセスを開始します。
- 保存(Save)
- ML デフォーマのトレーニング設定を保存して、再利用できるようにします。以前の ML デフォーマのトレーニング設定を再利用するには、トレーニング データ名(Training Data Name)および出力 ML モデル名(Output ML Model Name)フィールドで選択(Choose)をクリックします。
- キャンセル(Cancel)
- ML デフォーマのトレーニング設定を閉じます。
主要シェイプの設定
- 主要シェイプ(Principal Shapes)
-
主要シェイプ(Principal Shapes)をアクティブにすると、ML デフォーマ(ML Deformer)はポーズごとにベース頂点とターゲット頂点のデルタ(差)を評価するのではなく、レスト ポーズを基準として、ターゲット デフォメーションに対する一連のデルタを表すベース ポーズを計算します。主要シェイプ(Principal Shapes)の使用手順については、「主要シェイプを使用して ML デフォーマのトレーニング データを作成する」を参照してください。
主要シェイプ(Principal Shapes)はブレンド シェイプに似ています。最終結果を作成するために、関連付けられたウェイトがブレンドされます。主要シェイプ(Principal Shapes)をベースに追加すると、ターゲット デフォメーションが再作成されます。これにより、ML デフォーマは、デルタを近似するためにトレーニングするのではなく、これらのウェイトにコントロール値をマップするために主要シェイプ(Principal Shapes)を使用します。
主要シェイプ(Principal Shapes)が便利な点は、学習するウェイトの数がデルタの数よりも少なくなり、結果として得られる ML モデルの学習や評価が高速化されるということです。(過剰適合を避けるために、レイヤごとのニューロンの数を減らす必要がある場合があります)。
主要シェイプ(Principal Shapes)は、特異値分解を使用したトレーニング ポーズから計算されます。
注: この計算を実行するためにすべてのトレーニング ポーズがメモリにロードされるため、トレーニング データ セットを保持するのに十分な RAM があることを確認してください。
- シェイプ コンストラクション (Shape Construction)
- デフォーマが主要シェイプを基にウェイトを再現する方法をどのように学習するかを決定します。
- 固定型の主要シェイプ (Fixed principal shapes)
- SVD 解析から得られた情報に基づき、モデルにウェイトを再現させます。
- トレーニング中に主要シェイプを調整する
- 主要シェイプをパラメータ化し、モデルがトレーニング中に主要シェイプを調整できるようにします。この方法は時間がかかり、より多くのメモリを必要としますが、結果が改善される可能性があります(特に、すべてのトレーニング ポーズを SVD 解析で処理しきれない場合)。これが既定の設定です。
- 主要シェイプの制限(Principal Shapes Limit)
- 生成する主要シェイプの最大数。この値はハード制限として機能するため、目的の精度に達しない場合でも、計算ではこの数のシェイプまでしか使用されません。トレーニング データにデルタよりも多くのサンプルが含まれている場合は、エラー ッセージが表示されます。
- 主要シェイプの精度(Principal Shapes Accuracy)
- サンプル ポーズ全体で主要シェイプの組み合わせが達成する必要がある精度のレベル。次に、ML デフォーマは、この精度レベルに達するためにターゲット デフォメーションを再作成するのに必要な数の主要シェイプを生成します。
注: これは完璧なウェイト値を使用した精度であるため、トレーニング済みモデルの結果の精度は低くなります。
- シェイプの解析(Shape Analysis)
- すべてのトレーニング ポーズがメモリに収まりきらない場合に、主要シェイプをどのように処理するかを決定します。
- すべてのポーズを使用してみる(Attempt to use all poses)
- 追加された順序ですべてのポーズを使用することを試します。途中でメモリ制限に達すると、エラーが表示されます。
- メモリ制限までポーズを切り捨て(Truncate poses to memory limit)
- 追加された順序ですべてのポーズを使用することを試します。途中でメモリ制限に達すると、収まりきらなかったポーズは切り捨てられます。これにより、一部のデータが失われます。
- メモリ制限までポーズをランダムに選択(Randomly select poses to memory limit)
- ランダムな順序でポーズを使用します。途中でメモリ制限に達すると、収まりきらなかったポーズは切り捨てられます。これにより、一部のデータが失われますが、データセットを比較的バランスよく表現できます。