Dome-DETR

Ein auf D-FINE basierender Spezialist für winzige Objekte: Ein Dichte-Head bestimmt, wo sich Objekte befinden, die Encoder-Attention beschränkt sich auf die Fenster, die sie enthalten, und die Query-Anzahl wird aus dieser Dichte abgeleitet, statt fest zu sein. LibreYOLO unterstützt ihn für die Objekterkennung.

Aufgaben
detection
Größen
s, m, l at 800 px
Installation
pip install libreyolo
Supportstufe
Unterstützt, seit v1.5.0. Ergänzende trainierbare Modelle: Die CI bleibt grün, Funktionen kommen bei Gelegenheit hinzu.
Upstream
Dome-DETR von The Dome-DETR Authors, unclear, not redistributed. Publikation, Quelle
Lizenzen
Code Apache-2.0, Gewichte unclear, not redistributed. Kommerzielle Nutzung

Installation

Dome-DETR benötigt kein optionales Zusatzpaket. Alle Importe sind in der Basisinstallation enthalten.

bash
pip install libreyolo

Vorhersage

Es gibt keinen automatischen Download. LibreYOLO hostet diese Gewichte nicht. Der Ablauf lautet daher: Rufe den Upstream-Checkpoint ab, konvertiere ihn einmalig und lade anschließend die konvertierte Datei über ihren Pfad. Lizenzierung erklärt den Grund dafür.

Konvertieren und vorhersagen
# LibreYOLO hostet keine Dome-DETR-Gewichte, daher wird der Checkpoint# aus dem Upstream-Repository abgerufen und einmalig konvertiert.hf download RicePasteM/Dome-DETR --include 'best_ckpts_dome_2026/*' \  --local-dir dome-ckpts python weights/convert_domedetr_weights.py \  dome-ckpts/best_ckpts_dome_2026/dome-s-visdrone_converted.pth \  LibreDOMEDETRs-visdrone.pt --size s --variant visdrone
Python
from libreyolo import LibreYOLO # Ein lokaler Pfad statt eines einfachen Namens: Für diese Familie wird nichts geladen.model = LibreYOLO("LibreDOMEDETRs-visdrone.pt")result = model("drone-frame.jpg", save=True) for box in result.boxes:    print(result.names[int(box.cls)], box.conf, box.xyxy)
CLI
libreyolo predict model=LibreDOMEDETRs-visdrone.pt source=drone-frame.jpg save=True
Klassennamen
from libreyolo import LibreYOLO # Da es keinen COCO-Checkpoint gibt, stammen die Klassen aus dem Trainingsdatensatz# der Gewichte und werden aus den Checkpoint-Metadaten gelesen.aitod = LibreYOLO("LibreDOMEDETRs-aitod.pt")print(aitod.model.names)     # 9 AI-TOD-V2-Klassen visdrone = LibreYOLO("LibreDOMEDETRs-visdrone.pt")print(visdrone.model.names)  # 12 VisDrone-Klassen

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.

Zwei Funktionen sind für diese Familie abgeschaltet. Die CUDA-Graph-Erfassung ist deaktiviert, weil die Query-Anzahl von PAQI datenabhängig ist und sich die Form des Vorwärtslaufs deshalb von Bild zu Bild ändert. Genau das kann die Graph-Erfassung nicht abbilden. Die Test-Time Augmentation läuft mit einer einzelnen festen quadratischen Größe, sodass eine mehrskalige TTA-Anforderung keine Wirkung hat.

Varianten

Es gibt drei Größen s, m und l, alle mit 800 mal 800. Die Größe wählt das Backbone. Der Datensatz, aus dem die Gewichte stammen, bestimmt die Tiefe des Decoders und das Query-Budget. Ein Größencode allein identifiziert daher keinen Graphen. AI-TOD-V2-Gewichte wählen pro Bild zwischen 300 und 1500 Queries, VisDrone-Gewichte zwischen 250 und 500. Das große Modell verwendet auf AI-TOD-V2 vier Decoder-Schichten, auf VisDrone dagegen sechs.

