horizon_swin-t的onnx模型转换

1.天工开物开发包OpenExplorer版本:J5_OE_1.1.40

2.问题定位:onnx模型转换

3.问题具体描述:我在学习地平线 Swin-T 参考算法-v1.2.0这篇文章时,发现当量化训练结束后,只生成了ckpt权重文件,请问我该又如何将用于量化训练的qat模型和int模型转成onnx格式呢?

您好,地平线工具链在持续迭代优化,为了给您提供更好的服务,希望您能抽出3分钟左右的时间,将您在使用工具链期间的感受和建议告诉我们,您的宝贵意见对我们很重要,非常感谢!问卷链接:https://wenjuan.feishu.cn/m/cfm?t=st64p6krU3Ji-yvhv

我试了一下,int模型是直接用export_onnx.py转换吗?那qat模型呢?

你好,导出swint参考算法的qat onnx 需要2步,1. 首先需要在config文件在增加以下字段:

onnx_cfg = dict(-
model=deploy_model,-
stage=“qat”,-
inputs=deploy_inputs,-
model_convert_pipeline=dict(-
type=“ModelConvertPipeline”,-
qat_mode=“fuse_bn”,-
converters=[-
dict(type=“Float2QAT”),-
dict(-
type=“LoadCheckpoint”,-
checkpoint_path=os.path.join(-
ckpt_dir, “qat-checkpoint-best.pth.tar”-
),-
),-
],-
),-
)

注:checkpoint_path为加载的qat权重路径

2. 然后运行python3 tools/export_onnx.py -c configs/classification/horizon_swin_transformer.py 导出onnx;

导出的onnx在ckpt_dir目录下。

您好,那转int_infer模型是不是只需要把onnx_cfg修改为:

stage=“int_infer”,

model_convert_pipeline=dict(

type=“ModelConvertPipeline”,

converters=[

dict(type=“QAT2Quantize”),

dict(

type=“LoadCheckpoint”,

checkpoint_path=os.path.join(

ckpt_dir, “int_infer-checkpoint-last.pth.tar”

),

),

],

)

即可?

可以的,确保model_convert_pipeline字典和int_infer_predictor字段中的model_convert_pipeline字段一致