经过几天的努力,成功训练自己的数据集,并进行了单张图片的测试。
训练过程中val准确率约为0.91。看起来效果还比较理想,是否已经过拟合还没有进行确定。
在训练过程中,最讨厌的就是处理文件路径和文件存放位置。
一、ImageNet分类部分:
caffe模型下有一个example文件夹,我在example文件夹下建立了一个自己的文件夹,fine_tune_my。并将所有的数据都存放在这个文件夹里。包括:data,model,运行文件sh。
(1)
在data里面,包括训练集、验证集、平均图像,以及生成dmb的py文件。
另外,包括一些标明文件信息的txt文档。我觉得这些txt文档是最为麻烦的。
(2)
在model里面,包括训练网络结构、测试网络结构、训练参数。
这次的任务是分类出:交通标志与交通灯。
下一步的目标是:检测交通标志与交通灯。会有如下几个步骤:
(1)准备数据:
1万张图片:6000训练+4000测试。需要转成VOC2007数据集的标注格式。这个比较简单,但是需要时间。
(2)调整网络结构:
(3)调整训练参数,以及网络参数
(4)测试,提交结果
二、Faster rcnn物体检测部分:
1、准备数据集:
(1)生成output.txt文档,其中内容每行格式如下:000002.jpg dog 44 28 132 121
这一步,包含两部分:读取每一张图像,检测每一张图像包含物体种类,输出数据。
在程序change.py中进行编写。
(2)利用下载下来的VOC2007xml.m,生成voc2007数据集中的xml文件;
(3)将图片、标注集放在faster rcnn指定文件夹内。
(4)修改faster rcnn网络参数(输出层、anchor)、训练参数(batch size),并进行训练
首先,针对特定数据集,修改网络结构参数,内容包括:
modes下面:faster_rcnn_alt_opt下面的:
stage1_fast_rcnn_train.pt
stage1_rpn_train.pt
stage2_fast_rcnn_train.pt
stage2_rpn_train.pt
faster_rcnn_test.pt
其次,针对特定数据集,修改处理数据部分的参数,包括:
lib/datasets下面的:pascal_voc.py
lib/datasets下面的:imdb.py
最后,针对训练过程的训练参数,进行修改:
(batch_size ——lib中faster rcnn的config.py中修改,学习率;——在model里面修改;max_iters——在tools里面修改)
学习率:
py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt中的solve
迭代次数:rpn第1阶段,fast rcnn第1阶段,rpn第2阶段,fast rcnn第2阶段
py-faster-rcnn\tools的train_faster_rcnn_alt_opt.py
py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt里对应的solver文件(有4个)也修改,stepsize小于上面修改的数值。
(5)执行测试,并记录测试结果
首先,先删除部分历史干扰数据:
output文件夹删除(或改个其他名)
py-faster-rcnn/data/cache中的文件
py-faster-rcnn/data/VOCdevkit2007/annotations_cache中的文件删除(如果有的话)
执行训练语句:
On VGG16: run ./tools/train_net.py --gpu 2 --solver models/VGG16/solver.prototxt --weights data/imagenet_models/VGG16.v2.caffemodel --imdb kaggle_train