重训练的TFLite目标检测模型在Unity调用时如何匹配输入输出解决报错
TFLite重训练目标检测模型Unity调用输出张量报错问题
这是我首次尝试重新训练TensorFlow目标检测模型,后续我将使用C#在Unity中调用该模型。
我已验证公开的coco_ssd_mobilenet_quant.tflite量化模型可在项目中完全正常运行。
我参考TensorFlow Lite官方Model Maker目标检测教程重训练了结构相近的模型,训练全程无异常报错。
我在Unity中加载新训练的模型时,Invoke方法可以正常运行,但获取输出张量失败,具体报错如下:
Exception TensorFlow Lite operation failed. TensorFlowLite.Interpreter.GetOutputTensorData (System.Int32 outputTensorIndex, System.Array outputTensorData)
触发报错的代码行是:
interpreter.GetOutputTensorData(0, outputs0);
我初步猜测是模型导出环节存在问题,因此我将两个模型都在Netron中打开并截图,可通过对比两个模型的输入输出结构定位问题:
- 可正常运行的模型截图:

- 无法正常运行的新模型截图:

我可以看到两个模型的输入输出量化方式、格式、排布都存在明显差异,希望可以通过调整tflite模型导出配置,或是调整Unity中的模型调用逻辑解决该问题。
我未对原有Single Shot Detector的C#调用代码做任何修改。
内容的提问来源于stack exchange,提问作者Dave Seidman
相关产品推荐
相关产品推荐

