學習深度學習背景
最近在做一款搶票軟件,由於12306經常檢測賬號狀態,搶票搶着搶着就需要重新登錄了,然后登錄是需要驗證碼的。所以我最開始是想到了使用java基於感知哈希算法pHash做相似度匹配識別,結果測試發現精確度低的可憐。這里簡單的說下邏輯。12306驗證碼是由8張小圖片生成拼接在一起的。每次請求都是在服務器后台進行隨機抽取圖片制作驗證碼。而每一張小圖的尺寸大小都是相同的。將圖片使用java切割后生成8張小圖。在進行pHash算法匹配圖片相似度。結果識別度非常低了,就沒必要說繼續做往下的邏輯,比如訓練標簽。做匹配分類圖片等等。所以我就想到了現在的深度學習中的圖像識別分類,由於零基礎接觸,安裝前我也是借閱了很多相關的文章以及PDF。歷經幾天的學習以及安裝,皇天不負有心人一路磕磕碰碰總算是把caffe安裝好,所以這篇文章比較適合剛接觸的新人。授人以魚不如授人以漁 編譯好的caffe我就不發了。 我總結這篇教程只是為了讓哪些和我一樣剛接觸caffe的朋友能順利的安裝好這個NB的東西。
一:環境准備
安裝前言:該文章適合新人閱讀,所以安裝步驟會有點啰嗦,其次就是我們這里使用的是CPU來訓練,所以是不用安裝Cuda和CuDNN的。
1、安裝git
由於這里記錄的是使用Windows系統安裝,但是多數的操作還是需要使用linux命令執行。所以為了便於執行linux命令需要先git。
保持默認選項點擊next,由於我是個人使用,所以選擇第二項:Use Git from the Windows Command Prompt 接着繼續默認選項走。
安裝完成后記得檢測是否可用,確保萬一,可能會出現部分電腦出現環境變量未自動配置好。
如未出現配置好環境變量請自行配置:
在系統變量中找到Path並在后面添加: C:\Program Files\Git\cmd;
2、安裝Visual Studio 2015(以下簡稱VS2015)
3、安裝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).
4、安裝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
以上所有事情准備好了就可以開干了。
5、下載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代碼中,修改如下:
編輯主要修改的項是:
1、修改為CPU計算訓練 CPU_ONLY=1
2、修改對應的VS版本生成代碼 MSVC_VERSION=14 // 2013的VS版本則修改為12 2015的VS版本則修改為14
3、修改編譯方式,使用VS編譯 不使用NinJa編譯 WITH_NINJA=0 //這里一定要設為0。除非你想用ninja編譯器來進行編譯。
4、修改對應的python版本 PYTHON_VERSION=3 //2.7的python版本要修改為2 如果是3.5版本的python修改為3
5、修改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 個 ==========