This is an implementation of FSAF on keras and Tensorflow. The project is based on fizyr/keras-retinanet and fsaf branch of zccstig/mmdetection. Thanks for their hard work.
As the authors write, FASF module can be plugged into any single-shot detectors with FPN-like structure smoothly. I have also tried on yolo3. Anchor-free yolo3(with FSAF) gets a comparable performance with the anchor-based counterpart. But you don't need to pre-compute the anchor sizes any more. And it is much better and faster than the one based on retinanet.
Updates
- [03/05/2020] The author of the paper has released a new paper SAPD, which is based on FSAF. I have implemented it at xuannianz/SAPD.
- I trained on Pascal VOC2012 trainval.txt + Pascal VOC2007 train.txt, and validated on Pascal VOC2007 val.txt. There are 14041 images for training and 2510 images for validation.
- The best evaluation results (score_threshold=0.05) on VOC2007 test are:
backbone | mAP50 |
---|---|
resnet50 | 0.7248 |
resnet101 | 0.7652 |
-
Pretrained models are here.
baidu netdisk extract code: rbrr
goole dirver -
python3 inference.py
to test your image by specifying image path and model path there.
build dataset (Pascal VOC, other types please refer to fizyr/keras-retinanet)
- 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.
python3 train.py --backbone resnet50 --gpu 0 --random-transform pascal datasets/VOC2012
to start training.
python3 utils/eval.py
to evaluate by specifying model path there.