【caffe】Caffe模型转换为ONNX模型(新版)

在了解了caffe模型的结构和ONNX的结构后,我用python写了一个caffe转onnx的小工具,现只测试了resnet50、alexnet、yolov3的caffe模型和onnx模型推理结果,存在误差,但是在可接受范围内。本工具在转换模型的时候是不需要配置caffe的,只需要安装好protobuf即可。在进行推理测试的时候才需要配置好pycaffe。

新版简介

前面写过的那版caffe2onnx的工具,由于对参数数据有很多多余的操作,会导致如vgg16这种参数量较大的模型难以转换,因此在读取参数的同时就将其转为tensor和tensor value info,并且在每个算子节点构建的时候直接转为onnx中NodeProto的类型。
caffe-onnx代码

结构

在这里插入图片描述

src: 主要代码,包括OPs、caffe2onnx.pyc2oObject.py、load_save_model.py、op_layer_info.py。
caffemodel: 存放caffe模型,其中有为了测试用准备的caffe模型。
onnxmodel: 默认存放onnx模型的路径。
proto: 存放proto文件,caffe_pb2.py为官方caffe.proto编译产生的,caffe_upsample_pb2.py为我为了读取yolov3中upsample层,自行修改caffe.proto文件后编译产生的。
convert2onnx: 运行caffe模型转onnx模型文件。

使用方法

git clone https://github.com/htshinichi/caffe-onnx.git
cd caffe-onnx
usage: convert2onnx.py [-h] [CNP] [CMP] [ON] [OSP]

positional arguments:
  CNP         caffe's prototxt file path
  CMP         caffe's caffemodel file path
  ON          onnx model name
  OSP         onnx model file saved path

默认值:
CNP default="./caffemodel/test/test.prototxt"
CMP default="./caffemodel/test/test.caffemodel"
ON default=“test”
OSP default="./onnxmodel/"

现在支持的算子 Current Support Operator

Convolution
Concat
Dropout
InnerProduct(Reshape+MatMul+Add)
LRN
Pooling
ReLU
Softmax
Eltwise
Upsample
BatchNorm
Scale

测试转换用模型 Test Caffe Model

  • Resnet50
  • AlexNet
  • Agenet
  • Yolo V3
  • vgg16
  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值