问题
当使用以下命令:
python export.py --data data/coco128.yaml --weights yolov5s.pt --include onnx
将yolov5
训练获得的pt
转换成onnx
,然后使用opencv
的cv2.dnn.readNet(file_model)
函数读取模型时报错:
error: (-215:Assertion failed) blob_0.size == blob_1.size in function 'parseBias'
# 或者:error: (-215:Assertion failed) splits > 0 && inpShape[axis_rw] % splits == 0 in function 'getMemoryShapes'
解决方法
使用以下命令将yolov5
训练获得的pt
转换成onnx
:
python export.py --data data/coco128.yaml --weights yolov5s.pt --include onnx --opset=11
然后使用cv2.dnn.readNet(file_model)
就不会报错。
原因:可能是因为 OpenCV 在解析模型时更好地支持了 ONNX 操作集的第 11 版。有时候,不同版本的 ONNX 操作集可能会导致不同的解析和执行结果,因此选择合适的操作集版本对于确保模型在不同框架中的兼容性非常重要。