Caffe——py-faster-rcnn使用和搭建[Ubuntu——CPU]

前言

本人之前上課模式分類(Pattern Classification)讀過一篇論文(Region-Based Convolutional Networks for
Accurate Object Detection and Segmentation),我個(gè)人覺得RCNN很有意思想嘗試運(yùn)行當(dāng)中的代碼揖赴。但由于之前一直忙與項(xiàng)目和課程,所以沒時(shí)間去找RCNN相關(guān)的代碼并且運(yùn)行它。現(xiàn)在終于有時(shí)間實(shí)現(xiàn)我自己的心愿匪蝙。這里我使用的是Caffe的faster-rcnn,使用的語言是python3庆尘。(我這里使用的CPU運(yùn)行鳄梅,我真的很窮啊。所以大家有空施舍一下我吧)

編譯

這里可以參考里面的README.md或者我之前寫的Caffe[窮人版]——Ubuntu 16.04 CPU版本安裝衩匣。因?yàn)閮?nèi)容很相似


1. 下載py-faster-rcnn的代碼

在github上拉下相應(yīng)的代碼

git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git

假如說你想用matlab寫的話蕾总,可以在這里下載

git clone --recursive https://github.com/ShaoqingRen/faster_rcnn.git

我們把這個(gè)py-faster-rcnn的目錄記作:$FRCN_ROOT,方便我們后面說明琅捏。


2. 下載相關(guān)的python模塊

進(jìn)入caffe-fast-rcnn/python生百,然后按照requirements.txt里面的要求內(nèi)容安裝相關(guān)的python模塊。

cd $FRCN_ROOT/caffe-fast-rcnn/python
for req in $(cat requirements.txt); do sudo pip3 install $req; done

3. 修改Makefile.config

我們進(jìn)入caffe-fast-rcnn/python柄延,并復(fù)制Makefile.config.exampleMakefile.config蚀浆。

cd $FRCN_ROOT/caffe-fast-rcnn
cp Makefile.config.example Makefile.config

接著修改Makefile.config文件。我這里就不復(fù)述一次啦搜吧,因?yàn)槲以?a href="http://www.reibang.com/p/36badc9fbcc2" target="_blank">Caffe[窮人版]——Ubuntu 16.04 CPU版本安裝寫的很清楚了市俊。因?yàn)檫@里使用Python調(diào)用caffe的庫(kù)。所以我們必須編譯caffe赎败。你也可以看README.md的內(nèi)容。


4. 編譯lib

進(jìn)入$FRCN_ROOT/lib蠢甲,修改setup.py的內(nèi)容(因?yàn)槲疫@里使用CPU僵刮,假如使用GPU的話可以忽略),編譯faster-rcnn的相關(guān)函數(shù)庫(kù)鹦牛。

cd $FRCN_ROOT/lib
vim setup.py

(使用CPU)修改setup.py內(nèi)容搞糕,將# ONLY CPU下一行的代碼注釋。

...
# ONLY CPU    
# CUDA = locate_cuda()

...

def _compile(obj, src, ext, cc_args, extra_postargs, pp_opts):
            ...
            # ONLY CPU
            # self.set_executable('compiler_so', CUDA['nvcc'])
...

ext_modules = [
    ....
    # ONLY CPU
    # Extension('nms.gpu_nms',
    #     ['nms/nms_kernel.cu', 'nms/gpu_nms.pyx'],
    #     library_dirs=[CUDA['lib64']],
    #     libraries=['cudart'],
    #     language='c++',
    #     runtime_library_dirs=[CUDA['lib64']],
    #     # this syntax is specific to this build system
    #     # we're only going to use certain compiler args with nvcc and not with
    #     # gcc the implementation of this trick is in customize_compiler() below
    #     extra_compile_args={'gcc': ["-Wno-unused-function"],
    #                         'nvcc': ['-arch=sm_35',
    #                                  '--ptxas-options=-v',
    #                                  '-c',
    #                                  '--compiler-options',
    #                                  "'-fPIC'"]},
    #     include_dirs = [numpy_include, CUDA['include']]
    # ),
....

然后編譯lib的內(nèi)容

make

5. 編譯caffe

進(jìn)入$FRCN_ROOT/caffe-fast-rcnn曼追,并且編譯代碼

cd $FRCN_ROOT/caffe-fast-rcnn
make -j8 && make pycaffe

假如沒什么報(bào)錯(cuò)窍仰,應(yīng)該是沒問題的了。

運(yùn)行demo

在運(yùn)行demo前礼殊,我們還差重要的模型還沒有驹吮。假如你想自己通過train來獲得也行,但我只是用CPU跑代碼計(jì)算資源有限晶伦,所以就暫時(shí)不做training碟狞,直接下載模型就運(yùn)行啦。假如想自己做的話婚陪,可以看看Beyond the demo: installation for training and testing models族沃。
我們?cè)谶M(jìn)入$FRCN_ROOT/caffe-fast-rcnn后,執(zhí)行下載腳本:

