在Windows7/10上快速搭建深度学习框架Caffe开发环境
之前在 http://blog.csdn.net/fengbingchun/article/details/50987353 中介绍过在Windows7上搭建Caffe开发环境的操作步骤,那时caffe的项目是和其它依赖项目分开的,每次换新的PC机时再次重新配置搭建还是很不方便,而且caffe的版本较老,本次经过多次修改调整,将所有的项目除OpenCV和Boost外都放在一个工程里了,而且caffe更新到了最新,现在从GitHub上直接clone下来后直接进行编译即可,非常方便,对初步接触Caffe的来说,应该是有些帮助的,下面就说下进行快速搭建的操作步骤:
1. OpenCV:
从 https://github.com/opencv/opencv/releases 下载2.4.13,解压缩到D:\soft\OpenCV2.4.13,将动态库路径D:\soft\OpenCV2.4.13\opencv\build\x64\vc12\bin添加到系统环境变量中,如下图红框所示:
2. Boost:
从 http://www.boost.org/users/history/version_1_58_0.html 下载1.58.0,双击进行安装,安装到D:\ProgramFiles\local目录下,将D:\ProgramFiles\local\boost_1_58_0\lib64-msvc-12.0加入到系统环境变量中,如上图红框所示;
3. Caffe_Test:
从 https://github.com/fengbingchun/Caffe_Test clone或DownLoad Caffe_Test工程(Note:master分支,old分支是之前旧版本caffe)到E:\GitCode目录下,clone后的结果如下图所示:
双击打开prj/x86_x64_vc12/Caffe目录下的Caffe.sln,结果如下图所示:
此工程下一共包含了19个项目:
(1)、依赖项目包括gflags、hdf5、leveldb、glog、openblas、protobuf、lmdb、snappy,这些项目都包含对相应依赖库源代码进行编译生成相应的库;
(2)、ThirdPartyLibrary_Test项目,用于测试生成各个依赖库的正确性及各个依赖库的使用;
(3)、libcaffe项目,用于生成caffe静态库;
(4)、Caffe_Test项目,用于测试caffe库的正确性及对Caffe应用的测试code;
(5)、libcaffe_gpu项目,用于生成基于GPU的caffe静态库,默认CUDA版本是8.0;
(6)、Caffe_GPU_Test项目,用于测试caffe_gpu库的正确性及对Caffe应用的测试code,此项目的code和Caffe_Test的code是同一套。
各目录说明:
(1)、demo目录存放测试code,ThirdParthLibrary_Test子目录下存放各个依赖库的简单测试代码,为了对各个依赖库的使用有更一步的了解,后续会加入更多的测试代码,此目录文件如下图所示:
Caffe_Test子目录存放对Caffe使用的测试代码,funset.cpp中存放对Caffe中一些重要头文件使用的测试代码,mnist.cpp中存放通过对MNIST数据集进行训练产生的model,以用来进行手写数字识别的测试代码,后续会加入更多的Caffe应用,如通过cifar10数据集,对物体进行分类等测试代码,此目录文件如下图所示:
(2)、prj/x86_x64_vc12目录存放各个项目配置文件,目前默认是vs2013,此目录文件如下图所示:
(3)、src目录存放caffe及除opencv和boost外各个依赖库的源代码,此目录文件如下图所示:
关于各种开源库版本详细信息(version.txt)如下所示:
1. caffe: branch: windowscommit: 88ddc95;date: 2017.03.29;url: https://github.com/BVLC/caffe
2. boost: binary library, boost_1_58_0-msvc-12.0-64.exeversion: 1.58.0date: 2015.04.17url:http://www.boost.org/http://www.boost.org/users/history/version_1_58_0.htmlhttps://sourceforge.net/projects/boost/files/boost-binaries/1.58.0/
3. protobuf: protobuf-cpp-3.2.0.zipcommit: 593e917version: v3.2date: 2017.01.28url: https://github.com/google/protobuf/releases
4. glog: commit: da816eaversion: masterdate: 2017.03.07url: https://github.com/google/glog
5. gflags:commit: f8a0efeversion: 2.2.0date: 2016.11.26url: https://github.com/gflags/gflags/releases
6. leveldb:commit: 915d663version: 1.18date: 2015.07.29url: https://github.com/bureau14/leveldb
7. lmdb:commit: 14cff07version: 0.9.19date: 2016.12.29url: https://github.com/LMDB/lmdb/releases
8. hdf5: hdf5-1.10.0-patch1.zipversion: 1.10.0url: https://support.hdfgroup.org/HDF5/release/obtainsrc.html
9. snappy:commit: 2d99bd1version: 1.1.4date: 2017.01.27url: https://github.com/google/snappy/releases
10. openblas:commit: 85636ffversion: 0.2.19date: 2016.09.01url: https://github.com/xianyi/OpenBLAS/releases
11. opencv:commit: 59975dbversion: 2.4.13date: 2016.05.16url: https://github.com/opencv/opencv/releases
(4)、test_data目录下存放各个库测试代码需要的测试数据。接下来就可以编译Caffe_Test工程了,先依次编译依赖库再编译caffe。
此工程只配置了x64平台,没有配置win32平台。
如果机子上正确安装配置了CUDA8.0,则可以编译libcaffe_gpu库。
按照以上操作,只需三步,就可以快速完成在Windows上对Caffe的搭建,整个搭建时间应该不会超过30分钟,是不是非常方便。
GitHub:https://github.com/fengbingchun/Caffe_Test
相关文章:

