win7+vs2015/13+caffe+matlab+python(CPU only)配置

首先声明本教程可以适用于vs2015 和vs2013 .以vs2015为例。

安装必备软件

  • vs 2015 /vs2013
  • matlab 2016a(64bit)
  • 推荐使用Anaconda 2.7 或者Miniconda 2.7这两个Python发布版本
  • cmake 3.8.0 以上
  • caffe-window: https://github.com/BVLC/caffe/tree/windows

可选软件:

  • everything :搜索本地文件
  • Rapid Environment Editor:快速编辑环境变量

下面我们介绍整个安装流程:


  1. 安装python 必要的包
    我们这里安装的是anaconda,可以使用conda 来安装,但是实际上安装很慢,为此可以设置国内的源。具体方法如下:Anaconda修改国内镜像源
    然后可以安装如下包:
> conda install --yes numpy scipy matplotlib scikit-image pip six> conda install --yes --channel willyd protobuf==3.1.0

2.确认vs,matlab,python,cmake都加入环境变量。


3.编辑build_win
打开caffe-windows/scripts/build_win.cmd,编辑修改如下处:
1
2

同时修改conda的位置:
3


4.运行build_win.cmd。
cmd进入到caffe-windows\scripts目录下,运行build_win.cmd。
4
该命令会在caffe-windows\scripts\目录下创建一个build文件夹,并且会将额外的库libraries_v140_x64_py27_1.1.0.tar.bz2下载到该文件夹,由于通过命令行下载很慢,我们可以中断命令的执行,手动下载该库文件到build目录下,然后再重新运行上面的指令。

直接从 https://github.com/willyd/caffe-builder/releases 下载,然后将下载好的依赖包, 就放在.caffe\ dependencies\download\ 下。

C:\Users\wcy\.caffe\dependencies\download\libraries_v140_x64_py35_1.1.0.tar.bz2

5.在环境变量path中添加如下值

C:\Users\wcy\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\bin 
C:\Users\wcy\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\lib 
C:\Users\wcy\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\x64\vc14\bin

也可以为了方便将上述解压后的libraries拷贝到*\caffe-windows\scripts\build目录下。同时相应地修改环境变量path中的值。

添加完后,记得一定要重启电脑。如果忘记添加环境变量或者未重启的话,在matlab测试caffe时,会提示:

caffe_.mexw64 无效的mex文件。

6.编译caffe,matlab,pycaffe项目
5
用VS2015打开build文件夹下的Caffe.sln,会在VS的资源管理器目录看到: caffe,matlab,pycaffe 三个项目,其默认是编译release版本,我们依次进行编译,可以通过选中项目,分别设为启动项目,选择release版本或者debug版本进行编译,一般只对caffe进行版本的选择,python、matlab只选择release即可。

通过选中项目,右键属性的方式,看到三个项目的配置,以及编译生成的文件保存的路径:

*:\caffe-windows\scripts\build\lib\Release\caffe.lib 
*:\caffe-windows\matlab+caffe\private\Release\caffe_.mexw64 
*:\caffe-windows\scripts\build\lib\Release\_caffe.pyd

当然也可以在下面编译的过程中观察输出结果。


接下来,我们进行测试。
首先需要下载对应的model。 这里参考文章《Caffe学习系列(20):用训练好的caffemodel来进行分类》

1). 可以直接在浏览器里输入地址下载,也可以运行脚本文件下载。下载地址为:http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel

文件名称为:bvlc_reference_caffenet.caffemodel,文件大小为230M左右,为了代码的统一,将这个caffemodel文件下载到caffe根目录下的 models/bvlc_reference_caffenet/ 文件夹下面。也可以运行脚本文件进行

python  ./scripts/download_model_binary.py  models/bvlc_reference_caffenet

2). 均值文件。

有了caffemodel文件,就需要对应的均值文件,在测试阶段,需要把测试数据减去均值。这个文件我们用脚本来下载,在caffe根目录下执行:

  ./data/ilsvrc12/get_ilsvrc_aux.sh

