ML デフォーマのメタデータ

ML デフォーマを使用してモデルをトレーニングすると、トレーニングされたモデルと同じフォルダに metadata.json ファイルが作成されます。このファイルには、トレーニング プロセスに関する有用な情報が含まれています。その概要を以下に示します。

フィールド タイプ 説明
version オブジェクト (int, int) 「major」および「minor」コンポーネントがあります。このモデルに適用されるメタデータのバージョン(および対応する ML デフォーマ)を示します。
startFrame 整数 トレーニング データのフレーム レンジの開始位置です。
endFrame 整数 トレーニング データのフレーム レンジの終了位置です。
sampleCount 整数 トレーニング フレームの数です。
controlDefinitions オブジェクトの配列 モデルへの入力として使用されるコントロールのリストです。各インデックスは 1 つの浮動小数点値を表します。これには、このコントロールの入力プラグ(関連するのはインデックスのみ)と、トレーニング セット内でのこのコントロールの最小値および最大値が含まれます。
deltaCount 整数 書き出しファイル内の各フレームにおける頂点デルタの数です。書き出し中に記録されます。affectCount と完全に一致する必要があります。
exportDate 文字列 トレーニング データが書き出された日時です。(フォーマット: yyy-mm-dd hh:mm:ss (タイムゾーン))
exportTime 浮動小数値 データの書き出しにかかる時間(秒単位)です。
exportFormat 文字列 トレーニング データが保存されたファイル形式です。
  • 有効な値は次のとおりです。
    • shelf - 既定で使用され、動的ロードをサポートします。
    • json - 廃止されました。
    • pickle - 廃止されました。
affectCount 整数 このモデルが影響を与える頂点の数です。完全なジオメトリを操作する場合は、fullCount と等しくする必要があります。
fullCount 整数 変形メッシュ上の頂点の合計数です。
affectMap 整数の配列 モデルが影響を与える頂点を表す頂点インデックスの配列です。この配列は Maya の頂点インデックスを使用し、完全なメッシュで作業している場合は空になります。
deltaUnits 文字列 トレーニング データが書き出されたときに使用されていたシーン単位です。変換に役立ちます。
deltaMode 整数 どのデルタ モードで書き出されたかを表す整数値です。deltaExportType と重複しています。
deltaExportType 文字列 deltaMode の文字列の省略形です。値は、サーフェス モードの場合は「dos」、オフセットの場合は「dbp」です。
注: mlDeformer -vertexDeltas コマンドには他にも潜在的な値がありますが、書き出し時に使用されるのは dos または dbp のみです。
smoothingIterations 整数 デルタを計算または適用する前にベース メッシュでスムージングの反復が実行される回数です。書き出された頂点フレームにも適用されます。
subsetState 文字列 完全なジオメトリか部分的なジオメトリのどちらが変形するかを示します。
componentTagExpression 文字列 デフォーマの影響を受ける頂点を定義するコンポーネント タグ エクスプレッションです。
ジオメトリ 文字列 Maya のジオメトリ ノードの名前です。
lossMetric 文字列 トレーニング中に使用される損失関数です。常に MSE (平均二乗誤差)になります。
trainingTime 浮動小数値 モデルのトレーニングにかかった時間(秒単位)です。
trainingDate 文字列 モデルがトレーニングされた日時です。(フォーマット: yyy-mm-dd hh:mm:ss (タイムゾーン))
finalTrainLoss 浮動小数値 損失メトリックによって測定される最終的なトレーニング損失です。
bestTrainEpoch 整数 トレーニング損失が最も小さかったエポックです。
minTrainLoss 浮動小数値 最小のトレーニング損失(bestTrainEpoch での損失と同様)です。
minTrainMAE 浮動小数値 平均絶対誤差(MAE)損失計算を使用した最小のトレーニング損失です(シーン単位で測定)。
finalValidationLoss 浮動小数値 損失メトリックによって測定される最終的な検証損失です。
bestValidationEpoch 整数 検証損失が最も小さかったエポックです。
minValidationLoss 浮動小数値 最小の検証損失(bestValidationEpoch での損失と同様)です。
minValidationMAE 浮動小数値 平均絶対誤差(MAE)損失計算を使用した最小の検証損失です(シーン単位で測定)。
learningRate 浮動小数値 トレーニング中の学習率です。
batchSize 整数 トレーニング用の各バッチにおけるサンプル数です。
epochs 整数 トレーニング終了時のエポックの合計数です。
userPrincipalShapes ブール演算値 トレーニングで主要シェイプが使用されたかどうかを示します。トレーニング済みのモデルの出力は、デルタではなく、シェイプのウェイトになります。
principaleShapeCount 整数 トレーニングされた主要シェイプの数です。
shapeConstructionOption 整数 主要シェイプの作成に使用されたオプションを示します。
  • 有効な値は次のとおりです。
    • 0 - 固定型のシェイプ: 解析中に計算されたシェイプを使用します。
    • 1 - 調整型のシェイプ: 解析されたシェイプから開始し、トレーニング中にそれらを最適化します。
