學習深度學習背景html
最近在作一款搶票軟件,因爲12306常常檢測帳號狀態,搶票搶着搶着就須要從新登陸了,而後登陸是須要驗證碼的。因此我最開始是想到了使用java基於感知哈希算法pHash作類似度匹配識別,結果測試發現精確度低的可憐。這裏簡單的說下邏輯。12306驗證碼是由8張小圖片生成拼接在一塊兒的。每次請求都是在服務器後臺進行隨機抽取圖片製做驗證碼。而每一張小圖的尺寸大小都是相同的。將圖片使用java切割後生成8張小圖。在進行pHash算法匹配圖片類似度。結果識別度很是低了,就不必說繼續作往下的邏輯,好比訓練標籤。作匹配分類圖片等等。因此我就想到了如今的深度學習中的圖像識別分類,因爲零基礎接觸,安裝前我也是借閱了不少相關的文章以及PDF。歷經幾天的學習以及安裝,皇天不負有心人一路磕磕碰碰總算是把caffe安裝好,因此這篇文章比較適合剛接觸的新人。授人以魚不如授人以漁 編譯好的caffe我就不發了。 我總結這篇教程只是爲了讓哪些和我同樣剛接觸caffe的朋友能順利的安裝好這個NB的東西。java
安裝前言:該文章適合新人閱讀,因此安裝步驟會有點囉嗦,其次就是咱們這裏使用的是CPU來訓練,因此是不用安裝Cuda和CuDNN的。python
一、安裝gitlinux
因爲這裏記錄的是使用Windows系統安裝,可是多數的操做仍是須要使用linux命令執行。因此爲了便於執行linux命令須要先git。git
保持默認選項點擊next,因爲我是我的使用,因此選擇第二項:Use Git from the Windows Command Prompt 接着繼續默認選項走。github
安裝完成後記得檢測是否可用,確保萬一,可能會出現部分電腦出現環境變量未自動配置好。算法
如未出現配置好環境變量請自行配置:編程
在系統變量中找到Path並在後面添加: C:\Program Files\Git\cmd;windows
二、安裝Visual Studio 2015(如下簡稱VS2015)服務器
三、安裝CMake &版本>=3.4
3.1 下載地址Cmake( 3.11.1版本)
下載地址:https://download.csdn.net/download/u014714937/10375108 或 https://cmake.org/download/
下載完成後解壓出來:
3.2 配置環境變量
一樣在系統變量中找到Path並在其後追加你的cmake解壓出來的路徑,個人電腦路徑是> D:\DeepLearning\cmake-3.11.1-win64-x64\bin
注意:如在git環境變量後並無用 ; 符號結尾記得手動在cmake追加前添加 ;
3.3測試cmake
打開CDM>輸入cmake -version 如出現版本信息則表示環境變量配置成功
C:\Users\Administrator>cmake -version cmake version 3.11.1 CMake suite maintained and supported by Kitware (kitware.com/cmake).
四、安裝Python
4.1 下載python
下載地址: https://download.csdn.net/download/u014714937/10375211
4.2 安裝python
安時候記得勾選"Add Python 3.6to PATH"表示對python環境變量的配置 若是沒有特別的需求話建議使用默認安裝:Install Now便可。
正常的話通常一分鐘左右就安裝好了
4.3測試python
4.4 安裝python其餘相關模塊
4.4.1 安裝 Anaconda
下載地址:https://www.anaconda.com/download/
Python 3.6 的下載Python 3.6 version版本,Python 2.7 的下載Python 2.7 version版本。
安裝時選擇用戶,如沒有特定需求建議全部用戶(All Users),選擇完路徑沒有特定需求一直下一步便可開始安裝。文件較大,解壓出來2個多G,安裝過程須要耐心等待幾分鐘。
安裝完成後出現一個是否安裝微軟快捷開發包。Install Microsoft VSCode 點擊進行安裝,安裝完成後點擊Skip便可。
4.4.2安裝pip
下載地址:https://pypi.org/project/pip/#files
下載完成以後,解壓到一個文件夾。這裏解壓後可能會出現的一個文件夾「dist」 而後這個文件夾裏面纔有一個壓縮包,若是出現這種狀況就須要解壓真實的這個壓縮包到目錄上
解壓完成後在當前目錄按住Shift+鼠標右鍵後點擊「在此處打開命令窗口」或用CMD控制檯進入解壓目錄並輸入:
python setup.py install
安裝失敗:
如輸入安裝命令出現,這種狀況的緣由是由於當前目錄下找不到這個執行命令,確認是不是在解壓出來的PIP文件主目錄下執行的
D:\DeepLearning\dist>python setup.py install python: can't open file 'setup.py': [Errno 2] No such file or directory D:\DeepLearning\dist>
安裝完成:
檢測安裝:
打開CDM輸入pip list 如出現版本信息則表示安裝成功
D:\DeepLearning\dist>pip list Package Version ---------- ------- pip 10.0.1 setuptools 28.8.0
4.4.3 安裝six : pip install six
D:\DeepLearning\dist>pip install six Collecting six Downloading https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa 78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl Installing collected packages: six Successfully installed six-1.11.0
4.4.4安裝yaml: pip install pyyaml
D:\DeepLearning\dist>pip install pyyaml Collecting pyyaml Downloading https://files.pythonhosted.org/packages/4a/85/db5a2df477072b2902b0 eb892feb37d88ac635d36245a72a6a69b23b383a/PyYAML-3.12.tar.gz (253kB) 40% |█████████████ | 102kB 195kB/s eta 0:00:0 44% |██████████████▎ | 112kB 286kB/s eta 0:00 48% |███████████████▌ | 122kB 276kB/s eta 0:0 52% |████████████████▉ | 133kB 273kB/s eta 0: 56% |██████████████████▏ | 143kB 421kB/s eta 60% |███████████████████▍ | 153kB 354kB/s eta 64% |████████████████████▊ | 163kB 345kB/s et 68% |██████████████████████ | 174kB 382kB/s e 72% |███████████████████████▎ | 184kB 530kB/s 76% |████████████████████████▋ | 194kB 536kB/ 80% |██████████████████████████ | 204kB 544kB 84% |███████████████████████████▏ | 215kB 522 89% |████████████████████████████▌ | 225kB 61 93% |█████████████████████████████▉ | 235kB 7 97% |███████████████████████████████ | 245kB 100% |████████████████████████████████| 256k B 1.6MB/s Installing collected packages: pyyaml Running setup.py install for pyyaml ... done Successfully installed pyyaml-3.12
4.4.5 安裝numpy: pip install numpy
安裝過程可能會出現如下狀況:
THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have u pdated the package versions, please update the hashes. Otherwise, examine the pa ckage contents carefully; someone may have tampered with them. numpy from https://files.pythonhosted.org/packages/30/70/cd94a1655d082b8f024 b21af1eb13dd0f3035ffe78ff43d4ff9bb97baa5f/numpy-1.14.2-cp36-none-win_amd64.whl#s ha256=6be6b0ca705321c178c9858e5ad5611af664bbdfae1df1541f938a840a103888: Expected sha256 6be6b0ca705321c178c9858e5ad5611af664bbdfae1df1541f938a84 0a103888 Got 6e3df481acb4ee8249957a82771e7a23ab89368e7914bb131c368e83 b976f270
主要緣由:由於網速問題致使的,致使下載的文件不徹底出現不匹配的文件MD5
解決方法:從新執行該命令下載文件並安裝,多試幾回就行了。
安裝完成:
Installing collected packages: numpy Successfully installed numpy-1.14.2
以上全部事情準備好了就能夠開幹了。
五、下載caffe並編譯
5.1 下載caffe
小建議:咱們這裏使用的是caffe官網提供的版本,部分朋友使用的是微軟提供的windows版本 .如使用的是微軟提供的windows版本好像是在caffe根目錄下有一個windows文件夾,文件夾內容就是已經建立好caffe相關VS文件的,
因此可能在安裝,使用過程上有差別,建議是使用本身編譯安裝的版本。由於使用已經建立安裝好的caffe文件可能由於環境不一樣遇到某種未知問題。例以下載的caffe裏面建立好的VS文件是VS2013建立的並平臺版本(SKD)和本機安裝的有出入的話 反而會花更多的時間去調整配置。
使用git命令下載 git clone https://github.com/BVLC/caffe.git 也能夠手動下載並解壓出來
$ git clone https://github.com/BVLC/caffe.git Cloning into 'caffe'... remote: Counting objects: 54253, done. remote: Total 54253 (delta 0), reused 0 (delta 0), pack-reused 54253 Receiving objects: 100% (54253/54253), 62.60 MiB | 359.00 KiB/s, done. Resolving deltas: 100% (36633/36633), done. Administrator@STI5X9B683AVXOY MINGW64 /d/DeepLearning/caffe $
初始目錄結構以下:
5.2 修改配置並執行建立caffe文件(這一步很重要)
經過caffe根目錄找到並進入scripts文件夾後找到build_win.cmd並進行編輯。
主要修改部分語句是從第7行~31行之間 。70~99行之間,具體修改請經過下面步驟決定。
修改7~31行的if語句(if裏面修改項描述同修改70~99行之間代碼邏輯):
修改70~99行之間
對比能夠發現 if和else裏面的代碼大同小異,可是卻少了後面設置對應python中的Anaconda版本路徑這幾行代碼。默認文件是沒有這幾行代碼的,咱們須要手動複製if裏面修改玩的代碼至else代碼中,修改以下:
編輯主要修改的項是:
一、修改成CPU計算訓練 CPU_ONLY=1
二、修改對應的VS版本生成代碼 MSVC_VERSION=14 // 2013的VS版本則修改成12 2015的VS版本則修改成14
三、修改編譯方式,使用VS編譯 不使用NinJa編譯 WITH_NINJA=0 //這裏必定要設爲0。除非你想用ninja編譯器來進行編譯。
四、修改對應的python版本 PYTHON_VERSION=3 //2.7的python版本要修改成2 若是是3.5版本的python修改成3
五、修改python開發對應的Anaconda版本 //如第三項修改 PYTHON_VERSION 爲3 的話將按照以下修改 安裝的是python2.7的版本 那將修改EQU 2的記錄
if !PYTHON_VERSION! EQU 3 ( set CONDA_ROOT=Anaconda3對應安裝的目錄地址 )
注:以上修改帶有//描述的則須要經過計算機環境決定。
5.3 進行建立caffe可執行的VS文件
當以上內容都修改完成後,咱們來運行build_win.cmd開始來建立VS執行文件。就是用於編譯的caffe文件。在caffe根目錄下的scripts目錄中Shift+鼠標右鍵打開「在此處打開命令窗口」 而後輸入start build_win.cmd。
第一次開車-(翻車了):
D:\DeepLearning\caffe\caffe\scripts>start build_win.cmd
執行後貌似沒有成功。
'"D:\VisualStudio\Common7\Tools\..\..\VC\vcvarsall.bat"' 不是內部或外部命令,也 不是可運行的程序 或批處理文件。 CMake Error at CMakeLists.txt:18 (project): Failed to run MSBuild command:.......此處省略一萬字
出現了異常,什麼錯誤呢。又是一個皇天不負有心人啊,通過百般的測試發現是由於VS安裝環境的問題。像我以前安裝這個VS2015的時候由於不用開發C++相關的內容,因此我在安裝的時候選擇了自定義安裝並無勾選C++相關的編譯器以及「內褲」。
因此致使在編譯代碼的時候找不到C++相關的命令。找到問題了如何解決呢?方法很簡單,從新安裝VS開發工具便可。
不不不,別急,還有一種方案。可能你不知 VS安裝工具就是這麼強大,不用卸載從新安裝,它能夠像打補丁同樣,再從新打開安裝程序而後選擇你沒有安裝的功能進行安裝便可。將編程語言中的Visual C++所有勾選上在點擊下一步安裝便可,通常安裝這幾個項的話半個小時左右(因電腦性能決定)。
萬事俱備只欠東風了,安裝好C++相關組件後咱們再次進行執行start build_win.cmd命令(注意:每次執行build_win.cmd 命令前記得清空build_win.cmd文件目錄下的build文件夾的內容).........
第二次開車-(翻車了):
系統找不到指定的驅動器。 系統找不到指定的驅動器。 此處省略一萬字.......============================================================ -- The C compiler identification is MSVC 19.0.24215.1 -- The CXX compiler identification is MSVC 19.0.24215.1 -- Check for working C compiler: D:/VisualStudio/VC/bin/x86_amd64/cl.exe -- Check for working C compiler: D:/VisualStudio/VC/bin/x86_amd64/cl.exe -- work s -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: D:/VisualStudio/VC/bin/x86_amd64/cl.exe -- Check for working CXX compiler: D:/VisualStudio/VC/bin/x86_amd64/cl.exe -- wo rks -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found PythonInterp: D:/DeepLearning/Anaconda3/python.exe (found suitable vers ion "3.6.4", minimum required is "2.7") CMake Error at cmake/WindowsDownloadPrebuiltDependencies.cmake:40 (message): Could not find url for MSVC version = 1900 and Python version = 3.6. Call Stack (most recent call first): CMakeLists.txt:77 (include) -- Configuring incomplete, errors occurred! See also "D:/DeepLearning/caffe/caffe/scripts/build/CMakeFiles/CMakeOutput.log". ERROR: Configure failed D:\DeepLearning\caffe\caffe\scripts>
貌似又失敗了,異常描述好像是由於python版本不一致致使的。因而乎我又安裝了Anaconda2版本並進行修改了文件build_win.cmd文件
將對應的python版本匹配對應版本的Anaconda
:: Set python 2.7 with conda as the default python if !PYTHON_VERSION! EQU 2 ( set CONDA_ROOT=D:\DeepLearning\Anaconda2 ) :: Set python 3.5 with conda as the default python if !PYTHON_VERSION! EQU 3 ( set CONDA_ROOT=D:\DeepLearning\Anaconda3 )
第三次開車-(翻車了):
-- Found PythonInterp: D:/DeepLearning/Anaconda3/python.exe (found suitable vers ion "3.6.4", minimum required is "2.7") CMake Error at cmake/WindowsDownloadPrebuiltDependencies.cmake:40 (message): Could not find url for MSVC version = 1900 and Python version = 3.6. Call Stack (most recent call first):
當我第三次翻車後我就在思考了,我是否是不適合這個牛逼的東西,可是沒辦法啊,既然上了高速了又豈能隨隨便便下高速。因而乎我又進行了修改,將build_win.cmd文件中的判斷python版本而後匹配對應Anaconda 都修改了爲匹配Anaconda2。因而乎....
第四次開車-(飛起來了):
又是一個皇天不負有心人啊。成功了。
先看修改後的配置文件(記得if和else裏面都要修改),至於爲啥是這樣呢 我也母雞。。。多是個人配置或者環境致使的。按道理我配置的是python3.6的 應該Anaconda配置也要是3的版本纔對,可是我引用Anaconda3就是不經過,因此只能改成Anaconda2讓它經過先了,其次就是我在翻閱資料的時候看見有大佬說 若是說這裏安裝了Anaconda2/3都無法成功時還須要安裝Miniconda2,原文意思是說後面引用都是Miniconda須要安裝這個。可是我這裏本機測試是正常的,因此我是沒有安裝了,若是須要安裝的話經過這裏進行下載安裝,安裝界面和安裝Anaconda時選步是同樣的。下載地址:https://conda.io/miniconda.html :
:: Set python 2.7 with conda as the default python if !PYTHON_VERSION! EQU 2 ( set CONDA_ROOT=D:\DeepLearning\Anaconda2 ) :: Set python 3.5 with conda as the default python if !PYTHON_VERSION! EQU 3 ( set CONDA_ROOT=D:\DeepLearning\Anaconda2 )
而後你會發現控制檯正在默默的下載一個文件,下載的內容就是生成caffe項目時所需的依賴項。下載完成後自動生成Visual Studio對應版本的的sln文件。
如libraries_v140_x64_py27_1.1.0.tar.bz2文件出現下載失敗致使編譯失敗,可經過手動下載該文件而後丟入到待解壓目錄中並再從新執行build_win文件。
本文提供下載地址 or 官方下載地址。下載完成後複製該壓縮包並黏貼到 「C:\Users\Administrator\.caffe\dependencies\download」中,如用戶名有差別須要自行查找 好比「C:\Users\XXXXX\.caffe\dependencies\download」。
而後打開caffe根目錄\cmake\WindowsDownloadPrebuiltDependencies.cmake這個文件,把下載文件的部分代碼註釋掉:
而且打開 caffe根目錄\scripts\download_prebuilt_dependencies.py文件 註釋掉下載代碼:
如網絡狀態較好,未出行以上狀況咱們耐心的等待便可。........當依賴下載完成後就開始生成項目了。
通過耐心等待幾分鐘後至於生成完成了。
出現警告不用理會,咱們直接進入生成的文件夾進行打開caffe項目而後編譯。就是build_win.cmd文件目錄中的build文件夾。
進入這個文件夾後,裏面結構大體這樣,版本不一樣,生成的文件有細微差別。而後直接雙擊 Caffe.sln文件會自動使用VS打開的。
5.4 進行編譯caffe
我翻譯資料的時候發現不少大佬說在生成解決方案的時候使用 Release 方式。而後平臺版本調整爲X64。使用Release和Debug的區別我就不在這裏說了。可是這裏編譯模式呢 不會直接影響對caffe的使用,因此Debug也是能夠的。
等待VS工具加載完項目後咱們點擊頂部菜單欄的 生成>生成解決方案 或經過右側項目欄也是能夠的。結果是同樣的。如編譯正常經過的話 控制檯打印信息以下:
此處省略一萬零一字 41> -- Creating hardlink for opencv_imgcodecs310d.dll in D:/DeepLearning/caffe/caffe/scripts/build/test/Debug 41> -- Failed to create hardlink D:/DeepLearning/caffe/caffe/scripts/build/test/Debug/opencv_imgcodecs310d.dll. Copying instead. 41> -- Copying opencv_imgcodecs310d.dll to D:/DeepLearning/caffe/caffe/scripts/build/test/Debug 41> -- Creating hardlink for opencv_imgproc310d.dll in D:/DeepLearning/caffe/caffe/scripts/build/test/Debug 41> -- Failed to create hardlink D:/DeepLearning/caffe/caffe/scripts/build/test/Debug/opencv_imgproc310d.dll. Copying instead. 41> -- Copying opencv_imgproc310d.dll to D:/DeepLearning/caffe/caffe/scripts/build/test/Debug 41> -- Creating hardlink for python27.dll in D:/DeepLearning/caffe/caffe/scripts/build/test/Debug 45>------ 已跳過生成: 項目: runtest, 配置: Debug x64 ------ 45>沒有爲此解決方案配置選中要生成的項目 ========== 生成: 成功 40 個,失敗 0 個,最新 0 個,跳過 5 個 ==========