运行转换后的Yolov3 Edge TPU tflite模型出现Unsupported data type报错如何解决
报错解决思路
1. 优先排查版本兼容性问题
当前环境版本冲突是最高发诱因:
- 模型转换使用TensorFlow 1.15.0,推理使用的tflite_runtime为2.5.0,跨两个大版本的工具链完全不兼容,Edge TPU要求模型转换和推理侧的tflite相关组件版本差不能超过1个小版本
- 修复方案二选一:
- 将推理环境的tflite_runtime降级到与TensorFlow 1.15匹配的2.0.x版本
- 重新使用TensorFlow 2.5.x版本走完整的模型转换、量化流程
2. 检查模型转换与编译的正确性
Edge TPU对模型格式有严格要求,不符合要求的模型会直接触发delegate准备失败:
- 确认你已经使用Edge TPU官方编译器对量化完成的tflite模型做了硬件适配编译,不能直接将普通全量化tflite模型放到Edge TPU上运行
- 确认模型全量化完整:所有输入、输出、中间算子都必须是uint8类型,不能有残留的浮点层。可以用Netron工具打开你的tflite模型逐层检查数据类型,存在浮点层的话重新走量化流程
- 确认你修改后的5分类YOLOv3结构没有用到Edge TPU不支持的算子,不支持的算子会直接导致加载失败
3. 运行环境排查
- 先验证Edge TPU硬件连接和驱动状态,运行官方诊断工具确认硬件可被正常识别
- 你可以先去掉运行命令中的
--edge_tpu参数,尝试在CPU上运行模型,如果CPU能正常加载,说明问题出在Edge TPU适配环节,反之则是模型本身存在问题 - 开头的cudart动态库加载警告不影响推理,无N卡的情况下直接忽略即可
内容的提问来源于stack exchange,提问作者AkkiSony
相关产品推荐
相关产品推荐

