faster r-cnn训练、测试、检测(含批量检测图片)

faster r-cnn(tensorflow版本)训练VOC数据集、测试、检测指南

使用的faster r-cnn代码github地址

https://github.com/endernewton/tf-faster-rcnn

git下载:

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

1.准备工作

首先根据自己的显卡调整默认计算能力,打开/lib/setup.py文件,第130行的'-arch=sm_52'改变成你自己显卡的计算能力值

比如本文使用的显卡是gtx1080ti,就改成'-arch=sm_61'

具体计算能力从如下地址查找

https://blog.csdn.net/huixingshao/article/details/82215703

之后进行编译,依次执行

cd tf-faster-rcnn/lib

make clean

make

cd ..

2.训练VOC数据集

将下载好的VOC数据集放在/data文件夹下面

/data/VOCdevkit2007/VOC2007/

里面放入三个文件

如若自己创建的数据集,也可以建立软连接的形式

使用命令

ln -s 自建创建的数据集地址 VOCdevkit2007

例如

ln -s /home/omnisky/DATASET/自建数据集/VOCdevkit2007 VOCdevkit2007
下载预训练好的vgg16权重,依次执行

mkdir -p data/imagenet_weights
cd data/imagenet_weights
wget -v http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz
tar -xzvf vgg_16_2016_08_28.tar.gz
mv vgg_16.ckpt vgg16.ckpt
cd ../..

这时候下载好的vgg16预训练权重就存放在data/imagenet_weights文件夹中

如若下载不下来,请在百度网盘中下载,地址

https://pan.baidu.com/s/1dHW8-My1shD36Phsd9YMFg

分享码:gk10

如若你使用的是自己创建的VOC数据集,还需更改以下几个东西:

打开/lib/datasets/pascal_voc.py文件

将数据集类别名称改成你自己的

    self._classes = ('__background__',  # always index 0
                     'aeroplane', 'bicycle', 'bird', 'boat',
                     'bottle', 'bus', 'car', 'cat', 'chair',
                     'cow', 'diningtable', 'dog', 'horse',
                     'motorbike', 'person', 'pottedplant',
                     'sheep', 'sofa', 'train', 'tvmonitor')

其中'__background__',作为第一个不能删除

如若想修改一些参数配置,可打开/data/model/config.py文件

若想修改训练或者测试时的迭代次数,打开/experiments/scripts//experiments/train_faster_rcnn.sh或者test_faster_rcnn.sh文件,

其中的

  pascal_voc)
    TRAIN_IMDB="voc_2007_trainval"
    TEST_IMDB="voc_2007_test"
    STEPSIZE="[50000]"
    ITERS=70000
    ANCHORS="[8,16,32]"
    RATIOS="[0.5,1,2]"

红色的数字是迭代次数,修改成你想要的,根据自己创建的数据集大小更改

如果,你已经训练过一次,在训练的话,需要删除以下几个文件才能进行下一次训练

清空/output/vgg16文件夹中的内容

清空/data/cache文件夹中的内容

最后执行命令进行训练

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

3.测试

训练完成后程序会自动的测试,但如果你不小心关闭或者出了一些问题不需要担心,以下方法可以再次进行测试

首先根据/out/vgg16/voc_2007_trainval文件中的不同迭代次数的权重选择你要测试使用的权重,

/experiments/scripts//experiments/test_faster_rcnn.sh文件中更改

其中的

  pascal_voc)
    TRAIN_IMDB="voc_2007_trainval"
    TEST_IMDB="voc_2007_test"
    STEPSIZE="[50000]"
    ITERS=70000
    ANCHORS="[8,16,32]"
    RATIOS="[0.5,1,2]"

红色的数字是迭代次数,修改成你想要的

之后执行命令进行测试

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

4.检测

如若想要检测出图片的话,需要执行/tools/demo.py文件

需要在demo.py文件中做出以下的更改

修改数据集类别名称

CLASSES = ('__background__',
           'aeroplane', 'bicycle', 'bird', 'boat',
           'bottle', 'bus', 'car', 'cat', 'chair',
           'cow', 'diningtable', 'dog', 'horse',
           'motorbike', 'person', 'pottedplant',
           'sheep', 'sofa', 'train', 'tvmonitor')

其中第一类别'__background__',不能删除

 

修改数据集类别数量,在第141行

net.create_architecture("TEST", 21,tag='default', anchor_scales=[8, 16, 32])

其中红字是需要修改的,注意要算上'__background__'这一个类别,所以要在你自己数据集的总类别数上加1
 

修改需要测试的图片名称

在148行,将你要检测的图片名称加入im_names中

且将你要检测的图片放入/data/demo文件夹中

 

如若遇到tensorflow版本导致训练后的权重保存格式问题,可修改第120行的tfmodel

改成 

tfmodel = os.path.join('/home/omnisky/project/tf-faster-rcnn/output/vgg16/voc_2007_trainval/default/vgg16_faster_rcnn_iter_70000.ckpt')

最后执行命令

python /tools/demo.py

5.批量检测

将其中的148行的im_names = [……]删除,更改为下面的代码即可

test_image_path = '检测图片存储的位置'    
im_names = os.listdir(test_image_path)

最后执行命令

python /tools/demo.py

你可能感兴趣的:(深度学习,目标检测)