windows下配置caffe-matlab接口

一、环境说明

也是安装顺序。特别强调的是除VS2015以外,其他软件的安装路径都最好不要包含空格。
1、Windows 64位系统。
2、Visual Studio 2015(VS2015, 对应VC14)。
3、Matlab 2017a。Matlab的版本倒不是很重要,只要支持Matlab 2015a之后的版本都应该支持。所以如果安装了其他版本的Matlab,可以先不用安装2017a。安装完之后要把其中的bin目录和runtime\bin目录加入环境变量Path。

D:\Program Files\MATLAB\R2017a\bin
D:\Program Files\MATLAB\R2017a\runtime\win64

4、CMake 3.14。安装时要选择将CMake添加到环境变量Path,然后下面的路径就会自动添加到环境变量Path。

C:\Program Files\CMake\bin

5、Miniconda2的Python2.7版本。安装的时候记得勾选add anaconda to environment path。然后下面的路径就会自动添加到环境变量Path。安装完conda之后,记得把conda的源换成国内的源,否则下载库会特别慢。

D:\Libs\MiniConda
D:\Libs\MiniConda\Library\mingw-w64\bin
D:\Libs\MiniConda\Library\usr\bin
D:\Libs\MiniConda\Library\bin
D:\Libs\MiniConda\Scripts

安装完成后,打开命令行,输入cmake和python --version,检查cmake是否工作以及python版本是否正确。如果Python的版本不是2.7,请在环境变量中删除其他Python版本的路径。

二、编译Caffe-Windows

1、下载资源

  • Caffe-Windows
    打开https://github.com/BVLC/caffe/tree/windows,下载源码(可直接点击下载)。
  • libraries_v140_x64_py27_1.1.0.tar.bz2
    这个是caffe要依赖的库,点击下载。v140对应VS2015,x64对应系统架构,py27对应python版本。下载完成之后,打开libraries_v140_x64_py27_1.1.0.tar.bz2所在目录,按住Shift键,右键单击空白处,然后选择“在此处打开powershell窗口”,打开命令行,执行下面的命令:
cmd
md %USERPROFILE%\.caffe\dependencies\download
copy libraries_v140_x64_py27_1.1.0.tar.bz2 %USERPROFILE%\.caffe\dependencies\download

执行上面的命令就是把libraries_v140_x64_py27_1.1.0.tar.bz2复制到%USERPROFILE%\.caffe\dependencies\download这个目录里面去。%USERPROFILE%是当前用户的目录。可在命令行中使用echo %USERPROFILE%来查看。

2、编辑CMakeLiss.txt

  • 解压caffe-windows,打开caffe-windows\CMakeLiss.txt,在:
# ---[ Caffe project
project(Caffe C CXX)

之前加入如下几行:

# ---[Install directory: D:\Libs\Caffe
set(CMAKE_INSTALL_PREFIX "D:/Libs/Caffe")# ---[Set Matlab_DIR
set(Matlab_DIR "D:/Program Files/MATLAB/R2017a")

CMAKE_INSTALL_PREFIX 指定Caffe的安装路径,Matlab_DIR 指定Matlab的根目录。

  • 打开caffe-windows\cmake\Utils.cmake,把357行的:
message(FATAL_ERROR "Logic error. Need to update cmake script")

改为:

# message(FATAL_ERROR "Logic error. Need to update cmake script")

3、编辑build_win.cmd

  • 打开caffe-windows\scripts\build_win.cmd,如下就是编译选项部分:
