首先进行SSD的安装
git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd
cp Makefile.config.example Makefile.config #这里和安装Caffe的makefile文件修改一样
mkdir build
cd build
cmake ..
make all -j16
make install
make runtest
make pycaffe
Caffe 使用的是 LMDB 数据集格式,使用 caffe 框架实现SSD与mobilenets-ssd训练,还需要将 VOC 数据集转换为 lmdb 格式,具体的实现步骤如下:
1.在home文件夹下新建一个data文件夹里面存放我们制作的voc数据集,将子文件夹名称VOC2007改成airplane
2.在caffe-ssd的data文件夹下新建一个airplane名称的文件夹(要检测目标名称的文件夹)
3.将caffe-ssd data文件夹下的voc0712文件夹下的三个文件拷贝到刚新建的airplane文件夹下;
这三个文件copy到 airplane 目录下,分别重命名为create_list_airplane.sh,create_data_airplane.sh, labelmap_voc_airplane.prototxt
4.修改这三个文件的内容:
a.修改labelmap_voc_airplane.prototxt文件中的类别:
item {
name: "none_of_the_above"
label: 0
display_name: "background"
}
item {
name: "airplane" #有几类添加几类,名称改为想要训练的名称
label: 1
display_name: "airplane"
}
b.修改create_data_airplane.sh中的路径
将下面三处位置进行修改
data_root_dir="$HOME/data/VOCdevkit" 改成数据集存放的地址
dataset_name="airplane" 改成自己对应的文件名
mapfile="$root_dir/data/$dataset_name/labelmap_voc_airplane.prototxt" 改成对应的标签文件
c.修改create_list_airplane.sh
root_dir=$HOME/data/VOCdevkit/ #修改数据集路径,这里是已经修改好后
for name in airplane #修改数据集路径下的文件名
do
if [[ $dataset == "test" && $name == "VOC2012" ]]
then
continue
在 /home/zixiang/caffe-ssd/caffe/data/airplane目录下分别运行:
./data/airplane/create_list_airplane.sh
./data/airplane/create_data_airplane.sh
1.当我们执行第一条命令的时候,会在 /home/zixiang/caffe-ssd/caffe/data文件夹下面生成test.txt 、test_name_size.txt , trainval.txt三个文件
2.运行这两条命令生成的数据集位于 /home/zixiang/caffe-ssd/caffe/data 和 //home/zixiang/data/VOCdevkit两个目录下。
如果在/home/zixiang/data/VOCdevkit下面生成了lmdb文件夹,则到此我们所需要训练SSD的修改就完成了。
经过我们上面的步骤,我们的数据集就制作好了,接下来就开始训练了。训练程序为/examples/ssd/ssd_pascal.py,运行之前,我们需要修改相关路径代码:
cd /examples/ssd
gedit sd_pascal.py, 修改如下:
82行: train_data路径;
84行:test_data路径;
240-246行:save_dir、snapshot_dir、job_dir、output_result_dir路径;
259-263行: name_size_file、label_map_file路径;
266行:num_classes 修改为1 + 类别数
359行:num_test_image:测试集图片数目
如果你只有一个GPU, 需要修改285行:
gpus=”0,1,2,3” ===> 改为”0”
否则,训练的时候会出错。
修改完后运行
修改完成后在Caffe文件夹下运行:
python ./examples/ssd/ssd_pascal.py
即可开始训练
SSD安装及测试
SSD安装及训练自己的数据集