# 故障排除

并非所有模型都能成功转换为目标 RVC 平台。 以下列出了转换过程中可能出现的常见问题。

## 常见问题

### 转换参数不正确

通常，输入/输出张量的形状、名称或类型会不匹配。

解决方案: 仔细检查您的模型和所有转换参数的含义，并相应地进行调整。 您可以使用 [Netron](https://netron.app/) 工具来研究 ONNX 模型的特性。

### 模型转换成功但预测结果不正确

转换可能成功，但运行时预测结果仍然错误。 这通常意味着编译后的模型接收到了错误的输入解释，或者输出结果被错误地解读。

解决方案: 在源框架、ONNX 和转换后的模型上对比同一张测试图像，然后验证以下各项：

 * 输入张量的名称、形状、布局和数据类型与源模型匹配。
 * encoding.from 与源模型训练时的颜色顺序匹配，且运行时输入与 encoding.to 匹配。
 * 归一化只应用一次。如果转换将均值和缩放因子烘焙到了导出的模型中，则不要在主机上重复该归一化操作。
 * 导出的 config.json 中 mean: null 和 scale: null 可能是正确的；这通常意味着预处理已经烘焙到了编译后的模型中。
 * 调整大小、裁剪和填充行为仍然与原始的训练或推理流程一致。
 * 如果模型需要语义后处理，则类名称、解析器元数据和 heads 配置必须存在。

### 不兼容的模型格式

源模型格式可能不受转换平台支持，或者目标格式可能与模型的某些特性不兼容。

解决方案: 建议首先将源模型转换为 ONNX 格式，因为这样在针对相应 RVC 平台进行转换时可提供最多的选项。

### 不支持的操作

源模型可能包含转换工具或目标模型格式不支持的操作。

解决方案: 请查阅您计划运行转换的目标平台对应的 [支持的操作](https://docs.luxonis.com/software-v3/ai-inference/conversion/supported-ops.md)。
如果该操作不受支持，请考虑用支持的可选方案替换它。 如果没有可用的替代方案，请考虑将模型拆分为更简单的组件，这些组件可以单独转换，并将有问题的部分交给主机端处理。 您可以使用
[onnx-modifier](https://github.com/ZhangGe6/onnx-modifier) 工具对 ONNX 模型进行修改。

### 模型架构问题

复杂或非标准的模型架构可能会导致转换问题。

解决方案: 如果可能，简化模型架构。 考虑使用 [onnx.checker](https://onnx.ai/onnx/api/checker.html) 工具来识别 ONNX 模型中的潜在问题。

## SNPE 兼容性

如果您正在排查 RVC4 转换或运行时问题，请确保用于导出模型的 SNPE 版本与您正在运行的 [Luxonis OS](https://docs.luxonis.com/software-v3/sw-stack/luxonis-os.md) 镜像中捆绑的
SNPE 运行时以及 [DepthAI](https://docs.luxonis.com/software-v3/depthai/release-notes.md) 版本匹配。

使用下表作为快速兼容性参考：

| SNPE 版本 | DepthAI 版本 | Luxonis OS 版本 |
| --- | --- | --- |
| `2.32.6` | `3.0.0` 到 `3.6.1` | `1.11.0` 到 `1.25.3` |
| `2.41.0` | `3.6.1` 及更新版本 | `1.25.3` 及更新版本 |

> 使用较旧 SNPE 版本导出的模型通常可以在较新的 SNPE 运行时上运行。如果您的 Luxonis OS 镜像中没有所需的 SNPE 运行时，DepthAI 会在可能的情况下自动回退到较低的运行时。为比设备提供的 SNPE
版本更新的版本导出的模型将无法加载；在这种情况下，请更新 Luxonis OS 或为较低的 SNPE 版本重新导出模型。
