搭建caffe平台:

先在Linux系统下搭建caffe环境,安装依赖包:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

sudo apt-get install libblas-dev

sudo apt-get install libatlas-base-dev

sudo apt-get install libopenblas-dev

sudo apt-get install python-skimage

sudo apt-get install python-protobuf

pip install easydict

(1)在linux环境下首先按下ctrl+alt+t打开一个新的terminal, 选定一个目录(还是建议不要在根目录下操作,尽量在用户目录下操作)输入命令mkdir Github; cd Github新建一个目录,并进入目录。

(2)输入git clone https://github.com/BVLC/caffe.git把远端仓库拉到本地目录。

(3)进入caffe目录,cp Makefile.config.example Makefile.config; 复制一份Makefile。

(4)该步骤为修改Makefile.config与Makefile文件,注意进行区分。

Makefile.config文件:

vim Makefile.config进入编辑模式;按住shift+:输入set number显示行号。

*第8行:如果没有CUDA的话就取消这一行的注释,编译CPU版本caffe,如果有显卡的话,注意需要安装CUDA,CUDA的搭建我们在先前教程已完成;

*第39行:根据代码注释,结合CUDA版本注释或接注释:

*第70行:将 /usr/lib/python2.7/dist-packages/numpy/core/include gaicheng修改为/usr/lib/local/python2.7/dist-packages/numpy/core/include

*第97行添加/usr/include/hdf5/serial 到 INCLUDE_DIRS。

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial

*第98行进行修改,添加/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial到LIBRARY_DIRS:

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

Makefile文件:

*第181行,添加hdf5_hl hdf5。

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

1)输入 :

make –j12

进行编译。

2)make通过后输入:

make test –j12

make runtest –j12

测试编译正确性。通过后输入:

make pycaffe,编译通过后就可以在python下调用caffe。(也可以进入python环境下输入import caffe,若无报错则caffe环境搭建成功)

3)将caffe添加至环境变量:

gedit ~/.bashrc

export PYTHONPATH=$PYTHONPATH:{your local caffe path}/python

source ~/.bashrc

至此caffe环境搭建完成。

Pytorch转caffe模型:

首先将远端的Pytorch转Caffe模型工具git到本地路径下,进入../Github路径下(为了方便使用,同一将文件放入../Github路径下):

git clone https://github.com/tuvia0213/brocolli.git

(1)进入到../Github/brocolli/tests/pytorch_model文件目录下,将之前训练好的pytorch模型(pnet_epoch_9.pt、pnet_epoch_10.pt,后缀数字越大模型越精确,P、R、Onet相同)放入该目录。

(2)打开../Github/brocolli/tests目录,将../DFace/dface/core下的models.py与models.pyc文件放入../Github/brocolli下,运行../brocolli/tests下的pytorch_model_converter.py脚本。

(3)在转换Pnet、Rnet、Onet三种模型时需要对该脚本进行修改,三者类似,只以Pnet为例修改:

1)19行改为from models import PNet;

2)21行改为model_file = “pytorch_model/pnet_epoch_9.pt”;

3)25行改为PNet;

4)27行改为model_weights = torch.load(‘pytorch_model/pnet_epoch_10.pt’);

5)42、49、51行中,分别对红字进行修改:

dummy_input = torch.ones([1, 3, 24, 24])

summary(net, (3, 24, 24), device='cpu')

pytorch_parser = PytorchParser(model_file, [3, 24, 24])

在(1,3,24,24)中,1是batch size,3是channel(RGB),24为input size,只需要修改24,修改方法分别参考教程《深度学习之DFACE模型pytorch训练(二)》三个网络的input_size,只需改成input size的整数倍即可;

(4)修改完后进入../brocoll/tests路径下进行模型转换:

python pytorch_model_converter.py

完成模型Pytorch转Caffe的模型转换,转换完后生成.caffemodel和.prototxt格式文件,进行Caffe转NCNN模型的转换。

Caffe转NCNN模型:

ncnn是腾讯推出的一款嵌入式端推理框架,它可以完美兼容caffe环境,将caffe模型转换成ncnn框架支持的格式,然后就可以进行推理了。

在这里感谢腾讯。

(1)cd ../Github;git clone https://github.com/Tencent/ncnn.git;

(2)cd ncnn; mkdir –p build; cd build; cmake ..; make –j4;编译生成pc端的工具;

(3)将caffe模型转换到ncnn可使用的模型;

(4)切换到目录ncnn/build/tools/caffe,运行

./caffe2ncnn pnet_epoch_10.pt.prototxt pnet_epoch_10.pt.caffemodel det1.param det1.bin

即可得到NCNN模型,Pnet、Rnet、Onet分别对应det1、det2、det3。

至此,模型转换完毕。

