Ubuntu+GPU+Tensorflow運(yùn)行tf-faster-rcnn【光纖分類(lèi)項(xiàng)目】

系統(tǒng)配置

我所使用的環(huán)境總體來(lái)說(shuō)為:

  1. Ubuntu 18.04
  2. cuda 9.0
  3. cudnn 7.5.0
  4. python 3.6.7
  5. tensorflow 1.10.0
  6. gcc 4.8.5(tf-faster-rcnn不支持6以上版本的gcc)
ubuntu系統(tǒng)配置

顯卡配置:GeForce GTX 1060

顯卡配置:GeForce GTX 1060

屏幕截圖

屏幕截圖

Cuda版本9.0

Cudnn版本7.5

Python版本3.6.7

Tensorflow版本1.10

gcc版本4.8.5

Github代碼鏈接

本文使用的代碼:https://github.com/endernewton/tf-faster-rcnn
官方代碼:https://github.com/ShaoqingRen/faster_rcnn
半官方代碼:https://github.com/rbgirshick/py-faster-rcnn
Faster-RCNN原文鏈接:https://arxiv.org/pdf/1506.01497.pdf
改進(jìn)方案論文鏈接:https://arxiv.org/pdf/1702.02138.pdf

Demo運(yùn)行過(guò)程

  1. 根據(jù)顯卡更改下對(duì)應(yīng)的計(jì)算單元:
    修改tf-faster-rcnn/lib/setup.py中第130行的arch參數(shù),比如我的顯卡是1070,算力是6.1,所以是sm_61
    顯卡的算力可以查詢(xún)下面網(wǎng)址: http://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/
    參考
  2. 編譯Cython
    仍然在lib路徑下,編譯Cython模塊(確保你已經(jīng)安裝了easydict,如果沒(méi)有,pip install easydict):
    make clean
    make
    cd ..
  1. 安裝COCO API(代碼需要API來(lái)訪(fǎng)問(wèn)COCO dataset)
    這點(diǎn)按照GitHub的步驟走就ok:
    cd data
    git clone https://github.com/pdollar/coco.git
    cd coco/PythonAPI
    make
    cd ../../..

在執(zhí)行g(shù)it clone https://github.com/pdollar/coco.git 這個(gè)步驟時(shí),終端報(bào)錯(cuò):

報(bào)錯(cuò)信息

查找資料發(fā)現(xiàn)修改下載方式-https改為ssh,把’https://git.openwrt.org/feed/packages.git’改為’git://git.openwrt.org/feed/packages.git’,即改為如下指令就可以成功執(zhí)行:

    git clone git://github.com/pdollar/coco.git
  1. 配置數(shù)據(jù)(按照py-faster-rcnn的說(shuō)明,設(shè)置VOC和COCO數(shù)據(jù)集,這些步驟包括下載數(shù)據(jù)和在數(shù)據(jù)文件夾中創(chuàng)建可選的軟鏈接)
  • 下載訓(xùn)練集、驗(yàn)證集、測(cè)試集以及VOCdevkit
    在想要存放數(shù)據(jù)集的位置打開(kāi)終端,輸入下列命令:
    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
  • 將所有壓縮包解壓到一個(gè)名為VOCdevkit的文件夾中
    tar xvf VOCtrainval_06-Nov-2007.tar
    tar xvf VOCtest_06-Nov-2007.tar
    tar xvf VOCdevkit_08-Jun-2007.tar
  • VOCdevkit文件夾應(yīng)由如下構(gòu)成
    VOCdevkit/                                    # development kit
    VOCdevkit/VOCcode/                   # VOC utility code
    VOCdevkit/VOC2007                    # image sets, annotations, etc.
    ... and several other directories ...
  • 創(chuàng)建數(shù)據(jù)集的軟連接
    cd tf-faster-rcnn-master/data 
    ln -s $VOCdevkit VOCdevkit2007
  1. 下載預(yù)訓(xùn)練模型
    需要翻墻,如果翻不了墻就從網(wǎng)盤(pán)里下吧,下面提供一個(gè)預(yù)訓(xùn)練模型的網(wǎng)盤(pán)鏈接:
    預(yù)訓(xùn)練模型 提取碼:8ahl
    (感謝提供下載鏈接的無(wú)私可愛(ài)人er)
    下載過(guò)后復(fù)制到data文件夾內(nèi)對(duì)其進(jìn)行解壓:
    tar zxvf voc_0712_80k-110k.tgz(在data文件夾中解壓)

data文件夾解壓之后如下圖所示:


data文件夾
  1. 創(chuàng)建一個(gè)文件夾和一個(gè)軟鏈接以使用預(yù)訓(xùn)練模型
    tf-faster-rcnn根目錄創(chuàng)建一個(gè)output文件夾并且在其中存放預(yù)訓(xùn)練模型的軟鏈接,使用軟連接來(lái)使用預(yù)訓(xùn)練模型,output文件夾中會(huì)在每次訓(xùn)練后存放訓(xùn)練好的模型,這里按照步驟走就行:
    NET=res101
    TRAIN_IMDB=voc_2007_trainval+voc_2012_trainval
    mkdir -p output/${NET}/${TRAIN_IMDB}
    cd output/${NET}/${TRAIN_IMDB}
    ln -s ../../../data/voc_2007_trainval+voc_2012_trainval ./default
    cd ../../..
  1. 對(duì)demo進(jìn)行測(cè)試
    上面的Res101網(wǎng)絡(luò)預(yù)訓(xùn)練模型是已經(jīng)經(jīng)過(guò)imagenet和voc0712數(shù)據(jù)集訓(xùn)練好的,用demo來(lái)調(diào)用output文件夾下的該模型,展示其實(shí)際檢測(cè)效果。仍然按照步驟走:
    GPU_ID=0
    CUDA_VISIBLE_DEVICES=${GPU_ID} ./tools/demo.py

最終效果如圖所示:


Demo.py效果圖

使用訓(xùn)練好的faster模型對(duì)數(shù)據(jù)進(jìn)行測(cè)試

這里有點(diǎn)地方需要改:首先把 tf-faster-rcnn/lib/datasets/voc_eval.py的第121行的

with open(cachefile,'w') as f

改成

with open(cachefile,'wb') as f

同時(shí)還要把第105行的

cachefile = os.path.join(cachedir, '%s_annots.pkl' % imagesetfile)

改成

cachefile = os.path.join(cachedir, '%s_annots.pkl' % imagesetfile.split("/")[-1].split(".")[0])

然后在tf-faster-rcnn根目錄中輸入下面命令:

GPU_ID=01
./experiments/scripts/test_faster_rcnn.sh $GPU_ID pascal_voc_0712 res101

結(jié)果如圖所示:

預(yù)訓(xùn)練模型測(cè)試結(jié)果

會(huì)在output文件夾下建立一個(gè)路徑為:
/output/res101/voc_2007_test/default/res101_faster_rcnn_iter_110000/
的文件夾,res101代表網(wǎng)絡(luò)名稱(chēng),voc_2007_test代表數(shù)據(jù)集,與訓(xùn)練不同,該文件夾下不再是模型文件。

到此為止,所有步驟都成功的話(huà)則說(shuō)明tf-faster-rcnn平臺(tái)搭建完成!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容