
Super schnell und hohe Genauigkeit leichtes Anker-freier Objekterkennungsmodell. Echtzeit auf mobilen Geräten.

Nanodet ist ein einstufiges Anker-freier Objekterkennungsmodell im FCOS-Stil, bei dem generalisierten Fokusverlust als Klassifizierung und Regressionsverlust verwendet werden.
In Nanodet-Plus schlagen wir eine neuartige Strategie zur Zuweisung von Etiketten mit einem einfachen Zuweisungsmodul (AGM) und einem DSLA (Dynamic Soft Label-Beauftragung) vor, um das Problem der optimalen Labelzuweisung im Leichtgewichtsmodelltraining zu lösen. Wir stellen auch eine leichte Feature-Pyramide mit dem Namen Ghost-Pan ein, um die Fusion mit mehrschichtigen Funktionen zu verbessern. Diese Verbesserungen steigern die Erkennungsgenauigkeit des früheren Nanodeten mit 7 Karte auf dem Coco -Datensatz.
Nanodet-plus 知乎中文介绍
Nanodet 知乎中文介绍
Qq 交流群 : 908606542 (答案 : :)
| Modell | Auflösung | Karte val 0,5: 0,95 | CPU -Latenz (i7-8700) | Armlatenz (4xa76) | Flops | Parameter | Modellgröße |
|---|---|---|---|---|---|---|---|
| Nanodet-m | 320*320 | 20.6 | 4,98 ms | 10.23 ms | 0,72 g | 0,95 m | 1,8 MB (FP16) | 980 KB (INT8) |
| Nanodet-plus-m | 320*320 | 27.0 | 5.25 ms | 11,97 ms | 0,9g | 1,17 m | 2,3 MB (FP16) | 1,2 MB (INT8) |
| Nanodet-plus-m | 416*416 | 30.4 | 8.32 ms | 19.77ms | 1,52g | 1,17 m | 2,3 MB (FP16) | 1,2 MB (INT8) |
| Nanodet-PLUS-M-1.5X | 320*320 | 29.9 | 7.21 ms | 15,90 ms | 1,75G | 2,44 m | 4,7 MB (FP16) | 2,3 MB (INT8) |
| Nanodet-PLUS-M-1.5X | 416*416 | 34.1 | 11,50 ms | 25,49 ms | 2,97G | 2,44 m | 4,7 MB (FP16) | 2,3 MB (INT8) |
| Yolov3-tiny | 416*416 | 16.6 | - - | 37,6 ms | 5.62g | 8,86 m | 33,7 MB |
| Yolov4-tiny | 416*416 | 21.7 | - - | 32,81 ms | 6,96G | 6,06 m | 23,0 MB |
| Yolox-Nano | 416*416 | 25.8 | - - | 23.08 ms | 1,08g | 0,91 m | 1,8 MB (FP16) |
| Yolov5-n | 640*640 | 28.4 | - - | 44,39 ms | 4,5 g | 1,9 m | 3,8 MB (FP16) |
| FBNETV5 | 320*640 | 30.4 | - - | - - | 1,8g | - - | - - |
| Mobiledet | 320*320 | 25.6 | - - | - - | 0,9g | - - | - - |
Laden Sie vorgeborene Modelle herunter und suchen Sie mehr Modelle im Modellzoo oder in Release-Dateien
Die ARM -Leistung wird auf Kirin 980 (4xa76+4xa55) ARM -CPU basierend auf NCNN gemessen. Sie können die Latenz auf Ihrem Telefon mit ncnn_android_benchmark testen.
Die Intel-CPU-Leistung wird in OpenVino gemessen.
Die Nanodet -Karte (0,5: 0,95) wird auf dem Datensatz von CoCO VAL2017 ohne Testzeitvergrößerung validiert.
Yolov3 & Yolov4 MAP bezieht sich aus scaled-yolov4: Skaling Cross Stage Partial Network.
[2023.01.20] Upgrade auf Pytorch-Lightning-1.9. Die minimale Pytorch -Version wird auf 1.10 aktualisiert. Unterstützen Sie das FP16-Training (danke @Crisp-Snakey). Support Ignore Label (danke @Zero0kiriyu).
[2022.08.26] Upgrade auf Pytorch-Lightning-1.7. Die minimale Pytorch -Version wird auf 1,9 aktualisiert. Um die vorherige Version von Pytorch zu verwenden, installieren Sie bitte Nanodet <= v1.0.0-alpha-1
[2021.12.25] Nanodet-Plus- Veröffentlichung! Hinzufügen von AGM (Anweisungsmodul zuweisen) und DSLA (Dynamic Soft Label -Anbieter), um 7 MAP mit nur wenigen Kosten zu verbessern.
Weitere Update -Notizen finden Sie in Update -Notizen.