modelDefinition オブジェクト トレーニング パラメータによって定義される、モデルの非表示レイヤです。この定義は、実際の PyTorch モデル構造を定めるためにトレーニング中に解析されます。
exportSurfaceInformation ブール演算値 データに追加のサーフェス情報(頂点フレームなど)が含まれるかどうかを示します。
surfaceFrameMap 整数の配列 書き出しデータに含まれる、頂点フレームを持つ頂点インデックスのリストです。このリストは Maya の頂点インデックスを使用し、既定ではメッシュ全体の 10% が対象です。
surfaceRepresentation 文字列 サーフェス情報がどのように書き出されているかを表します。頂点フレームのフォーマットを示します。
  • 有効な値は次のとおりです。
    • 3x3 - 9 値の回転行列
    • 6D - 6 値の回転表現
surfaceFrameSize 整数 各頂点フレームに関連付けられている値の数です(表現によって異なります)。値は surfaceRepresentation に応じて 9 または 6 になります。

metadata.json の構造の例

{
    "version": {
        "major": 1,
        "minor": 0
    },
    "startFrame": 0,
    "endFrame": 2000,
    "sampleCount": 2001,
    "controlDefinitions": [
        {
            "src_plug": "mlDeformer1.controlValues[0]",
            "minimum": -99.99280023258999,
            "maximum": 99.89342451625558
        },
        
            ...
            
        {
            "src_plug": "mlDeformer1.controlValues[11]",
            "minimum": -99.89837234610832,
            "maximum": 99.97574443880183
        }
    ],
    "deltaCount": 342,
    "exportDate": "2025-01-08 14:18:39 (UTC)",
    "exportTime": 43.439516599988565,
    "exportFormat": "shelf",
    "affectCount": 342,
    "fullCount": 342,
    "affectMap": [],
    "deltaUnits": "cm",
    "deltaMode": 1,
    "deltaExportType": "dos",
    "smoothingIterations": 0,
    "exportSurfaceInformation": true,
    "surfaceFrameMap": [
        0,
        5,
        11,
        12,
        23,
        30,
        55,
        59,
        84,
        91,
        96,
        131,
        158,
        161,
        177,
        183,
        185,
        195,
        197,
        205,
        207,
        222,
        236,
        246,
        257,
        258,
        262,
        269,
        286,
        292,
        295,
        306,
        313,
        338
    ],
    "surfaceRepresentation": "3x3",
    "surfaceFrameCount": 34,
    "surfaceFrameSize": 9,
    "subsetState": "complete",
    "componentTagExpression": "*",
    "geometry": "pCylinderShape1",
    "lossMetric": "MSE",
    "trainingTime": 4.866239299997687,
    "trainingDate": "2025-01-08 14:19:39 (UTC)",
    "finalTrainLoss": 0.015372385734485256,
    "bestTrainEpoch": 99,
    "minTrainLoss": 0.015372385734485256,
    "minTrainMAE": 0.058620557851261565,
    "finalValidationLoss": 0.0242560015833793,
    "bestValidationEpoch": 99,
    "minValidationLoss": 0.0242560015833793,
    "minValidationMAE": 0.07153895289743718,
    "learningRate": 0.0005,
    "batchSize": 128,
    "epochs": 100,
    "usesPrincipalShapes": false,
    "principalShapeCount": 0,
    "shapeConstructionOption": 0,
    "modelDefinition": {
        "version": 1.0,
        "hidden_layers": [
            {
                "neurons": 512,
                "activation": "LeakyReLU",
                "dropout_ratio": 0.0
            },
            {
                "neurons": 512,
                "activation": "LeakyReLU",
                "dropout_ratio": 0.0
            }
        ]
    }
}