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版本相关推荐

  1. Windows7下Caffe-SSD的应用(一)——在Windosw7下编译配置Caffe-SSD CPU版本

    前言 1.用过Caffe的GooglNet做图像分类的相关项目,比起传统的办法,效果要好很,在目标检测这块,之前也用传统的HOG加SVM实现过车辆,行人和马匹的检测,但正样本要上万图像,才能达到能应用 ...

  2. Ubuntu 16.04下Caffe-SSD的应用(一)——编译Caffe-SSD的CPU版本与GPU版本

    前言 1.之前用过Caffe的GooglNet做图像分类的相关项目,比起传统的办法,效果要好很多,在目标检测这块,之前也用传统的HOG加SVM实现过车辆,行人和马匹的检测,但正样本要上万张图像,才达到 ...

  3. 【OpenCV3】OpenCV3.2.0在VS2013环境下Cmake编译与快速配置

    近年来随着人工智能和机器视觉的日益火爆,OpenCV作为机器视觉领域内的利器也得到了长足和快速的发展.作为OpenCV的忠实粉丝,一直使用的是OpenCV2的版本,但是OpenCV3相对于OpenCV ...

  4. 在windows上Matlab 编译MatConvNet

    windows 10 64 bits matlab 2015b/2016a MatConvNet 1.0-beta20 或者从github 下载GIT repository CUDA GPU Comp ...

  5. 20211129编译RK3399的Android发生编译服务器的CPU看门狗软件死锁的问题

    20211129编译RK3399的Android发生编译服务器的CPU看门狗软件死锁的问题 2021/11/29 10:39 出现的问题: Message from syslogd@rootroot- ...

  6. Mediapipe 在RK3399PRO上的初探(一)(编译、运行CPU和GPU Demo, RK OpenglES 填坑,编译bazel)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   BlogID=103 环境说明 Ubuntu 18 ...

  7. win7 + Caffe CPU版本安装

    步骤1:VS2013的下载安装                                                                                     ...

  8. Windows7下Caffe的应用---在Win7下使用VS2015、Camke、Anaconda3配置Caffe CPU版本

    前言 1.之前一直在Linux使用Caffe做机器学习的相关的项目,相对于Linux,在Windows配置Caffe相对麻烦一些,我这里使用Cmake gui版本,适合新手操作. 2.我配置的环境是w ...

  9. win7 + vs2015+ matlab2016a + python3.5安装matcaffe cpu版本

    参考: 1. caffe-windows直接安装版---编译后的Release 2.安装Windows10 和环境下的caffe(新版) 3.win10+vs2015编译caffe的cpu debug ...

最新文章

  1. usaco ★Fractions to Decimals 分数化小数
  2. Linux添加/删除用户和用户组
  3. python3爬虫初探(八)requests
  4. 新版vue-cli模板下本地开发环境使用node服务器跨域
  5. java实现打印直角三角形
  6. 计算t-test 的C程序
  7. Linux 监控命令之 vmstat
  8. 2.1.5编码与调制(1)
  9. cloud一分钟 | 腾讯金融云总经理胡利明:腾讯云服务金融的“加减 乘除”法。...
  10. 【OpenCV 例程200篇】42. 图像的灰度变换(比特平面分层)
  11. Ubuntu16 python2.7升级python3.5
  12. CVPR2020 | 华为GhostNet超越谷歌MobileNetV3
  13. hhvm mysql_Ubuntu 14.10 安装 Nginx + MySQL + HHVM + phpMyAdmin [LNMH]
  14. 人的一生最后悔什么?——曾获各界名流都认同的忠告
  15. cocostudio常见问题
  16. 中文核心期刊有哪些?
  17. 第二次作业-Steam软件分析
  18. 看看这模型!“桥梁建设国家队”是如何用CC来三维建模的?
  19. 《DNS稳定保障系列3--快如闪电,域名解析秒级生效》
  20. 发布、发版、上线流程

热门文章

  1. Guitar Pro里的渐强渐弱符号
  2. 阿里云服务器搭建Nginx+rtmp推流服务器
  3. Android中关于空指针异常的解决办法
  4. Java中的类加载机制
  5. OSPF FA地址解析
  6. 用Java实现一个抽奖系统
  7. 一个用来学习CoAP协议的小例子
  8. CC And MC Introduce
  9. ProcessOn一款非常不错在线绘图工具
  10. abaqus子程序vumat安装使用