Dome-DETR erweitert D-FINE um drei Bestandteile. DeFE sagt eine Dichtekarte vorher. MWAS beschränkt mithilfe dieser Karte die Encoder-Attention auf die Fenster, die tatsächlich Objekte enthalten, statt alle Bereiche zu beachten. PAQI leitet die Größe der Query-Menge aus derselben Dichte ab, statt stets 300 Queries zu dekodieren. Der Gewinn konzentriert sich auf die kleinsten Objekte und nimmt mit deren Größe ab: In der eigenen Ablation des Upstreams steigt AP für sehr winzige Objekte von 14.0 auf 17.8, während AP für mittelgroße Objekte nur von 45.4 auf 46.4 steigt. Betrachte das Modell als Ergänzung zu D-FINE für Luft-, Drohnen- und Fernerkundungsbilder, nicht als Ersatz.

LibreYOLO veröffentlicht für diese Familie keine Benchmark-Zeilen, weil es keine Checkpoints für Benchmarks veröffentlicht.

Training

Dome-DETR kann trainiert werden. Beim Training wird die vollständige Upstream-Zielfunktion ausgeführt: die D-FINE-Losses sowie die Dichte- und Anzahlüberwachung von DeFE. Aufgefüllte Queries werden aus den Klassifizierungstermen ausgeschlossen. Bildweise Denoising-Attention-Masken verhindern außerdem, dass die Auffüllung eines Bildes in ein anderes gelangt.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDOMEDETRs-visdrone.pt")model.train(data="my-dataset.yaml", epochs=160, imgsz=800, batch=4, lr0=2e-4)
CLI
libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \  epochs=160 imgsz=800 batch=4 lr0=2e-4
Multi-GPU
libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \  epochs=160 device=0,1 batch=4

Die Konfiguration übernimmt das D-FINE-Rezept und ändert die von MWAS benötigten Werte. imgsz ist 800, lr0 ist 2e-4, die Backbone-Parametergruppe wird mit backbone_lr_mult=0.1 skaliert, und multi_scale wird abgeschaltet, weil die MWAS-Fenster eine durch Stride 8 teilbare Eingabe benötigen. batch ist standardmäßig 4 statt 16 wie bei D-FINE: PAQI füllt jeden Batch bis zu seinem breitesten Element auf, sodass der Speicherbedarf vom umfangreichsten Bild im Batch abhängt und nicht vom Durchschnitt.

Zur Accuracy gilt eine wichtige Einschränkung. Upstream trainiert 160 Epochen mit MultiStepLR(milestones=[80, 120], gamma=0.8). Diese Standardwerte verwenden für dieselben 160 Epochen dagegen den Flat-Cosine-Zeitplan von D-FINE. Dieser Zeitplan wurde hier nicht reproduziert, ebenso wenig wie die AP-Werte der Veröffentlichung. Betrachte sie daher als Ergebnisse der Upstream-Autoren und nicht als Zusage, dass dieses Rezept sie erreicht. Nutze den Upstream-Zeitplan, wenn du die Veröffentlichung reproduzieren möchtest.

Unter Training findest du Datensätze, Datenaugmentierung, Multi-GPU und Logger.

Validierung

val() gibt ein Dictionary mit den Metriknamen als Schlüsseln zurück und druckt klassenspezifische Ergebnisse, solange verbose aktiviert bleibt.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDOMEDETRs-visdrone.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])
CLI
libreyolo val model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml

Die Validierung erfolgt auf deinem eigenen Datensatz in dem Format, das du für das Training verwendet hast. Die COCO-Validierungsschranke der Bibliothek gilt hier nicht, weil kein COCO-Checkpoint dieser Familie für eine Messung vorhanden ist.

Export

Der Export wird in keinem Format unterstützt. Eine Exportanforderung löst einen Fehler aus, statt eine Datei zu erzeugen.

Der Grund dafür ist PAQI. Es bestimmt die Query-Anzahl pro Bild aus dichtegefilterten Vorschlägen und einer greedy dichteadaptiven Unterdrückungsschleife. Die Ausgabelänge des Decoders hängt somit von der Eingabe statt vom Graphen ab. Beim Tracing wird die zufällige Anzahl des Tracing-Bildes festgeschrieben. Das erzeugte Artefakt liefert für jedes andere Bild unbemerkt falsche Ergebnisse. Eine statische Formulierung müsste die Unterdrückung über alle 250 bis 1500 Kandidaten ausrollen. Eine Reduzierung auf ein festes Top-k würde genau den Recall für winzige Objekte entfernen, für den diese Familie existiert. Wenn du einen exportierbaren Detection Transformer benötigst, verwende D-FINE.

Checkpoints

Es gibt keine Einträge. LibreYOLO veröffentlicht keine Dome-DETR-Gewichte, und kein Name der Form LibreDOMEDETR<size>-<dataset>.pt wird zu einem Download aufgelöst.

