如何将Yolov5 TFLite模型输出改为float32?能否获取4个该类型模型?
解决方法
1. 将Yolov5导出的TFLite模型输出改为float32类型
Yolov5默认导出的float32格式TFLite模型输出应为float32,若你的模型输出是int32,大概率是开启了量化导出导致的,可通过以下两种方式修正:
通过导出命令强制指定格式:
运行export.py时,明确关闭INT8和FP16量化,强制以纯float32格式导出,执行命令:python export.py --weights yolov5s.pt --include tflite --int8 False --fp16 False此命令会生成输出层为float32类型的TFLite模型。
手动修改模型输出 dtype:
若命令行参数无效,可直接修改Yolov5的模型代码。在models/yolo.py的Detect类forward函数末尾,将所有输出张量强制转换为float32:return [x.float() for x in out] # 把模型所有输出转为float32类型修改后重新执行导出命令即可。
2. 导出4个float32类型的TFLite模型
如果需要的是Yolov5的4个不同版本(如s/m/l/x),分别对对应权重文件执行上述导出流程即可:
- 导出yolov5s的float32 TFLite:
python export.py --weights yolov5s.pt --include tflite --int8 False --fp16 False - 导出yolov5m的float32 TFLite:
python export.py --weights yolov5m.pt --include tflite --int8 False --fp16 False - 导出yolov5l的float32 TFLite:
python export.py --weights yolov5l.pt --include tflite --int8 False --fp16 False - 导出yolov5x的float32 TFLite:
执行完成后,你将得到4个独立的float32类型TFLite模型文件。python export.py --weights yolov5x.pt --include tflite --int8 False --fp16 False
若需要同一个基础模型的4种配置变体,只需调整导出时的参数(如--img-size设置不同输入尺寸),重复上述导出步骤即可。
内容的提问来源于stack exchange,提问作者Muntakimur Rahaman
相关产品推荐
相关产品推荐

