caffe-ssd训练自己的数据集

环境配置网上有很多教程,开源的数据集的训练方法按照官方网站来就可以,一般环境配置没出现什么问题,开源的数据集的训练和测试也就没有多大问题。下面写的是训练自己的数据集的一些步骤:

1.cd caffe-ssd/data/VOCdevkit目录下新建一个空文件夹,mkdir Mydataset

caffe-ssd训练自己的数据集

2. cd Mydataset,在该目录下分别新建三个文件夹,mkdir Annotations,mkdir JPEGImages,mkdir ImageSets,其中 Annotations存放训练需要用到的xml文件,JPEGImages存放训练需要用到的图片

caffe-ssd训练自己的数据集

3.cd ImageSets,mkdir Main

caffe-ssd训练自己的数据集

4.创建完成后将 jpg 和 xml 文件放入对应目录下。然后使用 python 脚本划分一下训练集和测试集。

caffe-ssd训练自己的数据集

5.cd caffe-ssd/data/,新建Mydataset,并执行下面命令:

caffe-ssd训练自己的数据集

6.修改labelmap_voc.prototxt,在其中设置自己的类别,其中不能改变的是背景类:

caffe-ssd训练自己的数据集

7.修改create_list.sh将路径修改为自己的路径,并将

# if [[ $dataset == "test" && $name == "VOC2012" ]]
    #then
     # continue
    #fi

注释

caffe-ssd训练自己的数据集

8 修改create_data.sh

caffe-ssd训练自己的数据集

9.都修改好运行脚本,生成LMDB,进入caffe目录

./data/Mydataset/create_list.sh

./data/Mydataset/create_data.sh

10.修改ssd_pascal.py开始训练:

caffe-ssd训练自己的数据集

caffe-ssd训练自己的数据集

caffe-ssd训练自己的数据集

11.保存,运行python examples/ssd/ssd_pascal.py,出现如下结果就开始正常训练了

caffe-ssd训练自己的数据集

开始训练的时候,就出现loss=nan的情况,在solver.prototxt中将base_lr调小,训练就正常了