operator did not match Pytorch's Interpolation until opset 11
参考:https://blog.csdn.net/github_28260175/article/details/103436020
解决办法
警告信息已经完整说明,ONNX's Upsample/Resize operator did not match Pytorch's Interpolation until opset 11.,因此将ONNX的导出代码中规定其版本,具体如下:
import torch
torch.onnx.export(model, ..., opset_version=11)
加了以后,上下采样好像支持了,报另一个错:
cv2.error: OpenCV(4.2.0) D:\Build\OpenCV\opencv-4.2.0\modules\dnn\src\layers\padding_layer.cpp:41: error: (-215:Assertion failed) params.has("paddings") in function 'cv::dnn::PaddingLayerImpl::PaddingLayerImpl'
这个是不支持平均迟化层,能迟化,迟化后的层有问题。
不用平均迟化,又报错:
onnx_importer.cpp:110: error: (-215:Assertion failed) !tensor_proto.raw_data().empty() || !tensor_proto.float_data().empty() || !tensor_proto.double_data().empty() || !tensor_proto.int64_data().empty() in function 'cv::dnn::dnn4_v20191202::getMatFromTensor'
报错代码:
return funtion.interpolate(P5_td, size=P4_td_inp.shape[2:], mode="nearest")
原因:opencv 的dnn不支持上采样,但是onnx本身是支持的,
临时解决方法:
session = onnxruntime.InferenceSession(onnx_path)