9. caffe2onnx 工具使用说明
本章介绍 AX 版 caffe2onnx 转换工具,用于将 Caffe 浮点模型转换成 ONNX 浮点模型。
备注
下文的模型语义皆为浮点模型。
9.1. 将 Caffe 模型转换成 ONNX 模型
我们提供了三种方式将 Caffe 模型转换成 ONNX 模型。
您可以将 Caffe 文件传入进来以转换您指定的某一个 Caffe 模型:
python3 /opt/pulsar2/tools/convert_caffe_to_onnx.py --prototxt_path /path/to/your/model.prototxt --caffemodel_path /path/to/your/model.caffemodel --onnx_path /path/to/your/model.onnx # optional --opset_version OPSET_VERSION # default to ONNX opset 13
一个 “.caffemodel” 跟其匹配的 “.prototxt” 文件一起组成一个 Caffe 模型, 您需要同时指定
--caffemodel_path
和--prototxt_path
这两个参数以确定一个 Caffe 模型。--onnx_path
跟--opset_version
参数是可选的, 其中--opset_version
的缺省值为 13.备注
如果您不指定
--onnx_path
命令行参数,生成的 ONNX 模型会 使用 “.caffemodel” 模型文件(由--caffemodel_path
指定) 的前缀,并存放到和 “.caffemodel” 文件同一级的目录下。或者您也可以传入一个文件夹以转换其里面所有的 Caffe 模型:
python3 /opt/pulsar2/tools/convert_caffe_to_onnx.py --checkpoint_path /path/to/your/model/zoo --opset_version OPSET_VERSION # default to ONNX opset 13
这将递归地找到指定文件夹里面所有的以 “.caffemodel” 为后缀文件及其对应的 “.prototxt” 文件,此为一个 Caffe 模型,将其转换为 ONNX 模型, 并使用 Caffe 模型的前缀,以 “.onnx” 为后缀进行保存。
备注
Caffe 模型对应的 “.prototxt” 和 “.caffemodel” 文件需要在同一个文件夹并共享一个前缀。
caffe2onnx 命令行工具
新版工具链提供了 caffe2onnx 的命令行工具,也可以使用如下方式来转换模型。
caffe2onnx --convert --checkpoint_path /path/to/your/model/zoo
9.2. 验证转换出的 ONNX 模型
您可以使用如下命令对分原始的 Caffe 模型和转换出的 ONNX 模型:
python3 /opt/pulsar2/tools/validate_caffe_onnx.py
--checkpoint_path /path/to/your/model/zoo
首先这将递归地找到指定文件夹里所有的以 “.onnx” 为后缀的文件,然后按照其前缀匹配对应的 “.prototxt” 和 “.caffemodel” 文件,生成一个随机数据集,分别使用 ONNX Runtime 和 Caffe 推理工具进行推理,并计算两者的“相关系数 (Correlation)”、“标准偏差 (Standard Deviation)”、 “余弦距离相似度 (Cosine Similarity)”、“归一化相对误差 (Normalized Relative Error)”、 “最大差异 (Max Difference)” 和 “平均差异 (Mean Difference)”。
备注
Caffe 模型对应的 “.prototxt” 和 “.caffemodel” 文件以及转换出来的 “.onnx” 文件需要在同一个文件夹并共享一个前缀。
备注
此步需要安装 caffe。
备注
新版工具链提供了 caffe2onnx 的命令行工具,也可以使用如下方式来验证转换后的模型。
caffe2onnx --validate --checkpoint_path /path/to/your/model/zoo