You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中TensorFlow Lite加载模型触发NullReferenceException错误求助

Unity中TensorFlow Lite模型加载NullReferenceException排查方案

问题现象

使用asus4的tf-lite-unity-sample库加载图像分类TFLite模型时,触发NullReferenceException: Object reference not set to an instance of an object,错误栈指向TensorFlowLite.Interpreter构造函数,已确认模型路径可打印,但加载失败。

排查步骤

1. 验证模型文件有效性

  • 用TensorFlow Lite官方工具(如Python的tf.lite.Interpreter)加载模型,确认模型未损坏、格式合规。若模型本身有问题,Unity端必然加载失败。
  • 检查模型量化格式是否与库兼容:全整数量化模型需确保输入输出张量类型与库的处理逻辑匹配。

2. 确认Unity模型文件导入设置

  • 模型文件(.tflite)需放置在StreamingAssets目录下,检查:
    • Read/Write Enabled是否勾选,避免读取权限不足。
    • 打包时文件是否被正确包含:Editor调试需确保文件在StreamingAssets下,打包构建需确认Asset Bundle设置或构建包含规则正确。

3. 校验模型路径正确性

  • 必须用Application.streamingAssetsPath拼接模型路径,避免相对/绝对路径错误,示例代码:
    string modelPath = Path.Combine(Application.streamingAssetsPath, "your_model.tflite");
    
  • 用File.Exists(modelPath)验证路径指向的文件是否存在,若返回false,说明路径错误或文件未被正确打包。

4. 排查Interpreter构造调用逻辑

  • 若通过字节数组加载模型,先确认读取的字节数组非空:
    byte[] modelBytes = File.ReadAllBytes(modelPath);
    if (modelBytes == null || modelBytes.Length == 0)
    {
        Debug.LogError("模型字节数组为空");
        return;
    }
    var interpreter = new Interpreter(modelBytes);
    
  • 若直接传文件路径,需确认路径格式符合平台要求(如Windows路径分隔符、Android/iOS路径权限)。

5. 检查库与Unity版本兼容性

  • 确认tf-lite-unity-sample库版本与当前Unity版本匹配:部分新版本库仅支持Unity 2021+,旧版Unity可能因兼容性问题导致构造函数内部空引用。
  • 尝试切换到与Unity版本适配的库稳定版本(更新或回退)。

6. 查看底层错误日志

  • 在Interpreter.cs构造函数内临时添加日志,追踪原生库加载环节的状态,确认是原生库加载失败还是托管代码空引用。
  • 查看Unity Player Log,排查是否存在原生层错误(如找不到TFLite动态链接库)。

内容的提问来源于stack exchange,提问作者Eldhose Kurian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:26:06