This repository contains the code for the paper "DSOD: Learning Deeply Supervised Object Detectors from Scratch" (ICCV 2017).
The code was derived from the SSD framework (https://github.com/weiliu89/caffe/tree/ssd) with some new stuffs so that we could train DSOD from scratch.
If you use these models or find this helps your research, please cite:
@inproceedings{Shen2017DSOD,
title = {DSOD: Learning Deeply Supervised Object Detectors from Scratch},
author = {Shen, Zhiqiang and Liu, Zhuang and Li, Jianguo and Jiang, Yu-Gang and Chen, Yurong and Xue, Xiangyang},
booktitle = {ICCV},
year = {2017}
}
DSOD focuses on the problem of training object detector from scratch. To the best of our knowledge, this is by far the first work which could train deep neural network based object detectors from scratch with state-of-the-art performance. In this work we contribute a set of design principles for this purpose. One of the key findings is the deeply supervised structure, which plays a critical role in learning a good detection model. Please see our paper for more details.
- Visualizations of network structures (tools from ethereon, ignore the warning messages):
The tables below show the results on PASCAL VOC 2007, 2012 and MS COCO.
PASCAL VOC test results:
Method | VOC 2007 test mAP | fps (Titan X) | # parameters | Models |
---|---|---|---|---|
DSOD300_lite (07+12) | 76.7 | 25.8 | 10.4M | Download (41.8M) |
DSOD300 (07+12) | 77.7 | 17.4 | 14.8M | Download (59.2M) |
DSOD300 (07+12+COCO) | 81.7 | 17.4 | 14.8M | Download (59.2M) |
Method | VOC 2012 test mAP | fps | # parameters | Models |
---|---|---|---|---|
DSOD300 (07++12) | 76.3 | 17.4 | 14.8M | Download (59.2M) |
DSOD300 (07++12+COCO) | 79.3 | 17.4 | 14.8M | Download (59.2M) |
COCO test-dev 2015 result (COCO has more object categories than VOC dataset, so the model size is slightly bigger.):
Method | COCO test-dev 2015 mAP (IoU 0.5:0.95) | Models |
---|---|---|
DSOD300 (COCO trainval) | 29.3 | Download (87.2M) |
- Install SSD (https://github.com/weiliu89/caffe/tree/ssd) following the instructions there, including: (1) Install SSD caffe; (2) Download PASCAL VOC 2007 and 2012 datasets; and (3) Create LMDB file. Make sure you can run it without any errors.
- Create a subfolder
dsod
underexample/
, add filesDSOD300_pascal.py
,DSOD300_pascal++.py
,DSOD300_coco.py
andscore_DSOD300_pascal.py
to the folderexample/dsod/
. - Replace the file
model_libs.py
in the folderpython/caffe/
with ours.
-
Train a DSOD model on VOC 07+12:
python examples/dsod/DSOD300_pascal.py
-
Train a DSOD model on VOC 07++12:
python examples/dsod/DSOD300_pascal++.py
-
Train a DSOD model on COCO trainval:
python examples/dsod/DSOD300_coco.py
-
Evaluate the model:
python examples/dsod/score_DSOD300_pascal.py
Note: You can modify the file model_lib.py
to design your own network structure as you like.
Zhiqiang Shen (zhiqiangshen13 at fudan.edu.cn)
Any comments or suggestions are welcome!