
نموذج الكشف عن الكشف عن الكائن الخالي من مرساة خفيفة الوزن فائقة الدقة. الوقت الحقيقي على الأجهزة المحمولة.

Nanodet هو نموذج الكشف عن الكائنات الخالية من المرساة على طراز FCOS والذي يستخدم فقدان البؤرة المعمم كتصنيف وفقدان الانحدار.
في nanodet-plus ، نقترح استراتيجية تخصيص تسمية جديدة مع وحدة توجيه بسيطة تعيين (AGM) ومُشكال تسمية ناعمة ديناميكية (DSLA) لحل مشكلة تعيين الملصقات المثلى في التدريب الخفيف النماذج. نقدم أيضًا هرم ميزة الضوء يسمى Ghost-Pan لتعزيز الانصهار الميزات متعددة الطبقات. هذه التحسينات تعزز دقة اكتشاف Nanodet السابقة من قبل 7 خريطة على مجموعة بيانات Coco.
nanodet-plus 知乎中文介绍
nanodet 知乎中文介绍
QQ : : 908606542 (: : 炼丹)
| نموذج | دقة | خريطة فال 0.5: 0.95 | زمن انتقال وحدة المعالجة المركزية (i7-8700) | زمن انتقال الذراع (4xa76) | يتخبط | params | حجم النموذج |
|---|---|---|---|---|---|---|---|
| nanodet-m | 320*320 | 20.6 | 4.98ms | 10.23ms | 0.72 جم | 0.95m | 1.8 ميغابايت (FP16) | 980 كيلو بايت (int8) |
| nanodet-plus-m | 320*320 | 27.0 | 5.25ms | 11.97ms | 0.9g | 1.17m | 2.3MB (FP16) | 1.2 ميغابايت (int8) |
| nanodet-plus-m | 416*416 | 30.4 | 8.32ms | 19.77ms | 1.52 جم | 1.17m | 2.3MB (FP16) | 1.2 ميغابايت (int8) |
| nanodet-plus-m-m-1.5x | 320*320 | 29.9 | 7.21ms | 15.90ms | 1.75g | 2.44m | 4.7MB (FP16) | 2.3 ميغابايت (int8) |
| nanodet-plus-m-m-1.5x | 416*416 | 34.1 | 11.50ms | 25.49ms | 2.97g | 2.44m | 4.7MB (FP16) | 2.3 ميغابايت (int8) |
| Yolov3-Tiny | 416*416 | 16.6 | - | 37.6 مللي ثانية | 5.62g | 8.86m | 33.7 ميجابايت |
| Yolov4-tiny | 416*416 | 21.7 | - | 32.81ms | 6.96g | 6.06m | 23.0MB |
| يولوكس نانو | 416*416 | 25.8 | - | 23.08ms | 1.08g | 0.91m | 1.8 ميغابايت (FP16) |
| Yolov5-N | 640*640 | 28.4 | - | 44.39ms | 4.5g | 1.9m | 3.8 ميغابايت (FP16) |
| FBNETV5 | 320*640 | 30.4 | - | - | 1.8 جم | - | - |
| mobiledet | 320*320 | 25.6 | - | - | 0.9g | - | - |
قم بتنزيل النماذج التي تم تدريبها مسبقًا وابحث عن المزيد من النماذج في حديقة الحيوان النموذجية أو في ملفات الإصدار
يتم قياس أداء ARM على Kirin 980 (4xa76+4xa55) ARM CPU على أساس NCNN. يمكنك اختبار الكمون على هاتفك باستخدام NCNN_Android_Benchmark.
يتم قياس أداء وحدة المعالجة المركزية Intel Intel Core-I7-8700 استنادًا إلى Openvino.
تم التحقق من صحة خريطة Nanodet (0.5: 0.95) على مجموعة بيانات Coco Val2017 مع عدم وجود تكبير لوقت الاختبار.
تشير خريطة YOLOV3 و YOLOV4 من الشبكة الجزئية للمرحلة المتقاطعة.
[2023.01.20] ترقية إلى Pytorch-Lightning-1.9. تمت ترقية إصدار Pytorch الأدنى إلى 1.10. دعم تدريب FP16 (شكرًا @crisp-snakey). الدعم تجاهل التسمية (شكرًا @Zero0Kiriyu).
[2022.08.26] ترقية إلى Pytorch-Lightning-1.7. تمت ترقية إصدار Pytorch الأدنى إلى 1.9. لاستخدام الإصدار السابق من Pytorch ، يرجى تثبيت nanodet <= v1.0.0-alpha-1
[2021.12.25] إصدار نانوديت زائد ! إضافة AGM (تعيين وحدة إرشادية) و DSLA (محيط التسمية الناعمة الديناميكية) لتحسين 7 خريطة بتكلفة صغيرة فقط.
ابحث عن المزيد من ملاحظات التحديث في ملاحظات التحديث.