:: Default values
if DEFINED APPVEYOR (echo Setting Appveyor defaultsif NOT DEFINED MSVC_VERSION set MSVC_VERSION=14...

在if DEFINED APPVEYOR之前添加如下几行:

:: Default values
set WITH_NINJA=0
set BUILD_MATLAB=1  
set CPU_ONLY=1    
set PYTHON_VERSION=2
set BUILD_PYTHON_LAYER=1
if DEFINED APPVEYOR (echo Setting Appveyor defaultsif NOT DEFINED MSVC_VERSION set MSVC_VERSION=14if NOT DEFINED WITH_NINJA set WITH_NINJA=0...

WITH_NINJA:不使用NINJA编译;BUILD_MATLAB:编译Matlab模块,CPU_ONLY:不适用CUDA加速;PYTHON_VERSION:指定python版本。BUILD_PYTHON_LAYER:编译pycaffe模块。

  • 然后设置conda的安装目录,把
:: Set python 2.7 with conda as the default pythonif !PYTHON_VERSION! EQU 2 (set CONDA_ROOT=C:\Miniconda-x64)

修改为

:: Set python 2.7 with conda as the default pythonif !PYTHON_VERSION! EQU 2 (set CONDA_ROOT=D:\Libs\MiniConda)

D:\Libs\MiniConda是Conda的安装路径。

  • 然后在
if ERRORLEVEL 1 (echo ERROR: Configure failedexit /b 1
)

后面添加一行

if ERRORLEVEL 1 (echo ERROR: Configure failedexit /b 1
)exit /b 1:: Lint
...

exit /b 1是退出cmd的命令,添加这行的目的是观察cmake的结果。

4、执行build_win.cmd

  • 安装pycaffe的依赖:
conda install --yes pip
pip install ninja numpy scipy protobuf==3.1.0 six scikit-image pyyaml pydotplus graphviz

在执行这一步之前,建议先把conda的源换成国内的源。

  • 进入caffe-windows\scripts目录,空白处按住shift+点鼠标右键,然后打开powershell,输入:
cmd
build_win.cmd
build_win.cmd

对,build_win.cmd就是要执行两遍,因为第一遍的安装目录不正确。输出类似为(我把需要相同的部分标记出来, #后面就是我的注释):

......
#  需要找到Matlab
-- Found Matlab: D:/Program Files/MATLAB/R2017a/extern/include (found version "9.2") found components:  MAIN_PROGRAM MX_LIBRARY   
-- Found Git: C:/Program Files/Git/cmd/git.exe (found version "2.19.1.windows.1")
--
-- ******************* Caffe Configuration Summary *******************
-- General:
--   Version           :   1.0.0
--   Git               :   unknown
--   System            :   Windows
--   C++ compiler      :   C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
--   Release CXX flags :   /MD /O2 /Ob2 /DNDEBUG /DWIN32 /D_WINDOWS /W3 /GR /EHsc
--   Debug CXX flags   :   /MDd /Zi /Ob0 /Od /RTC1 /DWIN32 /D_WINDOWS /W3 /GR /EHsc
--   Build type        :   Release    #  Release模式
--
--   BUILD_SHARED_LIBS :   0    #  需要相同
--   BUILD_python      :   1    #  需要相同
--   BUILD_matlab      :   1    #  需要相同
--   BUILD_docs        :
--   CPU_ONLY          :   1    #  需要相同
--   USE_OPENCV        :   ON    #  需要相同
--   USE_LEVELDB       :   ON    #  需要相同
--   USE_LMDB          :   ON    #  需要相同
--   USE_NCCL          :   0    #  需要相同
--   ALLOW_LMDB_NOLOCK :   OFF    #  需要相同
--
-- Dependencies:
--   BLAS              :   Yes (Open)    #  需要相同
--   Boost             :   Yes (ver. 1.61)    #  需要相同
--   glog              :   Yes    #  需要相同
--   gflags            :   Yes    #  需要相同
--   protobuf          :   Yes (ver. 3.1.0)    #  需要相同
--   lmdb              :   Yes (ver. 0.9.70)    #  需要相同
--   LevelDB           :   Yes (ver. 1.18)    #  需要相同
--   Snappy            :   Yes (ver. 1.1.1)    #  需要相同
--   OpenCV            :   Yes (ver. 3.1.0)    #  需要相同
--   CUDA              :   No    #  需要相同
--
-- Python:    #  这里需要找到Python
--   Interpreter       :   D:/Libs/MiniConda/python.exe (ver. 2.7.15)
--   Libraries         :   D:/Libs/MiniConda/libs/python27.lib (ver 2.7.15)
--   NumPy             :   D:/Libs/MiniConda/lib/site-packages/numpy/core/include (ver 1.13.1)
--
-- Matlab:
--   Matlab            :   Yes (,    #  需要找到Matlab
--   Octave            :   No
--
-- Install:
--   Install path      :   D:/Libs/Caffe    #  需要相同
--
-- Configuring done
-- Generating done
......

得到上面的结果之后,删除在build_win.cmd添加的那行exit /b 1,然后重新执行build_win.cmd,开始编译依赖库。编译完成后,把下面的几条加入环境变量Path。

%USERPROFILE%\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\bin
%USERPROFILE%\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\lib
%USERPROFILE%\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\x64\vc14\bin
%USERPROFILE%\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\x64\vc14\lib
%USERPROFILE%\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\x64\vc14\staticlib

5、编译Caffe

打开caffe-windows\script\Caffe.sln,使用VS2015打开。把编译模式切换为Release模式,然后右键单击INSTALL子项目,右键单击,选择“生成”,然后就开始编译Caffe了,编译完会自动安装到D:\Libs\Caffe。
在这里插入图片描述
编译完成后,把D:\Libs\Caffe里面的bin、lib、matlab+caffe\private和matlab+caffe\private\Release加入到环境变量Path。下面是我添加的环境变量:

D:\Libs\Caffe\bin
D:\Libs\Caffe\lib
D:\Libs\Caffe\matlab\+caffe\private
D:\Libs\Caffe\matlab\+caffe\private\Release

至此,caffe编译完成。

三、使用Caffe

1、Matlab

在.m文件的最前面加入如下代码:

PATH_TO_CAFFE_MATLAB='D:/Libs/Caffe/matlab/';
addpath(genpath(PATH_TO_CAFFE_MATLAB));

PATH_TO_CAFFE_MATLAB是前面install的安装路径。添加上面的代码之后,Matlab就能找到Caffe。还有最关键的一步是,把D:\Libs\Caffe\matlab+caffe\private\Release\caffe_.mexw64复制到和.m文件同一级目录下,否则会出现如下错误:

  • 在matlab中使用caffe接口

    经过编译后,会生成build文件夹。在网上看的教程大多是在caffe的根目录下生成,不过我的是在script/目录下,即build_cmd同目录下生成的。经过删掉重新生成后,还是在script下,考虑到build里的很多设置是相对路径,就不动了。
    这里写图片描述

    在matlab中添加路径

    这里写图片描述
    里面添加caffe的matlab接口路径
    这里写图片描述

    现在,应该可以使用了,调整matlab当前路径为caffe/matlab/demo/文件夹下,有claasification_demo.m文件可以进行测试,如果无错即配置完成。

  • Caffe 深度学习框架是支持 opencl gpu 计算加速的,为了在 msys2/mingw 环境下可以工作我做了少量修改  https://github.com/zhujiang73/caffe-windows-opencl  下图是基于 OpenCL Caffe 做的画框识图,我只有一块入门级小显卡 GPU 版程序的图像识别速度是 CPU 版的三倍左右. 

        Windows <wbr> <wbr>环境下 <wbr>caffe <wbr>opencl <wbr>gpu <wbr>加速版安装调试

     

         综合考虑开发效率,运行速度,和可移植性,选择 msys2/mingw 作为开发环境,caffe 代码的可移植性很好稍加修改就能在 mingw 环境下编译。

          msys2集成了unix 风格的shell 环境和 mingw 编译工具,可以在windows 下写 gcc 风格的程序,  结合msys2/mingw 版的emacs 就是一个很好的开发环境。 http://msys2.github.io/ 

    Windows <wbr> <wbr>环境下 <wbr>caffe <wbr>opencl <wbr>gpu <wbr>加速版安装调试
     

         这两天刚搞好 caffe 的 python 接口,虽然我认为 msys2/mingw 比较好用,但是目前大多数软件在 windows 下会优先考虑 msvc 可移植,由于mingw 是 gcc 但不是unix 是 win 但不是msvc 比较小众,所以很多软件在 mingw  下需要做些修改才能编译,我把修改过的 caffe msys2/mingw 版放在:https://github.com/zhujiang73/caffe-windows-opencl 支持 opencl gpu 加速,支持 python 接口,算是比较完整了。caffe 这个“深度学习工具”虽然比较老但是比较适合机器视觉任务,我目前只实验了cnn 等比较经典的算法,下一步该实验 rcnn 等改进算法了,caffe 的缺点是框架不太灵活可能需要定制一些模块才能实现新算法。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NVelocity标签使用详解

本文使用的NVelocity版本为1.1.1&#xff0c;应该是目前为止最新的版本吧&#xff0c;前几天在google上找了一个自称是NVelocity 1.6.1 bate2的dll&#xff0c;下载下来一看更新时间是2009年的&#xff0c;还没版本NVelocity 1.1.1&#xff08;2010年出的&#xff09; 新呢&…

一文搞懂蓝绿发布、灰度发布和滚动发布

一文搞懂蓝绿发布、灰度发布和滚动发布 应用程序升级面临最大挑战是新旧业务切换&#xff0c;将软件从测试的最后阶段带到生产环境&#xff0c;同时要保证系统不间断提供服务。 长期以来&#xff0c;业务升级渐渐形成了几个发布策略&#xff1a;蓝绿发布、灰度发布和滚动发布&…

NVelocity标签设置缓存的解决方案

意外的问题总会让人措手不及&#xff0c;今天与大家分享的就是NVelocity设置缓存的问题&#xff0c;之前刚google了一下发现没什么太好的解决方案&#xff0c;希望在这能为需要的朋友找出满意的答案&#xff0c;上一篇blog刚说了NVelocity的用法&#xff0c;这就不在重复了&…

java成员方法的一般格式为_Java基本知识(四)

一、二维数组1、定义方式m&#xff1a;代表当前二维数组中有多少个一维数组&#xff1b;n&#xff1a;代表每个一维数组的长度(1)数据类型[][] 数组名new 数据类型[m][n](2)数据类型[][] 数组名new 数据类型[m][ ]&#xff0c;只给定m个一维数组&#xff0c;每个一维数组长度动…

免费的定时任务托管 clock.sh

自己有很多定时任务要跑&#xff0c;所以之前搞了一个定时运行的系统。 在 V2EX 看到很多有类似需求的朋友&#xff1a; https://www.v2ex.com/t/252810https://www.v2ex.com/t/448726https://www.v2ex.com/t/579740https://www.v2ex.com/t/241229https://hk.v2ex.com/t/1134…

vCenter Server Appliance(VCSA )6.7部署指南

VCSA 6.7版本于2018年4月17日提供下载&#xff0c;同时发布的还有ESXi 6.7&#xff0c;根据官方文档&#xff0c;6.7版本升级主要为了发布vSAN 6.7版本。 第1步&#xff0c;下载VMware-VCSA-all-6.7.0-8217866文件&#xff0c;用虚拟光驱挂载或者解压运行&#xff0c;选择“安…

Ansible无敌详细入门教程

Ansible 是什么 ? ansible架构图 ansible特性 模块化&#xff1a;调用特定的模块&#xff0c;完成特定的任务&#xff1b; 基于Python语言研发&#xff0c;由Paramiko, PyYAML和Jinja2三个核心库实现&#xff1b; 部署简单&#xff1a;agentless&#xff1b; 支持自定义模…

Nginx学习笔记(五) 源码分析内存模块内存对齐

Nginx源码分析&内存模块 今天总结了下C语言的内存分配问题&#xff0c;那么就看看Nginx的内存分配相关模型的具体实现。还有内存对齐的内容~~不懂的可以看看~~ src/os/unix/Ngx_alloc.h&Ngx_alloc.c 先上源码&#xff1a; /** Copyright (C) Igor Sysoev* Copyright (C…

reactor p java_Java反应式框架Reactor中的Mono和Flux

1. 前言最近写关于响应式编程的东西有点多&#xff0c;很多同学反映对Flux和Mono这两个Reactor中的概念有点懵逼。但是目前Java响应式编程中我们对这两个对象的接触又最多&#xff0c;诸如Spring WebFlux、RSocket、R2DBC。我开始也对这两个对象头疼&#xff0c;所以今天我们就…

Visual Studio 20xx试用版升级为正式版(WIN7同样有效)图解、附带序列号

Visual Studio 2005|2008 试用版升级为正式版&#xff08;WIN7同样有效&#xff09;。 目录 一、步骤图解 二、win7破解工具下载 三、序列号 一、步骤图解 1.控制面板 > 程序和功能 > Visual Studio 2005|2008 启动、修复程序。如图&#xff1a; 2.填写序列号&#xff0…

NHibernate使用之详细图解

本文档适合初级开发者或者是第一次接触NHibernate框架的朋友&#xff0c;其中NHibernate不是最新的版本&#xff0c;但是一个比较经典的版本 NHibernate 2.1.2&#xff0c;其中用红线标注的部分一定要仔细看&#xff0c;这些都是容易忽略和出错的地方&#xff0c;笔者在此给大家…

disabling directory browsing

2019独角兽企业重金招聘Python工程师标准>>> I have seen several recommendation to increase web application security by disabling directory browsing (for example pg 388 in IBM WebSphere Deployment and Advanced Configuration by Barcia, Hines, et al)…

水印生成器第2版[原图质量水印可自定义设置]

简介&#xff1a;水印生成器&#xff0c;原理很简单&#xff0c;一时在网上没有找到打水印的网站&#xff0c;自己便做了一个&#xff0c;效果如下图&#xff0c;可自定义字体大小、字体类型以及颜色。 开发环境&#xff1a;vs 2010 [net 3.5 WindowsForms应用程序] 本文带给…

服务发现与负载均衡traefik ingress

ingress就是从kubernetes集群外访问集群的入口&#xff0c;将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器&#xff0c;其中还包括规则定义&#xff0c;即URL的路由信息&#xff0c;路由信息得的刷新由 Ingress controller 提供 …

GentleNet使用之详细图解[语法使用增强版]

目录第一章 开发环境第二章 简介第三章 Gentle.Net-1.5.0 下载文件包介绍第四章 使用步骤第五章 源码下载 第一章、开发环境&#xff1a;Vs 2010 Sql 2005 GentleNet 1.5.0 【Web网站程序 .Net Framework 3.5】第二章、简介&#xff1a;Gentle.Net是一个开源的优秀O/R M…

NBear简介与使用图解

NBear简介与使用图解框架类型&#xff1a;ORM映射框架简介&#xff1a;NBear是一个基于.Net 2.0、C#2.0开放全部源代码的的软件开发框架类库。NBear的设计目标是尽最大努力减少开发人员的工作量&#xff0c;最大程度提升开发效率&#xff0c;同时兼顾性能及可伸缩性。Demo版本&…

搭建私有helm仓库及图形界面

搭建私有helm仓库及图形界面 本篇主要介绍私有 helm 仓库 Chartmuseum 及图形界面 Monocular UI /kubeapps 的搭建 helm chart 能够很好的封装和管理我们的 kubernetes 应用&#xff0c;可以实现中间件、数据库、公共组件等快速发布。 什么场景下我们需要构建一个私有的helm仓…

神啊,6小时30分钟,完成想要的所有Lync测试

神啊 !记住这个日子 !从未想到&#xff0c;6小时30分钟&#xff0c;能做出这么多东西&#xff1a;从&#xff1a;2013-06-28---20&#xff1a;00到2013-06-29-----2&#xff1a;30 (辛苦&#xff0c;也是值得&#xff0c;客户是上帝&#xff0c;公司也好&#xff0c;个人也罢&a…

SubSonic框架使用图解

简介&#xff1a;SubSonic框架是一个优秀的、开源的ORM映射框架&#xff0c;同时提供符合自身需要的代码生成器。 官方下载地址&#xff1a;http://www.subsonic.org/pages/download.jsp 明白了SubSonic是什么之后&#xff0c;下面一起来看SubSonic的使用吧。 开发版本&#…

用户代理de疑惑

2019独角兽企业重金招聘Python工程师标准>>> 在计算机科学中&#xff0c;用户代理&#xff08;英语&#xff1a;User Agent&#xff09;指的是代表使用者行为的软件&#xff08;软件代理程序&#xff09;所提供的对自己的一个标识符。例如&#xff0c;一个电子邮件阅…