Proyek ini meng -host kode untuk mengimplementasikan algoritma FCOS untuk deteksi objek, seperti yang disajikan dalam makalah kami:
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
Makalah lengkap tersedia di: https://arxiv.org/abs/1904.01355.
Implementasi berdasarkan Detectron2 termasuk dalam Adelaidet.
Model real-time dengan 46fps dan 40,3 di AP pada Coco Minival juga tersedia di sini.
Kami menggunakan 8 NVIDIA V100 GPU.
Tetapi 4 1080TI GPU juga dapat melatih FCOS berbasis ResNet-50-FPN sepenuhnya karena FCOS hemat memori.
Untuk pengguna yang hanya ingin menggunakan FCO sebagai detektor objek dalam proyek mereka, mereka dapat menginstalnya dengan PIP. Untuk melakukannya, jalankan:
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
Silakan periksa di sini untuk penggunaan antarmuka.
Implementasi FCOS ini didasarkan pada maskrcnn-benchmark. Oleh karena itu instalasi sama dengan maskrcnn-benchmark asli.
Silakan periksa install.md untuk instruksi pemasangan. Anda mungkin juga ingin melihat readme.md asli maskrcnn-benchmark.
Setelah instalasi selesai, Anda dapat mengikuti langkah -langkah di bawah ini untuk menjalankan demo cepat.
# 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
Baris perintah inferensi pada coco minive 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
Harap dicatat bahwa:
FCOS_imprv_R_50_FPN_1x.pth dengan milik Anda.TEST.IMS_PER_BATCH ke 1.--config-file ke file konfigurasi (di configs/fcos) dan MODEL.WEIGHT ke file bobotnya.Untuk kenyamanan Anda, kami memberikan model terlatih berikut (lebih banyak model akan segera hadir).
Resne (x) ts:
Semua model berbasis resne (x) dilatih dengan 16 gambar dalam normalisasi batch mini-batch dan beku (yaitu, konsisten dengan model dalam maskrcnn_benchmark).
| Model | Pelatihan multi-skala | Waktu pengujian / im | AP (Minival) | Link |
|---|---|---|---|---|
| Fcos_imprv_r_50_fpn_1x | TIDAK | 44ms | 38.7 | unduh |
| Fcos_imprv_dcnv2_r_50_fpn_1x | TIDAK | 54ms | 42.3 | unduh |
| Fcos_imprv_r_101_fpn_2x | Ya | 57ms | 43.0 | unduh |
| Fcos_imprv_dcnv2_r_101_fpn_2x | Ya | 73ms | 45.6 | unduh |
| Fcos_imprv_x_101_32x8d_fpn_2x | Ya | 110ms | 44.0 | unduh |
| Fcos_imprv_dcnv2_x_101_32x8d_fpn_2x | Ya | 143ms | 46.4 | unduh |
| Fcos_imprv_x_101_64x4d_fpn_2x | Ya | 112ms | 44.7 | unduh |
| Fcos_imprv_dcnv2_x_101_64x4d_fpn_2x | Ya | 144ms | 46.6 | unduh |
Perhatikan bahwa imprv menunjukkan improvements dalam Tabel 3 Kertas kami. Perubahan hampir bebas biaya ini meningkatkan kinerja sebesar ~ 1,5% secara total. Jadi, kami sangat merekomendasikan untuk menggunakannya. Berikut ini adalah model asli yang disajikan dalam makalah awal kami.
| Model | Pelatihan multi-skala | Waktu pengujian / im | AP (Minival) | AP (test-dev) | Link |
|---|---|---|---|---|---|
| Fcos_r_50_fpn_1x | TIDAK | 45ms | 37.1 | 37.4 | unduh |
| FCOS_R_101_FPN_2X | Ya | 59ms | 41.4 | 41.5 | unduh |
| Fcos_x_101_32x8d_fpn_2x | Ya | 110ms | 42.5 | 42.7 | unduh |
| Fcos_x_101_64x4d_fpn_2x | Ya | 113ms | 43.0 | 43.2 | unduh |
MobileNets:
Kami memperbarui normalisasi batch untuk model berbasis MobileNet. Jika Anda ingin menggunakan syncbn, silakan instal Pytorch 1.1 atau lebih baru.
| Model | Ukuran Batch Pelatihan | Pelatihan multi-skala | Waktu pengujian / im | AP (Minival) | Link |
|---|---|---|---|---|---|
| Fcos_syncbn_bs32_c128_mnv2_fpn_1x | 32 | TIDAK | 26ms | 30.9 | unduh |
| Fcos_syncbn_bs32_mnv2_fpn_1x | 32 | TIDAK | 33ms | 33.1 | unduh |
| Fcos_bn_bs16_mnv2_fpn_1x | 16 | TIDAK | 44ms | 31.0 | unduh |
[1] 1x dan 2x berarti model dilatih masing -masing untuk iterasi 90k dan 180K.
[2] Semua hasil diperoleh dengan model tunggal dan tanpa augmentasi data waktu tes seperti multi-skala, membalik dan dll.
[3] c128 menunjukkan model ini memiliki 128 (bukan 256) saluran di menara (yaitu, MODEL.RESNETS.BACKBONE_OUT_CHANNELS di config).
[4] dcnv2 menunjukkan jaringan konvolusional yang dapat dideformasi v2. Perhatikan bahwa untuk model berbasis resnet, kami menerapkan konvolusi yang dapat dideformasi dari tahap C3 ke C5 di tulang punggung. Untuk model berbasis resnext, hanya tahap C4 dan C5 yang menggunakan konvolusi yang dapat dideformasi. Semua model menggunakan konvolusi yang dapat dideformasi di lapisan terakhir menara detektor.
[5] Model FCOS_imprv_dcnv2_X_101_64x4d_FPN_2x dengan pengujian multi-skala mencapai 49,0% pada AP pada Coco Test-Dev. Harap gunakan TEST.BBOX_AUG.ENABLED True untuk mengaktifkan pengujian multi-skala.
Baris perintah berikut akan melatih FCOS_IMPPRV_R_50_FPN_1X pada 8 GPU dengan penurunan gradien stokastik sinkron (SGD):
python -m torch.distributed.launch
--nproc_per_node=8
--master_port=$((RANDOM + 10000))
tools/train_net.py
--config-file configs/fcos/fcos_imprv_R_50_FPN_1x.yaml
DATALOADER.NUM_WORKERS 2
OUTPUT_DIR training_dir/fcos_imprv_R_50_FPN_1x
Perhatikan bahwa:
--nproc_per_node ke jumlah GPU. Tidak ada pengaturan lain yang perlu diubah. Ukuran total batch tidak tergantung pada nproc_per_node . Jika Anda ingin mengubah ukuran total batch, silakan ubah SOLVER.IMS_PER_BATCH di configs/fcos/fcos_r_50_fpn_1x.yaml.OUTPUT_DIR .--config-file .num_pos antara GPU saat menghitung kehilangan. Silakan merujuk ke direktori ONNX untuk contoh mengekspor model ke ONNX. Model yang dikonversi dapat diunduh di sini. Kami menyarankan Anda untuk menggunakan pytorch> = 1.4.0 (atau malam) dan TorchVision> = 0.5.0 (atau malam hari) untuk model ONNX.
Permintaan atau masalah tarik apa pun dipersilakan.
Harap pertimbangkan mengutip makalah kami di publikasi Anda jika proyek membantu penelitian Anda. Referensi Bibtex adalah sebagai berikut.
@inproceedings{tian2019fcos,
title = {{FCOS}: Fully Convolutional One-Stage Object Detection},
author = {Tian, Zhi and Shen, Chunhua and Chen, Hao and He, Tong},
booktitle = {Proc. Int. Conf. Computer Vision (ICCV)},
year = {2019}
}
@article{tian2021fcos,
title = {{FCOS}: A Simple and Strong Anchor-free Object Detector},
author = {Tian, Zhi and Shen, Chunhua and Chen, Hao and He, Tong},
booktitle = {IEEE T. Pattern Analysis and Machine Intelligence (TPAMI)},
year = {2021}
}
Kami ingin mengucapkan terima kasih kepada @YQyao untuk trik pengambilan sampel tengah dan Giou. Kami juga berterima kasih kepada @Bearcatt atas sarannya memposisikan cabang pusat dengan regresi kotak (lihat #89).
Untuk penggunaan akademik, proyek ini dilisensikan di bawah lisensi BSD 2 -Clause - lihat file lisensi untuk detailnya. Untuk penggunaan komersial, silakan hubungi penulis.