1.问题背景
使用ultralytics的Pytorch代码训练YOLOv8n模型,导出成ONNX模型opset=11,然后使用onnxruntime进行推理,结果正常,使用ATC工具转换成OM离线模型,部署在Atlas200模组上,经过推理结果异常,类别概率全为同一个值
2.系统环境
x86主机,训练模型,模型转换
- python3.9.17
- torch'2.0.1+cu118'
- onnx=1.12.0
- CANN(x86版本,模型转换用)=6.3.RC1.alpha001
Atlas200模组
- 昇腾310AI处理器4G版本
- ubuntu18.04
- python3.9.17
- CANN(aarch64版本,模型转换用)=6.3.RC1.alpha001
3.问题详细描述
YOLOv8n模型输入为NCHW(1.3.640,640)FP32,输出为(1,84,8400)FP32 没有使能AIPP,只做模型转换,使用opencv进行图像读取和预处理
正常情况下,对输出进行如下操作去掉维度为1的轴,变为shape为(84,8400),进行转置shape为(8400,84),前4维元素为预测框位置,后80维为COCO128数据集80类的类别概率,使用ONNX进行推理的情况下,80类的概率及时是一个偏小值,也不会完全一样,但是经过OM模型推理后的结果80类的概率全部为同一个值0.0000152588。 ONNX模型和OM模型,数据预处理和后处理都是同一套代码,输入图片也是同一张,但是结果相差很大。
1.问题背景
使用ultralytics的Pytorch代码训练YOLOv8n模型,导出成ONNX模型opset=11,然后使用onnxruntime进行推理,结果正常,使用ATC工具转换成OM离线模型,部署在Atlas200模组上,经过推理结果异常,类别概率全为同一个值
2.系统环境
x86主机,训练模型,模型转换
Atlas200模组
3.问题详细描述
YOLOv8n模型输入为NCHW(1.3.640,640)FP32,输出为(1,84,8400)FP32 没有使能AIPP,只做模型转换,使用opencv进行图像读取和预处理
正常情况下,对输出进行如下操作去掉维度为1的轴,变为shape为(84,8400),进行转置shape为(8400,84),前4维元素为预测框位置,后80维为COCO128数据集80类的类别概率,使用ONNX进行推理的情况下,80类的概率及时是一个偏小值,也不会完全一样,但是经过OM模型推理后的结果80类的概率全部为同一个值0.0000152588。 ONNX模型和OM模型,数据预处理和后处理都是同一套代码,输入图片也是同一张,但是结果相差很大。