FCOS
FCOS: Fully Convolutional One-Stage Object Detection (ICCV'19)
Install / Use
/learn @tianzhi0549/FCOSREADME
FCOS: Fully Convolutional One-Stage Object Detection
This project hosts the code for implementing the FCOS algorithm for object detection, as presented in our paper:
FCOS: Fully Convolutional One-Stage Object Detection;
Zhi Tian, Chunhua Shen, Hao Chen, and Tong He;
In: Proc. Int. Conf. Computer Vision (ICCV), 2019.
arXiv preprint arXiv:1904.01355
The full paper is available at: https://arxiv.org/abs/1904.01355.
Implementation based on Detectron2 is included in AdelaiDet.
A real-time model with 46FPS and 40.3 in AP on COCO minival is also available here.
Highlights
- Totally anchor-free: FCOS completely avoids the complicated computation related to anchor boxes and all hyper-parameters of anchor boxes.
- Better performance: The very simple one-stage detector achieves much better performance (38.7 vs. 36.8 in AP with ResNet-50) than Faster R-CNN. Check out more models and experimental results here.
- Faster training and testing: With the same hardwares and backbone ResNet-50-FPN, FCOS also requires less training hours (6.5h vs. 8.8h) than Faster R-CNN. FCOS also takes 12ms less inference time per image than Faster R-CNN (44ms vs. 56ms).
- State-of-the-art performance: Our best model based on ResNeXt-64x4d-101 and deformable convolutions achieves 49.0% in AP on COCO test-dev (with multi-scale testing).
Updates
- FCOS with Fast And Diverse (FAD) neural architecture search is avaliable at FAD. (30/10/2020)
- Script for exporting ONNX models. (21/11/2019)
- New NMS (see #165) speeds up ResNe(x)t based models by up to 30% and MobileNet based models by 40%, with exactly the same performance. Check out here. (12/10/2019)
- New models with much improved performance are released. The best model achieves 49% in AP on COCO test-dev with multi-scale testing. (11/09/2019)
- FCOS with VoVNet backbones is available at VoVNet-FCOS. (08/08/2019)
- A trick of using a small central region of the BBox for training improves AP by nearly 1 point as shown here. (23/07/2019)
- FCOS with HRNet backbones is available at HRNet-FCOS. (03/07/2019)
- FCOS with AutoML searched FPN (R50, R101, ResNeXt101 and MobileNetV2 backbones) is available at NAS-FCOS. (30/06/2019)
- FCOS has been implemented in mmdetection. Many thanks to @yhcao6 and @hellock. (17/05/2019)
Required hardware
We use 8 Nvidia V100 GPUs.
But 4 1080Ti GPUs can also train a fully-fledged ResNet-50-FPN based FCOS since FCOS is memory-efficient.
Installation
Testing-only installation
For users who only want to use FCOS as an object detector in their projects, they can install it by pip. To do so, run:
pip install torch # install pytorch if you do not have it
pip install git+https://github.com/tianzhi0549/FCOS.git
# run this command line for a demo
fcos https://github.com/tianzhi0549/FCOS/raw/master/demo/images/COCO_val2014_000000000885.jpg
Please check out here for the interface usage.
For a complete installation
This FCOS implementation is based on maskrcnn-benchmark. Therefore the installation is the same as original maskrcnn-benchmark.
Please check INSTALL.md for installation instructions. You may also want to see the original README.md of maskrcnn-benchmark.
A quick demo
Once the installation is done, you can follow the below steps to run a quick demo.
# assume that you are under the root directory of this project,
# and you have activated your virtual environment if needed.
wget https://huggingface.co/tianzhi/FCOS/resolve/main/FCOS_imprv_R_50_FPN_1x.pth?download=true -O FCOS_imprv_R_50_FPN_1x.pth
python demo/fcos_demo.py
Inference
The inference command line on coco minival split:
python tools/test_net.py \
--config-file configs/fcos/fcos_imprv_R_50_FPN_1x.yaml \
MODEL.WEIGHT FCOS_imprv_R_50_FPN_1x.pth \
TEST.IMS_PER_BATCH 4
Please note that:
- If your model's name is different, please replace
FCOS_imprv_R_50_FPN_1x.pthwith your own. - If you enounter out-of-memory error, please try to reduce
TEST.IMS_PER_BATCHto 1. - If you want to evaluate a different model, please change
--config-fileto its config file (in configs/fcos) andMODEL.WEIGHTto its weights file. - Multi-GPU inference is available, please refer to #78.
- We improved the postprocess efficiency by using multi-label nms (see #165), which saves 18ms on average. The inference metric in the following tables has been updated accordingly.
Models
For your convenience, we provide the following trained models (more models are coming soon).
ResNe(x)ts:
All ResNe(x)t based models are trained with 16 images in a mini-batch and frozen batch normalization (i.e., consistent with models in maskrcnn_benchmark).
Model | Multi-scale training | Testing time / im | AP (minival) | Link --- |:---:|:---:|:---:|:---: FCOS_imprv_R_50_FPN_1x | No | 44ms | 38.7 | download FCOS_imprv_dcnv2_R_50_FPN_1x | No | 54ms | 42.3 | download FCOS_imprv_R_101_FPN_2x | Yes | 57ms | 43.0 | download FCOS_imprv_dcnv2_R_101_FPN_2x | Yes | 73ms | 45.6 | download FCOS_imprv_X_101_32x8d_FPN_2x | Yes | 110ms | 44.0 | download FCOS_imprv_dcnv2_X_101_32x8d_FPN_2x | Yes | 143ms | 46.4 | download FCOS_imprv_X_101_64x4d_FPN_2x | Yes | 112ms | 44.7 | download FCOS_imprv_dcnv2_X_101_64x4d_FPN_2x | Yes | 144ms | 46.6 | download
Note that imprv denotes improvements in our paper Table 3. These almost cost-free changes improve the performance by ~1.5% in total. Thus, we highly recommend to use them. The following are the original models presented in our initial paper.
Model | Multi-scale training | Testing time / im | AP (minival) | AP (test-dev) | Link --- |:---:|:---:|:---:|:---:|:---: FCOS_R_50_FPN_1x | No | 45ms | 37.1 | 37.4 | download FCOS_R_101_FPN_2x | Yes | 59ms | 41.4 | 41.5 | download FCOS_X_101_32x8d_FPN_2x | Yes | 110ms | 42.5 | 42.7 | download FCOS_X_101_64x4d_FPN_2x | Yes | 113ms | 43.0 | 43.2 | download
MobileNets:
We update batch normalization for MobileNet based models. If you want to use SyncBN, please install pytorch 1.1 or later.
Model | Training batch size | Multi-scale training | Testing time / im | AP (minival) | Link --- |:---:|:---:|:---:|:---:|:---: FCOS_syncbn_bs32_c128_MNV2_FPN_1x | 32 | No | 26ms | 30.9 | download FCOS_syncbn_bs32_MNV2_FPN_1x | 32 | No | 33ms | 33.1 | download FCOS_bn_bs16_MNV2_FPN_1x | 16 | No | 44ms | 31.0 | download
[1] 1x and 2x mean the model is trained for 90K and 180K iterations, respectively.
[2] All results are obtained with a single model and without any test time data augmentation such as multi-scale, flipping and etc..
[3] c128 denotes the model has 128 (instead of 256) channels in towers (i.e., MODEL.RESNETS.BACKBONE_OUT_CHANNELS in config).
[4] dcnv2 denotes deformable convolutional networks v2. Note that for ResNet based models, we apply deformable convolutions from stage c3 to c5 in backbones. For ResNeXt based models, only stage c4 and c5 use deformable convolutions. All models use deformable convolutions in the last layer of detector towers.
[5] The model FCOS_imprv_dcnv2_X_101_64x4d_FPN_2x with multi-scale testing achieves 49.0% in AP on COCO test-dev. Please use TEST.BBOX_AUG.ENABLED True to enable multi-scale testing.
Training
The following command line will train FCOS_imprv_R_50_FPN_1x on 8 GPUs with Synchronous Stochastic Gradient Descent (SGD):
py
Related Skills
node-connect
335.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
82.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
335.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
82.5kCommit, push, and open a PR
