يستضيف هذا المشروع رمز تنفيذ خوارزمية FCOS للكشف عن الكائنات ، كما هو موضح في ورقتنا:
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
تتوفر الورقة الكاملة على: https://arxiv.org/abs/1904.01355.
يتم تضمين التنفيذ على أساس Detectron2 في Adelaidet.
يتوفر نموذج في الوقت الفعلي مع 46 إطارًا في الثانية و 40.3 في AP على Coco Minival هنا.
نستخدم 8 NVIDIA V100 وحدات معالجة الرسومات.
ولكن يمكن لـ 4 1080ti GPUs أيضًا تدريب FCOs على أساس Resnet-50-FPN بشكل كامل لأن FCOs موفرة للذاكرة.
للمستخدمين الذين يرغبون فقط في استخدام FCOs ككاشف كائن في مشاريعهم ، يمكنهم تثبيته بواسطة PIP. للقيام بذلك ، قم بالتشغيل:
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
يرجى التحقق هنا لاستخدام الواجهة.
يعتمد تطبيق FCOS هذا على Maskrcnn-Benchmark. لذلك فإن التثبيت هو نفسه Maskrcnn-Benchmark الأصلي.
يرجى التحقق من تثبيت. md للحصول على تعليمات التثبيت. قد ترغب أيضًا في رؤية readme.md الأصلي من Maskrcnn-Benchmark.
بمجرد الانتهاء من التثبيت ، يمكنك متابعة الخطوات أدناه لتشغيل عرض سريع.
# 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
سطر أوامر الاستدلال على تقسيم Minival Coco:
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
يرجى ملاحظة أن:
FCOS_imprv_R_50_FPN_1x.pth مع.TEST.IMS_PER_BATCH إلى 1.--config-file إلى ملف التكوين الخاص به (في التكوينات/FCOs) و MODEL.WEIGHT إلى ملف الأوزان.من أجل راحتك ، نقدم النماذج المدربة التالية (المزيد من الطرز ستأتي قريبًا).
راتن (x) ts:
يتم تدريب جميع النماذج المستندة إلى Resne (x) مع 16 صورة في تطبيع الدُفعات المصغرة والتجميد (أي ، بما يتوافق مع النماذج في maskrcnn_benchmark).
| نموذج | التدريب متعدد النطاق | وقت الاختبار / أنا | AP (Minival) | وصلة |
|---|---|---|---|---|
| FCOS_IMPRV_R_50_FPN_1X | لا | 44ms | 38.7 | تحميل |
| FCOS_IMPRV_DCNV2_R_50_FPN_1X | لا | 54ms | 42.3 | تحميل |
| FCOS_IMPRV_R_101_FPN_2X | نعم | 57ms | 43.0 | تحميل |
| FCOS_IMPRV_DCNV2_R_101_FPN_2X | نعم | 73ms | 45.6 | تحميل |
| FCOS_IMPRV_X_101_32X8D_FPN_2X | نعم | 110ms | 44.0 | تحميل |
| fcos_imprv_dcnv2_x_101_32x8d_fpn_2x | نعم | 143ms | 46.4 | تحميل |
| FCOS_IMPRV_X_101_64X4D_FPN_2X | نعم | 112ms | 44.7 | تحميل |
| fcos_imprv_dcnv2_x_101_64x4d_fpn_2x | نعم | 144ms | 46.6 | تحميل |
لاحظ أن imprv تدل على improvements في جدولنا الورقي 3. هذه التغييرات الخالية من التكلفة تقريبًا تعمل على تحسين الأداء بنسبة 1.5 ٪ تقريبًا. وبالتالي ، نوصي بشدة لاستخدامها. فيما يلي النماذج الأصلية المقدمة في ورقتنا الأولية.
| نموذج | التدريب متعدد النطاق | وقت الاختبار / أنا | AP (Minival) | AP (اختبار ديف) | وصلة |
|---|---|---|---|---|---|
| FCOS_R_50_FPN_1X | لا | 45ms | 37.1 | 37.4 | تحميل |
| FCOS_R_101_FPN_2X | نعم | 59ms | 41.4 | 41.5 | تحميل |
| fcos_x_101_32x8d_fpn_2x | نعم | 110ms | 42.5 | 42.7 | تحميل |
| fcos_x_101_64x4d_fpn_2x | نعم | 113ms | 43.0 | 43.2 | تحميل |
موبيلينيت:
نقوم بتحديث تطبيع الدُفعات للنماذج القائمة على موبيلينت. إذا كنت ترغب في استخدام SyncBN ، فيرجى تثبيت Pytorch 1.1 أو أحدث.
| نموذج | حجم دفعة تدريب | التدريب متعدد النطاق | وقت الاختبار / أنا | AP (Minival) | وصلة |
|---|---|---|---|---|---|
| FCOS_SYNCBN_BS32_C128_MNV2_FPN_1X | 32 | لا | 26 مللي ثانية | 30.9 | تحميل |
| fcos_syncbn_bs32_mnv2_fpn_1x | 32 | لا | 33ms | 33.1 | تحميل |
| FCOS_BN_BS16_MNV2_FPN_1X | 16 | لا | 44ms | 31.0 | تحميل |
[1] 1x و 2x يعني أن النموذج مدرب على 90 ألف و 180 ألف تكرار ، على التوالي.
[2] يتم الحصول على جميع النتائج من خلال نموذج واحد وبدون أي اختبار لزيادة بيانات وقت الاختبار مثل متعدد النطاق ، التقليب وما إلى ذلك ..
[3] يشير c128 إلى أن النموذج يحتوي على 128 (بدلاً من 256) قناة في الأبراج (أي ، MODEL.RESNETS.BACKBONE_OUT_CHANNELS في التكوين).
[4] يشير dcnv2 إلى الشبكات التلافيفية المشوهة V2. لاحظ أنه بالنسبة للنماذج القائمة على ResNet ، فإننا نطبق ملحقات مشوهة من المرحلة C3 إلى C5 في العمود الفقري. بالنسبة للنماذج المستندة إلى ResNext ، يستخدم المرحلة C4 و C5 فقط ملحقات مشوهة. تستخدم جميع النماذج تلوينات قابلة للتشوه في الطبقة الأخيرة من أبراج الكاشف.
[5] النموذج FCOS_imprv_dcnv2_X_101_64x4d_FPN_2x مع اختبار متعدد النطاق يحقق 49.0 ٪ في AP على COCO Test-DEV. يرجى استخدام TEST.BBOX_AUG.ENABLED True لتمكين الاختبار متعدد النطاق.
سيقوم سطر الأوامر التالي بتدريب FCOS_IMPRV_R_50_FPN_1X على 8 وحدات معالجة الرسومات مع نزول متزامن ستوكاستيك (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
لاحظ أن:
--nproc_per_node إلى عدد وحدات معالجة الرسومات. لا يلزم تغيير الإعدادات الأخرى. لا يعتمد حجم الدُفعة الإجمالية على nproc_per_node . إذا كنت ترغب في تغيير حجم الدُفعة الكلية ، فيرجى تغيير SOLVER.IMS_PER_BATCH في configs/fcos/fcos_r_50_fpn_1x.yaml.OUTPUT_DIR .--config-file .num_pos بين وحدات معالجة الرسومات عند الحوسبة. يرجى الرجوع إلى الدليل ONNX للحصول على مثال على تصدير النموذج إلى ONNX. يمكن تنزيل نموذج محول هنا. نوصيك باستخدام pytorch> = 1.4.0 (أو ليلا) و torchvision> = 0.5.0 (أو ليلا) لنماذج ONNX.
أي طلبات سحب أو مشكلات مرحب بها.
يرجى النظر في ذكر ورقتنا في منشوراتك إذا كان المشروع يساعد بحثك. مرجع bibtex كما يلي.
@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}
}
نود أن نشكر @Yqyao على حيل أخذ العينات المركزية و GIOU. كما نشكر Pearcatt على اقتراحه بوضع فرع الوسط مع الانحدار في المربع (راجع #89).
للاطلاع على الاستخدام الأكاديمي ، يتم ترخيص هذا المشروع بموجب ترخيص BSD 2 -poin - راجع ملف الترخيص للحصول على التفاصيل. للاستخدام التجاري ، يرجى الاتصال بالمؤلفين.