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.pswp.cn/news/258749.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258749.shtml
英文地址,請注明出處:http://en.pswp.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…

字符串轉換整形數,結構體數組排序

#include <stdio.h> #include<string.h> #include<conio.h> #include <stdlib.h> FILE *p; #define N 3 struct hacker {char name[11];char num[20];char xingbie[3]; }z[N];//輸入模塊 void shuru() {char *s"網名 QQ號碼 性別信息…

如何發布打包并發布自己的Android應用(APP)

第一步&#xff0c;在Eclipse中選擇需要打包的項目&#xff0c;然后右鍵--選擇Export&#xff0c;會彈出一個打包的提示框&#xff0c;如下圖所示。 按Next之后&#xff0c;會繼續出現一個提示框&#xff0c;這里你可以選擇自己需要打包的項目&#xff08;默認是剛才選中的&…

js變量提升_一道JS變量提升題

var a 0;if(true){a 1;function a(){};a 21;console.log(a);}console.log(a);// 21 1 當前上下文代碼執行之前&#xff0c;會將帶var/function的進行聲明/定義。當遇到“{}”時&#xff0c;新版瀏覽器和老版瀏覽器的處理不一致。老版瀏覽器&#xff08;IE10以下&#xff09;…

Adaboost的幾個人臉檢測網站

【1】基礎學習筆記之opencv(1)&#xff1a;opencv中facedetect例子淺析 http://www.cnblogs.com/tornadomeet/archive/2012/03/22/2411318.html【2】OpenCV學習筆記&#xff08;二十七&#xff09;——基于級聯分類器的目標檢測objdect http://blog.csdn.net/yang_xian521/arti…

Caffe訓練過程:test_iter test_interval等概念

轉載自http://blog.csdn.net/iamzhangzhuping/article/details/49993899 先上一張圖&#xff0c;大家很熟悉的一張圖。 首先說明一個概念&#xff1a;在caffe中的一次迭代iteration指的是一個batch&#xff0c;而不是一張圖片。 下面主要說下2個概念&#xff1a; test_ite…

R的獲取和安裝

R的獲取和安裝 一、下載 R可以在CRAN&#xff08;Comprehensive r archive network&#xff09;http://cran.r-project.org上免費下載&#xff0c;可供選擇的有Linux、Mac OS X和windows對應的二進制文件&#xff1b; 我這里選擇的是windows版本。打開如下頁面&#xff1a; bas…

Bitmap recycle()

Bitmap調用recycle? When?Bitmap有一個recycle方法。含義很easy&#xff0c;恢復Bitmap空間。 Q 1: Bitmap有調用recycle方法的必要性&#xff1f; A: 嵌入式系統總是格外注重空間的問題&#xff0c;不小心的話就會有OOM。可是應用層使用java的android平臺有其天然的優勢【ja…

擴展歐幾里得算法求逆元_從輾轉相除法到求逆元,數論算法初體驗

今天是算法和數據結構專題的第22篇文章&#xff0c;我們一起來聊聊輾轉相除法。輾轉相除法又名歐幾里得算法&#xff0c;是求最大公約數的一種算法&#xff0c;英文縮寫是gcd。所以如果你在大牛的代碼或者是書上看到gcd&#xff0c;要注意&#xff0c;這不是某某黨&#xff0c;…

[翻譯] 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 …

centos 安裝 MatConvNet (gpu)

1. 安裝準備 matlab2017a &#xff0c;參考&#xff1a;《centos 安裝matlab2017a(無root權限)》 GCC 4.8(支持c11) 鍵入&#xff1a;sudo yum install gcc gcc-c &#xff08;建議sudo裝&#xff09; 至少CUDA 7.5&#xff0c;&#xff08;本人選擇cuda8.0&#xff…

php練習 租房子

題目要求 1.封裝類 <?php class DBDA {public $fuwuqi"localhost"; //服務器地址public $yonghuming"root";//用戶名public $mima"";//密碼 public $dbconnect;//連接對象//操作數據庫的方法//$sql代表需要執行的SQL語句//$type代表SQL語…

【SHARE】WEB前端學習資料

參考資料&#xff1a;https://github.com/karlhorky/learn-to-program學習網站&#xff1a;http://www.codecademy.com/learn https://www.codeschool.com/ 制作網站&#xff1a;https://webmaker.org/zh-CN/explore JavaScript2015&#xff1a;https://esdiscuss.org/topic/ja…

python軟件安裝和使用方法_aws cli的安裝及使用(內含python的安裝方法)

liunx環境(使用bundled installer)&#xff1a;1.wget https://s3.amazonaws.com/aws-cli/awscli-bundle.zip //下載bundled installer2.unzip awscli-bundle.zip3.sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws如果你沒有sudo權限或者是你想在當…

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…

cuda、cudnn相關問題鏈接

1. cuda&#xff0c;cudnn安裝 <caffe安裝系列——安裝cuda和cudnn> 2. 查看已有的cuda等版本 cuda 版本 cat /usr/local/cuda/version.txtcudnn 版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 23. cudnn的安裝&#xff0c;路徑和版本問題 http://…

bigdecimal 小于等于0_圖解小于 K 的兩數之和

點擊藍色“五分鐘學算法”關注我喲加個“星標”&#xff0c;天天中午 12:15&#xff0c;一起學算法作者 | P.yh來源 | 五分鐘學算法題目描述 題目來源于 LeetCode 上第 1099 號問題&#xff1a;小于 K 的兩數之和。給你一個整數數組 A 和一個整數 K&#xff0c;請在該數組中找出…