caffe下matlab、python的配置和faster RCNN的运行
因為自己的電腦沒有安裝linux環境,顯卡也不支持CUDA,所以在實現faster RCNN的demo的過程中還是很麻煩的。
完善項目文件
下圖是vs2013 打開的caffe解決方案的工程目錄。由于windows版本caffe的不完善,要先在其libcaffe項目中添加roi_poling層的相關支持。(Fast R-CNN的ROIPooling層需要這個源文件編譯)
具體做法是對cu&include&src下的layers右鍵,添加現有的項,分別添加的是roi_pooling_layer對應的.cu/.hpp/.cpp文件。其中.cu和.cpp文件在caffe安裝根目錄src/caffe/layers下。.hpp在include/caffe/layers下。
P.s:Caffe中的.cu文件,是交給nvcc編譯的c++源文件,可以編譯成cpu指令或者GPU指令。
修改屬性表
在commonSettings.props中修改屬性。為了配置caffe的接口,需要在屬性表中把python版編譯接口打開,并且指出anaconda2的路徑。這兩行分別在屬性表的13行和第48行。
好幾個博客都使用的是anaconda2的python安裝包,而caffe中默認的是Miniconda2(僅包含conda和 Python)。Anaconda是一個開源的Python發行版本,其包含了conda、Python等180多個科學包及其依賴項,anaconda2對應Python2版本。對比之下,pycharm、spyder是IDE,可以調試,代碼高亮,項目管理等。因為python是解釋型的語言,pycharm在新建項目的時候就需要指定interpreter,而這個解釋器就可以是anaconda下的python.exe。而在anaconda之中也集成了IDE:jupyter notebook。
從清華大學鏡像站下載anaconda,https://repo.continuum.io/archive/Anaconda2-4.2.0-Windows-x86_64.exe
(千萬要下載支持python2.7的anaconda2,不然后面會遇到找不到python27.lib)去編譯Release版本的pycaffe,好像如果編譯Debug版本會出現python27_d.lib找不到什么的。
Matlab也一樣,除了打開matlabsupport,還需要修改matlab.exe路徑和mxGPUArray.h所在include路徑。新版matlab的mxGPUArray.h位置改動了,可以將新位置放在includePath之中,也可以將頭文件復制到默認的includePath處。
重新編譯
在Build/x64/Release下得到pycaffe文件夾和 matcaffe文件夾。
Pycaffe:
Matcaffe:編譯過程中遇到了頭文件martix.h找不到的情況,把絕對路徑include進去就好了。還遇到了無法打開libmx.lib的問題,在項目屬性中添加庫目錄。
python中安裝caffe包
將編譯生成的pycaffe中的caffe文件夾拷貝到D:\Program Files\Anaconda2\Lib\site-packages中
在cmd中進入python命令行,然后import caffe,會出現下面問題
因為c++版本中生成的NugetPackages里面包含了依賴項opencv,protobuf等,而python版本還沒有。解決辦法是退出python,在cmd中conda install protobuf/pip install protobuf,安裝成功之后重新import caffe,沒有報錯。
驗證
使用的實例是Texture Synthesis with Convolutional Neural Networks這篇論文的代碼,主要實現的是利用噪聲生成一張真實圖片。下載,解壓github上的源碼https://github.com/leongatys/DeepTextures
在cmd中cd到解壓目錄,輸入jupyter notebook
可以在localhost:8888/中得到jupyter notebook,顧名思義,這是一個web型的交互式筆記本。顯示當前文件夾中的文件。
點擊example.ipynb,shift+enter逐步調試.
出現了python.exe停止運行等錯誤,中斷發現應該是GPU不支持的問題,在cmd中的提示驗證了這個猜想:
按照下面代碼把模式改成CPU:
在鏈接1中是將代碼寫在一個py文件中一次性運行,而且因為不是在解壓文件目錄下打開jupyter notebook,用了絕對路徑。但是不管是分步運行還是一次性運行,都沒有報錯,都沒有圖像生成,理論上應該生成代碼給的參考圖像才對。現在還不知道怎么回事。
我懷疑是我除了anaconda2還安裝了一個python,所以運行notebook的時候有兩個kernels found,于是用pycharm新建了一個project,選擇anaconda2下的python.exe作為interpreter,但是顯示找不到caffe等:
Faster rcnn
Python版本的caffe和faster rcnn(鏈接3):
下載py-faster-rcnn,地址:https://github.com/rbgirshick/py-faster-rcnn
針對windows環境,替換py-faster-rcnn中的lib)https://github.com/MrGF/py-faster-rcnn-windows將其中的文件復制進py-faster-rcnn進行替換。
替換后,在py-faster-rcnn根目錄—lib—rpn路徑下,編輯proposal_layer.py:
將Caffe根目錄—Build文件夾下,找到生成的pycaffe,將其中的caffe文件夾整體復制到py-faster-rcnn根目錄—caffe-fast-rcnn—python文件夾下。如果是用Download ZIP(因為我們已經有了Caffe-Microsoft),在py-faster-rcnn的caffe-faster-rcnn下單獨創建python文件夾,再將生成的pycaffe下的caffe拷貝進來。官方推薦用命令遞歸下載,遞歸的意思是initialize submodules in the clone,自動初始化并更新倉庫中的每一個子模塊:
Matlab版本的caffe+faster rcnn(鏈接4)
按照參考操作就可以了,需要注意的是要下載的是matlab版本的faster rcnn,解壓應該在faster-rcnn-master/experiment下。
需要針對cpu-only的環境修改代碼。因為不用GPU,所以還需要選擇網絡較小的zf-5,而不是很大的VGG-16.這兩個網絡的model在output文件夾下面。
我遇到的問題是:
先是出現invalid mex-file,添加了vs的dll文件在m文件目錄下,將build/x64/release路徑添加到系統環境變量。
然后出現了load使用錯誤的原因,其實是model文件和測試圖片的路徑錯了,按照提示改一下就好了。
下面是demo自帶圖像的測試結果:
Reference:
1.????? 下載anaconda2:https://www.cnblogs.com/billyzh/p/6307716.html
2.??????Jupyter:https://blog.csdn.net/zb1165048017/article/details/52980102
3.??????Py Faster RCNN:https://blog.csdn.net/u011185952/article/details/71079038
4.??????Mat faster rcnn:https://blog.csdn.net/mr_curry/article/details/54745116
5.??????翻墻獲取faster_rcnn_models:https://blog.csdn.net/hongbin_xu/article/details/76100132
6.??????修改setup.py到CPU:http://www.caffecn.cn/?/question/13
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的caffe下matlab、python的配置和faster RCNN的运行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信开发简单实例
- 下一篇: Python搭建web服务器