SSD目标检测模型环境配置
1、概要
SSD是一种基于回归的目标检测模型,论文主要优势:在保证较高的检测速率,有较高检测精度。
代码地址:https://github.com/weiliu89/caffe/tree/ssd
项目PPT地址:http://www.cs.unc.edu/~wliu/papers/ssd_eccv2016_slide.pdf
上图片源自:
https://github.com/weiliu89/caffe/tree/ssd
2、环境配置
- 下载Caffe 源码,下载完成后有一个caffe文件夹
git clone https://github.com/weiliu89/caffe.git cd caffe git checkout ssd
- 1
- 2
- 3
- 进入下载好的caffe目录,复制配置文件
cd /home/usrname/caffe cp Makefile.config.example Makefile.config
- 1
- 2
- 1
- 2
- 编译caffe三部曲
make -j8 //-j8根据本机的处理器配置,8是八核处理器的意思 make test -j8 make runtest -j8
- 1
- 2
- 3
- 1
- 2
- 3
- 额外编译,根据需要(因为SSD利用python完成,需编译pycaffe)
make py
准备工作
Pre_train下载地址:https://gist.github.com/weiliu89/2ed6e13bfd5b57cf81d6 ,放入caffe/models/VGGNet/目录下,(该模型随机初始权重可收敛)
将自己的数据集,放到/home/data下,新手请按照VOC格式。
- 1
- 2
- 3
- 1
- 2
- 3
- 若使用VOC07或者12数据集,按照如下下载
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
- 1
- 2
- 3
- 1
- 2
- 3
- 数据集解压
tar -xvf VOCtrainval_11-May-2012.tar tar -xvf VOCtrainval_06-Nov-2007.tar tar -xvf VOCtest_06-Nov-2007.tar
- 1
- 2
- 3
- 1
- 2
- 3
- 将图片转化为LMDB文件,用于训练
cd .. cd caffe/ ./data/VOC0712/create_list.sh ./data/VOC0712/create_data.sh
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
- 这里用的脚本实现批处理,可能会出现:no module named caffe等错误,这是由于caffe的Python环境变量未配置好,可按照下面方法解决:
echo "export PYTHONPATH=/home/usrname/caffe/python" >> ~/.profile source ~/.profile echo $PYTHONPATH #检查环境变量的值
训练中修改源码:
打开caffe/examples/ssd/ssd_pascal.py这个文件,找到gpus=’0,1,2,3’这一行,如果您的服务器有一块显卡,则将123删去,如果有两个显卡,则删去23,以此类推。如果您服务器没有gpu支持,则注销以下几行,程序会以cpu形式训练。(这个是解决问题cudasuccess(10vs0)的方法)
#Ifnum_gpus >0:
# batch_size_per_device =int(math.ceil(float(batch_size) / num_gpus))
#iter_size =int(math.ceil(float(accum_batch_size) / (batch_size_per_device * num_gpus)))
# solver_mode =P.Solver.GPU
# device_id =int(gpulist[0])
训练:在Caffe文件夹路径下:python examples/ssd/ssd_pascal.py
验证:在Caffe文件夹路径下:python examples/ssd/score_ssd_pascal.py
Test your model using a webcam. Note: press esc to stop.
# If you would like to attach a webcam to a model you trained, you can do:
python examples/ssd/ssd_pascal_webcam.py
如果出现问题cudasuccess(2vs0)则说明您的显卡计算量有限,再次打开caffe/examples/ssd/ssd_pascal.py这个文件,找到batch_size =32这一行,修改数字32,可以修改为16,或者8,甚至为4;
第二部分 训练自己的数据集
到此为止,我们的数据集就做好了。接下来就开始训练了。训练程序为/examples/ssd/ssd_pascal.py,运行之前,我们需要修改相关路径代码:
cd /examples/ssd
vim sd_pascal.py, 修改如下:
57行: train_data路径;
59行:test_data路径;
197-203行:save_dir、snapshot_dir、job_dir、output_result_dir路径;
216-220行: name_size_file、label_map_file路径;
223行:num_classes 修改为1 + 类别数
315行:num_test_image:测试集图片数目
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
另外, 如果你只有一个GPU, 需要修改285行:
gpus=”0,1,2,3” ===> 改为”0”
否则,训练的时候会出错。
修改完后运行
python ./examples/ssd/ssd_pascal.py
- 1
- 1
训练完, 修改ssd_detector.py中模型路径, 任意找一张图片识别,看看效果怎么样。
参考:https://github.com/weiliu89/caffe/tree/ssd