SSD配置、训练、测试以及应用到自己的数据集

git clone https://github.com/weiliu89/caffe.git

(上面的版本可能存在问题,最好是在https://github.com/weiliu89/caffe/tree/ssd下载zip文件)

git checkout ssd

make all

如果报错:

/usr/include/boost/property_tree/detail/json_parser_read.hpp:257:264: error: ‘type name’ declared as function returning an array
make: *** [.build_release/cuda/src/caffe/layers/detection_output_layer.o] Error 1
解决方案: https://github.com/BVLC/caffe/issues/4957

SSD配置、训练、测试以及应用到自己的数据集_第1张图片

make pycaffe

下载预训练模型( 链接:http://pan.baidu.com/s/1miDE9h2,密码:0hf2),放到        
caffe/models/VGGNet/目录下
下载VOC2007和VOC2012数据集,放到caffe/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
将图片转化为LMDB文件,用于训练。需要先修改create_list.sh 和create_data.sh文件。
对于create_list.sh 文件,修改root_dir为VOCdevkit所在的位置,对于我的电脑, root_dir=$HOME/guowei/caffe-master/data/VOCdevkit/
对于create_data.sh 文件,修改data_root_dir为VOCdevkit所在的位置,对于我的电脑,root_dir=$HOME/XIAOVV/caffe-master/data/VOCdevkit/
运行转换程序
./data/VOC0712/create_list.sh 
./ data / VOC0712 /create_data.sh
SSD配置、训练、测试以及应用到自己的数据集_第2张图片
解决方案: https://github.com/weiliu89/caffe/issues/4
解决方案:export PYTHONPATH=/home/amax/XIAOVV/caffe-
ssd/python:/home/amax/anaconda/include/python2.7
开始训练:
python examples/ssd/ssd_pascal.py
报错:importerror:no module named model_libs
需要重新生成LMDB文件 ./data/VOC0712/create_list.sh ./data/VOC0712/create_data.sh
然后重新训练:
python examples/ssd/ssd_pascal.py
图片数据集上测试:
python examples/ssd/score_ssd_pascal.py
利用caffe/examples/ssd_detect.ipynb文件可以用单张图片测试检测效果(注意文件内加载文件的路径,如果报错修改为绝对路径)
训练自己的数据集
准备自己的数据集(VOC2007格式),这里我的数据集叫做VOC1000
复制VOC0712文件夹,重命名为VOC1000
修改create_list.sh
#root_dir=$HOME/ guowei/caffe-ssd/data/VOCdevkit/
for name in VOC1000
修改create_data.sh
data_root_dir="$HOME/guowei/caffe-ssd/data/VOCdevkit"
dataset_name="VOC1000"
修改labelmap_voc.prototxt(我的类别只有飞机,所以为背景和飞机)
item {
  name: "none_of_the_above"
  label: 0
  display_name: "background"
}
item {
  name: "aeroplane"
  label: 1
  display_name: "aeroplane"
}
生成数据
./data/VOC1000/create_list.sh
./data/VOC1000/create_data.sh

开始训练自己的数据
复制ssd_pascal.py,重命名为ssd_pascal1000.py
train_data = "examples/VOC1000/VOC1000_trainval_lmdb"
test_data = "examples/VOC1000/VOC1000_test_lmdb"
num_test_image换成自己数据集中测试图片的数目
num_classes换成自己的类别数目+1,我的是2
VOC0712都换成VOC1000

执行训练
python examples/ssd/ssd_pascal1000.py
结果如下图:

SSD配置、训练、测试以及应用到自己的数据集_第3张图片

测试精度为77.2%,迭代1200次,基于VGGNet.

你可能感兴趣的:(目标检测)