主要参考 https://github.com/weiliu89/caffe/tree/ssd
- 获取SSD的代码,下载完成后有一个caffe文件夹
git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd
- 1
- 2
- 3
- 进入下载好的caffe目录,复制配置文件
cd caffe
cp Makefile.config.example Makefile.config
- 1
- 2
编译caffe
make all -j8 //-j16根据本机的处理器配置,16是16核处理器的意思
make pycaffe -j8
make test -j8
make runtest -j8(这一步不是必须的)
- 1
- 2
- 3
- 4
下载预训练模型 链接:链接:https://pan.baidu.com/s/1o9c0GGU 密码:fucx,将它放入caffe/models/VGGNet/目录下
下载VOC2007和VOC2012数据集,放到/caffe/data下,并解压
cd data
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
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
- 1
- 2
- 3
- 4
- 5
- 6
- 7
将图片转化为LMDB文件,用于训练,在caffe目录下
cd ..
cd caffe
./data/VOC0712/create_list.sh
./data/VOC0712/create_data.sh
- 1
- 2
- 3
- 4
训练模型
在下载的caffe根目录执行如下命令训练,在examples/ssd下存在几个.py文件,训练的时间较长。
python examples/ssd/ssd_pascal.py
- 1
实验效果
(1)在图片测试集上测试
python examples/ssd/score_ssd_pascal.py
- 1
2)在视频上测试
python examples/ssd/ssd_pascal_video.py
- 1
3)在摄像头上测试
python examples/ssd/ssd_pascal_webcam.py
- 1
报错问题解决以及填坑笔记:
1. 报错:no module named caffe等错误
这是由于caffe的Python环境变量未配置好,可按照下面方法解决:
确保先重新make下pycaffe,然后 将python的路径配置到环境变量中
make pycaffe -j8
vim ~/.bashrc
加入 export PYTHONPATH=/SSD所在目录/caffe/python
source ~/.bashrc
2. 配置SSD-caffe测试时出现“Check failed: error == cudaSuccess (10 vs. 0) invalid device ordinal”解决
运行 python examples/ssd/ssd_pascal.py 时报错
解决方案:这是由于GPU数量不匹配造成的,如果训练自己的数据,那么我们只需要将solver.prototxt文件中的device_id项改为自己的GPU块数,一块就是0,两块就是1,以此类推。
但是SSD配置时的例子是将训练语句整合成一个python文件ssd_pascal.py,所以需要改此代码。相关配置训练方法请参看转载博文:http://blog.csdn.net/xunan003/article/details/78427446
解决方法:将ssd_pascal.py文件中第332行gpus = “0,1,2,3”的GPU选择改为gpus = “0”,后面的1,2,3都删掉即可。再次训练即可。
当然,由于博主只有一块GPU且电脑运行内存有限,还需要将ssd_pascal.py文件中的337行batch_size = 32和338行accum_batch_size = 32都改小一倍,即更改批量大小,不然会出现“Check failed: error == cudaSuccess (2 vs. 0) invalid …”的错误。
3. 配置SSD-caffe出现“ AttributeError: ‘module’ object has no attribute ‘LabelMap’”解决
这是由于caffe的Python环境变量未配置好,可按照下面方法解决:
vim ~/.bashrc
加入 export PYTHONPATH=/SSD所在目录/caffe/python
source ~/.bashrc