Android Demo Project befindet sich im Ordner Demo_android_ncnn . Weitere Informationen finden Sie im Android Demo Guide.
Hier ist eine bessere Implementierung NCNN-Android-Nanodet
C ++ - Demo basierend auf NCNN befindet sich im Ordner des Demo_NCNN . Weitere Informationen finden Sie im CPP Demo Guide.
Inferenz mit Alibabas MNN -Framework befindet sich im Ordner des Demo_Mnn . Weitere Informationen finden Sie im MNN Demo Guide.
Die Inferenz mit OpenVino befindet sich im Ordner deMo_openvino . Weitere Informationen finden Sie unter OpenVino Demo Guide.
https://nihui.github.io/ncnn-webassembly-nanodet/
Installieren Sie zunächst die Anforderungen an und richten Sie den Nanodet für den Installationshandbuch ein. Laden Sie dann das Coco -Pretrain -Gewicht von hier herunter
COCO PRETRAIN CHECPOINT
Das vorgebrachte Gewicht wurde durch die config/nanodet-plus-m_416.yml trainiert.
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_IDAußerdem stellen wir hier ein Notizbuch zur Verfügung, um zu demonstrieren, wie es mit Pytorch funktioniert.
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 developNanodet unterstützt eine Vielzahl von Rückgrat. Gehen Sie zum Konfigurationsordner , um die Beispiel -Trainingskonfigurationsdateien anzuzeigen.
| Modell | Rückgrat | Auflösung | Coco Map | Flops | Parameter | Gewicht vor dem Training |
|---|---|---|---|---|---|---|
| Nanodet-m | Shufflenetv2 1.0x | 320*320 | 20.6 | 0,72 g | 0,95 m | Herunterladen |
| Nanodet-PLUS-M-320 ( neu ) | Shufflenetv2 1.0x | 320*320 | 27.0 | 0,9g | 1,17 m | Gewicht | Kontrollpunkt |
| Nanodet-PLUS-M-416 ( neu ) | Shufflenetv2 1.0x | 416*416 | 30.4 | 1,52g | 1,17 m | Gewicht | Kontrollpunkt |
| Nanodet-PLUS-M-1.5x-320 ( neu ) | Shufflenetv2 1,5x | 320*320 | 29.9 | 1,75G | 2,44 m | Gewicht | Kontrollpunkt |
| Nanodet-PLUS-M-1.5X-416 ( neu ) | Shufflenetv2 1,5x | 416*416 | 34.1 | 2,97G | 2,44 m | Gewicht | Kontrollpunkt |
Hinweis : Der Unterschied zwischen Weight und Checkpoint besteht darin, dass das Gewicht nur Parameter in der Inferenzzeit liefert, der Kontrollpunkt enthält jedoch Trainingszeitparamien.
Legacy Model Zoo
| Modell | Rückgrat | Auflösung | Coco Map | Flops | Parameter | Gewicht vor dem Training |
|---|---|---|---|---|---|---|
| Nanodet-M-416 | Shufflenetv2 1.0x | 416*416 | 23.5 | 1,2g | 0,95 m | Herunterladen |
| Nanodet-M-1.5x | Shufflenetv2 1,5x | 320*320 | 23.5 | 1,44g | 2,08 m | Herunterladen |
| Nanodet-M-1.5x-416 | Shufflenetv2 1,5x | 416*416 | 26.8 | 2.42g | 2,08 m | Herunterladen |
| Nanodet-M-0,5x | Shuffenetv2 0,5x | 320*320 | 13.5 | 0,3 g | 0,28 m | Herunterladen |
| Nanodet-t | Shufflenetv2 1.0x | 320*320 | 21.7 | 0,96 g | 1,36 m | Herunterladen |
| Nanodet-G | Benutzerdefiniertes CSP -Netz | 416*416 | 22.9 | 4.2g | 3,81 m | Herunterladen |
| Nanodet-effizientes Lit | EfficientNet-Lite0 | 320*320 | 24.7 | 1,72g | 3.11m | Herunterladen |
| Nanodet-effizientes Lit | EffizientesNet-lite1 | 416*416 | 30.3 | 4.06g | 4,01 m | Herunterladen |
| Nanodet-effizientes Lit | EffizientesNet-lite2 | 512*512 | 32.6 | 7.12g | 4,71 m | Herunterladen |
| Nanodet-Repvgg | Repvgg-a0 | 416*416 | 27.8 | 11.3g | 6,75 m | Herunterladen |
Datensatz vorbereiten
Wenn Ihre Datensatzanmerkungen Pascal VOC XML -Format sind
Wenn Ihre Datensatzanmerkungen ansonsten YOLO-Format (DarkNet TXT) sind
Oder konvertieren Sie Ihre Datensatzanmerkungen in das MS CoCO -Format (Details des Coco -Annotationsformates).
Konfigurationsdatei vorbereiten
Kopieren und ändern Sie eine Beispiel -YML -Konfigurationsdatei in Konfiguration/ Ordner.
Ändern Sie Save_dir so, dass Sie das Modell speichern möchten.
Ändern Sie num_classes in model-> arch-> Kopf .
Ändern Sie den Bildpfad und Annotationspfad sowohl in Daten-> Zug als auch daten-> val .
Setzen Sie GPU -IDs, Num -Mitarbeiter und Chargengröße im Gerät für Ihr Gerät.
Setzen Sie Total_epochs , LR und LR_Schedule gemäß Ihrem Datensatz und BatchSize.
Wenn Sie das Netzwerk, die Datenerweiterung oder andere Dinge ändern möchten
Beginnen Sie mit dem Training
Nanodet verwendet jetzt Pytorch Lightning zum Training.
Rennen Sie:
python tools/train.py CONFIG_FILE_PATHVisualisieren Sie Protokolle
Tensorboard -Protokolle werden in save_dir gespeichert, die Sie in der Konfigurationsdatei festlegen.
Um Tensorboard -Protokolle zu visualisieren, rennen Sie:
cd < YOUR_SAVE_DIR >
tensorboard --logdir ./Nanodet bietet eine C ++-Demo mit mehreren Backends, einschließlich NCNN, OpenVino und MNN. Es gibt auch eine Android -Demo, die auf der NCNN -Bibliothek basiert.
Um das Nanodet-Pytorch-Modell in NCNN umzuwandeln, können Sie diese Weise wählen: Pytorch-> onnx-> ncnn
Um das ONNX -Modell zu exportieren, führen Sie tools/export_onnx.py aus.
python tools/export_onnx.py --cfg_path ${CONFIG_PATH} --model_path ${PYTORCH_MODEL_PATH}Bitte beziehen Sie sich auf Demo_NCNN.
Weitere Informationen finden Sie in Demo_Openvino.
Bitte beziehen Sie sich auf Demo_Mnn.
Weitere Informationen finden Sie in Android_Demo.
Wenn Sie dieses Projekt in Ihrer Forschung nützlich finden, sollten Sie zitieren:
@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/mmdetction
https://github.com/implus/gfocal
https://github.com/cmdbug/yolov5_ncnn
https://github.com/rbgirshick/yacs