您的位置:首页 > 其它

tf-faster-rcnn 训练自己的数据,并运行demo测试

2019-01-14 14:15 465 查看

(主要参考:https://blog.csdn.net/char_QwQ/article/details/80980505
      https://blog.csdn.net/hitzijiyingcai/article/details/81636455)
一.划分训练验证以及测试集,生成四个txt文档
   上一篇博客已经介绍如何标记数据,获得xml文件(https://blog.csdn.net/weixin_41440103/article/details/86433850),现在对其进行划分,我们采用python3代码,具体如下:

import os
import random

trainval_percent = 0.5
train_percent = 0.5
xmlfilepath = '/home/hqd/桌面/VOC2010/Annotations'
txtsavepath = '/home/hqd/桌面/VOC2010/ImageSets/Main'
total_xml = os.listdir(xmlfilepath)

num=len(total_xml)
list=range(num)
tv=int(num*trainval_percent)
tr=int(tv*train_percent)
trainval= random.sample(list,tv)
train=random.sample(trainval,tr)

ftrainval = open(txtsavepath+'/trainval.txt', 'w')
ftest = open(txtsavepath+'/test.txt', 'w')
ftrain = open(txtsavepath+'/train.txt', 'w')
fval = open(txtsavepath+'/val.txt', 'w')

for i  in list:
name=total_xml[i][:-4]+'\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)

ftrainval.close()
ftrain.close()
fval.close()
ftest .close()

二.替换及更改
1.首先,在tf-faster-rcnn/lib/datasets目录下的pascal_voc.py里第36行更改自己的类别,'background’切记不可删掉,把后面的原来的20个label换成自己的,不用更改类别数目,也没有地方可以更改。

2.然后把你的xml文件放置在tf-faster-rcnn/data/VOCdevkit2007/VOC2007/Annotations路径下,记得把原来的删掉;同时把你的jpg文件放在tf-faster-rcnn/data/VOCdevkit2007/VOC2007/JPEGImages路径下,xml和jpg替换完了,现在该txt了,把之前matlab生成是四个txt文档放在tf-faster-rcnn/data/VOCdevkit2007/VOC2007/ImageSets/Layout 和 tf-faster-rcnn/data/VOCdevkit2007/VOC2007/ImageSets/Main。

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

4.在开始训练之前,还需要把之前训练产生的模型以及cache删除掉,分别在tf-faster-rcnn/output/vgg16/voc_2007_trainval/default路径下和tf-faster-rcnn/data/cache路径下.

5.修改tools/demo.py.这里的数字是类别+1

net.create_architecture("TEST",2,

tag='default',anchor_scales=[8, 16, 32])

5.就可以开始训练了:

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

三.可以做额外的修改.


四.demo测试

1.修改tools/demo.py
 (1)修改测试图片的名字,并在data/demo里添加测试图片
 (2)将训练结果里/output/vgg16/voc_2007_trainval/default的其中一个文件后缀修改为ckpt,然后将这四个文件拷贝到/data/output/vgg16/voc_2007_trainval+voc_2012_trainval/default下
 
 (3)修改class
   (4)修改为自己训练的模型

 (5)修改类别
 
(6)终端运行代码

python ./tools/demo.py --net vgg16

假如不想那么麻烦输入参数,可以在demo的parse_args()里修改默认参数
parser.add_argument(‘–net’, dest=’demo_net’, help=’Network to use [myvgg1024]’,
choices=NETS.keys(), default=’myvgg1024’)
这样只需要输入 ./tools/demo.py 就可以了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: