本文在windows下使用visual studio2013配置关联python(python-2.7.12.amd64.msi)的caffe项目,如果有耐心的人,当然可以自己去下载caffe项目自己进行编译,由于我比较懒,所以这里我利用微软自己移植的caffe进行部署,就不尝试编译官方的caffe(听说自己编译需要解决各种坑),微软移植的解决方案编译确实很方便,解决一些引用就ok了。
 
(一)Caffe微软官方GitHub
通过GitHub管理项目非常方便,可以自己通过VS团队资源管理器进行链接代码,牛人修改里面的东西也可以提交上去。当时我这里是直接下载caffe-master.zip的包的方式,然后直接解压出来,可以看到里面有28个文件,共包含16个项目:

(二)项目编译前的步骤:

(1)设置配置文件

在 .\caffe-mastter\windows路径下新建一个文本文档,重命名为CommonSettings.props ,并复制.\windows\CommonSettings.props.example 文件中的内容到 .\windows\CommonSettings.props。默认情况下windows编译需要CUDA和cuDNN,当然你也可以在配置文档(.\windows\CommonSettings.props)中去修改为不用,直接将为true的配置设置为false即可。但是python默认情况下是不能使用的,我这里需要用python进行caffe学习,所以就设置为true了。其他三方的库,VS编译时会通过NuGet进行自动获取,非常方便!

为了便于在训练模型时减少输出信息,建议去\caffe-master\caffe-master\src\caffe\layers\data_layer.cpp文件,将如下打印信息的代码用"//"注释掉:

DLOG(INFO) << "Prefetch batch: " << batch_timer.MilliSeconds() << " ms.";
DLOG(INFO) << "     Read time: " << read_time / 1000 << " ms.";
DLOG(INFO) << "Transform time: " << trans_time / 1000 << " ms.";

(2)下载相关软件

CUDA

