EfficientDet: Scalable and Efficient Object Detection

January 5, 2020 · View on GitHub

Introduction

Here is our pytorch implementation of the model described in the paper EfficientDet: Scalable and Efficient Object Detection paper (Note: We also provide pre-trained weights, which you could see at ./trained_models)


An example of our model's output.

Datasets

DatasetClasses#Train images#Validation images
COCO201780118k5k

Create a data folder under the repository,

cd {repo_root}
mkdir data
  • COCO: Download the coco images and annotations from coco website. Make sure to put the files as the following structure:
    COCO
    ├── annotations
    │   ├── instances_train2017.json
    │   └── instances_val2017.json
    │── images
        ├── train2017
        └── val2017
    

How to use our code

With our code, you can:

  • Train your model by running python train.py
  • Evaluate mAP for COCO dataset by running python mAP_evaluation.py
  • Test your model for COCO dataset by running python test_dataset.py --pretrained_model path/to/trained_model
  • Test your model for video by running python test_video.py --pretrained_model path/to/trained_model --input path/to/input/file --output path/to/output/file

Experiments

We trained our model by using 3 NVIDIA GTX 1080Ti. Below is mAP (mean average precision) for COCO val2017 dataset

Average PrecisionIoU=0.50:0.95area= allmaxDets=1000.314
Average PrecisionIoU=0.50area= allmaxDets=1000.461
Average PrecisionIoU=0.75area= allmaxDets=1000.343
Average PrecisionIoU=0.50:0.95area= smallmaxDets=1000.093
Average PrecisionIoU=0.50:0.95area= mediummaxDets=1000.358
Average PrecisionIoU=0.50:0.95area= largemaxDets=1000.517
Average RecallIoU=0.50:0.95area= allmaxDets=10.268
Average RecallIoU=0.50:0.95area= allmaxDets=100.382
Average RecallIoU=0.50:0.95area= allmaxDets=1000.403
Average RecallIoU=0.50:0.95area= smallmaxDets=1000.117
Average RecallIoU=0.50:0.95area= mediummaxDets=1000.486
Average RecallIoU=0.50:0.95area= largemaxDets=1000.625

Results

Some predictions are shown below:

Requirements

  • python 3.6
  • pytorch 1.2
  • opencv (cv2)
  • tensorboard
  • tensorboardX (This library could be skipped if you do not use SummaryWriter)
  • pycocotools
  • efficientnet_pytorch

References

  • Mingxing Tan, Ruoming Pang, Quoc V. Le. "EfficientDet: Scalable and Efficient Object Detection." EfficientDet.
  • Our implementation borrows some parts from RetinaNet.Pytorch

Citation

@article{EfficientDetSignatrix,
    Author = {Signatrix GmbH},
    Title = {A Pytorch Implementation of EfficientDet Object Detection},
    Journal = {https://github.com/signatrix/efficientdet},
    Year = {2020}
}