但是由于该命令是linux下的,所以不能运行。但是我们可以打开该文件,其实就是下载里面的文件,并解压即可。
get_ilsvrc_aux.sh内容:

#!/usr/bin/env sh
#
# N.B. This does not download the ilsvrcC12 data set, as it is gargantuan.
# This script downloads the imagenet example auxiliary files including:
# - the ilsvrc12 image mean, binaryproto
# - synset ids and words
# - Python pickle-format data of ImageNet graph structure and relative infogain
# - the training splits with labelsDIR="$( cd "$(dirname "$0")" ; pwd -P )"
cd "$DIR"echo "Downloading..."wget -c http://dl.caffe.berkeleyvision.org/caffe_ilsvrc12.tar.gzecho "Unzipping..."tar -xf caffe_ilsvrc12.tar.gz && rm -f caffe_ilsvrc12.tar.gzecho "Done."

点击http://dl.caffe.berkeleyvision.org/caffe_ilsvrc12.tar.gz下载后,解压后,均值文件放在 data/ilsvrc12/ 文件夹里。

3). synset_words.txt文件

在调用脚本文件下载均值的时候,这个文件也一并下载好了。里面放的是1000个类的名称。


7.测试matlab
在上面的保存生成路径中,我们可以看到,caffe_.mexw64在*:\caffe-windows\matlab+caffe\private\Release目录下,我们将其拷贝到:上一层目录下,即private目录下。然后打开matlab,将matlab工作路径设置为:
*:\caffe-windows\matlab\demo ,然后新建一个test_caffe.m, 即如下的matlab测试代码,将上面下载下来的model的名称文件synset_words.txt文件拷贝到当前路径下(与test_caffe.m同路径),直接运行test_caffe.m即可。(+caffe是matlab类,对接口进行了封装).
matlab测试code:

% test_caffe.m
close all;clear all;
im = imread('../../examples/images/cat.jpg');%读取图片
figure;imshow(im);%显示图片
[scores, maxlabel] = classification_demo(im, 0);%获取得分第二个参数0为CPU,1为GPU
maxlabel %查看最大标签是谁
figure;plot(scores);%画出得分情况
axis([0, 999, -0.1, 0.5]);%坐标轴范围
grid on %有网格fid = fopen('synset_words.txt', 'r');
i=0;
while ~feof(fid)i=i+1;lin = fgetl(fid);lin = strtrim(lin);if(i==maxlabel)fprintf('the label of %d is %s\n',i,lin)breakend
end

结果:

另一种测试方法:

打开Matlab 切换到 *\caffe\caffe-windows\matlab 路径下,
输入以下命令: caffe.run_tests()
得到如下结果:

>> caffe.run_tests()
Cleared 0 solvers and 0 stand-alone nets
正在运行 caffe.test.test_net
.....
已完成 caffe.test.test_net
__________正在运行 caffe.test.test_solver
.
已完成 caffe.test.test_solver
__________正在运行 caffe.test.test_io
.
已完成 caffe.test.test_io
__________Cleared 0 solvers and 0 stand-alone netsans = 1x7TestResult 数组(具有属性):NamePassedFailedIncompleteDurationDetails总计:7 Passed, 0 Failed, 0 Incomplete.0.79735 秒测试时间。

表明matlab接口安装成功。


8.测试python
将 *:\caffe-windows\python 下的caffe文件夹,拷贝到:python的site-packages 文件夹下,我们这里是:

D:\software\anaconda\Lib\site-packages

其实我们会看到,编译生成的_caffe.pyd 也会在*:\caffe-windows\python\caffe 目录下生成一份。
注意下面的代码中caffe_root 要修改成自己的路径。
python测试code:

