python3.5+Tensorflow+Faster R-CNN在ubuntu下训练数据,进行表面缺陷检测(二)

接上一篇博文,python3.5+Tensorflow+Faster R-CNN在ubuntu下训练数据,进行表面缺陷检测(一)

前期准备

0.下载faster-rcnn源码:https://github.com/endernewton/tf-faster-rcnn ,解压

1.下载VOCdevkit文件,解压,改名为VOCdevkit2007。因为用我们自己制作的数据集,里面没用的文件我都删除了。

下载链接       提取码:wopy

复制到tf-faster-rcnn/文件夹下。

2.将上一篇博文制作好的数据集,放在文件夹VOCdevkit2007,然后文件夹结构如下图。(其实也可以通过创建链接的方式)

3.下载权值文件,百度云vgg_16   提取码:upw0, 解压。

划分训练集和测试集

新建一个.py文件(我在tf-faster-rcnn文件夹下)-->执行此py文件。会在VOCdevkit2007/VOC2007/ImageSets/Main下生成4个txt文件。注意文件路径,根据自己情况修改。

#create_4_txt.py

import os
import random

trainval_percent = 0.7
train_percent = 0.7
xmlfilepath = 'data/VOCdevkit2007/VOC2007/Annotations'  #自行修改
txtsavepath = 'data/VOCdevkit2007/VOC2007/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()
print('Well Done!!!')

其实生成的就是一些图片文件名,分别用于训练和测试。

 

修改源码文件

0.进入tf-faster-rcnn\lib文件夹下,make一下

cd ~/tf-faster-rcnn/lib   #文件路径,执行修改
make

1.tf-faster-rcnn\data下创建文件夹imagenet_weights,将解压的权值文件vgg16.ckpt(vgg_16.ckpt改名为vgg16.ckpt)拷贝进imagenet_weights。(当然,你也可以修改tf-faster-rcnn\experiments\scripts\train_faster_rcnn.sh中,--weight参数)

2.修改tf-faster-rcnn\experiments\scripts\train_faster_rcnn.sh

数据集是用的pascal_voc,所以我们修改pascal_voc条件下的参数,ITERS为迭代次数,根据情况自定义,

相应的,test_faster_rcnn.sh文件中,ITERS也要进行修改,不然后面测试会报错。

3.修改tf-faster-rcnn\lib\datasets\pascal_voc.py

根据自己的检测分类情况去改,我检测5类,分别为凹坑、划痕、。。。(英语不太好表达,直接用拼音,??),注意

‘__background__’要保留。

4.修改 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])

4.删除缓存

在开始训练之前,需要把cache删除掉,分别在tf-faster-rcnn/data/cache和tf-faster-rcnn/data/VOCdevkit2007/annotations_cache路径下,(首次训练没有,可不管)。

如果是重新开始训练,删除tf-faster-rcnn/output/vgg16/voc_2007_trainval/default路径下所有文件

如果是接着之前的结果继续训练,就不用删除。

终端输入命令,开始训练。。。。

cd ~/tf-faster-rcnn   #路径执行修改
./experiments/scripts/train_faster_rcnn.sh 0  pascal_voc vgg16

训练是一个漫长的过程。。。

训练结束后,会自动调用train_faster_rcnn.sh进行测试。日志文件保存在experiments/logs文件夹下,可随时查看记录。

我只简单迭代了500次,试试效果。

训练阶段完毕!

下一篇,demo测试(其实很简单),待续。

 

 

  • 3
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值