cd $FRCN_ROOT
./data/scripts/fetch_faster_rcnn_models.sh

腳本會(huì)自動(dòng)下載和解壓到data目錄下。你會(huì)看到有一個(gè)faster_rcnn_models的目錄脆淹,里面有兩個(gè)模型文件VGG16_faster_rcnn_final.caffemodelZF_faster_rcnn_final.caffemodel常空。要注意的是,我們身處與天朝當(dāng)中盖溺,而模型壓縮包在dropbox漓糙,所以....你懂得。

運(yùn)行代碼前咐柜,我們要修改lib里面的一些地方兼蜈,主要是因?yàn)槲沂怯肅PU跑的,所以要注釋一些使用gpu的代碼拙友,不然代碼會(huì)報(bào)錯(cuò):
$FRCN_ROOT/lib/fast_rcnn/nms_wrapper.py里面修改:

from fast_rcnn.config import cfg
# from nms.gpu_nms import gpu_nms
from nms.cpu_nms import cpu_nms

def nms(dets, thresh, force_cpu=True):
    """Dispatch to either CPU or GPU NMS implementations."""

    if dets.shape[0] == 0:
        return []
    # if cfg.USE_GPU_NMS and not force_cpu:
    #     return gpu_nms(dets, thresh, device_id=cfg.GPU_ID)
    else:
        return cpu_nms(dets, thresh)

另外为狸,我現(xiàn)在使用的python3運(yùn)行,而代碼是Py2.7寫的遗契,所以我們需要將部分語法變?yōu)镻y3辐棒。這里我就不多講哪些地方做修改了,因?yàn)槎蓟A(chǔ)語法而已牍蜂。

最后運(yùn)行

cd $FRCN_ROOT/
python3 ./tools/demo.py --cpu
今天午飯?jiān)陲執(zhí)瞄T口拍
這是作者給出的demo做展示

因?yàn)槔锩嬗?code>nms將score比較低的目標(biāo)過濾掉漾根,我這里設(shè)置的0.7的thresh。然后我們就只會(huì)看到0.7以上的目標(biāo)鲫竞。顯然作者訓(xùn)練的模型還是有所欠缺的辐怕,作者在README.md里面也寫到了,我們可以通過其他的數(shù)據(jù)集做進(jìn)一步的優(yōu)化从绘。

相關(guān)參考

感謝閱讀寄疏,差不多要睡覺啦!早唞僵井!好夢(mèng)陕截!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市批什,隨后出現(xiàn)的幾起案子农曲,更是在濱河造成了極大的恐慌,老刑警劉巖驻债,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乳规,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡合呐,警方通過查閱死者的電腦和手機(jī)驯妄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來合砂,“玉大人青扔,你說我怎么就攤上這事源织。” “怎么了微猖?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵谈息,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我凛剥,道長(zhǎng)侠仇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任犁珠,我火速辦了婚禮逻炊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘犁享。我一直安慰自己余素,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布炊昆。 她就那樣靜靜地躺著桨吊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凤巨。 梳的紋絲不亂的頭發(fā)上视乐,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音敢茁,去河邊找鬼佑淀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛彰檬,可吹牛的內(nèi)容都是我干的伸刃。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼僧叉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼奕枝!你這毒婦竟也來了棺榔?” 一聲冷哼從身側(cè)響起瓶堕,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎症歇,沒想到半個(gè)月后郎笆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忘晤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年宛蚓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片设塔。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凄吏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情痕钢,我是刑警寧澤图柏,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站任连,受9級(jí)特大地震影響蚤吹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜随抠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一裁着、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拱她,春花似錦二驰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至氧猬,卻和暖如春背犯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盅抚。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工漠魏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妄均。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓柱锹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親丰包。 傳聞我的和親對(duì)象是個(gè)殘疾皇子禁熏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容