linux caffe生成的模型,深度学习之pytorch转caffe转ncnn模型转换(三)
搭建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模型转换(三)相关推荐
- 招聘 | 蚂蚁集团-NLP-大模型/深度学习/数字人算法-3个岗位-社招
进NLP群->加入NLP交流群 蚂蚁集团-NLP大模型算法工程师-北京/上海/成都 基础信息 工作地点:成都.北京.上海 工作年限:3年以上 学历:硕士 职位描述 智能交互技术部负责蚂蚁集团对话 ...
- 深度学习_21天实战Caffe.pdf
深度学习_21天实战Caffe.pdf 原 深度学习21天实战caffe学习笔记<1:深度学习的过往> 1. 深度学习DL: 1.1.有监督学习.无监督学习.过拟合.训练样本.泛化.训练集 ...
- 深度学习框架比较(Caffe, TensorFlow, MXNet, Torch, Theano)
在这里,我将会介绍当前比较主流的5种深度学习框架,包括 Caffe, TensorFlow, MXNet, Torch, Theano,并对这些框架进行分析. 首先对这些框架进行总览. 库名称 开发语 ...
- 深度学习框架TensorFlow、Caffe、MXNet、PyTorch如何抉择?6 位大咖现身说法
2017 年 6 月,EGO 邀请了 6 位行业大咖,聚焦深度学习框架选择与应用实战,进行了近 3 小时的在线探讨.本文根据当天内容精编而成.6位参与人分别是(排名不分先后): 彭垚-七牛人工智能实验 ...
- 深度学习的分布式训练--数据并行和模型并行
<div class="htmledit_views"> 在深度学习这一领域经常涉及到模型的分布式训练(包括一机多GPU的情况).我自己在刚刚接触到一机多卡,或者分布式 ...
- 自动生成低精度深度学习算子
自动生成低精度深度学习算子 深度学习模型变得越来越大,越来越复杂,由于其有限的计算和能源预算,部署在低功耗电话和IoT设备上变得充满挑战.深度学习的最新趋势是使用高度量化的模型,该模型可对输入和几位权 ...
- 如何提升深度学习性能?数据、算法、模型一个都不能少
https://www.toutiao.com/i6635808175893250564/ 2018-12-17 12:04:48 该文来自DataCastle数据城堡(DataCastle2016) ...
- 2023年的深度学习入门指南(14) - 不能只关注模型代码
2023年的深度学习入门指南(14) - 不能只关注模型代码 最近,有一张大模型的发展树非常流行: 这个图是相当不错的,对于加深对于Transformer模型编码器.解码器作用的理解,模型的开源和闭源 ...
- 【深度学习】Keras加载权重更新模型训练的教程(MobileNet)
[深度学习]Keras加载权重更新模型训练的教程(MobileNet) 文章目录 1 重新训练 2 keras常用模块的简单介绍 3 使用预训练模型提取特征(口罩检测) 4 总结 1 重新训练 重新建 ...
最新文章
- 某程序员统计同事工作时间上厕所次数!有人一天去两次,有人一天去十次!楼主:懒人屎尿多!网友:最闲的是你!...
- Android应用程序安装过程源代码分析(1)
- 到底什么是AI0T?现在不少头部企业都在打造AIOT概念,今天我们就梳理一下AIOT产业都包含了哪些,启明云端在AIOT中,能提供哪些解决方案?
- Java程序员须知:分布式微服务为什么很难?
- e盾服务端源码_gRPC服务注册发现及负载均衡的实现方案与源码解析
- 向后转动作要领_跆拳道腿法之转身侧踢动作要领
- jsp+servlet+jdbc实现对数据库的增删改查
- 【UAV】第一台穿越机QAV250组装记录v1.0
- centos 下 docker 的 安装与使用 (一)
- Linux 重定向和追加(、 指令)
- 机器学习中的二分类问题评价指标之精确率、召回率、F1值通俗理解
- 思维转换--等价换位思考
- 一文了解SCI论文投稿全流程
- 飞机躲子弹小游戏案例
- 超级玩家联想Z5s来了1398元起 顶配12GB划时代超旗舰联想Z5 Pro GT 855版惊艳亮相
- C#高效编程--改进C#代码的50个行之有效的办法笔记
- 按键的硬件消抖电路原理
- 移动互联网白皮书(2014)
- cocos creator 调用原生端方法
- PAT(B) - 1015. 德才论 (25)
热门文章
- Windows7修改hosts提示:您没有权限在此位置中保存文件
- 摩根士丹利 Morgan Stanley 2008校园招聘已经正式开
- java正则表达 w,超强变态的正则(\w)((?=\1\1\1)(\1))+讲解
- 学生a3制图标题栏尺寸手绘_机械制图基本知识讲解,机械视图的投影画法
- MySQL SQL 优化命令行问题 SQL 抓取方式
- 文档丨Oracle 三种迁移方案
- Oracle 20c 新特性知多少?ANSI SQL 全支持之 EXCEPT 运算符增强
- 华为云网络测量如何“悬丝诊脉”
- 性能测试界“网红”云性能测试服务,了解一下?
- 【华为云技术分享】物体检测yolo3算法 学习笔记2