下载 CUDA Toolkit 7.5 (https://developer.nvidia.com/cuda-toolkit)。如果你电脑没有NVIDIA的独立显卡,那么只能选择用CPU进行编译,就不需要安装CUDA,去配置文件 .\windows\CommonSettings.props 设置<CpuOnlyBuild>false</CpuOnlyBuild> ,同时设置 <UseCuDNN>false</UseCuDNN>

cuDNN

下载 cuDNN v4 或者 cuDNN v5 (https://developer.nvidia.com/cudnn)。 解压下载的文件到 %CUDA_PATH% (这个路径是CUDA安装时默认设置的一个环境变量路径,通过【系统】-》【高级设置】-》【环境变量】就可以找到)。当然如果你没下载CUDA,也可以直接设置<UseCuDNN>false</UseCuDNN>

Python

为了能使用python调用Caffe,需要在 .\windows\CommonSettings.props中设置<PythonSupport>true</PythonSupport>。如果本机没安装python,可以下载Miniconda 2.7 64-bit Windows installer,从官方网址:http://conda.pydata.org/miniconda.html选择下载,默认配置路径安装即可。同时需要以管理员权限安装numpy、scipy、matplotlib、scikit-image、protobuf包,安装命令如下:

conda install --yes numpy scipy matplotlib scikit-image pip
pip install protobuf

注意:

(1)在你编译通过后,需要将编译好的 <caffe_root>\Build\x64\Release\pycaffe\caffe文件复制到python的 <python_root>\lib\site-packages文件夹下面,这样python中才能引用到caffe,不然会报错。

(2)如果要用GPU计算,需要设置<CudaArchitecture>,我以前显卡是650所以只能设置低运行速度的:compute_30 和sm_30(这个根据你自己的显卡计算能力确定, 注意CUDA7.5已经不支持计算能力小于30的显卡了),后来我换成GTX1080,采用compute_52 和sm_52,具体需求见下表:

GPU Computer Capability
GTX660, 680, 760, 770 compute_30,sm_30
GTX780, Titan Z, Titan Black, K20, K40 compute_35,sm_35
GTX960, 970, 980, Titan X compute_52,sm_52

根据需要,我的配置如下图:

(三)项目编译

用VS2013,在caffe-master\windows目录下打开caffe.sln,进去后如下图(共16个项目):

其中capthaTest是我测试caffe进行验证码识别的python项目。编译时可以直接右键【解决方案caffe】进行生成,当然这会报很多错误,都是些资源文件引用问题,通过一个个项目单独编译都可以很快解决。因为我这里只用到其中几个项目,所以我编译的顺序是:

libcafffe->caffe->pycaffe->convert_imageset,每个项目编译前都需要设置相应的引用路径,这里有两种路径,include路径和libs路径,详细怎么添加见下面。

(1)libcaffe在编译前先设置资源引用路径,点击项目右键-》属性-》配置属性-》c/c++,【附加包含目录中】中加入python的include路径,我这是D:\Python27\include,如下图:

(2)caffe在编译前先设置资源引用路径,点击项目右键-》属性-》配置属性-》c/c++,【附加包含目录中】加入python的include路径,我这是D:\Python27\include,同时,在链接器中的【附加库目录】中加入python的libs路径,我这里是D:\Python27\libs,如果显卡安装不是默认路径也相应把C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include和libs加入到里面,如下图:

(3)pycaffe在编译前先设置资源引用路径,点击项目右键-》属性-》配置属性-》c/c++,【附加包含目录中】加入python的include路径和numpy的include路径,我这里分别是D:\Python27\include和D:\Python27\Lib\site-packages\numpy\core\include,同时,在链接器中的【附加库目录】中加入python的libs路径和numpy的libs路径,我这里分别是D:\Python27\libs和D:\Python27\Lib\site-packages\numpy\core\lib,如下图:

如果这个编译时出现:

error LNK2001: 无法解析的外部符号 __imp_PyString_FromString
error LNK2001: 无法解析的外部符号 __imp_PyCallable_Check

error LNK2001: 无法解析的外部符号 __imp_PyObject_CallObject
error LNK2001: 无法解析的外部符号 __imp_Py_Initialize

error LNK2001: 无法解析的外部符号 __imp_Py_IsInitialized

error LNK2001: 无法解析的外部符号 __imp_PyImport_Import

error LNK2001: 无法解析的外部符号 __imp_PyModule_GetDict

error LNK2001: 无法解析的外部符号 __imp_PyDict_GetItemString

error LNK2001: 无法解析的外部符号 __imp_PyRun_SimpleStringFlags

error LNK2001: 无法解析的外部符号 __imp_Py_Finalize

等无法解析外部符号等问题,说明C++编译器在调用python.exe时出错了,我遇到这个坑,解决了很久,具体原因我也不清楚,猜测是因为编码问题导致的,因为我下载的python有问题,而我同事的没问题,最终我把他所有的python文件拷贝覆盖我这里的,最终才算ok!

如果有出现error C2220: warning treated as error - no object file generated这样的错误,右击项目,属性,在C/C++那里把treat warning as error设为no,再重新编译一次,就完成编译了。

如果用C编写Python扩展找不到Python27_d.lib,这是一个python版本问题,网友给的两种解决方案
方法一:直接安装debug版本的python27
方法二:
1.将python安装目录下libs目录里的python27复制一份并命名为python27_d.lib
2.修改include目录下的pyconfig.h,用/**/将#define Py_DEBUG注释掉

(4)其他项目我想应该也是这种添加模式,应该问题不大

(四)编译完成后检查

如果编译成功了,会在caffe-master同路径下生成NugetPackages文件夹,同时在caffe-master文件夹下生成Build文件夹

(1)NugetPackages里面内容

一个都不能少,如果少了的话,可能是nuget通信问题,多编译几次就下载完了。

(2)Build文件夹下的内容,一定有caffe.exe文件,不然说明没编译成功

(3)编译成功后,将caffe-master\caffe-master\Build\x64\Debug\pycaffe路径下的caffe文件夹拷贝到python的site-packages下面(也可设置PYTHONPATH指向caffe文件夹),然后用python测试能不能正常import caffe,如果没报错说明一切OK。我这里引用时遇到一个问题AttributeError: 'module' object has no attribute 'bool_',追踪错误堆栈发现如下:

原来是import io出了问题,caffe文件夹里面也有一个io.py,而系统要求的是numpy里面的io.py,所以没有bool_这个模块,解决办法:

1、不要在caffe目录下打开python.exe,或者你一定要在此目录打开,那么请把caffe文件夹移出site-packages路径,并配置环境变量,变量名=PYTHONPATH,值=caffe包的路径

2、如果在VS2013项目里面,请删除References下面的_caffe.pyd引用,如下图:

(下面一篇文章将详细介绍利用caffe识别中文验证码的内容:卷积神经网络(CNN)学习算法之----基于LeNet网络的中文验证码识别

基于Windows10 x64+visual Studio2013+Python2.7.12环境下的Caffe配置学习的更多相关文章

  1. Flawfinder在Python2和Python3环境下对代码进行扫描方法

    1. Flawfinder Flawfinder是一款开源的关于C/C++静态扫描分析工具,其根据内部字典数据库进行静态搜索,匹配简单的缺陷与漏洞. 官网:https://dwheeler.com/f ...

  2. 在windows10环境下给PHPStorm配置xdebug断点调试功能

    笔者的开发环境: wampserver2.5系统环境包 操作系统:windows10 64位专业版. php版本:php5.512 Apache版本:2.49 好了下面介绍,phpstorm配置xde ...

  3. [转] Ubuntu 12.04下LAMP安装配置 (Linux+Apache+Mysql+PHP)

    我是一个Linux新手,想要安装一台Ubuntu 12.04版的Linux服务器,用这台服务器上的LAMP套件来运行我自己的个人网站.LAMP套件就是 “Linux+Apache+Mysql+PHP这 ...

  4. Ubuntu 12.04下NFS安装配置图解

    以前就听说过nfs服务,但是一直没有用,在学习制作根文件系统的时候,才算是真正用上它了,我感觉它还不错,通过它“挂载”制作好的根文件系统.它在嵌入式中的角色就用下面的一张图说明吧! 用网线将主机与开发 ...

  5. ubuntu 12.04下安装和配置kohana 3.3.3 的方法

    一.先到官网下载3.3.3版本的压缩包到/var/www/1117/目录下(提前建好1117的目录)解压 解压好的文件有(applications\modules\system\build.xml\c ...

  6. urllib库在python2和python3环境下的使用区别

    好东西啊!!! Python 2 name Python 3 name urllib.urlretrieve() urllib.request.urlretrieve() urllib.urlclea ...

  7. Visual Studio 2013环境下操作vc6/vc7/vc8等低版本平台项目【编译|生成|调试】

    现代化的开发环境,微软一直在推出更新换代,我们所处的技术环境在日新月异的变化:不过在中国多数人们一边疲惫的追赶着时代的步伐,一边坚守着自己所获悉所掌握的那些紧吧吧的知本.对技术工具的掌握并非他们所想要 ...

  8. 如何在已经存在python2的linux环境上安装python3

    最近看到好多人都在问在已经存在python2.7的环境下如何安装python3,于是我决定写下这篇文档,供大家学习参考,希望能够给大家带来帮助 有的人在安装的时候可能会先将python2卸载掉,这个地 ...

  9. Ubuntu16.04环境下搭建基于三台主机的mysql galera cluster集群(实测有效)

    (注意: (1)文中红色字体部分不一定需要操作 (2)由于word文档编辑的原因,实际操作时部分命令需要手动输入!!直接复制粘贴会提示错误!! ) 一  搭建环境: 1 Ubuntu16.04版本(系 ...

随机推荐

  1. Xml的简单介绍和Xml格式

    XML 被设计用来结构化.存储以及传输信息.HTML 被设计用来显示数据. 1.XML是什么? 1)XML 指可扩展标记语言(EXtensible Markup Language) 2)XML 是一种 ...

  2. luogg_java学习_07_抽象类_接口_多态学习总结

    这篇博客总结了半天,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 抽象 一种专门用来做父类,被继承的. (模板) 格式: abs ...

  3. 51nod 算法马拉松18 A 染色问题

    染色问题 基准时间限制:1 秒 空间限制:10240 KB 分值: 40 一个n(3<=n<=100)个点的完全图,现在给出n,要求将每条边都染上一种颜色k(1<=k<=n), ...

  4. LNMP环境搭建完整步骤

    零.resource   http://pan.baidu.com/s/1o83r3S2 一.centos 6.4.VirtualBox 5.0.14 二.nginx 1.9.9 安装 [root@p ...

  5. [转载]C#使用Interlocked进行原子操作

    原文链接:王旭博客 » C# 使用Interlocked进行原子操作 什么是原子操作? 原子(atom)本意是"不能被进一步分割的最小粒子",而原子操作(atomic operat ...

  6. WAMPServer安装和配置

    1. 下载地址:  www.wampserver.com    www.php100.com 本机下载在 安装在 2. 自定义网站根目录 设置到这里 访问localhost就会访问到自定义的目录了假设 ...

  7. 基本排序算法——冒泡排序java实现

    冒泡排序是原理最简单的一种排序算法,具体思想就不多说了,代码如下: eclipse4.3中编译通过 package sort.basic; import java.util.Arrays; publi ...

  8. SharePoint 2013 图文开发系列之代码定义列表

    在SharePoint的开发中,用Visual Studio自定义列表是经常会用到的,因为很多时候,我们并不会手动创建列表,而手动创建列表在测试服务器和正式机之间同步字段,也很麻烦,所以我们经常用代码 ...

  9. iOS开发-UI 从入门到精通(一)

    一.UI概述 (1)UI(User Interface)用户界面,用户能看到的各种各样的页面元素: (2)iOS App = 各种各样的UI控件+业务逻辑和算法: (3)想要开发出一款精美的应用程序, ...

  10. iOS 域名解析

    如何在iOS下进行域名的解析? /** *  域名解析ip * *  @param hostName 域名 * *  @return ip */ +(NSString *) getIPWithHost ...