windows下的caffe配置過程
1.準備工作
我在自己的筆記本配置的caffe,配置的環境為:Windows10 64位+ cuda7.5 + Opencv2.49 + boost1.56+VS2013。
安裝完第三方庫之後,有的需要手動建立環境變數,方法如下:
找到計算機,右鍵->屬性->高階系統設定->頁籤:高階->環境變數(右下角)->系統變數:新建;然後在彈出的對話方塊中,輸入對應的變數名,及變數值(檔案位置)。
1.1安裝CUDA7.5
1.2安裝boost1.56
1.3安裝opencv2.4.9
1.4第三方庫
這一部分主要包括Glog+Gflag+Protobuf+LevelDB+HDF5+LMDB+Openblas,不容易下載。使用的是
下載完,解壓得到3rdparty資料夾。
1.5下載caffe原始碼
下載地址:https://github.com/BVLC/caffe,下載master版本得到caffe_master資料夾,將上一步下載的得到的3rdparty資料夾放到caffe_master資料夾目錄。
2.增添部分缺失的檔案
2.1缺少的caffe.pb.h檔案
將proto.exe放到caffe_master/3rdparty/bin資料夾,GernaratePB.bat放在caffe_master/scripts資料夾;
雙擊GernaratePB.bat執行,將在caffe_master/src/caffe/proto
2.2準備mkstemp.hpp和mkstemp.cpp檔案
(1)將mkstemp.hpp放在caffe_master/include/caffe/util/路徑下,mkstemp.hpp中的內容為
#include <windows.h>
#include <io.h>
int mkstemp(char *templates);
(2)將mkstemp.cpp放在caffe_master/src/caffe/util/路徑下,mkstemp.cpp中的內容為
/* mkstemp extracted from libc/sysdeps/posix/tempname.c. Copyright (C) 1991-1999, 2000, 2001, 2006 Free Software Foundation, Inc. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. */ #include "caffe/util/mkstemp.hpp" #include <errno.h> #include <fcntl.h> #include <sys/stat.h> static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; /* Generate a temporary file name based on TMPL. TMPL must match the rules for mk[s]temp (i.e. end in "XXXXXX"). The name constructed does not exist at the time of the call to mkstemp. TMPL is overwritten with the result. */ int mkstemp (char *tmpl) { int len; char *XXXXXX; static unsigned long long value; unsigned long long random_time_bits; unsigned int count; int fd = -1; int save_errno = errno; /* A lower bound on the number of temporary files to attempt to generate. The maximum total number of temporary file names that can exist for a given template is 62**6. It should never be necessary to try all these combinations. Instead if a reasonable number of names is tried (we define reasonable as 62**3) fail to give the system administrator the chance to remove the problems. */ #define ATTEMPTS_MIN (62 * 62 * 62) /* The number of times to attempt to generate a temporary file. To conform to POSIX, this must be no smaller than TMP_MAX. */ #if ATTEMPTS_MIN < TMP_MAX unsigned int attempts = TMP_MAX; #else unsigned int attempts = ATTEMPTS_MIN; #endif len = strlen (tmpl); if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX")) { errno = EINVAL; return -1; } /* This is where the Xs start. */ XXXXXX = &tmpl[len - 6]; /* Get some more or less random data. */ { SYSTEMTIME stNow; FILETIME ftNow; // get system time GetSystemTime(&stNow); stNow.wMilliseconds = 500; if (!SystemTimeToFileTime(&stNow, &ftNow)) { errno = -1; return -1; } random_time_bits = (((unsigned long long)ftNow.dwHighDateTime << 32) | (unsigned long long)ftNow.dwLowDateTime); } value += random_time_bits ^ (unsigned long long)GetCurrentThreadId (); for (count = 0; count < attempts; value += 7777, ++count) { unsigned long long v = value; /* Fill in the random bits. */ XXXXXX[0] = letters[v % 62]; v /= 62; XXXXXX[1] = letters[v % 62]; v /= 62; XXXXXX[2] = letters[v % 62]; v /= 62; XXXXXX[3] = letters[v % 62]; v /= 62; XXXXXX[4] = letters[v % 62]; v /= 62; XXXXXX[5] = letters[v % 62]; fd = open (tmpl, O_RDWR | O_CREAT | O_EXCL, _S_IREAD | _S_IWRITE); if (fd >= 0) { errno = save_errno; return fd; } else if (errno != EEXIST) return -1; } /* We got out of the loop because we ran out of combinations to try. */ errno = EEXIST; return -1; }
3.建立caffe工程
準備好了caffe需要的依賴庫和環境之後,下面就可以建立caffe的vs專案,進行編譯了。
3.1建立新的工程
新建一個空的控制檯VS2013工程,起名為caffe;
將專案改為64位的專案:右鍵專案->屬性->配置管理器->活動解決平臺方案->新建x64平臺;
將caffe_master內的3rdparty、include、src和tools資料夾拷貝到工程根目錄下
3.2修改專案屬性
專案——屬性——C/C++——常規——附加包含目錄
../include ../src ../3rdparty/include ../3rdparty ../3rdparty/include/openblas ../3rdparty/include/hdf5 ../3rdparty/include/lmdb ../3rdparty/include/leveldb ../3rdparty/include/gflag ../3rdparty/include/glog ../3rdparty/include/google/protobuf |
專案——屬性——VC++目錄——包含目錄
$(CUDA_PATH_V7_5)\include $(OPENCV_2_49)\include\opencv $(OPENCV_2_49)\include\opencv2 $(BOOST_1_56) |
專案——屬性——連結器——常規——附加庫目錄
$(CUDA_PATH_V7_5)\lib\$(PlatformName) $(OPENCV_2_49)\x64\vc12\lib $(BOOST_1_56)\lib64-msvc-12.0 ..\3rdparty\lib |
專案——屬性——連結器——輸入——附加依賴項
debug新增:
opencv_ml249d.libopencv_calib3d249d.libopencv_contrib249d.libopencv_core249d.libopencv_features2d249d.libopencv_flann249d.libopencv_gpu249d.libopencv_highgui249d.libopencv_imgproc249d.libopencv_legacy249d.libopencv_objdetect249d.libopencv_ts249d.libopencv_video249d.libopencv_nonfree249d.libopencv_ocl249d.libopencv_photo249d.libopencv_stitching249d.libopencv_superres249d.libopencv_videostab249d.libcudart.libcuda.libnppi.libcufft.libcublas.libcurand.libgflagsd.liblibglog.liblibopenblas.dll.alibprotobufd.liblibprotoc.libleveldbd.liblmdbd.liblibhdf5_D.liblibhdf5_hl_D.libShlwapi.libgflags.liblibprotobuf.libleveldb.liblmdb.liblibhdf5.liblibhdf5_hl.lib |
release新增:
opencv_ml249.libopencv_calib3d249.libopencv_contrib249.libopencv_core249.libopencv_features2d249.libopencv_flann249.libopencv_gpu249.libopencv_highgui249.libopencv_imgproc249.libopencv_legacy249.libopencv_objdetect249.libopencv_ts249.libopencv_video249.libopencv_nonfree249.libopencv_ocl249.libopencv_photo249.libopencv_stitching249.libopencv_superres249.libopencv_videostab249.libcudart.libcuda.libnppi.libcufft.libcublas.libcurand.libgflags.liblibglog.liblibopenblas.dll.alibprotobuf.liblibprotoc.libleveldb.liblmdb.liblibhdf5.liblibhdf5_hl.libShlwapi.lib |
3.3新增專案檔案
3.3.1./src/caffe中的檔案
將../src/caffe資料夾中所有的*.cpp檔案新增到工程中:
3.3.2./src/caffe/layers中的檔案
專案:右鍵->生成依賴項->生成自定義->勾選CUDA7.5->確定
將./src/caffe/layers中的所有的cpp和cu檔案都新增到專案中。
3.3.3./src/caffe/util中的檔案
將./src/caffe/util中所有的檔案新增到專案
3.3.4./src/proto中的檔案
將proto中的caffe.pb.cc新增到專案:
3.3.5./tools中的檔案
本資料夾下有多個cpp檔案,通過它們的名字就可以知道相應的功能。新增不同的cpp檔案到專案中,然後生成專案,就可以得到不同功能的exe檔案。
將caffe.cpp新增到工程,生成專案,得到caffe.exe檔案,可用於訓練模型
將computer_image_mean.cpp新增到工程,生成專案,得到的exe檔案可用於將訓練樣本轉換為caffe使用的leveldb/lmdb資料集。
依次類推。
3.4 修改部分檔案
有一些檔案在編譯的過程中將會報錯,先預先修改這些檔案內容。
3.4.1 ./src/caffe中的檔案
1.blob.cpp
出現錯誤:error C4996: 'std::_Copy_impl';
解決辦法:屬性-> c\c++->前處理器->前處理器定義裡新增_SCL_SECURE_NO_WARNINGS
2.common.cpp
出現關於getid和fopen_s的錯誤。可通過如下步驟修改:
(1)在程式碼前面新增:#include <process.h>
(2)修改專案屬性:專案——屬性——C/C++——前處理器——前處理器定義->新增:_CRT_SECURE_NO_WARNINGS
(3)在程式碼中getpid的位置進行如下修改:
#ifdef _MSC_VER
pid = _getpid();
#else
pid = _getpid();
#endif
(4)註釋語句::google::InstallFailureSignalHandler()。
3.4.2 ./src/caffe/layers中的檔案
(1)在bnll_layer.cu檔案,進行如下修改:
float kBNLL_THRESHOLD = 50 -> #define kBNLL_THRESHOLD 50.0
(2)在base_data_layer.cpp中,在“stream”的定義處初始化為0值
(3)在infogain_loss_layer.cpp中,將
Dtype prob = std::max(bottom_data[i *dim+j], Dtype(kLOG_THRESHOLD))
改為:
Dtype prob = (std::max)(bottom_data[i*dim+j], Dtype(kLOG_THRESHOLD));
3.4.3 ./src/caffe/util中的檔案
1.hdf5.cpp中
將switch語句中的頭兩個case中的內容用{}括起來。
2.在io.cpp中
(1)在io.hpp標頭檔案中新增:#include“mkstemp.hpp”
(2)修改ReadProtoFromBinaryFile函式:
O_RDONLY ——> O_RDONLY | O_BINARY
(3)在程式碼中新增:
#ifdef _MSC_VER
#define open _open
#endif
(4)將close()改為_close()
3.在signal_handler.cpp中
(1)增加巨集定義:#define SIGHUP 1
(2)註釋掉HookupHandler函式和UnhookHandler函式的定義和引用
3.5新增動態連結庫
程式缺乏三個動態連結庫:libgfortran-3.dll,libglog.dll,libopenblas.dll。
(3)libglog.dll:
開啟專案工程,將生成器改為x64,編譯即可得到64位的libglog.dll。
將以上3個dll檔案放在caffe/x64/debug/檔案目錄下。
4.生成解決方案
編譯所有的檔案並連結,然後執行,程式正常執行。
相關推薦
windows下的caffe配置過程
1.準備工作 我在自己的筆記本配置的caffe,配置的環境為:Windows10 64位+ cuda7.5 + Opencv2.49 + boost1.56+VS2013。 安裝完第三方庫之後,有的需要手動建立環境變數,方法如下: 找到計算機,右鍵->屬性->
windows下caffe GPU版本配置
得到 詳細步驟 drive nbsp ubunt cudnn www uget caff 由於項目需要,所以在自己本子上配置了一下windows下GPU版本的caffe; 硬件: win10 ; gtx1070獨顯(計算能力6.1); 安裝軟件:
windows下caffe特徵圖視覺化之前的配置
深度學習網路調參是一個技術活,那麼我們怎麼知道自己的引數好不好呢?可能看網路的準確率和損失值是一個不錯的選擇,但是,這並不直觀,而且,我們也無法知道聖經網路自己選擇的特徵是不是我們想要的特徵。對此,將特徵圖輸出來看一看就顯得很有必要了。 開始之前,我們先介紹一下 條件: 1
windows下VS2015配置caffe
Windows下VS2015配置caffe,是一件其實挺簡單但是坑特別多的事情,稍有不慎就爬不出來,寫部落格來記錄最後在老師幫助下才配置成功的經驗(嚴格按照老師的教程一步也不能錯才行),當然我寫得也詳細一點,也讓大家少掉坑。 前提(開發環境):1、安裝完成VS2015
windows下python配置caffe介面
配置電腦情況: windows7 64位,無GPU,anaconda2, python2.7, VS 2013 之前已經成功安裝並配置了VS2013+caffe,在此基礎上想用python im
Caffe-ssd 在 windows 下的配置,及 python 呼叫
本文主要是針對 runhang 的工作,修復了其中在用 Pycaffe 呼叫時得一個問題- Unknown layer type: Normalize: Check failed: registry
Caffe學習筆記(一)——Windows 下caffe安裝與配置
本文主要介紹:經過一番周折,在Windows7 64位系統下成功配置Caffe,下面總結一下基本的配置過程,以及配置過程中遇到的問題。 配置環境:Windows7 X64 + CUDA7.0 + VS2013 + Matlab2014a 1.安裝C
Windows與linux下caffe配置(僅CPU)
1)下載MNIST資料集,MNIST資料集包含四個檔案,如表1所示: 表1:MNIST資料集及其檔案解釋 下載完後解壓得到對應的四個檔案,這四個檔案不能直接用於caffe的訓練和測試。需要利用第4步生成的convert_mnis
windows下vs2013配置caffe及基本使用(一)
目前已經用python程式碼搭建了CNN來做目標分類、檢測、分割(用python搭建速度快,非常方便)。之後又轉用tensorflow的C++ API來搭建CNN重新實現一遍目標分類、檢測、分割(執行效率高)。現在再轉用caffe實現一遍。先從配置說起。1.準備環境(1) V
Windows下Vim配置插件Vundle
arc comm htm version mfile git安裝 pts 所有 keyword 第一步:安裝git並配置curl 不多說,vundle是基於git的架構,so,這是必須的。 下載msysgit並安裝(具體可見http://drupalchina.cn/c
windows下安裝配置RabbitMQ
控制臺 打開 api 開啟 啟用 pmd src start 安裝配置 安裝部署 1.當前環境以及參考資料出處 部署環境:windows server 2008 r2 enterprise 官方安裝部署文檔:http://www.rabbitmq.com/inst
Cts框架解析(1)-windows下cts配置
javac 啟動 snippet htm html stc host ech 技術分享 環境搭建 下載 cts工具的下載地址:http://source.android.com/compatibility/downloads.html
在windows下安裝配置Ulipad
右鍵 運行 自動 log file 推薦 一點 python 註冊 在windows下安裝配置Ulipad 今天推薦一款輕便的文本編輯器Ulipad,用來寫一些小的Python腳本非常方便。 Ulipad下載地址: https://github.com/limo
Windows下caffe安裝詳解(僅CPU)
net library dad 新建 math 錯誤 format ack 訓練集 本文大多轉載自 http://blog.csdn.net/guoyk1990/article/details/52909864,加入部分自己實戰心得。 1、環境:windows 7\VS20
windows下php配置redis
修改 src nload php red html nec ads art 方法/步驟 1.使用phpinfo()函數查看PHP的版本信息,這會決定擴展文件版本 2.根據PHP版本號,編譯器版本號和CPU架構, 選擇php_redis-2.2.5-5.5-
windows下node配置npm全局路徑(踩坑)
系統變量 conf path class efi fig 建議 相關 沒有 事情的起因是:Koa要求v7.6.0以上的nodejs。 但是window環境下升級node不容易,試過npm install -g n 和n stable等命令無效,而網上推薦的nvm並不支持wi
windows下kafka配置入門 示例
keep bsp col fine program summer actor 回車 打開 實驗平臺與軟件: 操作系統:windows7 32 位 java 開發包: jdk1.8.0_144 集群: zookeeper-3.3.6 消息隊列: kafka_2.11
windows下nginx配置報錯GetFileAttributesEx
cnblogs req oot rect ear app windows 外文 127.0.0.1 因為電腦屏幕出現亮點,拿去換屏了,所以使用了windows環境,安裝了下wlmp環境 在配置Nginx的時候,發現配置沒有問題,但是老是訪問不了。 2015/0
在windows下簡單配置Tensorflow
裏的 net cti span pre art color 下載速度 conda 配置tensorflow之前先要裝好Anaconda Anaconda下載地址:https://www.anaconda.com/download/ 在Windows上面裝Tensorflow
windows下eclipse配置maven
maven mir adc 路徑 set yun mirrorof 添加 配置文件 windows下eclipse配置maven 一、maven安裝 1、下載到http://maven.apache.org/download.cgi 上面下載對應的maven包2、解壓將剛剛