مشروع Android Demo في مجلد Demo_android_ncnn . يرجى الرجوع إلى دليل Android التجريبي.
فيما يلي تطبيق أفضل NCNN-Android-Nanodet
C ++ العرض التوضيحي بناءً على NCNN في مجلد Demo_ncnn . يرجى الرجوع إلى دليل CPP التجريبي.
الاستدلال باستخدام إطار MNN الخاص بـ Alibaba في مجلد Demo_Mnn . يرجى الرجوع إلى دليل MNN التجريبي.
الاستدلال باستخدام Openvino في مجلد Demo_openvino . يرجى الرجوع إلى دليل Openvino التجريبي.
https://nihui.github.io/ncnn-webassembly-nanodet/
أولاً ، تثبيت المتطلبات وإعداد Nanodet بعد دليل التثبيت. ثم قم بتنزيل وزن Coco Pretrain من هنا
نقطة تفتيش كوكو قبل
تم تدريب الوزن الذي تم تدريبه مسبقًا بواسطة config config/nanodet-plus-m_416.yml .
python demo/demo.py image --config CONFIG_PATH --model MODEL_PATH --path IMAGE_PATHpython demo/demo.py video --config CONFIG_PATH --model MODEL_PATH --path VIDEO_PATHpython demo/demo.py webcam --config CONFIG_PATH --model MODEL_PATH --camid YOUR_CAMERA_IDعلاوة على ذلك ، نقدم دفتر ملاحظات هنا لإظهار كيفية جعلها تعمل مع Pytorch.
conda create -n nanodet python=3.8 -y
conda activate nanodetconda install pytorch torchvision cudatoolkit=11.1 -c pytorch -c conda-forgegit clone https://github.com/RangiLyu/nanodet.git
cd nanodetpip install -r requirements.txtpython setup.py developنانوديت يدعم مجموعة متنوعة من العمود الفقري. انتقل إلى مجلد التكوين لمشاهدة ملفات تكوين تدريب عينة.
| نموذج | العمود الفقري | دقة | خريطة كوكو | يتخبط | params | وزن ما قبل التدريب |
|---|---|---|---|---|---|---|
| nanodet-m | Shufflenetv2 1.0x | 320*320 | 20.6 | 0.72 جم | 0.95m | تحميل |
| nanodet-plus-m-320 ( جديد ) | Shufflenetv2 1.0x | 320*320 | 27.0 | 0.9g | 1.17m | الوزن | نقطة التفتيش |
| nanodet-plus-m-416 ( جديد ) | Shufflenetv2 1.0x | 416*416 | 30.4 | 1.52 جم | 1.17m | الوزن | نقطة التفتيش |
| nanodet-plus-m-1.5x-320 ( جديد ) | Shufflenetv2 1.5x | 320*320 | 29.9 | 1.75g | 2.44m | الوزن | نقطة التفتيش |
| nanodet-plus-m-m-1.5x-416 ( جديد ) | Shufflenetv2 1.5x | 416*416 | 34.1 | 2.97g | 2.44m | الوزن | نقطة التفتيش |
إشعار : الفرق بين Weight ونقطة Checkpoint هو أن الوزن يوفر فقط المعاملات في وقت الاستدلال ، ولكن نقطة التفتيش تحتوي على معاملات وقت التدريب.
ZOO MODEL LEGACY
| نموذج | العمود الفقري | دقة | خريطة كوكو | يتخبط | params | وزن ما قبل التدريب |
|---|---|---|---|---|---|---|
| Nanodet-M-416 | Shufflenetv2 1.0x | 416*416 | 23.5 | 1.2 جم | 0.95m | تحميل |
| Nanodet-M-M-1.5x | Shufflenetv2 1.5x | 320*320 | 23.5 | 1.44g | 2.08m | تحميل |
| Nanodet-M-1.5x-416 | Shufflenetv2 1.5x | 416*416 | 26.8 | 2.42 جم | 2.08m | تحميل |
| Nanodet-M-0.5x | Shufflenetv2 0.5x | 320*320 | 13.5 | 0.3g | 0.28 م | تحميل |
| nanodet-t | Shufflenetv2 1.0x | 320*320 | 21.7 | 0.96g | 1.36m | تحميل |
| nanodet-g | مخصص CSP Net | 416*416 | 22.9 | 4.2 جم | 3.81m | تحميل |
| نانوديت-كفاءة | كفاءة net-lite0 | 320*320 | 24.7 | 1.72 جم | 3.11m | تحميل |
| نانوديت-كفاءة | كفاءة net-lite1 | 416*416 | 30.3 | 4.06g | 4.01m | تحميل |
| نانوديت-كفاءة | كفاءة net-lite2 | 512*512 | 32.6 | 7.12g | 4.71m | تحميل |
| nanodet-repvgg | Repvgg-A0 | 416*416 | 27.8 | 11.3 جم | 6.75m | تحميل |
إعداد مجموعة البيانات
إذا كانت توضيحات مجموعة البيانات الخاصة بك هي تنسيق Pascal Voc XML ، راجع config/nanodet_custom_xml_dataset.yml
خلاف ذلك ، إذا كانت تعليقات مجموعة البيانات الخاصة بك هي تنسيق yolo (darknet txt) ، راجع config/nanodet-plus-m_416-yolo.yml
أو قم بتحويل تعليقات مجموعة البيانات الخاصة بك إلى تنسيق MS Coco (تفاصيل تنسيق التعليقات التوضيحية لجورصات).
إعداد ملف التكوين
انسخ وتعديل مثال ملف تكوين YML في المجلد/ المجلد.
قم بتغيير Save_dir إلى حيث تريد حفظ النموذج.
تغيير num_classes في الطراز-> القوس-> الرأس .
قم بتغيير مسار الصورة ومسار التعليقات التوضيحية في كل من البيانات-> القطار والبيانات- > VAL .
قم بتعيين معرفات GPU ، وعمال NUM وحجم الدُفعة في الجهاز لتناسب جهازك.
قم بتعيين Total_epochs و LR و LR_Schedule وفقًا لمجموعة البيانات الخاصة بك و BatchSize.
إذا كنت ترغب في تعديل الشبكة أو زيادة البيانات أو أشياء أخرى ، فيرجى الرجوع إلى تفاصيل ملف التكوين
ابدأ التدريب
تستخدم Nanodet الآن Pytorch Lightning للتدريب.
لكل من GPU واحد أو GPUs متعددة ، قم بتشغيل:
python tools/train.py CONFIG_FILE_PATHتصور السجلات
يتم حفظ سجلات Tensorboard في save_dir التي قمت بتعيينها في ملف التكوين.
لتصور سجلات Tensorboard ، قم بتشغيل:
cd < YOUR_SAVE_DIR >
tensorboard --logdir ./يوفر Nanodet عرضًا متعدد المقاومة C ++ بما في ذلك NCNN و Openvino و MNN. هناك أيضًا عرض تجريبي Android يعتمد على مكتبة NCNN.
لتحويل طراز Nanodet Pytorch إلى NCNN ، يمكنك اختيار هذه الطريقة: Pytorch-> onnx-> ncnn
لتصدير نموذج ONNX ، قم بتشغيل tools/export_onnx.py .
python tools/export_onnx.py --cfg_path ${CONFIG_PATH} --model_path ${PYTORCH_MODEL_PATH}يرجى الرجوع إلى demo_ncnn.
يرجى الرجوع إلى demo_openvino.
يرجى الرجوع إلى demo_mnn.
يرجى الرجوع إلى Android_Demo.
إذا وجدت هذا المشروع مفيدًا في بحثك ، فيرجى النظر في Cite:
@misc { =nanodet ,
title = { NanoDet-Plus: Super fast and high accuracy lightweight anchor-free object detection model. } ,
author = { RangiLyu } ,
howpublished = { url{https://github.com/RangiLyu/nanodet} } ,
year = { 2021 }
}https://github.com/tencent/ncnn
https://github.com/open-mmlab/mmdetection
https://github.com/implus/gfocal
https://github.com/cmdbug/yolov5_ncnn
https://github.com/rbgirshick/yacs