windows下編譯Fast RCNN實現物體識別
參考:http://blog.csdn.net/happynear/article/details/46822109
一、準備
1. caffe-windows:https://github.com/happynear/caffe-windows。如果你的caffe-windows版本是2015/07/09之前下載的,請重新下載並重新編譯。重新編譯時請首先編譯python介面,因為馬上就要用到。主程式和matlab介面可以有空的時候再編譯。
3. 下載fast r-cnn所需的模型檔案。原始檔案都在伯克利大學的伺服器上,為了不給伯克利伺服器增加負擔,我把檔案都上傳到百度雲上了[doge]:http://pan.baidu.com/s/1kTzQYgR
fast_rcnn_root/data
中。
4. 按照這篇部落格的說明安裝protobuf的python介面。
5. 開啟cmd,輸入pip
install cython
和 pip
install easydict
來安裝cython和easydict,如果你使用的是Anaconda-64,cython預設是安裝上了的。
如果提示安裝失敗,可能是由於你的pip的版本過低,請先使用 pip install pip --upgrade
升級你的pip。
二、編譯
1. 將caffe_windows_root/python
目錄,複製到fast_rcnn_root/caffe-fast-rcnn
2. 用文字編輯器開啟fast_rcnn_root/lib/utils/nms.pyx
,將第25行的np.int_t
修改為(np.int64_t)np.intp_t
。
3. 用文字編輯器開啟fast_rcnn_root/lib/setup.py
,將第18行和23行的 "-Wno-cpp", "-Wno-unused-function"
指令刪除,只留下空的中括號[]
即可。
4. 開啟cmd,定位至fast_rcnn_root/lib
目錄中,執行python
setup.py install
。
如果提示Unable
to find vcvarsall.bat
的話,請輸入以下指令:
VS2012:SET
VS90COMNTOOLS=%VS110COMNTOOLS%
VS2013:SET
VS90COMNTOOLS=%VS120COMNTOOLS%
setup.py安裝完成後,到python_root/Lib/site-packages/utils
中可以找到兩個檔案cython_bbox.pyd
和cython_nms.pyd
,把這兩個檔案複製到fast_rcnn_root/lib/utils
中。
在這裡,我沒有成功,遂安裝Microsoft Visual C++ Compiler for Python 2.7(http://www.microsoft.com/en-us/download/details.aspx?id=44266),設定環境變數:SET VS90COMNTOOLS="C:\Users\houwenbin\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\",並修改F:\Anaconda2\Lib\distutils\msvc9compiler.py的
def find_vcvarsall(version):
"""Find the vcvarsall.bat file
At first it tries to find the productdir of VS 2008 in the registry. If
that fails it falls back to the VS90COMNTOOLS env var.
"""
vsbase = VS_BASE % version
try:
productdir = Reg.get_value(r"%s\Setup\VC" % vsbase,
"productdir")
except KeyError:
productdir = None
# trying Express edition
if productdir is None:
vsbase = VSEXPRESS_BASE % version
try:
productdir = Reg.get_value(r"%s\Setup\VC" % vsbase,
"productdir")
except KeyError:
productdir = None
log.debug("Unable to find productdir in registry")
if not productdir or not os.path.isdir(productdir):
toolskey = "VS%0.f0COMNTOOLS" % version
toolsdir = os.environ.get(toolskey, None)
#log.info("%s----%s", toolskey, toolsdir)
if toolsdir and os.path.isdir(toolsdir):
#productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")
#productdir = os.path.abspath(productdir)
productdir = os.path.abspath(toolsdir) #modify by houwenbin
log.info("%s----", productdir)
if not os.path.isdir(productdir):
log.debug("%s is not a valid directory" % productdir)
return None
else:
log.debug("Env var %s is not set or invalid" % toolskey)
if not productdir:
log.debug("No productdir found")
return None
vcvarsall = os.path.join(productdir, "vcvarsall.bat")
if os.path.isfile(vcvarsall):
return vcvarsall
log.debug("Unable to find vcvarsall.bat")
return None
5. 定位至fast_rcnn_root
,執行python
tools/demo.py --cpu(我沒有N卡)
,等待demo的結果吧!
可以看到,分類效果還是不錯的!