# coding=utf-8
'''
Created on 2017年3月9日
'''
#安装Python环境、numpy、matplotlib
import numpy as np
import matplotlib.pyplot as plt#设置默认显示参数
plt.rcParams['figure.figsize'] = (10, 10)        # 图像显示大小
plt.rcParams['image.interpolation'] = 'nearest'  # 最近邻差值: 像素为正方形
plt.rcParams['image.cmap'] = 'gray'  # 使用灰度输出而不是彩色输出import sys
caffe_root = 'E:/caffe-windows/'  #该文件要从路径{caffe_root}/examples下运行,否则要调整这一行。
sys.path.insert(0, caffe_root + 'python')import caffeimport os
if os.path.isfile(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'):print 'CaffeNet found.'
else:print 'Downloading pre-trained CaffeNet model...'
# !../scripts/download_model_binary.py ../models/bvlc_reference_caffenetcaffe.set_mode_cpu()model_def = caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt'
model_weights = caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'net = caffe.Net(model_def,      # 定义模型结构model_weights,  # 包含了模型的训练权值caffe.TEST)     # 使用测试模式(不执行dropout)# 加载ImageNet图像均值 (随着Caffe一起发布的)
mu = np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy')
mu = mu.mean(1).mean(1)  #对所有像素值取平均以此获取BGR的均值像素值
print 'mean-subtracted values:', zip('BGR', mu)# 对输入数据进行变换
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})transformer.set_transpose('data', (2,0,1))  #将图像的通道数设置为outermost的维数
transformer.set_mean('data', mu)            #对于每个通道,都减去BGR的均值像素值
transformer.set_raw_scale('data', 255)      #将像素值从[0,255]变换到[0,1]之间
transformer.set_channel_swap('data', (2,1,0))  #交换通道,从RGB变换到BGR# 设置输入图像大小
net.blobs['data'].reshape(50,        # batch 大小3,         # 3-channel (BGR) images227, 227)  # 图像大小为:227x227
image = caffe.io.load_image(caffe_root + 'examples/images/cat.jpg')
transformed_image = transformer.preprocess('data', image)
plt.imshow(image)
plt.show()# 将图像数据拷贝到为net分配的内存中
net.blobs['data'].data[...] = transformed_image### 执行分类
output = net.forward()  
output_prob = output['prob'][0]  #batch中第一张图像的概率值   
print 'predicted class is:', output_prob.argmax()
# 加载ImageNet标签
labels_file = caffe_root + 'data/ilsvrc12/synset_words.txt'
# if not os.path.exists(labels_file):
#    !../data/ilsvrc12/get_ilsvrc_aux.shlabels = np.loadtxt(labels_file, str, delimiter='\t')print 'output label:', labels[output_prob.argmax()]

结果:
CaffeNet found.
mean-subtracted values: [(‘B’, 104.0069879317889), (‘G’, 116.66876761696767), (‘R’, 122.6789143406786)]


predicted class is: 281
output label: n02123045 tabby, tabby cat


9.测试c++版本

首先 :生成exe应用程序
和编译caffe同样的步骤,直接按照如下图,选择设置为启动项目,进行生成。
我们需要生成caffe.exe compute_image_mean.exe convert_imageset.exe。
这里写图片描述
1). 下载好MINIST数据:http://pan.baidu.com/s/1o7YrhKe,下载完之后解压,将mnist-test-leveldb与mnist-train-leveldb文件夹放到examples\mnist\文件夹下。
2).修改lenet_train_test.prototxt文件,四处地方:

