Python3+tensorflow-gpu运行tf-faster-rcnn目标检测

在网上找了很多关于运行tf-faster-rcnn的资料,首先感谢这位博主的博文对我的帮助很大https://blog.csdn.net/char_QwQ/article/details/80980505,本文主要是对我遇到的一些问题进行修改,方便以后使用,废话不多说直接进入正题。

系统 :ubuntu 16

内存:16G

GPU:GTX1070ti

代码链接:https://github.com/endernewton/tf-faster-rcnn.git

Faster rcnn的个人理解请转到:https://blog.csdn.net/weixin_42111393/article/details/102687128

1.下载代码

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

2.根据你的显卡更改对应的架构

更改代码的tf-faster-rcnn/lib/setup.py的第130行'nvcc': ['-arch=sm_52',换成一下对应列表中的代码(我的显卡是1070ti的代码是sm_61):

                                                            Python3+tensorflow-gpu运行tf-faster-rcnn目标检测_第1张图片

3.安装一些包

你的python可能没有opencv-python, easydict,需要提前安装(sudo apt-get install python-opencv,pip install easydict)

4.编译Cython

以下命令是在tf-faster-rcnn/lib路径下运行

make clean

make

cd ..

5.安装coco API

接着上面步骤继续输入命令:

cd data

git clone https://github.com/pdollar/coco.git

cd coco/PythonAPI

make

cd  ../../..

6. 下载数据集:

下载训练集,验证集,测试集和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


解压这些数据集

tar xvf VOCtrainval_06-Nov-2007.tar

tar xvf VOCtest_06-Nov-2007.tar

tar xvf VOCdevkit_08-Jun-2007.tar

把解压后的文件夹VOCdevkit重命名为VOCdevkit2007,然后把这个VOCdevkit2007文件夹剪切到tf-fater-rcnn/data路径下。

7.下载预训练模型:

链接:https://pan.baidu.com/s/1p0vqMdtqusmtuetnwKsq4g

密码:k4j7

8.建立预训练模型的软连接

在tf-faster-rcnn目录下建立output文件夹,并使用软连接来使用预训练模型,在tf-faster-rcnn路径下运行一下命令:

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 ../../..

你在运行以上命令完之后先看output文件下的voc_2007_trainval+voc_2012_trainval文件夹里面有没有default文件夹(这个是文件夹不是文件),打开default文件查看里面是不是训练好的网络文件,如果没有直接解压第7步中下载好的压缩文件,然后把解压后的voc_2007_trainval+voc_2012_trainval文件里面的default文件夹直接剪切到上面输命令行生成的voc_2007_trainval+voc_2012_trainval文件夹下面。

9.对图片进行测试

测试图片在data/demo中,在tf-faster-rcnn路径下运行以下命令:

GPU_ID=0

CUDA_VISIBLE_DEVICES=${GPU_ID} ./tools/demo.py

在运行以上命令之后我的电脑报错No module named ‘_tkinter’,解决方法可以在终端输入命令行:

sudo apt-get install python3-tk

安装完成后输入命令:

python

import  _ tkinter

如果没有报错就安装成功了

安装成功以后再重新运行一次

CUDA_VISIBLE_DEVICES=${GPU_ID} ./tools/demo.py

会看到对demo中的图片进行目标检测

10.使用训练好的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])

改好之后再在终端运行一下命令:

GPU_ID=0

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

运行结果:

Python3+tensorflow-gpu运行tf-faster-rcnn目标检测_第2张图片

11.训练模型

模型的权重数据存网盘

链接:https://pan.baidu.com/s/1muc93FNmYg5Ly_3pw4TTlQ

密码:se0w

在data目录下创建一个imagenet_weights文件夹,解压权重数据并把解压后的vgg_16.ckpt重命名为vgg16.ckpt,因为后面在调用权重数据的时候名字需要对应的上。

开始训练(这里最后的vgg16就是对应的权重数据,名字要对的上,0是GPU的ID,pascal_voc是训练使用的数据集):

./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc vgg16

为了节省时间并排除错误,我把迭代次数只设置了100次,把./experiments/scripts/train_faster_rcnn.sh里的第22行把ITERS=70000改成ITERS=100,同时记得把./experiments/scripts/test_faster_rcnn.sh的ITERS也改成100。

训练结果:

Python3+tensorflow-gpu运行tf-faster-rcnn目标检测_第3张图片

由于仅仅迭代了100次,所以结果很差。

12.替换自己的数据

关于数据集的制作和注意地方留待以后更新

 

你可能感兴趣的:(目标检测,tensorflow,python,faster-rcnn,tensorflow-gpu,python3.5)