Sign inSign up

ideeinc/caffe

By ideeinc

•Updated about 7 years ago

Unofficial Caffe images (idee version)

Image
0

1.0K

ideeinc/caffe repository overview

⁠SSD: Single Shot MultiBox Detector

Build Status License

By Wei Liu⁠, Dragomir Anguelov⁠, Dumitru Erhan⁠, Christian Szegedy⁠, Scott Reed⁠, Cheng-Yang Fu⁠, Alexander C. Berg⁠.

⁠Introduction

SSD is an unified framework for object detection with a single network. You can use the code to train/evaluate a network for object detection task. For more details, please refer to our arXiv paper⁠ and our slide⁠.

SSD Framework

SystemVOC2007 test mAPFPS (Titan X)Number of BoxesInput resolution
Faster R-CNN (VGG16)⁠73.27~6000~1000 x 600
YOLO (customized)⁠63.44598448 x 448
SSD300* (VGG16)77.2468732300 x 300
SSD512* (VGG16)79.81924564512 x 512

SSD results on multiple datasets

Note: SSD300* and SSD512* are the latest models. Current code should reproduce these results.

⁠Citing SSD

Please cite SSD in your publications if it helps your research:

@inproceedings{liu2016ssd,
  title = {{SSD}: Single Shot MultiBox Detector},
  author = {Liu, Wei and Anguelov, Dragomir and Erhan, Dumitru and Szegedy, Christian and Reed, Scott and Fu, Cheng-Yang and Berg, Alexander C.},
  booktitle = {ECCV},
  year = {2016}
}
⁠Contents
  1. Installation⁠
  2. Preparation⁠
  3. Train/Eval⁠
  4. Models⁠
⁠Installation
  1. 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
  1. 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
make -j8
# Make sure to include $CAFFE_ROOT/python to your PYTHONPATH.
make py
make test -j8
# (Optional)
make runtest -j8
⁠Preparation
  1. Download fully convolutional reduced (atrous) VGGNet⁠. By default, we assume the model is stored in $CAFFE_ROOT/models/VGGNet/

  2. 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
  1. 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
⁠Train/Eval
  1. 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⁠.

  1. 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
  1. 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.

  1. 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.

  2. 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.

⁠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.

  1. PASCAL VOC models:

  2. COCO models:

  3. ILSVRC models:

[1]We use examples/convert_model.ipynb⁠ to extract a VOC model from a pretrained COCO model.

Tag summary

Content type

Image

Digest

Size

687 MB

Last updated

about 7 years ago

docker pull ideeinc/caffe:ssd_treefrog_cpu