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, Apache-2.0 code; academic-research-only weights. Publikation, Quelle
- Lizenzen
- Code Apache-2.0, Gewichte Apache-2.0 code; academic-research-only weights. Kommerzielle Nutzung
Installation
Dome-DETR benötigt kein optionales Zusatzpaket. Alle Importe sind in der Basisinstallation enthalten.
pip install libreyoloVorhersage
Die sechs konvertierten Checkpoints werden automatisch von LibreYOLO-Mirrors heruntergeladen. Ihre Upstream-Bedingungen beschränken die Nutzung auf akademische Forschung.
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Vortrainierte Gewichte sind auf akademische Forschung beschränkt.model = LibreYOLO("LibreDOMEDETRs-visdrone.pt", device="cpu")print(model(SAMPLE_IMAGE).boxes)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.
Für diese Familie sind keine Vision-Analysis-Benchmarkzeilen erfasst.
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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDOMEDETRs-visdrone.pt")model.train(data="my-dataset.yaml", epochs=160, imgsz=800, batch=4, lr0=2e-4)libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \ epochs=160 imgsz=800 batch=4 lr0=2e-4libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \ epochs=160 device=0,1 batch=4Die 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.
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"])libreyolo val model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yamlDie 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
| Datei | Lizenz der Gewichte |
|---|---|
| Detection | |
| LibreDOMEDETRs-aitod.pt | other |
| LibreDOMEDETRm-aitod.pt | other |
| LibreDOMEDETRl-aitod.pt | other |
| LibreDOMEDETRs-visdrone.pt | other |
| LibreDOMEDETRm-visdrone.pt | other |
| LibreDOMEDETRl-visdrone.pt | other |
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
- Dome-DETR, The Dome-DETR Authors
- Upstream-Lizenz
- Apache-2.0 code; academic-research-only weights
- Upstream-Quelle
- github.com/RicePasteM/Dome-DETR
- LibreYOLO-Code
- MIT
- Gewichte
- Apache-2.0 code; academic-research-only weights, erneut unter huggingface.co/LibreYOLO veröffentlicht
- Einordnung
- The upstream source is Apache-2.0. Six mirrored checkpoints retain the publisher academic-research-only restriction.
Die sechs Mirrors behalten die Upstream-Beschränkung auf akademische Forschung bei. Der Code ist gesondert lizenziert. 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.