扫码下单支持同桌单人点餐FAQ
一、使用场景 满足较多商户希望同一桌台,各自点各自的菜品的业态场景(例如杭味面馆,黄焖鸡米饭店,面馆等大多数轻快餐店) 二、配置步骤及注意事项 管理员后台配置--配置管理--店铺配置--扫码点餐tab页 1、开启扫码下单…

使用photoshop 10.0制作符合社保要求的照片
2019独角兽企业重金招聘Python工程师标准>>> 北京市社保新参统人员照片修制方法 修改目标:照片规格:358像素(宽)×441像素(高),分辨率350dpi。 颜色模式:24位RGB真彩色。 储存格式&am…

C++11中std::addressof的使用
C11中的std::addressof获得一个对象的实际地址,即使 operator& 操作符已被重载。它常用于原本要使用 operator& 的地方,它接受一个参数,该参数为要获得地址的那个对象的引用。一般,若operator &()也被重载且不一致的话…

一份职位信息的精准推荐之旅,从AI底层架构说起
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100)【导读】也许,每天早上你的邮箱中又多了一封职位推荐信息,点开一看,你可能发现这些推荐正合你意,于是按照这些信息,你顺利找到一份符合自己期待的…

Vue.js 生命周期
2019独角兽企业重金招聘Python工程师标准>>> 每个 Vue 实例在被创建之前都要经过一系列的初始化过程 vue在生命周期中有这些状态, beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,beforeDestroy,destroyed。Vue在实例化的过程中&#x…

AX2009取销售订单的税额
直接用以下方法即可: Tax::calcTaxAmount(salesLine.TaxGroup, salesLine.TaxItemGroup, systemDateGet(), salesLine.CurrencyCode, salesParmLine.LineAmount, salesTable.taxModuleType()); salesParmLine.LineAmount:这个直接取的是装箱单或者发票…

Dubbo源码解析之服务路由策略
1. 简介 服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由,筛选出符合路由规则的服务提供者。在详细分析服务路由的源码之前,先来介绍一下服务路由是什么。服务路由包含一条路由规则,路由规则决定了服务消费者的调…

C++中std::reverse和std::reverse_copy的使用
std::reverse:反转排序容器内指定范围中的元素。std::reverse_copy与std::reverse唯一的区别是:reverse_copy会将结果拷贝到另外一个容器中,而不影响原容器的内容。std::reverse: defined in header <algorithm>, reverses the order …

真相!30K拿到互联网大厂offer,网友:我服了!
最近笔者在知乎刷到一个帖子,其中,这条回答让人印象深刻:其实,最近几年人工智能大火,其中深度学习岗位的薪酬爆增,BAT大厂高薪招聘AI人才,收到的简历却寥寥无几?究竟是大厂岗位要求高…

OracleDesigner学习笔记1――安装篇
OracleDesigner学习笔记1――安装篇 QQ:King MSN:qiutianwhmsn.com Email:qqkinggmail.com 一. 前言 Oracle是当今最流行的关系型数据库之一,和很多朋友一样,我也是一个Oracle的爱好者,从…

