1. 程式人生 > >win10搭建cntk環境並使用fastRcnn實現目標檢測

win10搭建cntk環境並使用fastRcnn實現目標檢測

          準備階段,在這裡我是基於anaconda進行安裝的,所以首先去anaconda官網下載anaconda3,最好下載anaconda3,因為聽說numpy庫貌似不支援python2了,官網上有三個版本,windows,linux以及mac版,我們下載windows版即可,連結如下:https://www.anaconda.com/download/。接著下載cntk的工具包,在這裡需要強調的是,我覺得貌似微軟的文件有bug,因為首先下載的是cntk2.2的版本,但是在實現目標檢測時,總是出錯,我嘗試著安裝了四五遍,都一樣的結果,總是提醒沒有fastRcnn.utils.Cython,可是自己明明都安裝了Cython這個庫,有哪位網友安裝好cntk2.2版本的並使用FasterRcnn

實現目標檢測的而不是fastRcnn歡迎與我交流。最後沒辦法只好下載cntk2.0版本的,2.0版本的不支援fasterRcnn。連結如下:https://github.com/Microsoft/CNTK/releases。

        安裝階段:anaconda是傻瓜是的安裝,安裝過程中不能改變路徑,安裝完成在命令列輸入conda命令測試即可,出現如下畫面表示安裝成功。當然安裝不成功的情況我也出現過,哈哈。

              完成anaconda的安裝之後,需要配置cntk的環境變數,將下載的cntk壓縮包進行解壓,然後配置環境變數,步驟如下:

右擊我的電腦,屬性,高階系統設定,環境變數,將上面的路徑新增到path中即可,跟配置其他的環境變數一樣。配置完再命令列中測試一下,結果如下:

          接著在命令列執行conda create --name cntk-py35 python=3.5 numpy scipy h5py jupyter,注意這裡我選的是python3.5,你也可以選擇python3.4都可以

執行這行命令,系統會下載很多包,我們等待即可。完成之後,利用activate cntk-py35啟用cntk。因為我已經安裝,所以我只截一個啟用命令窗戶,如下:

如果你安裝的是python3.4,那就啟用cntk-py34.接著我們用pip安裝cntk的包,注意pip是你在安裝anaconda的時候自帶的。命令如下:

pip install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp35-cp35m-win_amd64.whl 注意這裡是cntk2.0版本,跟我們先前下載的cntk2.0版本相對應,還有cp35也跟python3.5對應,不能錯,錯了萬劫不復,哈哈。具體可以看微軟給的官方文件,這是連結:https://docs.microsoft.com/en-us/cognitive-toolkit/Setup-Windows-Python?tabs=cntkpy20。

至此,cntk的環境搭建完成,但是實現我們的目標檢測還沒完。首先進入我們剛剛下載的cntk的fastRcnn目錄如下:

然後在這目錄下,執行python install_fastrcnn命令,執行此命令,會下載一個Alex.model的網路模型,它是用來做預訓練的,如下因為我已經下載好了,它會顯示已存在。

然後進入C:\cntk\Examples\Image\DataSets\Grocery,下載相應的資料集。

接著進入C:\cntk\Examples\Image\Detection\FastRCNN,目錄執行pip install -r requirements.txt,這是在下載相應的庫檔案,如果在後面之執行的時候,總是報no moudle named xxx,則表示庫沒有安裝成功,此時我們執行 pip install xxx,正常情況下是這樣,還有不正常的,比如no moudle named past,這個時候我們執行pip install future,哈哈。

接下來安裝opencv庫和scikit-image庫,同樣用pip命令進行安裝即可。但是如果總是安裝不成功的話,也可以進入到python庫官網下載,注意此時,一定要下載與python版本對應的庫。連結如下:https://www.lfd.uci.edu/~gohlke/pythonlibs/,下載後,在該檔案目錄下執行 pip install 庫的全名。如pip install scikit_image-0.13.1-cp35-cp35m-win_amd64.whl。

這裡我需要強調的是,cntk2.0版本真的有bug,因為裡面有很多檔案丟失,或者移到另外的目錄下,然後還有下載的預訓練的網路模型總是有問題,並且技術文件說得也不是很清楚,所以我才裝的cntk2.0,但是cntk2.0版本不支援fasterRcnn。

以上用於做目標檢測的所有準備工作已經完成。

接著我們就可以處理資料了。這裡就不想詳細贅述了。在fastRcnn目錄下,按順序執行以下命令即可。

python A1_GenerateInputROIs.py

python B1_VisualizeInputROIs.py

python B2_EvaluateInputROIs.py

python A2_RunWithBSModel.py  此命令就是在訓練我們自己的網路,如果在cpu上,可能需要一個多小時。

python B3_VisualizeOutputROIs.py   這裡就可以看到我們的結果了。

我們還可以在自己的資料集做實驗,來進行目標檢測或者分類,因為fastRcnn是把目標檢測和分類一起做了的。可以參考以下連結:

https://docs.microsoft.com/en-us/cognitive-toolkit/Object-Detection-using-Fast-R-CNN

最後秀一下小哥自己做得實驗。

同時,如果瞭解深度學習的話,我們調整網路的一下引數。比如minibatch,epoch,learningrate等,當然啦這是後話了。