1. 程式人生 > >windows下MatConvNet深度學習框架的搭建

windows下MatConvNet深度學習框架的搭建

MatConvNet是Matlab下用於機器視覺的一個工具包,主要應用是CNN網路,當然其他的網路也涉及到了。MatConvNet簡潔、高效,可以用於圖片分類、分割和人臉識別等等深度學習的功能。具體的可以參見官網的介紹。

在搭建環境的過程中,發現如今網上對其的資源不太多,所以在這做一個總結。以beta22版本為例。

過程分為下面幾個步驟:

1.MatConvNet的下載

2.GPU模式的使用

3.測試

1.MatConvNet的下載

在其官網的頁面進行下載,解壓到適當的位置。

執行其中“matconvnet-1.0-beta22\examples\vggfaces”路徑下的cnn_vgg_faces.m檔案,會出現下面的結果,那麼說明已經可以使用了。在執行前最好把其中要下載的一些內容給放到對應的資料夾下,這樣可以節省一點等待的時間。


2.GPU模式的使用

官網的這個頁面中,提到了搭建GPU的方式。

首先,安裝CUDA,在這個頁面有下載。記得下載和自己系統以及顯示卡支援的CUDA。

接下來,要下載cuDNN(Deep Neural Network library)。cuDNN是用於GPU加速的一個庫函式。在這個頁面有下載。

然後把解壓好的cuDNN放在合適的資料夾下,建議在MatConvNet下建立local資料夾,同時把cuDNN資料夾中bin資料夾下的cudnn64_5.dll檔案複製到matconvnet-1.0-beta22\matlab\mex資料夾下。

最後,在MatConvNet資料夾下建立compileGPU.m檔案,其中內容如下。記得把對應的路徑給改成自己電腦中的路徑。

addpath matlab;

% % with cudnn
vl_compilenn('enableGpu', true, ...
                'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0', ...  % CUDA的安裝路徑
                'cudaMethod', 'nvcc', 'enableCudnn', 'true', ...
                'cudnnRoot', 'E:\postgraduate\project\Machine Learning\Deep Learning\CNN\matconvnet-1.0-beta22\local\cudnn');  % cuDNN的路徑

出現下面圖片中類似的結果,就代表成功了。


4.測試

還是根據官網的這個頁面,在命令列視窗輸入vl_testnn命令,測試非gpu模式,會出現下面的內容。



接下來測試GPU模式,在命令列視窗輸入vl_testnn('gpu', true),會有類似上面的內容出現。這就是成功了,GPU模式下的速度提示還是很明顯的,一般都會有十倍以上。

到此,MatConvNet的安裝就結束了。

同時,把我在安裝過程中遇到的一個問題的解決方式給寫一下。在安裝cuDNN的時候,可能會遇到如下的錯誤“Error using mex nvcc fatal   : Unsupported gpu architecture 'compute_21'”,其中21可以為其他不能被10整除的數字。這個時候可以把matconvnet-1.0-beta22\matlab下的vl_compilenn.m檔案中的732行的程式碼中"%s"改為向下取10的整數倍。

比如,原始碼為

  cudaArch = ...
      sprintf('-gencode=arch=compute_%s,code=\\\"sm_%s,compute_%s\\\" ', ...
              arch_code, arch_code, arch_code) ;

可以改為
  cudaArch = ...
      sprintf('-gencode=arch=compute_20,code=\\\"sm_20,compute_20\\\" ', ...
              arch_code, arch_code, arch_code) ;

這樣,經常遇到的問題就能解決了。