This is an implementation of EfficientDet for object detection on Keras and Tensorflow. The project is based on the official implementation google/automl, fizyr/keras-retinanet and the qubvel/efficientnet.
- The pretrained EfficientNet weights on imagenet are downloaded from Callidior/keras-applications/releases
- The pretrained EfficientDet weights on coco are converted from the official release google/automl.
Thanks for their hard work. This project is released under the Apache License. Please take their licenses into consideration too when use this project.
Updates
- [03/21/2020] Synchronize with the official implementation. google/automl
- [03/05/2020] Anchor free version. The accuracy is a little lower, but it's faster and smaller.For details, please refer to xuannianz/SAPD
- [02/20/2020] Support quadrangle detection. For details, please refer to README_quad
- Pascal VOC
- Download VOC2007 and VOC2012, copy all image files from VOC2007 to VOC2012.
- Append VOC2007 train.txt to VOC2012 trainval.txt.
- Overwrite VOC2012 val.txt by VOC2007 val.txt.
- MSCOCO 2017
- Download images and annotations of coco 2017
- Copy all images into datasets/coco/images, all annotations into datasets/coco/annotations
- Other types please refer to fizyr/keras-retinanet)
- STEP1:
python3 train.py --snapshot imagenet --phi {0, 1, 2, 3, 4, 5, 6} --gpu 0 --random-transform --compute-val-loss --freeze-backbone --batch-size 32 --steps 1000 pascal|coco datasets/VOC2012|datasets/coco
to start training. The init lr is 1e-3. - STEP2:
python3 train.py --snapshot xxx.h5 --phi {0, 1, 2, 3, 4, 5, 6} --gpu 0 --random-transform --compute-val-loss --freeze-bn --batch-size 4 --steps 10000 pascal|coco datasets/VOC2012|datasets/coco
to start training when val mAP can not increase during STEP1. The init lr is 1e-4 and decays to 1e-5 when val mAP keeps dropping down.
python3 export_model.py --weights_path xxxx.h5 --phi {0, 1, 2, 3, 4, 5, 6}
The resulting pb file will be saved under prediction_model.
-
PASCAL VOC
python3 eval/common.py
to evaluate pascal model by specifying model path there.- The best evaluation results (score_threshold=0.01, mAP50) on VOC2007 test are:
phi 0 1 w/o weighted 0.8029 w/ weighted 0.7892 -
MSCOCO
python3 eval/coco.py
to evaluate coco model by specifying model path there.
phi mAP 0 0.334 weights, results 1 0.393 weights, results 2 0.424 weights, results 3 0.454 weights, results 4 0.483 weights, results
python3 inference.py
to test your image by specifying image path and model path there.