Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】

系统配置

我所使用的环境总体来说为:

  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+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】_第1张图片
ubuntu系统配置

Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】_第2张图片
显卡配置:GeForce GTX 1060

Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】_第3张图片
显卡配置:GeForce GTX 1060

Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】_第4张图片
屏幕截图

Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】_第5张图片
屏幕截图

Cuda版本9.0

Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】_第6张图片
Cudnn版本7.5

Python版本3.6.7

Tensorflow版本1.10

Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】_第7张图片
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运行过程

  1. 根据显卡更改下对应的计算单元:
    修改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/
    Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】_第8张图片
    参考
  2. 编译Cython
    仍然在lib路径下,编译Cython模块(确保你已经安装了easydict,如果没有,pip install easydict):
    make clean
    make
    cd ..
  1. 安装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 这个步骤时,终端报错:

Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】_第9张图片
报错信息

查找资料发现修改下载方式-https改为ssh,把’ https://git.openwrt.org/feed/packages.git’改为’ git://git.openwrt.org/feed/packages.git’,即改为如下指令就可以成功执行:

    git clone git://github.com/pdollar/coco.git
  1. 配置数据(按照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
  1. 下载预训练模型
    需要翻墙,如果翻不了墙就从网盘里下吧,下面提供一个预训练模型的网盘链接:
    预训练模型 提取码:8ahl
    (感谢提供下载链接的无私可爱人er)
    下载过后复制到data文件夹内对其进行解压:
    tar zxvf voc_0712_80k-110k.tgz(在data文件夹中解压)

data文件夹解压之后如下图所示:


Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】_第10张图片
data文件夹
  1. 创建一个文件夹和一个软链接以使用预训练模型
    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 ../../..
  1. 对demo进行测试
    上面的Res101网络预训练模型是已经经过imagenet和voc0712数据集训练好的,用demo来调用output文件夹下的该模型,展示其实际检测效果。仍然按照步骤走:
    GPU_ID=0
    CUDA_VISIBLE_DEVICES=${GPU_ID} ./tools/demo.py

最终效果如图所示:


Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】_第11张图片
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

结果如图所示:

Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】_第12张图片
预训练模型测试结果

会在output文件夹下建立一个路径为:
/output/res101/voc_2007_test/default/res101_faster_rcnn_iter_110000/
的文件夹,res101代表网络名称,voc_2007_test代表数据集,与训练不同,该文件夹下不再是模型文件。

到此为止,所有步骤都成功的话则说明tf-faster-rcnn平台搭建完成!

你可能感兴趣的:(Ubuntu+GPU+Tensorflow运行tf-faster-rcnn【光纤分类项目】)