tensorflow版faster rcnn代码运行记录

背景:faster-rcnn的使用是由于项目上使用,由外协(sjtu)提供的代码包开始。作为一个目标检测领域的baseline算法,值得深入学习。
简介
Faster RCNN是在SPPnet和Fast RCNN的基础上,为了提升目标区域检测的速度,提出了RPN网络,这是一个全卷积网络,并且与检测网络共享全图卷积网络特征层。Faster RCNN可以简单地看做区域生成网络(RPN)+fast RCNN的系统,用区域生成网络代替fast RCNN中的Selective Search方法。
在GPU上能够打打约5帧每秒的速度,对于PASCAL VOC 2007, 2012, 与 MS COCO 数据集,只需约300个候选区域即可达到很好的识别效果。
论文
Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun ,2017《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》:https://arxiv.org/abs/1506.01497
Xinlei ChenAbhinav Gupta,《An Implementation of Faster RCNN with Study for Region Sampling》:https://arxiv.org/pdf/1702.02138.pdf
代码
官方matlab版本:https://github.com/shaoqingren/faster_rcnn ,依赖于caffe
matlab版本翻译的python版本:https://github.com/rbgirshick/py-faster-rcnn ,依赖于Caffe 与 pycaffe。
python版本翻译的tensorflow版本:https://github.com/endernewton/tf-faster-rcnn
参考博客
https://blog.csdn.net/qq_36269513/article/details/80422276 等。

tf版代码使用记录
(以下内容为外协提供的使用说明,在其基础上做了一些改动,网上应该也都能查到)
一、数据准备
1.将数据集所有标签复制到
‘/tf-faster-rcnn-master/data/VOCdevkit2007/VOC2007/
Annotations’目录下。
2.将数据集所有图片复制到
‘/tf-faster-rcnn-master/data/VOCdevkit2007/VOC2007/JPEGImages’
目录下。
3.将’/tf-faster-rcnn-master/data/VOCdevkit2007/VOC2007/ImageSets/
Main’目录下的test.txt文件、train.txt文件、trainval.txt文件、val.txt文件内容清空。
4.然后,在该目录[’/root/tf-faster-rcnn-master/data’]下执行如下命令:

python generate_sets.py

即生成了随机的训练集train.txt,验证集val.txt,测试集test.txt,以及合并了train.txt和val.txt的trainval.txt文件。

5.打开’/tf-faster-rcnn/lib/datasets/’下的pascal_voc.py(修改类别self.classes[line36]为自己数据集的类别)

6.训练前:
将’/tf-faster-rcnn-master/data/cache中的文件 、
‘/tf-faster-rcnn-master/output/res101/voc_2007_trainval/default’中的上次训练的模型文件删除(非常重要!!!!!)

7.学习率等参数可在/tf-faster-rcnn/lib/model下的config.py文件中进行修改。

8.迭代次数【ITERS 】可在/tf-faster-rcnn/experiments/scripts中的train_faster_rcnn.sh文件中进行修改。

9.检查一下显卡情况:执行命令:

nvidia-smi

查看GPU使用情况,使用内存剩余较多的显卡。

二、开始训练
10.进入tf-faster-rcnn-master目录,执行:

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

----格式为:
#./experiments/scripts/faster_rcnn.sh GPU DATASET NET
另外,
DATASET的选项见experiments/scripts/train_faster_rcnn.sh文件[pascal_voc或pascal_voc_0712或coco],
NET的选项见tf-faster-rcnn-master/tools/train_val.py
[train_net.py, Vgg16,res50,res101,res152,mobile]文件最后。

**注:**生成的模型保存在output目录下,生成的log保存在experiments/logs目录下面。

三、测试过程
11.进入tf-faster-rcnn-master目录,执行:

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

注意: 跑测试利用的是训练生成的模型,所以一定要打开上述文档看一下调用的模型是不是想用的那个模型!

四、跑DEMO测试其他图片
12.进入tf-faster-rcnn目录,执行:

python tools/demo.py

注意:第148行的类别数要与pascal_voc.py统一,
即[ net.create_architecture(“TEST”,]后面的数字

改一下文档中的测试图片及其路径!注意一下调用的模型是哪个!
在用不同迭代参数训练后,demo测试时除了更改类别参数,还要更改模型名称,
tfmodel=’/。。。/tf-faster-rcnn-master/output/res101/voc_2007_trainval/default/res101_faster_rcnn_iter_70000.ckpt’ #model path
测试图片的名字(.txt)以及路径(IMAGEJPEG)

generates_set.py

#generates_set.py
import os
import random
import math

filepath='/media/linux_data/tf-faster-rcnn-master/data/VOCdevkit2007/VOC2007/Annotations'
savepath='/media/linux_data/tf-faster-rcnn-master/data/VOCdevkit2007/VOC2007/ImageSets/Main/'

train_percent=0.7  #percentage of train
val_percent=0.1    #percentage of val
dirs = os.listdir(filepath)
for i in range(len(dirs)):
    dirs[i]=dirs[i].split('.')[0]
random.shuffle(dirs)
numOftrain = int(math.floor(len(dirs)*train_percent))
numOfval   = int(math.floor(len(dirs)*val_percent))

f = open(savepath+'train.txt','w')
for i in range(numOftrain):
    f.write(dirs[i]+'\n')
f.close()

f = open(savepath+'val.txt','w')
for i in range(numOftrain, numOftrain+numOfval):
    f.write(dirs[i]+'\n')
f.close()

f = open(savepath+'test.txt','w')
for i in range(numOftrain+numOfval,len(dirs)):
    f.write(dirs[i]+'\n')
f.close()
#newly added
f = open(savepath+'trainval.txt','w')
for i in range(numOftrain+numOfval):
    f.write(dirs[i]+'\n')
f.close()

暂时记录到这里,后面有空再补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值