In diesem Projekt wird der Code für die Implementierung des FCOS -Algorithmus zur Objekterkennung veranstaltet, wie in unserem Artikel angegeben:
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
Das vollständige Papier ist unter: https://arxiv.org/abs/1904.01355 erhältlich.
Die Implementierung basierend auf DETECTRON2 ist in Adelaidet enthalten.
Ein Echtzeitmodell mit 46 fps und 40,3 in AP auf Coco Minival ist ebenfalls erhältlich.
Wir verwenden 8 nvidia v100 gpus.
Aber 4 1080Ti-GPUs können auch ein vollwertiges FCOS-Basis von RESNET-50-FPN basieren, da FCOs speichereffizient sind.
Für Benutzer, die FCOs nur als Objektdetektor in ihren Projekten verwenden möchten, können sie es per PIP installieren. Um dies zu tun, rennen Sie:
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
Bitte besuchen Sie hier die Benutzeroberfläche.
Diese FCOS-Implementierung basiert auf Maskrcnn-Benchmark. Daher ist die Installation die gleiche wie die ursprüngliche Maskrcnn-Benchmark.
Bitte überprüfen Sie die Installationsanweisungen install.md. Möglicherweise möchten Sie auch den ursprünglichen Readme.md von Maskrcnn-Benchmark sehen.
Sobald die Installation abgeschlossen ist, können Sie die folgenden Schritte ausführen, um eine schnelle Demo auszuführen.
# 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
Die Inferenzkommandozeile auf 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
Bitte beachten Sie::
FCOS_imprv_R_50_FPN_1x.pth durch Ihren eigenen.TEST.IMS_PER_BATCH zu reduzieren.--config-file in seine Konfigurationsdatei (in Konfigurationen/FCOS) und MODEL.WEIGHT . Gewicht auf seine Gewichtsdatei.Für Ihre Bequemlichkeit bieten wir die folgenden geschulten Modelle an (bald kommen bald Modelle).
Resne (x) ts:
Alle resne (x) t-basierten Modelle werden mit 16 Bildern in einer Mini-Batch- und Frozen-Stapel-Normalisierung trainiert (dh mit Modellen in maskrcnn_benchmark).
| Modell | Multi-Scale-Training | Testzeit / IM | AP (Minival) | Link |
|---|---|---|---|---|
| FCOS_IMPRV_R_50_FPN_1X | NEIN | 44 ms | 38,7 | herunterladen |
| Fcos_imprv_dcnv2_r_50_fpn_1x | NEIN | 54 ms | 42.3 | herunterladen |
| FCOS_IMPRV_R_101_FPN_2X | Ja | 57 ms | 43.0 | herunterladen |
| FCOS_IMPRV_DCNV2_R_101_FPN_2X | Ja | 73 ms | 45,6 | herunterladen |
| Fcos_imprv_x_101_32x8d_fpn_2x | Ja | 110 ms | 44.0 | herunterladen |
| Fcos_imprv_dcnv2_x_101_32x8d_fpn_2x | Ja | 143 ms | 46,4 | herunterladen |
| Fcos_imprv_x_101_64x4d_fpn_2x | Ja | 112 ms | 44.7 | herunterladen |
| Fcos_imprv_dcnv2_x_101_64x4d_fpn_2x | Ja | 144 ms | 46.6 | herunterladen |
Beachten Sie, dass imprv improvements in unserem Papier Tabelle 3 bezeichnet. Diese fast kostenfreien Änderungen verbessern die Leistung insgesamt um ~ 1,5%. Daher empfehlen wir dringend, sie zu verwenden. Im Folgenden sind die ursprünglichen Modelle in unserem ersten Papier aufgeführt.
| Modell | Multi-Scale-Training | Testzeit / IM | AP (Minival) | AP (Test-dev) | Link |
|---|---|---|---|---|---|
| Fcos_r_50_fpn_1x | NEIN | 45 ms | 37.1 | 37,4 | herunterladen |
| FCOS_R_101_FPN_2X | Ja | 59 ms | 41,4 | 41,5 | herunterladen |
| Fcos_x_101_32x8d_fpn_2x | Ja | 110 ms | 42,5 | 42.7 | herunterladen |
| Fcos_x_101_64x4d_fpn_2x | Ja | 113 ms | 43.0 | 43.2 | herunterladen |
Mobilens:
Wir aktualisieren die Batch -Normalisierung für Mobilenet -basierte Modelle. Wenn Sie Syncbn verwenden möchten, installieren Sie bitte Pytorch 1.1 oder höher.
| Modell | Trainingseinheitgröße | Multi-Scale-Training | Testzeit / IM | AP (Minival) | Link |
|---|---|---|---|---|---|
| FCOS_SYNCBN_BS32_C128_MNV2_FPN_1X | 32 | NEIN | 26 ms | 30.9 | herunterladen |
| FCOS_SYNCBN_BS32_MNV2_FPN_1X | 32 | NEIN | 33 ms | 33.1 | herunterladen |
| Fcos_bn_bs16_mnv2_fpn_1x | 16 | NEIN | 44 ms | 31.0 | herunterladen |
[1] 1x und 2x bedeuten, dass das Modell für 90K- bzw. 180K -Iterationen trainiert wird.
[2] Alle Ergebnisse werden mit einem einzelnen Modell und ohne Testzeitvergrößerung wie Multi-Skala, Flipping usw. erhalten.
[3] c128 bezeichnet, dass das Modell 128 (anstelle von 256) Kanälen in Türmen (dh MODEL.RESNETS.BACKBONE_OUT_CHANNELS in config) enthält.
[4] dcnv2 bezeichnet deformierbare Faltungsnetzwerke v2. Beachten Sie, dass wir für rESNET -basierte Modelle deformierbare Konvolutionen von Stufe C3 auf C5 in Backbones anwenden. Für resNext -basierte Modelle verwenden nur Stadium C4 und C5 deformierbare Konvolutionen. Alle Modelle verwenden in der letzten Schicht von Detektortürmen deformierbare Konvolutionen.
[5] Das Modell FCOS_imprv_dcnv2_X_101_64x4d_FPN_2x mit Multi-Scale-Tests erreicht 49,0% in AP auf Coco-Test-Dev. Bitte verwenden Sie TEST.BBOX_AUG.ENABLED True , um mehrskalige Tests zu aktivieren.
Die folgende Befehlszeile trainiert FCOS_IMPRV_R_50_FPN_1X auf 8 GPUs mit synchronem stochastischen Gradientenabstieg (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
Beachten Sie, dass:
--nproc_per_node an die Anzahl der GPUs. Keine anderen Einstellungen müssen geändert werden. Die Gesamtstapelgröße hängt nicht von nproc_per_node ab. Wenn Sie die Gesamtstapelgröße ändern möchten, ändern Sie bitte SOLVER.IMS_PER_BATCH in configs/fcos/fcos_r_50_fpn_1x.yaml.OUTPUT_DIR gespeichert.--config-file .num_pos zwischen GPUs beim Computerverlust nicht synchronisiert haben. Weitere Informationen zum Exportieren des Modells in ONNX finden Sie im Verzeichnis ONNX. Ein konvertiertes Modell kann hier heruntergeladen werden. Wir empfehlen Ihnen, Pytorch> = 1.4.0 (oder nächtliche) und Torchvision> = 0,5.0 (oder Nacht) für ONNX -Modelle zu verwenden.
Alle Zuganfragen oder Probleme sind willkommen.
Bitte erwägen Sie, unser Papier in Ihren Veröffentlichungen zu zitieren, wenn das Projekt Ihre Forschung hilft. Die Bibtex -Referenz lautet wie folgt.
@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}
}
Wir möchten uns bei @yqyao für die Tricks von Center Proben und Giou bedanken. Wir danken auch @bearcatt für seinen Vorschlag, den Center-Ness-Zweig mit einer Box-Regression zu positionieren (siehe #89).
Für die akademische Verwendung ist dieses Projekt unter der 2 -Klausel -BSD -Lizenz lizenziert - Einzelheiten finden Sie in der Lizenzdatei. Für den kommerziellen Gebrauch wenden Sie sich bitte an die Autoren.