用faster rcnn 训练其他数据集

来源:互联网 发布:人工智能社区 编辑:程序博客网 时间:2024/06/05 05:11

         用faster rcnn训练其他的数据集,实现特定的目的,如车辆检测、行人检测等。其它博客上有关于如何训练自己的数据集的介绍,都是做成VOC的格式,我觉得比较麻烦,于是我直接处理下载到的数据集,保存为mat文件,可以直接在matlab版的faster rcnn读入后处理。

         1、数据集

我使用的是bmvc_2012的数据集,地址:http://ai.stanford.edu/~jkrause/ 。这是一个车辆的数据集,共有14类。用里面给的代码处理后可以得到每张图片的路径、类别、大小、bbox等属性,利用这些属性可以转换到faster rcnn 可以处理的格式。

         2、过程

matlab版的faster rcnn中主要利用 dataset 这个变量,后面训练过程中都依赖这个变量得到图片的各种属性:类别、路径、大小、roi等。把其他的数据集转化成dataset的格式就可以了。

dataset包括四个部分:   imdb_train: {[1x1 struct]}、roidb_train: {[1x1 struct]}、imdb_test: [1x1 struct]、roidb_test: [1x1 struct],

imdb_train和imdb_test包括的内容如下 :


roidb_train和roidb_test包括的内容如下:


在源代码中,这几个部分是通过调用imdb_from_voc、roidb_from_voc两个函数得到的。改写这两个函数处理其他数据集,得到自己的 dataset 后保存,在训练时去掉下面两行,改成直接 load 保存的 dataset 。

       3、其它

(1)、需要修改fast rcnn 定义的prototxt文件,类别数改成自己数据集的类型数,以及相应输入数据的维度。(要改四个文件:zf、zf_fc6)。

(2)、处理过程中注意图片的路径,保证训练过程中可以找到图片。

(3)、现在只能训练,如果想把测试过程加进去,要修改 imdb_eval_voc 函数。

原创粉丝点击