系统配置
我所使用的环境总体来说为:
- 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)
显卡配置: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
改进方案论文链接:https://arxiv.org/pdf/1702.02138.pdf
Demo运行过程
- 根据显卡更改下对应的计算单元:
修改tf-faster-rcnn/lib/setup.py中第130行的arch参数,比如我的显卡是1070,算力是6.1,所以是sm_61
显卡的算力可以查询下面网址: http://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/
参考 - 编译Cython
仍然在lib路径下,编译Cython模块(确保你已经安装了easydict,如果没有,pip install easydict):
make clean
make
cd ..
- 安装COCO API(代码需要API来访问COCO dataset)
这点按照GitHub的步骤走就ok:
cd data
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
cd ../../..
在执行git clone https://github.com/pdollar/coco.git 这个步骤时,终端报错:
查找资料发现修改下载方式-https改为ssh,把’https://git.openwrt.org/feed/packages.git’改为’git://git.openwrt.org/feed/packages.git’,即改为如下指令就可以成功执行:
git clone git://github.com/pdollar/coco.git
- 配置数据(按照py-faster-rcnn的说明,设置VOC和COCO数据集,这些步骤包括下载数据和在数据文件夹中创建可选的软链接)
- 下载训练集、验证集、测试集以及VOCdevkit
在想要存放数据集的位置打开终端,输入下列命令:
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文件夹应由如下构成
VOCdevkit/ # development kit
VOCdevkit/VOCcode/ # VOC utility code
VOCdevkit/VOC2007 # image sets, annotations, etc.
... and several other directories ...
- 创建数据集的软连接
cd tf-faster-rcnn-master/data
ln -s $VOCdevkit VOCdevkit2007
- 下载预训练模型
需要翻墙,如果翻不了墙就从网盘里下吧,下面提供一个预训练模型的网盘链接:
预训练模型 提取码:8ahl
(感谢提供下载链接的无私可爱人er)
下载过后复制到data文件夹内对其进行解压:
tar zxvf voc_0712_80k-110k.tgz(在data文件夹中解压)
data文件夹解压之后如下图所示:
data文件夹
- 创建一个文件夹和一个软链接以使用预训练模型
在tf-faster-rcnn根目录创建一个output文件夹并且在其中存放预训练模型的软链接,使用软连接来使用预训练模型,output文件夹中会在每次训练后存放训练好的模型,这里按照步骤走就行:
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进行测试
上面的Res101网络预训练模型是已经经过imagenet和voc0712数据集训练好的,用demo来调用output文件夹下的该模型,展示其实际检测效果。仍然按照步骤走:
GPU_ID=0
CUDA_VISIBLE_DEVICES=${GPU_ID} ./tools/demo.py
最终效果如图所示:
Demo.py效果图
使用训练好的faster模型对数据进行测试
这里有点地方需要改:首先把 tf-faster-rcnn/lib/datasets/voc_eval.py的第121行的
with open(cachefile,'w') as f
改成
with open(cachefile,'wb') as f
同时还要把第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
结果如图所示:
预训练模型测试结果会在output文件夹下建立一个路径为:
/output/res101/voc_2007_test/default/res101_faster_rcnn_iter_110000/
的文件夹,res101代表网络名称,voc_2007_test代表数据集,与训练不同,该文件夹下不再是模型文件。
到此为止,所有步骤都成功的话则说明tf-faster-rcnn平台搭建完成!
网友评论