1、pytorch模型转为onnx后用tensorRT量化加速时,报这个问题。
OnnxParser在解析onnx文件时没解析成功,这个问题一方面可能涉及到pytorch和tensorrt版本的问题,另一方面可能涉及到网络模型有些操作, tensorrt中的onnx解析器不支持,解析不了.
第一方面, tensorrt6.0系列只能使用pytorch1.2及以下版本. 所以需要使用torch1.2生成onnx文件.
第二方面, 就要将一些不支持的操作进行替换, 比如expand_as等操作
有时候上述两方面原因都有, 都需要进行调整. 有时候也需要使用onnxsim命令将onnx文件进行优化, 将某些不支持的操作进行自动替换。
我采用onnxsim优化后再转trt顺利解决了:
# pip install onnxsim
from onnxsim import simplify
import onnx
onnx_model = onnx.load("retinaface_mobilev1.onnx") # load onnx model
model_simp, check = simplify(onnx_model)
assert check, "Simplified ONNX model could not be validated"
onnx.save(model_simp, "retinaface_mobilev_sim.onnx")
print('finished exporting onnx')