EfficientDet: Scalable and Efficient Object Detection
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
Dataset | Classes | #Train images | #Validation images |
---|---|---|---|
COCO2017 | 80 | 118k | 5k |
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 Precision | IoU=0.50:0.95 | area= all | maxDets=100 | 0.314 |
---|---|---|---|---|
Average Precision | IoU=0.50 | area= all | maxDets=100 | 0.461 |
Average Precision | IoU=0.75 | area= all | maxDets=100 | 0.343 |
Average Precision | IoU=0.50:0.95 | area= small | maxDets=100 | 0.093 |
Average Precision | IoU=0.50:0.95 | area= medium | maxDets=100 | 0.358 |
Average Precision | IoU=0.50:0.95 | area= large | maxDets=100 | 0.517 |
Average Recall | IoU=0.50:0.95 | area= all | maxDets=1 | 0.268 |
Average Recall | IoU=0.50:0.95 | area= all | maxDets=10 | 0.382 |
Average Recall | IoU=0.50:0.95 | area= all | maxDets=100 | 0.403 |
Average Recall | IoU=0.50:0.95 | area= small | maxDets=100 | 0.117 |
Average Recall | IoU=0.50:0.95 | area= medium | maxDets=100 | 0.486 |
Average Recall | IoU=0.50:0.95 | area= large | maxDets=100 | 0.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}
}