思路
pytorch
转onnx
- 使用
onnxruntime
量化为int8
精度
步骤
先使用yolo自家的代码将模型导出为onnx格式,但是在这之前有个关键
关键点
YOLO 模型推理输出的cls scores
部分区间为[0,1], 模型量化后由于是整数静态量化,会导致全部舍弃变为0,所以要在模型转化前将向前传导中最后的sigmoid()
函数去除
代码位置:ultralytics/nn/modules/head.py(62)
源代码:
y = torch.cat((dbox, cls.sigmoid()), 1)
将其替换为
y = torch.cat((dbox, cls), 1)
然后再进行转换
yolo export model=yolov8n.pt format=onnx