C++/C++11中std::queue的使用
std::queue: 模板类queue定义在<queue>头文件中。队列(Queue)是一个容器适配器(Container adaptor)类型,被特别设计用来运行于FIFO(First-in first-out)场景,在该场景中,只能从容器一端添加(Insert)元素,而在另一端提取(Ext…

常见的http状态码(Http Status Code)
常见的http状态码:(收藏学习) 2**开头 (请求成功)表示成功处理了请求的状态代码。 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。201 (已创…

“不给钱就删库”的勒索病毒, 程序员该如何防护?
作者 | 阿木,王洪鹏,运营有个人公众号新新生活志。目前任职网易云计算技术部高级工程师,近3年云计算从业经验,爱读书、爱写作、爱技术。责编 | 郭芮来源 | CSDN(ID:CSDNnews)近期一家名为ProPub…

ruby实时查看日志
(文章是从我的个人主页上粘贴过来的, 大家也可以访问我的主页 www.iwangzheng.com) 在调试代码的时候,把日志文件打开,边操作边调试能很快帮助我们发现系统中存在的问题。 $tail rails_2014_03_03.log -f转载于:https://www.cnblogs.com/iw…

干货 | OpenCV看这篇就够了,9段代码详解图像变换基本操作
作者 | 王天庆,长期从事分布式系统、数据科学与工程、人工智能等方面的研究与开发,在人脸识别方面有丰富的实践经验。现就职某世界100强企业的数据实验室,从事数据科学相关技术领域的预研工作。来源 | 大数据(ID:hzdas…

C++/C++11中std::priority_queue的使用
std::priority_queue:在优先队列中,优先级高的元素先出队列,并非按照先进先出的要求,类似一个堆(heap)。其模板声明带有三个参数,priority_queue<Type, Container, Functional>, 其中Type为数据类型,Container为…

left join 和 left outer join 的区别
老是混淆,做个笔记,转自:https://www.cnblogs.com/xieqian111/p/5735977.html left join 和 left outer join 的区别 通俗的讲: A left join B 的连接的记录数与A表的记录数同 A right join B 的连接的记录数与…

php减少损耗的方法之一 缓存对象
即把实例后的对象缓存起来(存入变量),当需要再次实例化时,先去缓存里查看是否存在。存在则返回。否则实例化。转载于:https://www.cnblogs.com/zuoxiaobing/p/3581139.html
windows10 vs2013控制台工程中添加并编译cuda8.0文件操作步骤
一般有两种方法可以在vs2013上添加运行cuda8.0程序:一、直接新建一个基于CUDA8.0的项目:如下图所示,点击确定后即可生成test_cuda项目;默认会自动生成一个kernel.cu文件;默认已经配置好Debug/Release, Win32/x64环境&a…

算法人必懂的进阶SQL知识,4道面试常考题
(图片付费下载自视觉中国)作者 | 石晓文来源|小小挖掘机(ID:wAlsjwj)近期在不同群里有小伙伴们提出了一些在面试和笔试中遇到的Hive SQL问题,Hive作为算法工程师的一项必备技能,在面…

007-迅雷定时重启AutoHotkey脚本-20190411
;; 定时重启迅雷.ahk,;;~ 2019年04月11日;#SingleInstance,forceSetWorkingDir,%A_ScriptDir%DetectHiddenWindows,OnSetTitleMatchMode,2#Persistent ;让脚本持久运行(即直到用户关闭或遇到 ExitApp)。#NoEnv;~ #NoTrayIcon Hotkey,^F10,ExitThisApp lo…

关于ExtJS在使用下拉列表框的二级联动获取数据
2019独角兽企业重金招聘Python工程师标准>>> 使用下拉列表框的二级联动获取数据,如果第一个下拉列表框有默认值时,需要设置fireEvent执行select事件 示例: var combo Ext.getCmp("modifyBuildCom"); combo.setValue(re…

C++中std::sort/std::stable_sort/std::partial_sort的区别及使用
某些算法会重排容器中元素的顺序,如std::sort。调用sort会重排输入序列中的元素,使之有序,它默认是利用元素类型的<运算符来实现排序的。也可以重载sort的默认排序,即通过sort的第三个参数,此参数是一个谓词(predic…

阿里云智能 AIoT 首席科学家丁险峰:阿里全面进军IoT这一年 | 问底中国IT技术演进...
作者 | 屠敏受访者 | 丁险峰来源 | CSDN(ID:CSDNnews)「忽如一夜春风来,千树万树梨花开。」从概念的流行、至科技巨头的相继入局、再到诸多应用的落地,IoT 的发展终于在万事俱备只欠东风的条件下真正地迎来了属于自己的…

eBCC性能分析最佳实践(1) - 线上lstat, vfs_fstatat 开销高情景分析...
Guide: eBCC性能分析最佳实践(0) - 开启性能分析新篇章eBCC性能分析最佳实践(1) - 线上lstat, vfs_fstatat 开销高情景分析eBCC性能分析最佳实践(2) - 一个简单的eBCC分析网络函数的latency敬请期待...0. I…

spring-data-mongodb必须了解的操作
http://docs.spring.io/spring-data/data-mongo/docs/1.0.0.M5/api/org/springframework/data/mongodb/core/MongoTemplate.html 在线api文档 1关键之识别 KeywordSampleLogical resultGreaterThanfindByAgeGreaterThan(int age){"age" : {"$gt" : age}}Le…

旷视张祥雨:高效轻量级深度模型的研究和实践 | AI ProCon 2019
演讲嘉宾 | 张祥雨(旷视研究院主任研究员、基础模型组负责人)编辑 | Just出品 | AI科技大本营(ID:rgznai100)基础模型是现代视觉识别系统中一个至关重要的关注点。基础模型的优劣主要从精度、速度或功耗等角度判定,如何…

Python脱产8期 Day02
一 语言分类 机器语言,汇编语言,高级语言(编译和解释) 二 环境变量 1、配置环境变量不是必须的2、配置环境变量的目的:为终端提供执行环境 三Python代码执行的方式 1交互式:.控制台直接编写运行python代码 …
分别用Eigen和C++(OpenCV)实现图像(矩阵)转置
(1)、标量(scalar):一个标量就是一个单独的数。(2)、向量(vector):一个向量是一列数,这些数是有序排列的,通过次序中的索引,可以确定每个单独的数。(3)、矩阵(matrix):矩阵是一个二维数组,其中的…

Linux基础优化
***************************************************************************************linux系统的优化有很多,我简单阐述下我经常优化的方针:记忆口诀:***********************一清、一精、一增;两优、四设、七其他。*****…