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()

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorFlow 2 Faster RCNN 是基于 TensorFlow 2 的一个目标检测算法,它使用 Faster RCNN 框架来进行图像中的目标检测。Faster RCNN 是一种常用的目标检测算法,采用卷积神经网络作为特征提取器,并通过候选区域生成和预测来确定图像中的目标框。 TensorFlow 2 Faster RCNN 的优势在于其使用 TensorFlow 2 的新特性,如动态图、eager execution 和更直观的 API,使得开发者能够更加轻松地构建和训练模型。它提供了高度可定制化的模型架构,使得用户可以根据自己的需求进行修改和扩展。此外,TensorFlow 2 Faster RCNN 还支持分布式训练和推理,可以加速模型的训练和预测过程。 TensorFlow 2 Faster RCNN 的应用范围广泛,可用于多个领域,如物体识别、行人检测、车辆识别等。它可以帮助我们在图像中准确地定位和识别不同类别的目标,为自动驾驶、视频监控、人脸识别等应用提供强大的支持。 然而,TensorFlow 2 Faster RCNN 也存在一些挑战。首先,它需要大量的训练数据和计算资源来训练高质量的模型。其次,模型的训练速度可能较慢,特别是在有限的硬件资源下。最后,模型对小目标的检测效果可能会受到一定影响,需要进一步的优化。 总之,TensorFlow 2 Faster RCNN 是一个强大的目标检测算法,采用了 TensorFlow 2 的新特性,开发者可以利用其丰富的功能和易用的接口来构建和训练自己的目标检测模型。尽管面临一些挑战,但它在图像识别领域具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值