7.1 KiB
Caffe SSD 目标检测
基于 Ubuntu16.04 和 Python2.7。
1.Installation
按《Ubuntu 初始配置》中的方法来安装开发工具。
-
Get the code. We will call the directory that you cloned Caffe into $CAFFE_ROOT
git clone https://github.com/weiliu89/caffe.git cd caffe git checkout ssd
-
修改 Makefile 文件:
-LIBRARIES += glog gflags protobuf boost_system boost_filesystem boost_regex m hdf5_hl hdf5 +LIBRARIES += glog gflags protobuf boost_system boost_filesystem boost_regex m hdf5_serial_hl hdf5_serial
-
Build the code. Please follow Caffe instruction to install all necessary packages and build it.
# Modify Makefile.config according to your Caffe installation. cp Makefile.config.example Makefile.config # 通过去除 Makefile.config 中“CPU_ONLY := 1”前面的 “#” 号可选择编译 CPU 版本的 Caffe make -j8 # Make sure to include $CAFFE_ROOT/python to your PYTHONPATH. make py make test -j8 # (Optional) make runtest -j8 cd python for req in $(cat requirements.txt); do pip install $req; done pip install -r requirements.txt export PYTHONPATH=$PYTHONPATH:$CAFFE_ROOT/python cd .. make pycaffe # 验证 pycaffe 接口 python >>>import caffe >>>exit()
2.Preparation
-
Download fully convolutional reduced (atrous) VGGNet. By default, we assume the model is stored in $CAFFE_ROOT/models/VGGNet/
-
Download VOC2007 and VOC2012 dataset. By default, we assume the data is stored in $HOME/data/
# Download the data. cd $HOME/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 # Extract the data. tar -xvf VOCtrainval_11-May-2012.tar tar -xvf VOCtrainval_06-Nov-2007.tar tar -xvf VOCtest_06-Nov-2007.tar
-
修改 data/VOC0712/create_list.sh 文件:
-root_dir=$HOME/data/VOCdevkit/ +root_dir=/mnt/workspace/caffe/VOC/VOCdevkit/
-
修改 data/VOC0712/create_data.sh 文件:
-data_root_dir="$HOME/data/VOCdevkit" +data_root_dir="/mnt/workspace/caffe/VOC/VOCdevkit"
-
Create the LMDB file.
cd $CAFFE_ROOT # Create the trainval.txt, test.txt, and test_name_size.txt in data/VOC0712/ ./data/VOC0712/create_list.sh # You can modify the parameters in create_data.sh if needed. # It will create lmdb files for trainval and test with encoded original image: # - $HOME/data/VOCdevkit/VOC0712/lmdb/VOC0712_trainval_lmdb # - $HOME/data/VOCdevkit/VOC0712/lmdb/VOC0712_test_lmdb # and make soft links at examples/VOC0712/ ./data/VOC0712/create_data.sh
3.Train/Eval
-
修改 examples/ssd/ssd_pascal.py 文件:
-if num_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]) +#if num_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])
-
Train your model and evaluate the model on the fly.
# It will create model definition files and save snapshot models in: # - $CAFFE_ROOT/models/VGGNet/VOC0712/SSD_300x300/ # and job file, log file, and the python script in: # - $CAFFE_ROOT/jobs/VGGNet/VOC0712/SSD_300x300/ # and save temporary evaluation results in: # - $HOME/data/VOCdevkit/results/VOC2007/SSD_300x300/ # It should reach 77.* mAP at 120k iterations. python examples/ssd/ssd_pascal.py
If you don't have time to train your model, you can download a pre-trained model at here.
-
Evaluate the most recent snapshot.
# If you would like to test a model you trained, you can do: 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
Here is a demo video of running a SSD500 model trained on MSCOCO dataset.
-
Check out examples/ssd_detect.ipynb or examples/ssd/ssd_detect.cpp on how to detect objects using a SSD model. Check out examples/ssd/plot_detections.py on how to plot detection results output by ssd_detect.cpp.
-
To train on other dataset, please refer to data/OTHERDATASET for more details. We currently add support for COCO and ILSVRC2016. We recommend using examples/ssd.ipynb to check whether the new dataset is prepared correctly.
4.Models
We have provided the latest models that are trained from different datasets. To help reproduce the results in Table 6, most models contain a pretrained .caffemodel
file, many .prototxt
files, and python scripts.
-
PASCAL VOC models:
-
COCO models:
-
ILSVRC models:
[1]We use examples/convert_model.ipynb
to extract a VOC model from a pretrained COCO model.