linux caffe生成的模型,深度学习之pytorch转caffe转ncnn模型转换(三)相关推荐

  1. 招聘 | 蚂蚁集团-NLP-大模型/深度学习/数字人算法-3个岗位-社招

    进NLP群->加入NLP交流群 蚂蚁集团-NLP大模型算法工程师-北京/上海/成都 基础信息 工作地点:成都.北京.上海 工作年限:3年以上 学历:硕士 职位描述 智能交互技术部负责蚂蚁集团对话 ...

  2. 深度学习_21天实战Caffe.pdf

    深度学习_21天实战Caffe.pdf 原 深度学习21天实战caffe学习笔记<1:深度学习的过往> 1. 深度学习DL: 1.1.有监督学习.无监督学习.过拟合.训练样本.泛化.训练集 ...

  3. 深度学习框架比较(Caffe, TensorFlow, MXNet, Torch, Theano)

    在这里,我将会介绍当前比较主流的5种深度学习框架,包括 Caffe, TensorFlow, MXNet, Torch, Theano,并对这些框架进行分析. 首先对这些框架进行总览. 库名称 开发语 ...

  4. 深度学习框架TensorFlow、Caffe、MXNet、PyTorch如何抉择?6 位大咖现身说法

    2017 年 6 月,EGO 邀请了 6 位行业大咖,聚焦深度学习框架选择与应用实战,进行了近 3 小时的在线探讨.本文根据当天内容精编而成.6位参与人分别是(排名不分先后): 彭垚-七牛人工智能实验 ...

  5. 深度学习的分布式训练--数据并行和模型并行

    <div class="htmledit_views"> 在深度学习这一领域经常涉及到模型的分布式训练(包括一机多GPU的情况).我自己在刚刚接触到一机多卡,或者分布式 ...

  6. 自动生成低精度深度学习算子

    自动生成低精度深度学习算子 深度学习模型变得越来越大,越来越复杂,由于其有限的计算和能源预算,部署在低功耗电话和IoT设备上变得充满挑战.深度学习的最新趋势是使用高度量化的模型,该模型可对输入和几位权 ...

  7. 如何提升深度学习性能?数据、算法、模型一个都不能少

    https://www.toutiao.com/i6635808175893250564/ 2018-12-17 12:04:48 该文来自DataCastle数据城堡(DataCastle2016) ...

  8. 2023年的深度学习入门指南(14) - 不能只关注模型代码

    2023年的深度学习入门指南(14) - 不能只关注模型代码 最近,有一张大模型的发展树非常流行: 这个图是相当不错的,对于加深对于Transformer模型编码器.解码器作用的理解,模型的开源和闭源 ...

  9. 【深度学习】Keras加载权重更新模型训练的教程(MobileNet)

    [深度学习]Keras加载权重更新模型训练的教程(MobileNet) 文章目录 1 重新训练 2 keras常用模块的简单介绍 3 使用预训练模型提取特征(口罩检测) 4 总结 1 重新训练 重新建 ...

最新文章

  1. 某程序员统计同事工作时间上厕所次数!有人一天去两次,有人一天去十次!楼主:懒人屎尿多!网友:最闲的是你!...
  2. Android应用程序安装过程源代码分析(1)
  3. 到底什么是AI0T?现在不少头部企业都在打造AIOT概念,今天我们就梳理一下AIOT产业都包含了哪些,启明云端在AIOT中,能提供哪些解决方案?
  4. Java程序员须知:分布式微服务为什么很难?
  5. e盾服务端源码_gRPC服务注册发现及负载均衡的实现方案与源码解析
  6. 向后转动作要领_跆拳道腿法之转身侧踢动作要领
  7. jsp+servlet+jdbc实现对数据库的增删改查
  8. 【UAV】第一台穿越机QAV250组装记录v1.0
  9. centos 下 docker 的 安装与使用 (一)
  10. Linux 重定向和追加(、 指令)
  11. 机器学习中的二分类问题评价指标之精确率、召回率、F1值通俗理解
  12. 思维转换--等价换位思考
  13. 一文了解SCI论文投稿全流程
  14. 飞机躲子弹小游戏案例
  15. 超级玩家联想Z5s来了1398元起 顶配12GB划时代超旗舰联想Z5 Pro GT 855版惊艳亮相
  16. C#高效编程--改进C#代码的50个行之有效的办法笔记
  17. 按键的硬件消抖电路原理
  18. 移动互联网白皮书(2014)
  19. cocos creator 调用原生端方法
  20. PAT(B) - 1015. 德才论 (25)

热门文章

  1. Windows7修改hosts提示:您没有权限在此位置中保存文件
  2. 摩根士丹利 Morgan Stanley 2008校园招聘已经正式开
  3. java正则表达 w,超强变态的正则(\w)((?=\1\1\1)(\1))+讲解
  4. 学生a3制图标题栏尺寸手绘_机械制图基本知识讲解,机械视图的投影画法
  5. MySQL SQL 优化命令行问题 SQL 抓取方式
  6. 文档丨Oracle 三种迁移方案
  7. Oracle 20c 新特性知多少?ANSI SQL 全支持之 EXCEPT 运算符增强
  8. 华为云网络测量如何“悬丝诊脉”
  9. 性能测试界“网红”云性能测试服务,了解一下?
  10. 【华为云技术分享】物体检测yolo3算法 学习笔记2