DINO-DETR

DINO-DETR wurde von IDEA Research als DINO veröffentlicht und kombiniert kontrastives Denoising-Training mit einer gemischten Query-Auswahl auf Basis der Sparse Attention von Deformable DETR. LibreYOLO bietet drei Größen für die reine Erkennungsinferenz.

Aufgaben
detection
Größen
r50, r50s5, swinl at 800 px
Installation
pip install libreyolo
Supportstufe
Nur Inferenz, seit v. Nur Vorhersage, Validierung und Export. Trainingsfunktionen sind nicht verfügbar.
Upstream
DINO-DETR von IDEA Research, Apache-2.0. Publikation, Quelle
Lizenzen
Code Apache-2.0, Gewichte Apache-2.0. Kommerzielle Nutzung

Installation

DINO-DETR benötigt kein optionales Zusatzpaket. Alle Importe sind in der Basisinstallation enthalten. Es verwendet denselben reinen PyTorch-Kern für mehrskalige Deformable Attention wie die Deformable-DETR-Familie von LibreYOLO.

bash
pip install libreyolo

Die Installation von libreyolo[hub-kernels] ist optional. Sobald das Paket kernels vorhanden ist, lädt LibreYOLO zur Laufzeit einen kompilierten Kernel für mehrskalige Deformable Attention vom Hugging Face Hub und verwendet ihn anstelle des reinen PyTorch-Kerns. Mit LIBREYOLO_HUB_KERNELS=0 schaltest du ihn wieder ab.

Vorhersage

Die Gewichte werden bei der ersten Verwendung von Hugging Face heruntergeladen und lokal zwischengespeichert.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDINODETRr50.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreDINODETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

Das zurückgegebene Results-Objekt entspricht dem aller anderen Familien. Der Wechsel zu einem anderen Detektor erfordert daher nur eine Änderung in einer Zeile. conf und max_det filtern die Auswahl der Queries. iou wird aus Gründen der API-Parität akzeptiert, hat aber keine Wirkung, weil der Decoder Mengen vorhersagt und keinen NMS-Schritt verwendet. Unter Vorhersage findest du Quellen, Streaming und die Verarbeitung von Ergebnissen.

DINO-DETR unterstützt in LibreYOLO nur Inferenz. Upstream wird das Modell mit kontrastivem Denoising und ungarischer Zuordnung trainiert. Dieses Rezept ist hier nicht implementiert, daher löst train() den Fehler NotImplementedError aus.

Varianten

Es gibt drei Checkpoints mit derselben Eingabeauflösung. r50 und r50s5 verwenden beide ein ResNet-50-Backbone und unterscheiden sich in der Anzahl der Feature-Map-Skalen, die den Decoder speisen, nämlich vier gegenüber fünf. swinl ersetzt das Backbone durch Swin-L und erfasst ebenfalls fünf Skalen.

Validierung

val() gibt ein Dictionary mit metrics/-Schlüsseln für Precision, Recall, mAP 50 und mAP 50-95 zurück. Diese werden auf einem beliebigen Datensatz in dem Format gemessen, das du für das Training verwendet hast.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDINODETRr50.pt") # val() gibt ein einfaches dict zurück, kein Objektmetrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])
CLI
libreyolo val model=LibreDINODETRr50.pt data=my-dataset.yaml

Export

AufgabeONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: unterstütztDetection to TorchScript: unterstütztDetection to ExecuTorch: unterstütztDetection to TensorRT: unterstütztDetection to OpenVINO: unterstütztDetection to Paddle: nicht unterstütztDetection to MNN: nicht unterstütztDetection to RKNN: nicht unterstütztDetection to ncnn: nicht unterstütztDetection to TFLite: nicht unterstütztDetection to CoreML: nicht unterstütztDetection to Core AI: nicht unterstützt

Ein exportiertes Artefakt wird anhand seiner Dateiendung wieder über LibreYOLO() geladen. Eine .onnx- oder .engine-Datei verhält sich daher wie ein Checkpoint und gibt dasselbe Results-Objekt zurück. Export führt die Argumente auf, die von den einzelnen Formaten akzeptiert werden.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDINODETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)
CLI
libreyolo export model=LibreDINODETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDINODETRr50.pt format=tensorrt imgsz=800 half=True
Exportierte Datei verwenden
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Die Factory entscheidet anhand der Dateiendung, daher wird ein Exportartefakt# wie jeder Checkpoint geladen und gibt dasselbe Results-Objekt zurück.model = LibreYOLO("LibreDINODETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpoints

Alle veröffentlichten Gewichtsdateien dieser Familie.

DateiEingabe (px)Lizenz der Gewichte
Detection
LibreDINODETRr50.pt800apache-2.0
LibreDINODETRr50s5.pt800apache-2.0
LibreDINODETRswinl.pt800apache-2.0

Jede oben aufgeführte Datei ist heute in der LibreYOLO-Organisation verfügbar und wird bei der ersten Verwendung heruntergeladen.

Lizenzierung

Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.

Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.

Originalarbeit
DINO-DETR, IDEA Research
Upstream-Lizenz
Apache-2.0
LibreYOLO-Code
MIT
Gewichte
Apache-2.0, erneut unter huggingface.co/LibreYOLO veröffentlicht
Einordnung
Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code, and weights you train yourself on your own data are yours. The three checkpoints come from the authors' Google Drive release rather than a Hugging Face model card, and the upstream repository does not attach a license to the checkpoint files individually, so the redistribution basis is the repository-level Apache-2.0 declaration rather than a checkpoint-specific grant.

Die drei offiziellen Checkpoints stammen aus dem Google-Drive-Release-Ordner der Autoren und nicht aus einer Hugging-Face-Modellkarte. Das Upstream-Repository weist auf Repository-Ebene Apache-2.0 aus, hängt den Checkpoints selbst aber weder eine Lizenzdatei noch Lizenzmetadaten an. Die Grundlage für die Weitergabe ist daher diese Erklärung auf Repository-Ebene und keine Checkpoint-spezifische Genehmigung. Jeder LibreYOLO-Spiegel liefert den unveränderten Apache-2.0-Lizenztext des Upstreams zusammen mit einem erklärenden Hinweis aus.

Zitieren

@misc{zhang2022dino,
      title={DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection}, 
      author={Hao Zhang and Feng Li and Shilong Liu and Lei Zhang and Hang Su and Jun Zhu and Lionel M. Ni and Heung-Yeung Shum},
      year={2022},
      eprint={2203.03605},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

@inproceedings{li2022dn,
      title={Dn-detr: Accelerate detr training by introducing query denoising},
      author={Li, Feng and Zhang, Hao and Liu, Shilong and Guo, Jian and Ni, Lionel M and Zhang, Lei},
      booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
      pages={13619--13627},
      year={2022}
}

@inproceedings{
      liu2022dabdetr,
      title={{DAB}-{DETR}: Dynamic Anchor Boxes are Better Queries for {DETR}},
      author={Shilong Liu and Feng Li and Hao Zhang and Xiao Yang and Xianbiao Qi and Hang Su and Jun Zhu and Lei Zhang},
      booktitle={International Conference on Learning Representations},
      year={2022},
      url={https://openreview.net/forum?id=oMI9PjOb9Jl}
}

Aus dem Zitierblock der Autoren unter github.com/IDEA-Research/DINO#bibtex kopiert.

Mit LibreYOLO v1.5.0 verifiziert. Supporttabellen, Checkpoints und Benchmarkwerte auf dieser Seite werden aus der veröffentlichten Bibliothek und den publizierten Gewichten generiert und nicht von Hand geschrieben.