//需要修改四处地方,如下注释标注
name: "LeNet"
layer {name: "mnist"type: "Data"top: "data"top: "label"include {phase: TRAIN}transform_param {scale: 0.00390625}data_param {source: "....省略/examples/mnist/mnist-train-leveldb" //写上你的绝对路径batch_size: 64backend: LEVELDB //格式改成LEVELDB}
}
layer {name: "mnist"type: "Data"top: "data"top: "label"include {phase: TEST}transform_param {scale: 0.00390625}data_param {source: "....省略/examples/mnist/mnist-test-leveldb"//写上你的绝对路径batch_size: 100backend: LEVELDB  //格式改成LEVELDB}
}

修改lenet_solver.prototxt文件,三个地方:

net: "....省略/examples/mnist/lenet_train_test.prototxt"  //绝对路径snapshot_prefix: "....省略/examples/mnist/lenet" //绝对路径solver_mode: CPU //CPU模式,

右键caffe打开属性,在调试-命令参数里设置输入:

train --solver=前面的绝对路径/mnist/lenet_solver.prototxt

成功运行!
也可以编写批处理文件run.bat内容如下:

*\caffe\build\tools\Release\caffe.exe  train --solver=前面的绝对路径/mnist/lenet_solver.prototxt  Pause  

即可看到运行界面啦~


至此,caffe在VS2015上成功安装并调试~

参考文献

  1. caffe官网:https://github.com/BVLC/caffe/tree/windows
  2. caffe在Windows+VS2015+CPU ONLY下的编译
  3. Windows下VS2015编译caffe(CPU ONLY)
  4. 在Windows10上使用Visual Studio 2015 构建Caffe
  5. caffe/models/bvlc_reference_caffenet/
  6. (重要) 安装Windows10 和环境下的caffe(新版)
  7. (重要)Caffe学习系列(20):用训练好的caffemodel来进行分类
  8. (重要)VS2015+caffe+matlab+python+CPU

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

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

相关文章

Performance Co-Pilot

Install Performance Co-Pilot 提前安装依赖 [rootiZrj97j6t7ih9hgz1me35hZ ~]# cat install.sh yum install -y docker yum install -y git yum install -y yum-utils-1.1.31-40.el7.noarch yum install lex yum install flex yum install -y bison yum install -y perl-ExtUt…

如何发布打包并发布自己的Android应用(APP)

第一步,在Eclipse中选择需要打包的项目,然后右键--选择Export,会弹出一个打包的提示框,如下图所示。 按Next之后,会继续出现一个提示框,这里你可以选择自己需要打包的项目(默认是刚才选中的&…

js变量提升_一道JS变量提升题

var a 0;if(true){a 1;function a(){};a 21;console.log(a);}console.log(a);// 21 1 当前上下文代码执行之前,会将带var/function的进行声明/定义。当遇到“{}”时,新版浏览器和老版浏览器的处理不一致。老版浏览器(IE10以下)…

Caffe训练过程:test_iter test_interval等概念

转载自http://blog.csdn.net/iamzhangzhuping/article/details/49993899 先上一张图,大家很熟悉的一张图。 首先说明一个概念:在caffe中的一次迭代iteration指的是一个batch,而不是一张图片。 下面主要说下2个概念: test_ite…

R的获取和安装

R的获取和安装 一、下载 R可以在CRAN(Comprehensive r archive network)http://cran.r-project.org上免费下载,可供选择的有Linux、Mac OS X和windows对应的二进制文件; 我这里选择的是windows版本。打开如下页面: bas…

扩展欧几里得算法求逆元_从辗转相除法到求逆元,数论算法初体验

今天是算法和数据结构专题的第22篇文章,我们一起来聊聊辗转相除法。辗转相除法又名欧几里得算法,是求最大公约数的一种算法,英文缩写是gcd。所以如果你在大牛的代码或者是书上看到gcd,要注意,这不是某某党,…

[翻译] Fast Image Cache

https://github.com/path/FastImageCache Fast Image Cache is an efficient, persistent, and—above all—fast way to store and retrieve images in your iOS application. Part of any good iOS applications user experience is fast, smooth scrolling, and Fast Image …

php练习 租房子

题目要求 1.封装类 <?php class DBDA {public $fuwuqi"localhost"; //服务器地址public $yonghuming"root";//用户名public $mima"";//密码 public $dbconnect;//连接对象//操作数据库的方法//$sql代表需要执行的SQL语句//$type代表SQL语…

centos 安装boost(caffe需要)

安装 由于安装caffe&#xff0c;要求boost的版本在1.55以上&#xff0c;而服务器上的刚好是1.54,所以进行了重装。 参考&#xff1a;《CentOS 7下编译安装Boost_1_57_0 》 不过由于pycaffe需要boost.python,因此需要在./b2时修改为./b2 –stage debug 才可以。而不能去掉py…

JAVA正则表达式介绍和使用

本文引用自 http://www.cnblogs.com/android-html5/archive/2012/06/02/2533924.html 技术博客 1.Java中在某个字符串中查询某个字符或者某个子字串 Java代码 String s "Shang Hai Hong Qiao Fei Ji Chang";    String regEx "a|F"; //表示a或F Pat…

集合框架中的接口及其实现类

Collection&#xff1a;集合层次中的根接口&#xff0c;JDK没有提供这个接口直接地实现类。Set&#xff1a;不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。List&#xff1a;是一个有序的集合&#xff0c;可以包含重复的元素。提供了按索引访问的方式。Map&#x…

C# 多线程 Parallel.For 和 For 谁的效率高?那么 Parallel.ForEach 和 ForEach 呢?

还是那句话&#xff1a;十年河东&#xff0c;十年河西&#xff0c;莫欺少年穷。 今天和大家探讨一个问题&#xff1a;Parallel.For 和 For 谁的效率高呢&#xff1f; 从CPU使用方面而言&#xff0c;Parallel.For 属于多线程范畴&#xff0c;可以开辟多个线程使用CPU内核&#x…

bigdecimal 小于等于0_图解小于 K 的两数之和

点击蓝色“五分钟学算法”关注我哟加个“星标”&#xff0c;天天中午 12:15&#xff0c;一起学算法作者 | P.yh来源 | 五分钟学算法题目描述 题目来源于 LeetCode 上第 1099 号问题&#xff1a;小于 K 的两数之和。给你一个整数数组 A 和一个整数 K&#xff0c;请在该数组中找出…

pdf 深入理解kotlin协程_Kotlin协程实现原理:挂起与恢复

今天我们来聊聊Kotlin的协程Coroutine。如果你还没有接触过协程&#xff0c;推荐你先阅读这篇入门级文章What? 你还不知道Kotlin Coroutine?如果你已经接触过协程&#xff0c;但对协程的原理存在疑惑&#xff0c;那么在阅读本篇文章之前推荐你先阅读下面的文章&#xff0c;这…

编译py-faster-rcnn的问题汇总及解决方法

按照官网 的提示&#xff0c;我开始安装faster rcnn&#xff0c;但是出现了很多问题&#xff0c;我将其汇总了起来&#xff0c;并提出了解决办法。 先说明一下我的配置&#xff1a; python : anaconda2linux: centos 6.9 安装faster rcnn请先参考&#xff1a;《cuda8cudnn4 F…

linux 安装python-opencv

三种方法&#xff1a; 1. pip 安装 &#xff1a; pip install opencv-python &#xff0c;最新版为opencv3安装后>>> import cv2 >>> print cv2.__version__参考&#xff1a;http://www.cnblogs.com/lclblack/p/6377710.html 2. anaconda的conda安装 ,可以指…

《你的灯亮着吗》读书笔记Ⅲ

转载于:https://www.cnblogs.com/yue3475975/p/4586220.html

nvidia显卡对比分析

本文章转载自&#xff1a;http://www.cnblogs.com/lijingcong/p/4958617.html 科学计算显卡的两个主要性能指标&#xff1a;1、CUDA compute capability&#xff0c;这是英伟达公司对显卡计算能力的一个衡量指标&#xff1b;2、FLOPS 每秒浮点运算次数&#xff0c;TFLOPS表示每…

零基础不建议学前端_web前端开发零基础怎样入门-哈尔滨前端学习

web前端开发零基础怎样入门-哈尔滨前端学习&#xff0c;俗话说&#xff0c;知己知彼&#xff0c;百战百胜。要想学好web前端&#xff0c;首先要了解什么是web前端&#xff0c;下面由小编来给大家介绍一下&#xff1a;1什么是web&#xff1f;Web就是在Http协议基础之上, 利用浏览…

SpringBoot的配置项

2019独角兽企业重金招聘Python工程师标准>>> spring Boot 其默认是集成web容器的&#xff0c;启动方式由像普通Java程序一样&#xff0c;main函数入口启动。其内置Tomcat容器或Jetty容器&#xff0c;具体由配置来决定&#xff08;默认Tomcat&#xff09;。当然你也可…