ML 变形器元数据

使用 ML 变形器训练模型后,可以在与训练模型的同一文件夹中找到 metadata.json 文件。此文件包含有关训练过程的有用信息,概述如下。

字段 类型 描述
version 对象 (int, int) 拥有“主要”和“次要”组件。表示这适用于哪个版本的元数据(以及隐含的 ML 变形器)。
startFrame 整数 训练数据帧范围的开始。
endFrame 整数 训练数据的帧范围。
sampleCount 整数 训练帧数。
controlDefinitions 对象数组 用作模型输入的控件列表。每个索引代表一个浮点值。包括输入栓(只有索引是相关的)以及在此控件的训练集中看到的最小值和最大值。
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 字符串 定义哪些顶点将受变形器影响的组件标记表达式。
geometry 字符串 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 整数 每个顶点帧有多少关联值,具体取决于其表示法。该值为 9 或 6,具体取决于 surfaceRepresentation。

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
            }
        ]
    }
}