TensorFlow1训练的SSD Mobiledet转TFLite后无检测结果问题求助
问题排查优先级从高到低如下:
- 置信度阈值逻辑错误
你测试代码中的检测过滤条件为if scores[i] > 7:,但SSD TFLite模型输出的置信度分数范围为0~1的浮点数,永远不可能满足大于7的条件,所有检测结果都被过滤,自然没有检测框显示。将阈值修改为合理区间即可,例如设置为if scores[i] > 0.5:。
- 置信度阈值逻辑错误
- 模型加载路径不匹配
你执行tflite_convert时输出的模型路径为/content/drive/MyDrive/SSD_TF1_V3/output_model/ssdlite_mobiledet_dota_2.tflite,但测试代码中加载的模型路径为/content/drive/MyDrive/ssd_inference_graph/output_model/ssdlite_mobiledet_dota.tflite,二者路径完全不一致,可能加载了未正确转换的旧模型、空模型。请核对路径后加载正确的转换后模型。
- 模型加载路径不匹配
- 导出TFLite图的Checkpoint路径错误
你导出TF1推理图时使用的训练好的Checkpoint路径为/content/train_2/model.ckpt-20000,但导出TFLite SSD图时使用的Checkpoint路径为/content/drive/MyDrive/ssd_inference_graph/train_2/model.ckpt-20000,请确认你已经将content下的训练Checkpoint正确同步到了Drive对应路径下,否则导出的TFLite图是无有效权重的空模型。
- 导出TFLite图的Checkpoint路径错误
- 输入数据格式不匹配
请先打印input_details[0]['dtype']确认模型期望的输入数据类型:
- 如果为
uint8,当前输入逻辑正确 - 如果为
float32,你需要对输入张量做归一化处理:input_tensor = (np.expand_dims(np_image, axis=0) - 128) / 128,和你转换时设置的mean、std参数匹配。
- 输入数据格式不匹配
额外笔误提示:你定义的labels字典中第13类的标签内容为'14 swimming-pool',属于笔误,修正后可避免后续标签显示错误。
内容的提问来源于stack exchange,提问作者porschewitz
相关产品推荐
相关产品推荐

