tf-faster-rcnn 训练自己的数据

【tf-faster-rcnn 训练自己的数据】代码参考:git clone https://github.com/endernewton/tf-faster-rcnn.git
训练过程参考:https://blog.csdn.net/yaoqi_isee/article/details/79254574
整个过程步骤:准备数据,数据格式转化为VOC数据,代码修改
训练过程:
准备数据:这里以imagenet的数据为例,选择训练枪支这个物品(imagenet中:n02749479(枪)n04090263(狙击枪)n04086273(手枪)n03527444(手枪,一般有枪套包着)),直接下载Imagenet1000类数据
数据整理成VOC的数据类型重名图片和xml,修改xml部分内容(过滤部分xml数据,faster rcnn对长宽比例有特殊要求)
特别注意:对imagenet数据进行过滤,否则会出现一系列异常错误
参考:(https://blog.csdn.net/jiajunlee/article/details/50470897)
说明
由于Faster R-CNN程序自身的原因,对数据集的属性有一些要求,下面将进行分析和说明方法。
默认情况,训练对VOC2007数据集的属性是完全支持的,所以,删除ImageNet的部分数据,以满足VOC2007的属性,以此来解决由ImageNet图片属性带来的问题。
提供object的宽高比数据
VOC2007的在0.117-15.500之间
ImageNet的在0.03-48.50之间
对于图片宽<=127 或 高<=96 都被删除
对于含有目标:宽<=7且 高<=9的图片都被删除
对于图片宽高比小于0.12 或 大于>10的图片都被删除
代码修改和目录说明:
data:
demo为测试数据
imagenet_weights 为训练时需要的预训练的模型(一般是在imagenet上的预训练的vgg和res101网络)
VOCdevikit2007为准备的训练数据
experiments
训练时需要修改
test_faster_rcnn.sh train_faster_rcnn.sh
train_faster_rcnn.sh
pascal_voc)
TRAIN_IMDB=”voc_2007_train”
TEST_IMDB=”voc_2007_val”
STEPSIZE=”[50000]”
ITERS=100000
ANCHORS=”[8,16,32]”
RATIOS=”[0.5,1,2]”
修改了 TRAIN_IMDB=”voc_2007_train”
TEST_IMDB=”voc_2007_val”

VOC2007 ImageSet/main目录下只准备了train和test.txt故这里改成 voc_2007_train voc_2007_val,原先为voc_2007_trainval voc_2007_test(准备 trainval 和test.txt文件)

lib
主要代码
dataset:
pascal_voc
修改类数据类型
比如:
self._classes = (‘background‘, ‘qiang’, ‘jujiqiang’, ‘shouqiang’, ‘sqtao’)
factory.py(如果仿照voc来就不需要修改数据)

    推荐阅读