vs2013的matconvnet_Windows底下编译MatConvNet工具包CPU版本
MatConvNet主页上的toolbox已经进行了多次更新,按照toolbox主页上提供的编译方法已经可以直接在windows上进行编译了,无需按照博文下面这么复杂的步骤了。
最近修改成了一个可以直接通过Matlab编译的Windows端的CPU版本,就不需要下面这么复杂的编译步骤了,里面已经包含了编译好的mexw64的动态链接文件,可以先尝试是否可以运行,如不能最好重新编译一下。
可以在这个链接进行下载:
vlfeat工具包发布了他们的Deep Learning
的工具包MatConvNet,由于目前只提供了Linux和Mac上可以编译通过的版本,该工具包的主页是:http://www.vlfeat.org/matconvnet/,并且提供几个已经训练好的CNN网络模型。
经过一上午的小修改,终于将这个工具包的成功的编译可以在Windows底下可以运行的CPU版本。对于GPU的版本由于需要Matlab
2014版本,而本人的Matlab是2012版本,所以就没有继续去进行编译。还有另外一个原因,对于大规模的训练CNN网络,一般都是放在Linux服务器上进行训练的,所以对于平常只使用已经训练好的模型,进行测试实验,仅使用CPU基本就已经够用了。
个人的已经修改好的VS2010的工程文件,可以在这个链接进行下载:
在使用的过程中需要对一些包含include,
lib的路径进行修改。
以及编译好的mex文件
可以直接下载拷贝到:"matconvnet-1.0-beta7\matlab\mex"目录下
如果需要自己一步一步进行实现,可以参考下面的步骤。
简单介绍一下我使用的环境是VS2010 + Matlab 2012a , 64位win7系统。
具体的编译过程如下:
1.
使用VS2010创建一个MFC的DLL工程
将"matconvnet-1.0-beta7\matlab\src"目录底下的所有文件及文件夹拷贝到我们新建的VS工程文件目录底下。
(1)在工程名字上右键,选择最下面的Properties, 点击最顶上的Configuration
Manager按钮, Active solution platform新建一个x64,并选择Release。
(2) Properties ->
Configuration Properties -> General -> Target Extension改为
.mexw64
(3) Properties ->
Configuration Properties -> C/C++ -> Additional Include
Directories添加
$(matlabroot)\extern\include
其中$(matlabroot)是你电脑上matlab的安装路径
可以在电脑的环境变量中新建一个matlabroot变量,指向matlab的安装目录
(4)Properties ->
Configuration Properties -> Linker -> Additional
Dependencies中添加
$(matlabroot)\extern\lib\win64\microsoft\libmx.lib
$(matlabroot)\extern\lib\win64\microsoft\libmex.lib
$(matlabroot)\extern\lib\win64\microsoft\libmat.lib
$(matlabroot)\extern\lib\win64\microsoft\libmwblas.lib
(5)点击Source目录下的
*.def文件,
EXPORTS 改为 EXPORTS mexFunction
2.
编译vl_nnconv.cu ,
vl_nnnormalize.cu
, vl_nnpool.cu
对于这三个文件,采用单独的方式一个一个进行编译。
首先编译 vl_nnconv.cu, Source Files上右键 Add -> Existing Items 添加
vl_nnconv.cu,后缀名改为.cpp,
并将Project的名字改为vl_nnconv。
其次是编译 vl_nnnormalize.cu, Source Files上右键 Add
-> Existing Items 添加 vl_nnnormalize.cu,后缀名改为.cpp,
vl_nnconv.cpp上右键 Remove, 并将Project的名字改为vl_nnnormalize。
最后是编译vl_nnpool.cu, Source Files上右键 Add -> Existing Items
添加vl_nnpool.cu,后缀名改为.cpp,vl_nnnormalize.cpp上右键
Remove, 并将Project的名字改为vl_nnpool。
编译过程中出现的错误:
(1). 对于bits文件夹里面的每一个cpp文件,记得在开始的部分加上#include
"stdafx.h"
(2).
(3). 对于bits\normalize.cpp(352): error C2219:
syntax error : type qualifier must be after
'*',直接将restrict移动动*之后。
3.
编译vl_imreadjpeg
最后是编译vl_imreadjpeg.c这个文件,首先将MFC
DLL的工程的名字重命名为“vl_imreadjpeg",并将vl_imreadjpeg.c的后缀名改为.cpp, 并添加
#include "stdafx.h"
需要libjpeg和pthread的支持
(1)对于libjpeg我是直接拷贝了opencv中的libjpeg的里面的所有文件,链接:http://pan.baidu.com/s/1o6LpSAA 密码:bvng
将整个文件夹拷贝到整个工程的文件目录底下,VS的工程上右键 Add -> New
Filter 输入(libjpeg), 然后在libjpeg上右键 Add ->
Existing Item将libjpeg文件底下的所有文件都添加进来,但需要Remove掉jmemansi.c这一个文件。选中libjpeg底下所有的.c文件,右键 Properties
-> C/C++ -> Precompiled Header
->Precompiled Header 选中“Not Using Precompiled
Headers”
Properties ->
Configuration Properties -> C/C++ -> Additional Include
Directories添加
D:\Toolbox\pthreads-w32-2-9-1-release\Pre-built.2\include
Properties ->
Configuration Properties -> Linker -> Additional
Dependencies中添加
D:\Toolbox\pthreads-w32-2-9-1-release\Pre-built.2\lib\x64\pthreadVC2.lib
将蓝色部分改为对应的目录。
在编译的过程中可能会出现的一些错误及修改方法。
(1) 对于错误>bits\pooling.cpp(52): error C2589: '(' : illegal
token on right side of '::'
,主要是有std::max与系统中max宏冲突,将std::max加上括号(std::max)。
以及文件中的std::min改为(std::min)。
(2) >vl_imreadjpeg.cpp(157): error C3861: 'snprintf': identifier
not found, 将snprintf改为_snprintf
(3) >vl_imreadjpeg.cpp(325): error C2440: '=' : cannot
convert from 'void *' to 'Reader *',
readers[r] = malloc(sizeof(Reader)) ;
在malloc加上相应的指针类型强制转换。readers[r] = (Reader*)malloc(sizeof(Reader)) ;
对于几处相应的错误采用同样的处理方法。
(4) >vl_imreadjpeg.cpp(211): error C2219: syntax error :
type qualifier must be after '*'
JSAMPROW __restrict scanline = scanlines[dy]
+ 3*x ;
改为 JSAMPLE FAR * __restrict scanline =
scanlines[dy] + x ;
4.
最后就是进行测试了:
(1)将编译好的vl_imreadjpeg.mexw64, vl_imreadjpeg.mexw64,
vl_nnnormalize.mexw64, vl_nnpool.mexw64复制到“matconvnet-1.0-beta7\matlab\mex"目录底下
(2) 进入toolbox的matlab目录,运行vl_setupnn.m, 然后再输入vl_test_nnlayers命令如果可以正确运行那么就说明编译成功。
(3)在"examples"目录下运行“cnn_imagenet_minimal.m”,会自动下载VGG实验室已经训练好的一个模型,下载过程可能需要一段时间。
测试这张图片“pepper.png”,可以看到图片上的输出结果“Bell Pepper, Score
0.704”
对于其他更加具体的使用,请参考“example”目录的例子,以及工具包的主页的参考手册。
vs2013的matconvnet_Windows底下编译MatConvNet工具包CPU版本相关推荐
- Windows7下Caffe-SSD的应用(一)——在Windosw7下编译配置Caffe-SSD CPU版本
前言 1.用过Caffe的GooglNet做图像分类的相关项目,比起传统的办法,效果要好很,在目标检测这块,之前也用传统的HOG加SVM实现过车辆,行人和马匹的检测,但正样本要上万图像,才能达到能应用 ...
- Ubuntu 16.04下Caffe-SSD的应用(一)——编译Caffe-SSD的CPU版本与GPU版本
前言 1.之前用过Caffe的GooglNet做图像分类的相关项目,比起传统的办法,效果要好很多,在目标检测这块,之前也用传统的HOG加SVM实现过车辆,行人和马匹的检测,但正样本要上万张图像,才达到 ...
- 【OpenCV3】OpenCV3.2.0在VS2013环境下Cmake编译与快速配置
近年来随着人工智能和机器视觉的日益火爆,OpenCV作为机器视觉领域内的利器也得到了长足和快速的发展.作为OpenCV的忠实粉丝,一直使用的是OpenCV2的版本,但是OpenCV3相对于OpenCV ...
- 在windows上Matlab 编译MatConvNet
windows 10 64 bits matlab 2015b/2016a MatConvNet 1.0-beta20 或者从github 下载GIT repository CUDA GPU Comp ...
- 20211129编译RK3399的Android发生编译服务器的CPU看门狗软件死锁的问题
20211129编译RK3399的Android发生编译服务器的CPU看门狗软件死锁的问题 2021/11/29 10:39 出现的问题: Message from syslogd@rootroot- ...
- Mediapipe 在RK3399PRO上的初探(一)(编译、运行CPU和GPU Demo, RK OpenglES 填坑,编译bazel)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 BlogID=103 环境说明 Ubuntu 18 ...
- win7 + Caffe CPU版本安装
步骤1:VS2013的下载安装 ...
- Windows7下Caffe的应用---在Win7下使用VS2015、Camke、Anaconda3配置Caffe CPU版本
前言 1.之前一直在Linux使用Caffe做机器学习的相关的项目,相对于Linux,在Windows配置Caffe相对麻烦一些,我这里使用Cmake gui版本,适合新手操作. 2.我配置的环境是w ...
- win7 + vs2015+ matlab2016a + python3.5安装matcaffe cpu版本
参考: 1. caffe-windows直接安装版---编译后的Release 2.安装Windows10 和环境下的caffe(新版) 3.win10+vs2015编译caffe的cpu debug ...
最新文章
- usaco ★Fractions to Decimals 分数化小数
- Linux添加/删除用户和用户组
- python3爬虫初探(八)requests
- 新版vue-cli模板下本地开发环境使用node服务器跨域
- java实现打印直角三角形
- 计算t-test 的C程序
- Linux 监控命令之 vmstat
- 2.1.5编码与调制(1)
- cloud一分钟 | 腾讯金融云总经理胡利明:腾讯云服务金融的“加减 乘除”法。...
- 【OpenCV 例程200篇】42. 图像的灰度变换(比特平面分层)
- Ubuntu16 python2.7升级python3.5
- CVPR2020 | 华为GhostNet超越谷歌MobileNetV3
- hhvm mysql_Ubuntu 14.10 安装 Nginx + MySQL + HHVM + phpMyAdmin [LNMH]
- 人的一生最后悔什么?——曾获各界名流都认同的忠告
- cocostudio常见问题
- 中文核心期刊有哪些?
- 第二次作业-Steam软件分析
- 看看这模型!“桥梁建设国家队”是如何用CC来三维建模的?
- 《DNS稳定保障系列3--快如闪电,域名解析秒级生效》
- 发布、发版、上线流程