英文原文:https://docs.unity3d.com/Packages/com.unity.sentis@1.3/manual/models-concept.html
了解 Sentis 中的模型
Sentis 可以导入并运行开放神经网络交换 (ONNX) 格式的经过训练的机器学习模型文件。
要获得与 Sentis 兼容的模型,您可以执行以下操作之一:
- 在 TensorFlow、PyTorch 或 Keras 等框架中训练模型,然后以 ONNX 格式导出。
- 下载经过训练的模型文件并将其转换为 ONNX 格式。有关更多信息,请参阅 ONNXXMLTools Python 包。
- 下载已采用 ONNX 格式的经过训练的模型,例如从 ONNX Model Zoo 下载。
Sentis 如何优化模型
导入模型时,模型图中的每个 ONNX 运算符都会成为一个 Sentis 层。
打开模型资源导入设置以检查导入模型中的层列表(按照 Sentis 运行它们的顺序)。有关更多信息,请参阅支持的 ONNX 运算符。
Sentis 优化模型,使其更小、更高效。例如,Sentis 可能会对导入的模型执行以下操作:
- 删除一个层或子图并将其变成一个常数。
- 将图层或子图替换为工作方式相同的更简单的图层或子图。
- 如果必须在推理时读取数据,请设置一个在 CPU 上运行的层。
优化不会影响模型的输入或输出。
要停用优化,请选择导入的模型资产,然后在“模型资产导入设置”窗口中停用优化模型。
模型输入
模型的输入尺寸可以是固定的,也可以是动态的。
当您检查模型以获取其输入时,输入形状中的每个维度都会显示以下内容之一:
- 表示固定维度的数字,例如 (1)。这意味着您的输入张量应使用相同的维度大小,因为 Sentis 会针对该大小优化模型。
- 表示动态维度的问号或字符串,例如 (?) 或 (batch)。这意味着输入张量形状是符号性的,并且您的输入张量可以使用任何维度大小。
如果模型使用具有动态形状的输入,Sentis 可能无法像使用固定输入维度的模型那样有效地优化模型。这可能会减慢模型的速度。