tf-faster-rcnn實戰(zhàn)篇

準備篇:
TensorFlow:首先查看TensorFlow的版本奈附,代碼支持的是1.2的版本:

import tensorflow as tf
print tf.__version__
1.1.0

因此卸載并安裝指定版本Tensorflow:

pip install -I tensorflow==1.2.1

安裝:
1、下載tf-faster-rcnn代碼:

git clone https://github.com/endernewton/tf-faster-rcnn.git

2膘茎、到tf-faster-rcnn/lib下編譯Cython 模塊:
需要注意:首先根據(jù)GPU的型號來修改計算能力(Architecture), 官網(wǎng)提供了5種模型對應的計算能力值,我的機子是Tesla K40,所以這里修改sm_52為sm_35,然后執(zhí)行下面代碼進行編譯根盒,否則去重框會出問題

CUDA.jpeg

cd tf-faster-rcnn/lib
make clean
make
cd ..

3褐健、安裝Python COCO API:

cd data
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
cd ../../..

4付鹿、下載模型

./data/scripts/fetch_faster_rcnn_models.sh

5、使用預訓練模型進行測試

./tools/demo.py

但是GPU上跑測試時用ssh進行遠程解釋器繪圖時出錯:RuntimeError: Invalid DISPLAY variable, 這時需要修改demo.py文件:

import matplotlib.pyplot as plt
plt.switch_backend('agg')

上述是GPU版本測試的方法蚜迅,如果是基于CPU舵匾,還需要對以下幾個.py文件進行改動:
a. tf-faster-rcnn/lib/model/nms_wrapper.py:

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

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

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

b. tf-faster-rcnn/lib/model/config.py: 注釋以下代碼

__C.USE_GPU_NMS = False

c. tf-faster-rcnn/lib/setup.py: 注釋以下語句

CUDA = locate_cuda()
self.src_extensions.append('.cu')
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_52',
                                     '--ptxas-options=-v',
                                     '-c',
                                     '--compiler-options',
                                     "'-fPIC'"]},
        include_dirs = [numpy_include, CUDA['include']]

4、運行./tools/demo.py就可以看到結(jié)果啦谁不!
5纽匙、當然如果想看到自己的圖片的檢測結(jié)果,將圖片放在tf-faster-rcnn/data/demo下拍谐,修改源文件demo.py,在im_names下面添加圖片的名稱即可烛缔。

im_names = ['000456.jpg', '000542.jpg', '001150.jpg',
                '001763.jpg', '004545.jpg']   

訓練:
1、準備訓練數(shù)據(jù):數(shù)據(jù)集需要參考VOC2007的數(shù)據(jù)集格式轩拨,主要包括三個部分:
JPEGImages:存放用來訓練的原始圖像践瓷,圖片編號要以6為數(shù)字命名,例如000034.jpg亡蓉,圖片要是JPEG/JPG格式的晕翠,圖片的長寬比(width/height)要在0.462-6.828之間;
Annotations :存放原始圖像中的Object的坐標信息砍濒,一個訓練圖片對應Annotations下的一個同名的XML文件淋肾;
ImageSets/Main :指定用來train,trainval爸邢,val和test的圖片的編號樊卓,因為VOC的數(shù)據(jù)集可以做很多的CV任務,比如Object detection, Semantic segementation, Edge detection等杠河,所以Imageset下有幾個子文件夾(Layout, Main, Segementation)碌尔,修改下Main下的文件 (train.txt, trainval.txt, val.txt, test.txt),里面寫上想要進行任務的圖片的編號
將上述你的數(shù)據(jù)集放在tf-faster-rcnn/data/VOCdevkit2007/VOC2007下面券敌,替換原始VOC2007的JPEGIMages,Imagesets,Annotations,這里也可以直接更換文件夾名稱唾戚。
2、為訓練數(shù)據(jù)創(chuàng)建軟連接
3待诅、修改源代碼:tf-faster-rcnn/experiments/train_faster+rcnn.sh和tf-faster-rcnn/lib/datasets/pascal_voc.py文件
4叹坦、運行下面命令開始訓練,下次訓練之前,需要將data/cache和output(輸出的model存放的位置卑雁,不訓練此文件夾沒有)兩個文件夾刪除募书。

ln -s /Users/steven/data/Trainingdata Trainingdata
./experiments/scripts/test_faster_rcnn.sh 0 TrainData res101

tf-faster-rcnn的工程目錄進行簡單介紹:
data: 存放數(shù)據(jù)轧钓,以及讀取文件的cache;
experiments: 存放配置文件以及運行的log文件,配置文件
lib: python接口
output: 輸出的model存放的位置,不訓練此文件夾沒有
tensorboard: 可視化部分
tools: 訓練和測試的python文件

下面幾篇是caffe框架下faster-rcnn的相關(guān)博客: http://www.cnblogs.com/dudumiaomiao/p/6556111.html
http://blog.csdn.net/u012841667/article/details/69555074
http://blog.csdn.net/samylee/article/details/51201744
http://blog.csdn.net/Gavin__Zhou/article/details/52052915
http://blog.csdn.net/sinat_30071459/article/details/51332084

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锐膜,一起剝皮案震驚了整個濱河市毕箍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌道盏,老刑警劉巖而柑,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荷逞,居然都是意外死亡媒咳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門种远,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涩澡,“玉大人,你說我怎么就攤上這事坠敷∶钔” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵膝迎,是天一觀的道長粥帚。 經(jīng)常有香客問我,道長限次,這世上最難降的妖魔是什么芒涡? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮卖漫,結(jié)果婚禮上费尽,老公的妹妹穿的比我還像新娘。我一直安慰自己羊始,他們只是感情好旱幼,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著店枣,像睡著了一般速警。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鸯两,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機與錄音长豁,去河邊找鬼钧唐。 笑死,一個胖子當著我的面吹牛匠襟,可吹牛的內(nèi)容都是我干的钝侠。 我是一名探鬼主播该园,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼帅韧!你這毒婦竟也來了里初?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤忽舟,失蹤者是張志新(化名)和其女友劉穎双妨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叮阅,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡刁品,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年雳攘,在試婚紗的時候發(fā)現(xiàn)自己被綠了鸟辅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驱敲。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡耻讽,死狀恐怖浑彰,靈堂內(nèi)的尸體忽然破棺而出懦胞,到底是詐尸還是另有隱情退唠,我是刑警寧澤葬燎,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布眯分,位于F島的核電站暑劝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏颗搂。R本人自食惡果不足惜担猛,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丢氢。 院中可真熱鬧傅联,春花似錦、人聲如沸疚察。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽貌嫡。三九已至比驻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岛抄,已是汗流浹背别惦。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留夫椭,地道東北人掸掸。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親扰付。 傳聞我的和親對象是個殘疾皇子堤撵,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

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