1. 程式人生 > >windows下編譯Fast RCNN實現物體識別

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

。下載完成後,請將3個資料夾放置在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_tnp.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.pydcython_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的結果吧!


可以看到,分類效果還是不錯的!