Upstream veröffentlicht sechs Checkpoints: s, m und l für jeweils zwei Datensätze, AI-TOD-V2 mit 9 Klassen und VisDrone mit 12. Es gibt keinen COCO-Checkpoint. Ein kanonischer Dateiname enthält daher immer das Datensatzsuffix, und die Klassennamen werden in den Checkpoint-Metadaten gespeichert, statt aus einer Familienkonstante zu stammen. Eine Anfrage nach LibreDOMEDETRs.pt löst sofort einen Fehler aus, der die beiden echten Dateinamen und den Konvertierungsbefehl nennt. Sie versucht keinen Download, der den Status 404 zurückgeben würde.

weights/convert_domedetr_weights.py übernimmt die Konvertierung. Das Skript baut den LibreYOLO-Graphen neu auf, lädt die Upstream-Tensoren hinein und schreibt nichts, wenn auch nur ein Schlüssel fehlt, unerwartet ist oder die falsche Form hat. Eine konvertierte Datei entspricht daher entweder exakt dem Graphen oder existiert nicht. Übergib eine Upstream-Datei mit der Endung .pth sowie Größe und Variante:

bash
python weights/convert_domedetr_weights.py \
    dome-ckpts/best_ckpts_dome_2026/aitod-s-best.pth \
    LibreDOMEDETRs-aitod.pt --size s --variant aitod

Zur numerischen Übereinstimmung vergleicht weights/parity_domedetr.py diese Portierung über alle sechs Checkpoints mit der Upstream-Implementierung und meldet max_abs_diff == 0.0 sowohl für pred_logits als auch für pred_boxes. Zuvor prüft es die MWAS-Fenstermaske Bit für Bit und vergleicht außerdem jeden Loss-Term einzeln mit dem Upstream-Kriterium. Die Einordnung ist wichtig: Es handelt sich um ein manuelles Skript, das den Upstream-Checkout und die veröffentlichten Checkpoints auf dem Datenträger benötigt und von Hand ausgeführt wird. Es ist kein Bestandteil der Continuous Integration, und kein CI-Job reproduziert es.

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
Dome-DETR, The Dome-DETR Authors
Upstream-Lizenz
unclear, not redistributed
LibreYOLO-Code
MIT
Gewichte
unclear, not redistributed, von den Autoren verbreitet. LibreYOLO hostet oder spiegelt sie nicht.
Einordnung
The code and the weights part company here. The upstream repository is Apache-2.0, permissive and safe for commercial and closed-source use, and LibreYOLO's own port is MIT, so nothing restricts the architecture or the training code. The weights are the unresolved part: the upstream model card carries no license field in its metadata, and its prose states that the project is Apache-2.0 while also restricting the material to academic research purposes only. Those two readings do not agree, and the stricter one is not a grant to redistribute, so LibreYOLO mirrors nothing for this family and hosts no checkpoint. Download the six upstream checkpoints yourself and convert them with weights/convert_domedetr_weights.py, and read the upstream terms before using them for anything commercial. Weights you train yourself on your own data derive from no upstream checkpoint and are yours.

Die Gewichte sind der Grund, warum diese Familie nicht gespiegelt wird. Die Upstream-Modellkarte enthält in ihren Metadaten kein Lizenzfeld. In ihrem Text bezeichnet sie das Projekt als Apache-2.0, beschränkt das Material aber zugleich auf akademische Forschungszwecke. Diese beiden Lesarten widersprechen sich, und die strengere stellt keine Genehmigung zur Weitergabe dar. LibreYOLO verlinkt daher bis zu einer Klärung das Upstream-Repository, statt die Dateien zu kopieren. Dieselbe Begründung gilt hier für YOLO-NAS.

Der Code ist eine separate und eindeutigere Frage. Das Upstream-Repository steht unter Apache-2.0, die LibreYOLO-Portierung unter MIT, und Gewichte, die du selbst mit deinen eigenen Daten trainierst, gehören dir.

Zitieren

Dome-DETR wurde auf der ACM Multimedia 2025 unter dem Titel „Dome-DETR: DETR with Density-Oriented Feature-Query Manipulation for Efficient Tiny Object Detection“ veröffentlicht. Der Preprint ist unter arxiv.org/abs/2505.05741 verfügbar. Die Autoren veröffentlichen in ihrem Repository keinen BibTeX-Block. Daher wird hier keiner von Hand zusammengestellt und wiedergegeben.

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.