目录
使用小浣熊数据集
前提基于https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5代码,网上有两版不同的tensorflow下的faster rcnn代码
一、数据处理
voc数据集下修改这三个文件夹:
- Annotations---用于存放使用labelimage生成的xml 文件
- ImageSets\Main---用于存放trian.txt 、test.txt 、trainval.txt、 val.txt
- JPEGImages—你所有的jpg格式的图片
这里为了测试,使用了小浣熊数据集https://github.com/datitran/raccoon_dataset,数据集里有200张浣熊的照片;数据集已经标记好了,Annotations文件夹里是制作好的标签,JPEGImages文件夹里是源图像。
使用的话只需要在ImageSets\Main 下生成的txt,参照博客https://blog.csdn.net/qq_36301716/article/details/79018170
import os
import random
trainval_percent = 0.9 # trainval数据集占所有数据的比例
train_percent = 8/9.0 # train数据集占trainval数据的比例
xmlfilepath = 'F:/TensorFlow/Faster-RCNN/data/VOCDevkit2007/VOC2007/Annotations'
txtsavepath = 'F:/TensorFlow/Faster-RCNN/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('F:/TensorFlow/Faster-RCNN/data/VOCDevkit2007/VOC2007/ImageSets/Main/trainval.txt', 'w')
ftest = open('F:/TensorFlow/Faster-RCNN/data/VOCDevkit2007/VOC2007/ImageSets/Main/test.txt', 'w')
ftrain = open('F:/TensorFlow/Faster-RCNN/data/VOCDevkit2007/VOC2007/ImageSets/Main/train.txt', 'w')
fval = open('F:/TensorFlow/Faster-RCNN/data/VOCDevkit2007/VOC2007/ImageSets/Main/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()
这些也是制作自己数据集必备步骤,这里我没有用到,用到后来追加
- 批量化命名图片名
- resize图片大小(一般500-600)
- labelIImg标注了自己的图片
二、修改代码及模型位置
train阶段
1、标签修改:代码位于lib\datasets\pascal_voc.py,pascal_voc.py脚本第34行,不要更改_background_,将34行中的标签替换成自己的标签,这里只用到了一个标签:raccoon(之前写错了,晕,一直报错keyerror)。
2、训练参数修改:代码位于lib\config\config.py文件中,可以更改训练的总步数(max_iters)、权值衰减(weight_decay)、学习率(learning_rate)、批次大小(batch_size)等参数。
3、模型位置参数修改 :运行train.py,模型训练完后,模型保存在..\default\voc_2007_trainval\default中,把四个文件拷贝出来放到output\vgg16\voc_2007_trainval\default文件夹中,如下图所示。
测试阶段
修改demo.py中的标签及测试图片修改
批量化处理(见上一篇博客)
测试的结果如下图所示: