接上一篇我的博客:caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

在caffe-ssd/data/VOCdevkit/VOC2007/lmdb目录内应该生成了:VOC2007_test_lmdb 和 VOC2007_trainval_lmdb两个文件夹:

caffe-ssd 训练自己的VOC数据集(二):训练生成的lmdb数据

到这里我们就要开始训练过程了。

第一步:切换到caffe-ssd/examples/ssd目录下:

caffe-ssd 训练自己的VOC数据集(二):训练生成的lmdb数据

在ssd文件夹内我们可以看到一个文件:ssd_pascal.py,该脚本用来生成我们训练的ssd所需要的caffe prototxt等文件,运行该脚本会自动生成这些配置所需要的文件的同时还会自动运行生成的训练脚本,当然咱们可以单独去sh 它生成的训练脚本。不过首先我们得根据我们的实际需求情况去修改ssd_pascal.py

  • 在该脚本的第60-80行左右可以找到下边两行:

caffe-ssd 训练自己的VOC数据集(二):训练生成的lmdb数据

train_data和test_data更改为自己生成的训练lmdb和测试lmdb文件夹路径,resize_width和resize_height可以改为300*300或者500*500

在该脚本的差不多200行左右能找到下边的内容:

caffe-ssd 训练自己的VOC数据集(二):训练生成的lmdb数据

base_lr是基础学习率可以改成你自己想改的。下边的save_dir,snapshot_dir和job_dir分别是模型的保存路径和工作文件生成路径以及结果的输出路径等等,其中有的路径没有的话会自动生成,不过为了保险我全部按照自己改动的路径自己手动依次新建了这些文件夹。

  • 在该脚本的差不多220~230行左右能找到下边的内容:

caffe-ssd 训练自己的VOC数据集(二):训练生成的lmdb数据

name_size_file和label_map_file,在上一篇博客当中有生成,改成生成自己的这两个文件的目录即可

  • 在230多行往下找能找到如下内容:

caffe-ssd 训练自己的VOC数据集(二):训练生成的lmdb数据

num_classes改为自己的标签种类数加一个背景类别数,我做了十个标签,所以加一个背景类别,应该改成11类

  • 在差不多300行左右能看到如下内容:

caffe-ssd 训练自己的VOC数据集(二):训练生成的lmdb数据

自己的电脑有几块显卡就依次写出显卡的索引号,我用的服务器有4块所以这里我自己改成了0,1,2,3

  • 在该脚本的差不多330行内找到如下内容:

caffe-ssd 训练自己的VOC数据集(二):训练生成的lmdb数据

这里改成你测试集的数量和测试集测试时的batch_size,如果内存不是特别大,batch_size改为8或者16都可以,要是电脑内存杠杠的,改成32或者64也行,主要我这里因为测试集数量本身就比较少,所以batch_size我也用得小。

  • 在该脚本的最底下能找到如下内容:

caffe-ssd 训练自己的VOC数据集(二):训练生成的lmdb数据

这里是生成jobs文件夹内的内容的,也就是在jobs目录下会生成用于训练的.sh脚本,这里可以不作任何改动,到时候生成之后我们可以手动再在.sh脚本里边改成我们的东西

caffe-ssd 训练自己的VOC数据集(二):训练生成的lmdb数据

上边框出来的就是生成的VGG_VOC0712_SSD_300x300.sh的内容

运行ssd_pascal.py文件,则会在caffe-ssd/models/VGGNet/VOC0712内生成下边几样文件:

caffe-ssd 训练自己的VOC数据集(二):训练生成的lmdb数据

然后在jobs文件夹生成的VGG_VOC0712_SSD_300x300.sh中的--solver和--weights改成自己的目录就好,其中weights是用别人的预训练好的模型初始化网络参数(下边给出百度网盘地址):

链接:https://pan.baidu.com/s/15h77Nly8mA2I3xYOq11sWg 密码:0qi4

好了,然后执行命令:sh VGG_VOC0712_SSD_300x300.sh即可开始训练了。会在models/VGGNet/VOC0712/SSD_300x300文件夹内生成训练的模型。

到此本篇博客教程就写完了,欢迎讨论哦哈哈,希望大家一起进步。双击666。