【心得】深度学习入门——训练并测试自己数据集

经过几天的努力,成功训练自己的数据集,并进行了单张图片的测试。


训练过程中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




你可能感兴趣的:(【心得】深度学习入门——训练并测试自己数据集)