深度学习(五十八)caffe移植至mxnet
一、模型转换
#**mxnet编译** 1.下载mxnet:git clone https://github.com/dmlc/mxnet.git --recursive 2. 编译mxnet ``` cd mxnet make -j8 ``` 可以得到lib文件夹下面的:libmxnet.so ,后面只需要该链接库,然后还有头文件:c_predict_api.h 即可调用mxnet#**caffe模型转换** 1. 打开文件夹caffe_converter ``` cd mxnet/tools/caffe_converter protoc --python_out=./ ./caffe.proto ``` 2. 编辑convert_model.py ``` sudo vim convert_model.py ``` 在文件最开始处加入caffe、mxnet的python路径: ``` import sys sys.path.append("../../python/") sys.path.insert(0,'/home/hjimce/tools/caffe/python') ``` 3.输入命令 ``` python convert_model.py net.prototxt train.caffemodel newmodel ``` 就可以得到mxnet网络模型.json,参数文件.params后续可直接调用。convert_mean.py对于mean均值文件的转换,也可采用faceattribute1.0进行转换,保存成opencv可读文件 #**编译主程序** 复制mxnet所需文件:```c_predict_api.h、libmxnet.so``` 复制模型转换文件:.json、.params、以及均值文件mean.xml,即可进行程序预测识别
二、外部cmake链接引用
set(USE_CUDA OFF) set(USE_CUDNN OFF)add_subdirectory("./3dparty/mxnet/") target_link_libraries(faceattribute ${OpenCV_LIBS} mxnet)#链接mxnet库
三、外部API代码引用
//std::cout<<"load model finish"<<std::endl; cv::Mat faceimage=Get_face(image,facerect,scalex,scaley); cv::imshow("mouth.jpg",faceimage); //cv::imwrite("eye.jpg",faceimage); cv::Mat network_input_image=Std_net_image(faceimage,orisize, orisize,m_network_input_size , m_network_input_size); int channels = 3; int width = m_network_input_size; int height = m_network_input_size; int image_size=channels*width*height; std::vector<mx_float> input_channels = std::vector<mx_float>(image_size); preprocess(network_input_image, m_mean, 3, input_channels.data()); //std::cout<<"process image finish"<<std::endl; clock_t begin = clock(); MXPredSetInput(m_network, "data", input_channels.data(), image_size); MXPredForward(m_network); mx_uint output_index = 0; mx_uint *shape = 0; mx_uint shape_len; MXPredGetOutputShape(m_network, output_index, &shape, &shape_len); size_t size = 1; for (mx_uint i = 0; i < shape_len; ++i) size *= shape[i]; std::vector<float> result(size); MXPredGetOutput(m_network, output_index, &(result[0]), size); // //vector<float> sorted(result.begin(), result.end()); int top_n = m_labels.size(); //partial_sort(sorted.begin(), sorted.begin() + top_n, sorted.end(), greater<float >()); std::vector<std::pair<string, float>>outputs; for (int i = 0; i < top_n; i++) {// size_t idx = distance(result.begin(), find(result.begin(), result.end(), sorted[i])); outputs.push_back(std::pair<string, float>(m_labels[i],result[i])); }
四、使用Amalgamation
cd 到mxnet的Amalgamation模块,输入:
make MIN=1
即将生成文件:mxnet_predict-all.cc。不过生成后,引用的时候,我拉取到的版本存在一堆bug,出现的一些问题,通过自己修改mxnet_predict-all.cc文件后,才能用。具体一些修改如下
1、干掉文件中:
//=====[213] STAGE: src EXPANDING: ../src/ndarray/autograd.h =====
后面的所有实现函数。
2、修改:
#define DMLC_LOG_STACK_TRACE 1
为:
#define DMLC_LOG_STACK_TRACE 0
3、修改:
inline int MXAPIHandleException(const dmlc::Error &e) {MXAPISetLastError(e.what()); return -1; }
为:
inline int MXAPIHandleException(const dmlc::Error &e) {//MXAPISetLastError(e.what()); return -1; }
深度学习(五十八)caffe移植至mxnet相关推荐
- 花书+吴恩达深度学习(十八)迁移学习和多任务学习
目录 0. 前言 1. 迁移学习 2. 多任务学习 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十八)迁移学习和多任务学习 花书+吴恩达深度学习(十 ...
- DL框架:主流深度学习框架(TensorFlow/Pytorch/Caffe/Keras/CNTK/MXNet/Theano/PaddlePaddle)简介、多个方向比较、案例应用之详细攻略
DL框架:主流深度学习框架(TensorFlow/Pytorch/Caffe/Keras/CNTK/MXNet/Theano/PaddlePaddle)简介.多个方向比较.案例应用之详细攻略 目录 深 ...
- 12大深度学习开源框架(caffe,tensorflow,pytorch,mxnet等)汇总详解
这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...
- 深度学习(十八)基于R-CNN的物体检测-CVPR 2014-未完待续
基于R-CNN的物体检测 原文地址:http://blog.csdn.net/hjimce/article/details/50187029 作者:hjimce 一.相关理论 本篇博文主要讲解2014 ...
- 深度学习(十八)——YOLOv2(2), 语义分割
YOLOv2 Stronger(续) Hierarchical classification(层次式分类) ImageNet的标签参考WordNet(一种结构化概念及概念之间关系的语言数据库).例如: ...
- 深度学习(十八):人脸验证(face verification)和人脸识别(face recognition)
这是一系列深度学习的介绍,本文不会涉及公式推导,主要是一些算法思想的随笔记录. 适用人群:深度学习初学者,转AI的开发人员. 编程语言:Python 参考资料:吴恩达老师的深度学习系列视频 吴恩达老师 ...
- 系统学习深度学习(十八)--NIN模型
转自:http://blog.csdn.net/mounty_fsc/article/details/51746111 补充:http://blog.csdn.net/sheng_ai/article ...
- 深度学习部署(十八): CUDA RunTime API _wa_仿射变换的实现
1. 仿射变换 warpAffine是一种二维仿射变换技术,可以将图像从一种形式转换为另一种形式.它是OpenCV图像处理库中的一个函数,可用于对图像进行平移.旋转.缩放和剪切等操作. 仿射变换可以通 ...
- 花书+吴恩达深度学习(十九)构建模型策略(训练模型顺序、偏差方差、数据集划分、数据不匹配)
目录 0. 前言 1. 调试模型顺序 2. 偏差方差的解决方法 3. 数据集的选取划分 4. 数据不匹配问题 5. 评估指标的选取 6. 贝叶斯最佳误差 如果这篇文章对你有一点小小的帮助,请给个关注, ...
- OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast
OpenCV学习笔记(五十六)--InputArray和OutputArray的那些事core 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray ...
最新文章
- Linux根文件系统的文件镜像,构建小型Linux根文件系统镜像
- MATLAB无穷大上的反常积分
- python二值化特征_OpenCV-Python系列之轮廓特征高阶
- OpenCV---轮廓发现
- Java铬钼钢车架几何_车架的几何尺寸
- LeetCode 刷题笔记 2. 有效的括号(Valid Parentheses)
- 几个文件vtp格式转stl格式
- 《老路用得上的商学课》51-55学习笔记
- 解决IE浏览器无法打开TOMCAT http://locahost:8080
- 百度java面试应届,秋招 百度二轮面试---血淋淋的经历写实
- 【Linux 系统启动优化测试工具的使用——grabserial 】
- npm ERR! Error: tunneling socket could not be established的解决问题
- Hexo界面美化_实用插件配置
- dash live 播放
- windows卸载夸克网盘没有卸载干净
- hdu-1225-Football Score
- 通过上下两册书籍夯实Python基础,这本书就是Python的必备书籍
- INI 文件读取专用类
- 投了上千简历,是Android岗位需求少?还是我的技术不行
- win7 电脑通过xp电脑来使用hp laserjet 5200LX打印机
热门文章
- 自动清理归档日志_LGWR 日志写入进程
- java冒泡排序_冒泡排序不会写,怎么当程序员?细说经典java算法——冒泡排序...
- Java 头像剪切及上传服务器JSP 笔记
- 用c语言设计程序设计查表温度传感器,基于18B20温度传感器+1602液晶显示器的C语言程序设计开发...
- 执行transact-sql语句或批处理时发生异常_DAY5-step6 Python异常处理:try, raise,except, finally...
- Hadoop的Python框架指南
- [技术博客] 微信小程序的formid获取
- [LeetCode] 234. Palindrome Linked List_Easy tag: Linked List
- VBA 打开文件对话框
- 精品教程--Android组件详解