系統(tǒng)配置
我所使用的環(huán)境總體來說為:
- Ubuntu 18.04
- cuda 9.0
- cudnn 7.5.0
- python 3.6.7
- tensorflow 1.10.0
- gcc 4.8.5(tf-faster-rcnn不支持6以上版本的gcc)
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)行過程
- 根據(jù)顯卡更改下對應(yīng)的計(jì)算單元:
修改tf-faster-rcnn/lib/setup.py中第130行的arch參數(shù),比如我的顯卡是1070,算力是6.1滥酥,所以是sm_61
顯卡的算力可以查詢下面網(wǎng)址: http://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/
- 編譯Cython
仍然在lib路徑下戈盈,編譯Cython模塊(確保你已經(jīng)安裝了easydict蛮寂,如果沒有社付,pip install easydict):
make clean
make
cd ..
- 安裝COCO API(代碼需要API來訪問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 這個步驟時(shí),終端報(bào)錯:
查找資料發(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
- 配置數(shù)據(jù)(按照py-faster-rcnn的說明,設(shè)置VOC和COCO數(shù)據(jù)集烛愧,這些步驟包括下載數(shù)據(jù)和在數(shù)據(jù)文件夾中創(chuàng)建可選的軟鏈接)
- 下載訓(xùn)練集油宜、驗(yàn)證集、測試集以及VOCdevkit
在想要存放數(shù)據(jù)集的位置打開終端怜姿,輸入下列命令:
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
- 將所有壓縮包解壓到一個名為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
- 下載預(yù)訓(xùn)練模型
需要翻墻慎冤,如果翻不了墻就從網(wǎng)盤里下吧,下面提供一個預(yù)訓(xùn)練模型的網(wǎng)盤鏈接:
預(yù)訓(xùn)練模型 提取碼:8ahl
(感謝提供下載鏈接的無私可愛人er)
下載過后復(fù)制到data文件夾內(nèi)對其進(jìn)行解壓:
tar zxvf voc_0712_80k-110k.tgz(在data文件夾中解壓)
data文件夾解壓之后如下圖所示:
- 創(chuàng)建一個文件夾和一個軟鏈接以使用預(yù)訓(xùn)練模型
在tf-faster-rcnn根目錄創(chuàng)建一個output文件夾并且在其中存放預(yù)訓(xùn)練模型的軟鏈接沧卢,使用軟連接來使用預(yù)訓(xùn)練模型蚁堤,output文件夾中會在每次訓(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 ../../..
- 對demo進(jìn)行測試
上面的Res101網(wǎng)絡(luò)預(yù)訓(xùn)練模型是已經(jīng)經(jīng)過imagenet和voc0712數(shù)據(jù)集訓(xùn)練好的但狭,用demo來調(diào)用output文件夾下的該模型披诗,展示其實(shí)際檢測效果。仍然按照步驟走:
GPU_ID=0
CUDA_VISIBLE_DEVICES=${GPU_ID} ./tools/demo.py
最終效果如圖所示:
使用訓(xùn)練好的faster模型對數(shù)據(jù)進(jìn)行測試
這里有點(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é)果如圖所示:
會在output文件夾下建立一個路徑為:
/output/res101/voc_2007_test/default/res101_faster_rcnn_iter_110000/
的文件夾立磁,res101代表網(wǎng)絡(luò)名稱呈队,voc_2007_test代表數(shù)據(jù)集,與訓(xùn)練不同唱歧,該文件夾下不再是模型文件宪摧。
到此為止,所有步驟都成功的話則說明tf-faster-rcnn平臺搭建完成颅崩!