Dies ist das offizielle Repository mit der PyTorch-Implementierung von LW-DETR: Ein Transformer-Ersatz für YOLO für die Echtzeiterkennung.
☀️ Wenn Sie diese Arbeit für Ihre Forschung nützlich finden, markieren Sie bitte unser Repo und zitieren Sie unseren Artikel! ☀️
Geben Sie eine Reihe von Echtzeiterkennungsmodellen in LW-DETR frei, darunter LW-DETR-tiny, LW-DETR-small, LW-DETR-medium, LW-DETR-large und LW-DETR-xlarge, mit dem Namen
Geben Sie eine Reihe vorab trainierter Modelle in LW-DETR frei. Bitte beziehen Sie sich zum Herunterladen auf Hugging Face.
[15.07.2024] Wir präsentieren OVLW-DETR, einen effizienten Detektor für offenes Vokabular mit herausragender Leistung und geringer Latenz, der auf LW-DETR aufbaut. Es übertrifft bestehende Echtzeit-Detektoren für offenes Vokabular beim Standard-Zero-Shot-LVIS-Benchmark. Der Quellcode und das vorab trainierte Modell sind bald erhältlich, bitte bleiben Sie dran!
1. Einführung
2. Installation
3. Vorbereitung
4. Trainieren
5. Bewertung
6. Bereitstellen
7. Hauptergebnisse
8. Referenzen
9. Zitat
LW-DETR ist ein leichter Erkennungstransformator, der YOLOs bei der Objekterkennung in Echtzeit übertrifft. Die Architektur ist ein einfacher Stapel aus einem ViT-Encoder, einem Projektor und einem flachen DETR-Decoder. LW-DETR nutzt aktuelle fortschrittliche Techniken, wie etwa trainingseffektive Techniken, z. B. verbessertes Verlust- und Vortraining sowie verschachtelte Fenster und globale Aufmerksamkeiten, um die Komplexität des ViT-Encoders zu reduzieren. LW-DETR verbessert den ViT-Encoder, indem es mehrstufige Feature-Maps sowie die Zwischen- und End-Feature-Maps im ViT-Encoder aggregiert, wodurch umfangreichere Feature-Maps entstehen, und führt eine Fenster-Haupt-Feature-Map-Organisation ein, um die Effizienz der verschachtelten Aufmerksamkeitsberechnung zu verbessern. LW-DETR erreicht eine überlegene Leistung als bei bestehenden Echtzeitdetektoren, z. B. YOLO und seinen Varianten, bei COCO und anderen Benchmark-Datensätzen.
Der Code wird unter python=3.8.19, pytorch=1.13.0, cuda=11.6,TensorRT-8.6.1.6
entwickelt und validiert. Möglicherweise sind auch höhere Versionen verfügbar.
Erstellen Sie mit Anaconda Ihre eigene Python-Umgebung.
conda create -n lwdetr python=3.8.19 Conda aktiviert lwdetr
Klonen Sie dieses Repo.
Git-Klon https://github.com/Atten4Vis/LW-DETR.gitcd LW-DETR
Installieren Sie PyTorch und Torchvision.
Befolgen Sie die Anweisungen unter https://pytorch.org/get-started/locally/.
# ein Beispiel:conda install pytorch==1.13.0 Torchvision==0.14.0 pytorch-cuda=11.6 -c pytorch -c nvidia
Installieren Sie die erforderlichen Pakete.
Für Schulung und Evaluierung:
pip install -r Anforderungen.txt
Zur Bereitstellung:
Eine Installationsanleitung für TensorRT finden Sie bei NVIDIA
pip install -r deploy/requirements.txt
Kompilieren von CUDA-Operatoren
CD-Modelle/Ops python setup.py build install# Unit Test (alle Prüfungen sollten „True“ sein)python test.pycd ../..
Für den MS COCO- Datensatz laden Sie bitte COCO 2017-Zug- und Val-Bilder mit Anmerkungen von http://cocodataset.org herunter und extrahieren Sie sie. Wir erwarten, dass die Verzeichnisstruktur wie folgt aussieht:
COCODIR/ ├── train2017/ ├── val2017/ └── annotations/ ├── instances_train2017.json └── instances_val2017.json
Für den Objects365- Datensatz für das Vortraining laden Sie bitte Objects365-Bilder mit Anmerkungen von https://www.objects365.org/overview.html herunter.
Alle Kontrollpunkte finden Sie in Hugging Face.
Vorschulung für Objects365.
ViT vorab trainiert.
Wir trainieren das ViT auf dem Datensatz Objects365 vor, indem wir eine MIM-Methode, CAE v2, verwenden, die auf den vorab trainierten Modellen basiert. Klicken Sie auf den folgenden Link, um die vorab trainierten Modelle herunterzuladen und in pretrain_weights/
einzufügen.
Modell | Kommentar |
---|---|
caev2_tiny_300e_objects365 | Vorab trainiertes ViT-Modell auf Objekten365 für LW-DETR-tiny/small mit CAE v2 |
caev2_tiny_300e_objects365 | Vorab trainiertes ViT-Modell auf Objekten365 für LW-DETR-Medium/Groß unter Verwendung von CAE v2 |
caev2_tiny_300e_objects365 | Vorab trainiertes ViT-Modell auf Objekten365 für LW-DETR-xlarge mit CAE v2 |
Vorab trainiertes LW-DETR.
Wir trainieren den Encoder neu und schulen den Projektor und den Decoder auf Objects365 in einer Supervisor-Manier. Klicken Sie auf den folgenden Link, um die vorab trainierten Modelle herunterzuladen und in pretrain_weights/
einzufügen.
Modell | Kommentar |
---|---|
LWDETR_tiny_30e_objects365 | Vorab trainiertes LW-DETR-Tiny-Modell für Objekte365 |
LWDETR_small_30e_objects365 | Vorab trainiertes LW-DETR-Kleinmodell für Objekte365 |
LWDETR_medium_30e_objects365 | Vorab trainiertes LW-DETR-Medium-Modell für Objekte365 |
LWDETR_large_30e_objects365 | Vorab trainiertes LW-DETR-großes Modell für Objekte365 |
LWDETR_xlarge_30e_objects365 | Vorab trainiertes LW-DETR-xlarge-Modell für Objekte365 |
Feinabstimmung auf COCO. Wir optimieren das vorab trainierte Modell auf COCO. Wenn Sie unser Repo erneut implementieren möchten, überspringen Sie bitte diesen Schritt. Wenn Sie unsere trainierten Modelle direkt bewerten möchten, klicken Sie bitte auf den folgenden Link, um die feinabgestimmten Modelle herunterzuladen und in output/
einzufügen.
Modell | Kommentar |
---|---|
LWDETR_tiny_60e_coco | Feinabgestimmtes LW-DETR-Tiny-Modell auf COCO |
LWDETR_small_60e_coco | Feinabgestimmtes LW-DETR-Kleinmodell auf COCO |
LWDETR_medium_60e_coco | Feinabgestimmtes LW-DETR-Medium-Modell auf COCO |
LWDETR_large_60e_coco | Fein abgestimmtes LW-DETR-Großmodell auf COCO |
LWDETR_xlarge_60e_coco | Feinabgestimmtes LW-DETR-xlarge-Modell auf COCO |
Sie können die Datei scripts/lwdetr_
für den Trainingsprozess im Coco-Datensatz direkt ausführen.
sh scripts/lwdetr_tiny_coco_train.sh /path/to/your/COCODIR
sh scripts/lwdetr_small_coco_train.sh /path/to/your/COCODIR
sh scripts/lwdetr_medium_coco_train.sh /path/to/your/COCODIR
sh scripts/lwdetr_large_coco_train.sh /path/to/your/COCODIR
sh scripts/lwdetr_xlarge_coco_train.sh /path/to/your/COCODIR
Sie können die Datei scripts/lwdetr_
für den Auswertungsprozess des Coco-Datensatzes direkt ausführen. Weitere Informationen zum Herunterladen einer Reihe von LW-DETR-Modellen finden Sie unter 3. Vorbereitung.
sh scripts/lwdetr_tiny_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
sh scripts/lwdetr_small_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
sh scripts/lwdetr_medium_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
sh scripts/lwdetr_large_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
sh scripts/lwdetr_xlarge_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
Sie können die Datei scripts/lwdetr_
ausführen, um Modelle für die Entwicklung zu exportieren. Stellen Sie vor der Ausführung sicher, dass die Umgebungsvariablen TensorRT und cuDNN korrekt eingestellt sind.
# ONNX-Modelle exportierenh scripts/lwdetr_tiny_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# Modell von ONNX in TensorRT-Engine konvertieren sowiesh scripts/lwdetr_tiny_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
# ONNX-Modelle exportierenh scripts/lwdetr_small_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# Modell von ONNX in TensorRT-Engine konvertieren sowiesh scripts/lwdetr_small_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
# ONNX-Modelle exportierenh scripts/lwdetr_medium_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# Modell von ONNX in TensorRT-Engine konvertieren sowiesh scripts/lwdetr_medium_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
# ONNX-Modelle exportierenh scripts/lwdetr_large_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# Modell von ONNX in TensorRT-Engine konvertieren sowiesh scripts/lwdetr_large_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
# ONNX-Modelle exportierenh scripts/lwdetr_xlarge_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# Modell von ONNX in die TensorRT-Engine konvertieren sowiesh scripts/lwdetr_xlarge_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
Sie können das Tool deploy/benchmark.py
verwenden, um Benchmarks für die Inferenzlatenz durchzuführen.
# Bewerten und vergleichen Sie die Latenz auf einem Onnx-ModellPython Deploy/benchmark.py --path=/path/to/your/onnxmodel --coco_path=/path/to/your/COCODIR --run_benchmark # Bewerten und vergleichen Sie die Latenz auf einer TensorRT-Enginepython-Deploy/benchmark.py --path=/path/to/your/trtengine --coco_path=/path/to/your/COCODIR --run_benchmark
Die wichtigsten Ergebnisse zum Kokosdatensatz. Wir berichten über den im Originalpapier angegebenen mAP sowie über den durch die Neuimplementierung erhaltenen mAP.
Verfahren | Vorschulung | Parameter (M) | FLOPs (G) | Modelllatenz (ms) | Gesamtlatenz (ms) | Karte | Herunterladen |
---|---|---|---|---|---|---|---|
LW-DETR-tiny | ✔ | 12.1 | 11.2 | 2,0 | 2,0 | 42,6 (42,9) | Link |
LW-DETR-small | ✔ | 14.6 | 16.6 | 2.9 | 2.9 | 48,0 (48,1) | Link |
LW-DETR-medium | ✔ | 28.2 | 42,8 | 5.6 | 5.6 | 52,5 (52,6) | Link |
LW-DETR-large | ✔ | 46,8 | 71,6 | 8.8 | 8.8 | 56,1 (56,1) | Link |
LW-DETR-xlarge | ✔ | 118,0 | 174,2 | 19.1 | 19.1 | 58,3 (58,3) | Link |
Unser Projekt wird auf der Grundlage des folgenden öffentlichen Papiers mit Code durchgeführt:
Gruppe DETR
ViTDet
Verformbares DETR
Bedingter DETR
YOLOv8
AlignDETR
CAE v2
CAE
Wenn Sie diesen Code für Ihre Recherche nützlich finden, zitieren Sie bitte unseren Artikel:
@article{chen2024lw,title={LW-DETR: Ein Transformer-Ersatz für YOLO zur Echtzeiterkennung},author={Chen, Qiang und Su, Xiangbo und Zhang, Xinyu und Wang, Jian und Chen, Jiahui und Shen, Yunpeng und Han, Chuchu und Chen, Ziliang und Xu, Weixiang und Li, Fanrong und andere},journal={arXiv preprint arXiv:2406.03459},year={2024}}