• Caffe转NCNN模型转换


    caffe2ncnn

    一、准备工作

    安装opencv

    安装protobuf

    下载ncnn源码并编译

    git clone https://github.com/Tencent/ncnn

    cd ncnn

    mkdir build && cd build

    cmake ..

    make -j4

    make install

    二、具体操作

    (1)、如果是旧版Caffe模型,需要在Caffe环境中转换为新版Caffe模型;

     ~/caffe/build/tools/upgrade_net_proto_text deploy.prototxt new_deplpy.prototxt

     ~/caffe/build/tools/upgrade_net_proto_binary bvlc_alexnet.caffemodel new_bvlc_alexnet.caffemodel

     执行后,即可生成一个新版的Cafffe模型;

    (2)、编译NCNN源码,编译成功后,会在源码中生成一个build文件夹;

    (3)、终端进入ncnn/build/tools/caffe目录下,会发现生成一个caffe2ncnn的可执行文件。

    (4)、执行如下命令:(caffe文件名和生成的ncnn文件名需要自己设置)

    ./caffe2ncnn new_deploy.prototxt new.caffemodel demo.param demo.bin

    执行完成之后在ncnn/build/tools/caffe下就可以看到生成的param和bin文件了。

    三、转换后模型验证

    验证思路:

    1、对caffe和ncnn进行相同的预处理,使结果保持一致,例如指定图片的大小、将HWC通道转换为CHW、减均值、归一化处理等操作;

    2、输入一张图片,使用Resnet50 Caffe模型运行,得出结果;

    进入caffe/build/examples文件下执行resnet50的可执行文件,输入图片,得到预测值的索引和概率的结果

    3、同样地,输入同张图片,使用Resnet50 NCNN模型运行,得出结果;

    进入ncnn/build/examples文件下执行resnet的可执行文件,输入图片,得到预测值的索引和概率的结果

    4、将两个得出的结果进行比较,观察是否大致相同。如果结果大致相同,则模型转换成功;如果结果差距较大,则模型转换失败。

  • 相关阅读:
    队列(queue)、优先队列(priority_queue)、双端队列(deque)
    20150720工作总结
    Spring使用远程服务之Hessian
    iBaits中SqlMapClientTemplate的使用
    java中常见的异常类
    java笔试面试中的坑
    java面试中常用的排序算法
    IBatis和Hibernate区别
    单例和多线程
    ThreadLocal
  • 原文地址:https://www.cnblogs.com/wanggangtao/p/11314010.html
Copyright © 2020-2023  润新知