RT-DETR

Ein Detection Transformer für Echtzeitinferenz: Er dekodiert statt eines dichten Rasters eine feste Menge von Queries und führt daher keine NMS aus. LibreYOLO bietet drei Versionen, die durch den geladenen Checkpoint unterschieden werden. Version 2 unterstützt außerdem orientierte Boxen.

Aufgaben
detection, oriented boxes
Größen
rtdetr: r18, r34, r50, r50m, r101, l, x at 640 px; rtdetrv2: r18, r34, r50, r50m, r101 at 640 px; rtdetrv4: s, m, l, x at 640 px
Installation
pip install libreyolo
Supportstufe
Kern, seit v1.1.0. Trainierbare Kerndetektoren: Funktionen folgen den Flaggschiffen in derselben Release-Welle.
Upstream
RT-DETR, RT-DETRv2 and RT-DETRv4 von Baidu (versions 1 and 2), Peking University and Tsinghua University (version 4), Apache-2.0. Publikation, Quelle
Lizenzen
Code Apache-2.0, Gewichte Apache-2.0. Kommerzielle Nutzung

Installation

RT-DETR benötigt kein optionales Zusatzpaket. Alle Importe sind in der Basisinstallation enthalten. Das Zusatzpaket rtdetr ist ein stabiler Name, der nichts ergänzt.

bash
pip install libreyolo

Eine Ausnahme ist das Adapter-Fine-Tuning mit lora=True. Dafür ist das Zusatzpaket lora erforderlich.

bash
pip install "libreyolo[lora]"

Vorhersage

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

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreRTDETRr18.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreRTDETRr18.pt save=True \  source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg
Video
from libreyolo import LibreYOLO # Die Version ist Teil des Dateinamens, und die Factory richtet sich nach dem# Checkpoint. Daher werden alle drei gleich geladen.model = LibreYOLO("LibreRTDETRv4s.pt") # Jede von der Bibliothek unterstützte Quelle: Datei, Ordner, URL, Webcam-Index,# RTSP-Stream oder eine .streams-Listefor result in model.predict("clip.mp4", stream=True, save=True):    print(len(result.boxes))
Orientierte Boxen
from libreyolo import LibreYOLO # Nur Version 2. Das Suffix -obb wählt die Aufgabe. Der Checkpoint wird anhand# seiner Tensoren als orientiert erkannt, daher ist kein task-Argument nötig.# Diese Gewichte nutzen DOTA v1.0 mit 15 Luftbildklassen bei 1024 px.model = LibreYOLO("LibreRTDETRv2n-obb.pt")result = model("aerial.png", save=True) obb = result.obbprint(obb.xywhr)     # (N, 5): cx, cy, w, h, Bogenmaßprint(obb.xyxyxyxy)  # dieselben Zeilen als vier Eckpunkteprint(result.boxes.xyxy)  # umschließende achsenparallele Boxen
Orientierte Boxen, CLI
libreyolo predict model=LibreRTDETRv2n-obb.pt source=aerial.png 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 eine Top-k-Dekodierung über Queries und Klassen. Es gibt keinen NMS-Schritt zum Abstimmen, und iou wird zwar akzeptiert, aber nicht verwendet. Ein orientierter Checkpoint füllt nativ result.obb und außerdem result.boxes mit den umschließenden achsenparallelen Rechtecken. Unter Vorhersage findest du Quellen, Streaming und die Verarbeitung von Ergebnissen.

Varianten

Es gibt drei Versionen und insgesamt zwei Aufgaben. Die Größencodes bilden keine einzige Reihe. Version 1 benennt ihre Größen nach dem Backbone, ResNet oder HGNetv2. Version 2 verwendet nur die ResNet-Namen erneut. Version 1 bietet bereits die beiden HGNetv2-Größen, und die Ergebnisse von Version 2 waren dort so ähnlich, dass LibreYOLO keine doppelten Gewichte veröffentlicht. Version 4 verwendet eine einfache Buchstabenreihe, die mit den HGNetv2-Namen aus Version 1 kollidiert. Ein Größencode allein identifiziert daher kein Modell. Die Version steht im Dateinamen des Checkpoints.

CheckpointEingabe (px)mAP 50-95Parameter (M)
LibreRTDETRl64055.832.93
LibreRTDETRr10164056.876.56
LibreRTDETRr1864049.720.18
LibreRTDETRr3464052.231.44
LibreRTDETRr5064055.942.89
LibreRTDETRr50m64053.836.59
LibreRTDETRx64057.967.37
LibreRTDETRv2r10164056.876.56
LibreRTDETRv2r1864050.820.18
LibreRTDETRv2r3464053.231.44
LibreRTDETRv2r5064055.742.89
LibreRTDETRv2r50m64054.836.59
LibreRTDETRv4l64057.831.24
LibreRTDETRv4m64056.519.59
LibreRTDETRv4s64052.810.32
LibreRTDETRv4x64060.062.62

COCO val2017, 500 images. Gemessen mit dem LibreYOLO-Benchmarksystem und auf Vision Analysis veröffentlicht. Dort werden Latenzen verschiedener Hardware und Runtimes verglichen und die vollständigen Laufprotokolle bereitgestellt.

Version 2 behält Architektur und State-Dictionary-Aufbau von Version 1 bei und ändert die Abtastung der Deformable Attention. Deshalb unterscheiden die Metadaten im Checkpoint beide statt der Tensorform. Version 4 hat eine andere Abstammung: Sie verwendet Architektur und Trainer von D-FINE. Ihre Gewichte entstehen durch Destillation eines DINOv3-Vision-Foundation-Lehrers in einen HGNetv2-Schüler. In LibreYOLO ist LibreRTDETRv4 eine Unterklasse von LibreDFINE mit dauerhaft deaktiviertem Masken-Head und bleibt reine Objekterkennung.

Orientierte Boxen mit Version 2

Version 2 ist die einzige Version mit einer zweiten Aufgabe. Ihre unterstützten Aufgaben sind detect und obb. Beide verwenden weder denselben Graphen noch dieselbe Größenreihe. Die Erkennung nutzt ResNet-Größen bei 640 px. Die orientierte Erkennung nutzt eine HGNetv2-Reihe n, s, m, l und x bei 1024 px. Die Eingabegröße wird pro Aufgabe statt pro Familie aufgelöst. Ein Checkpoint wird anhand seiner eigenen Tensoren als orientiert erkannt, nämlich durch die Box-Heads mit fünf Koordinaten und die Sampling-Parameter von Version 2. Daher werden -obb-Gewichte ohne Argument task in den orientierten Graphen geladen. Eine Abweichung zwischen beiden ist ein eindeutiger Fehler statt einer unbemerkten Neuinterpretation.

Die veröffentlichten Dateien reichen von LibreRTDETRv2n-obb.pt bis LibreRTDETRv2x-obb.pt. Es sind die offiziellen Single-Scale-Checkpoints von DOTA v1.0, die in das LibreYOLO-Format konvertiert wurden. Sie umfassen 15 Luftbildklassen von Flugzeug und Schiff bis Hafen und Hubschrauber. Die Klassennamen stehen im Checkpoint. Anders als die Erkennungsseite ist die orientierte Aufgabe reine Inferenz. Vorhersage, Validierung und Export funktionieren, train() löst bei einem orientierten Modell einen Fehler aus. Tracking und Test-Time Augmentation unterstützen orientierte Boxen ebenfalls nicht. Orientierte Erkennung behandelt die Aufgabe, das Labelformat und die Metriken.

Training

Das Training beginnt mit einem veröffentlichten Checkpoint. pretrained wird bei allen drei Versionen akzeptiert und anschließend verworfen. pretrained=False erzeugt daher kein zufällig initialisiertes Modell. Dieser Abschnitt betrifft vollständig die Objekterkennung. Die orientierte Aufgabe von Version 2 ist reine Inferenz. Es gibt keinen Transferpfad von Erkennungsgewichten, weil beide Aufgaben unterschiedliche Backbones nutzen.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt") # coco128.yaml lädt bei der ersten Verwendung 128 Beispielbilder herunter.# Verweise für einen echten Lauf mit `data` auf deine eigene Datensatz-YAML.model.train(data="coco128.yaml", epochs=50, batch=4, lr0=1e-4)
CLI
libreyolo train model=LibreRTDETRr18.pt data=coco128.yaml \  epochs=50 batch=4 lr0=1e-4
LoRA
# Benötigt das lora-Zusatzpaket: pip install "libreyolo[lora]"from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt")model.train(data="coco128.yaml", epochs=50, lora=True)
Multi-GPU
libreyolo train model=LibreRTDETRr18.pt data=coco128.yaml \  epochs=50 device=0,1

Die Lernrate muss stimmen, und jede Version besitzt einen eigenen Standardwert statt des bibliotheksweiten Werts. Die Python-Signatur train() liest ihn aus der Trainingskonfiguration der Version. Die CLI löst denselben Wert auf, wenn lr0 nicht übergeben wird. Version 1 und 2 akzeptieren außerdem lr_backbone mit standardmäßig einem Zwanzigstel von lr0, entsprechend dem ursprünglichen Rezept. Version 4 verwendet den D-FINE-Trainer, der die Backbone-Parametergruppe stattdessen mit backbone_lr_mult skaliert.

Behalte für imgsz die native Größe des Checkpoints bei, sofern kein Grund für eine Änderung besteht. Validierung und Vorhersage funktionieren mit anderen Größen, mit einer Ausnahme: Eine rechteckige Größe mit derselben Token-Anzahl wie die native Größe verwendet weiterhin ein Embedding für das falsche Seitenverhältnis.

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

RT-DETRv4 aktiviert standardmäßig amp=True mit amp_dtype="float16". Übergib amp=False für FP32.

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("LibreRTDETRr18.pt") # val() gibt ein einfaches dict zurück, kein Objektmetrics = model.val(data="coco128.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])
CLI
libreyolo val model=LibreRTDETRr18.pt data=coco128.yaml
Gegen COCO
# coco-val-only.yaml ruft die 5000 val2017-Bilder ab und überspringt den# Trainingssatz. Sie enthält ein Downloadskript und benötigt daher eine# ausdrückliche Erlaubnis, wenn der Datensatz nicht bereits lokal ist.libreyolo val model=LibreRTDETRr18.pt data=coco-val-only.yaml \  allow_download_scripts=True
Orientierte Boxen
from libreyolo import LibreYOLO # Die orientierte Validierung gleicht mit gedrehter IoU ab. Eine Vorhersage# am richtigen Ort mit falschem Winkel zählt daher als Fehler.model = LibreYOLO("LibreRTDETRv2n-obb.pt")metrics = model.val(data="my-obb-dataset.yaml") print(metrics["metrics/mAP50-95(OBB)"])print(metrics["metrics/mAP50(OBB)"])

Die Zeilen der obigen Benchmark-Tabelle stammen aus dem LibreYOLO-Benchmark-Testaufbau. Der Hinweis unter der Tabelle nennt den verwendeten Datensatz und verlinkt die Laufaufzeichnungen.

Die orientierte Validierung wird über denselben Aufruf ausgeführt und meldet dieselben Schlüssel sowie vier Wiederholungen mit dem Suffix (OBB). Der Abgleich nutzt gedrehte IoU statt der IoU der umschließenden Rechtecke. Ein Winkelfehler ist daher ein Fehler. augment=True wird für diese Aufgabe abgelehnt.

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: 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: unterstützt
Oriented boxesOriented boxes to ONNX: unterstütztOriented boxes to TorchScript: unterstütztOriented boxes to ExecuTorch: unterstütztOriented boxes to TensorRT: unterstütztOriented boxes to OpenVINO: unterstütztOriented boxes to Paddle: nicht unterstütztOriented boxes to MNN: nicht unterstütztOriented boxes to RKNN: nicht unterstütztOriented boxes to ncnn: nicht unterstütztOriented boxes to TFLite: nicht unterstütztOriented boxes to CoreML: nicht unterstütztOriented boxes to Core AI: nicht unterstützt

Die Matrix behandelt die Abstammung auf einer Seite. Wenn sich die drei Versionen bei einem Format unterscheiden, zeigt die Zelle den schwächsten Status. Dadurch wird unabhängig von der geladenen Version nichts zu stark versprochen. Die orientierte Zeile gilt nur für Version 2. ONNX und TorchScript sind dort mit FP32, Batch 1 und einer festen Arbeitsfläche von 1024 mal 1024 validiert. OpenVINO, TensorRT und ExecuTorch lassen sich konvertieren und neu laden, haben aber keine Rohdatenparität über die vollständige Query-Menge erreicht. Die besten Boxen stimmen bis auf einen Bruchteil eines Pixels überein, während die Ausläufer abweichen.

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.

Python
# Benötigt das onnx-Zusatzpaket: pip install "libreyolo[onnx]"from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt")path = model.export(format="onnx")print(path)
CLI
libreyolo export model=LibreRTDETRr18.pt format=onnx
Orientierte Boxen
# ONNX und TorchScript sind die validierten Ziele der orientierten Aufgabe,# mit FP32, Batch 1 und einer festen Arbeitsfläche von 1024 mal 1024.libreyolo export model=LibreRTDETRv2n-obb.pt format=onnx imgsz=1024libreyolo export model=LibreRTDETRv2n-obb.pt format=torchscript imgsz=1024
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("LibreRTDETRr18.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

ONNX-Ein- und Ausgaben

LibreRTDETR and LibreRTDETRv2

Tensorimages float32 [batch, 3, height, width]
FarbeRGB
SkalierungPixel / 255
Normalisierungkeine
Größenanpassungauf Breite x Höhe strecken (ohne Auffüllen, Seitenverhältnis wird nicht beibehalten), bilinear

Square input only. Export rejects a non-square imgsz, and height equals width, 640 by default.

LibreRTDETR also exports at other square sizes, such as 512. LibreRTDETRv2 exports at 640 only: any other imgsz fails during export with a tensor size mismatch.

Stretch the whole image to width x height with cv2.resize and INTER_LINEAR on the 8-bit RGB image. There is no letterbox and no padding, so the aspect ratio is not kept.

Then divide by 255. There is no mean or std normalization.

Detection, Standardexport
AusgabeFormBedeutung
pred_logits[batch, queries, nc]Raw class logits per query, sigmoid not applied. 300 queries and 80 classes for the COCO checkpoints.
pred_boxes[batch, queries, 4]Boxes as cx, cy, w, h, normalized 0 to 1 of the input.

Nachbearbeitung

  1. Apply sigmoid to pred_logits.
  2. Flatten the scores to queries x nc and take the top max_det (300 by default) over all queries x classes. For flat index k, the query is k // nc and the class is k % nc. One query can yield several classes.
  3. Keep the entries whose score is strictly above the confidence threshold (0.25 by default). There is no NMS, so the IoU threshold is not used.
  4. Convert the query's box to x1, y1, x2, y2 with x1 = cx - w / 2, y1 = cy - h / 2, x2 = cx + w / 2, y2 = cy + h / 2.
  5. Map boxes back to the original image: multiply x by the original width and y by the original height. The input was stretched, so no pad offset applies. LibreYOLO does not clip these boxes.
  6. nms=True is not available for this family: export raises NotImplementedError.

LibreRTDETRv2 OBB

Tensorimages float32 [batch, 3, height, width]
FarbeRGB
SkalierungPixel / 255
Normalisierungkeine
Größenanpassungcustom, Pillow bilinear
So reproduzierst du die bilineare Skalierung von Pillow

LibreYOLO skaliert mit dem BILINEAR-Filter von Pillow (Image.resize). Das ist weder OpenCV INTER_LINEAR noch INTER_AREA: Beim Verkleinern weitet Pillow den Filter um den Verkleinerungsfaktor, und die Skalierungen von OpenCV verändern Detektionen und verschieben Boxen um mehrere Pixel. Um es ohne Pillow nachzubauen, skaliere eine Achse, runde auf 8 Bit, skaliere dann die andere Achse und runde erneut. Pro Achse gilt s = in_size / out_size und f = max(s, 1). Ausgabepixel i hat das Zentrum c = (i + 0.5) * s und liest Quellpixel j von int(c - f + 0.5) bis int(c + f + 0.5) - 1, auf das Bild begrenzt, jeweils mit dem Gewicht max(0, 1 - |j + 0.5 - c| / f), geteilt durch die Summe der Gewichte. Pillow rechnet in Festkomma und wählt die Achsenreihenfolge anhand der Bildform, daher können Gleitkomma-Gewichte bei einigen Pixeln um eine Stufe abweichen. Das ändert die Ergebnisse in unseren Prüfungen nicht.

Square input only, 1024 x 1024. Export rejects a non-square imgsz, and any other square size fails during export with a tensor size mismatch.

Scale by r = min(height / h, width / w) and resize to (round(w * r), round(h * r)). This rounds to the nearest integer instead of truncating. An exact half goes to the even integer, as Python round does.

Paste the resized image in the top-left corner of a canvas filled with 0. The padding is on the right and bottom only.

On the test image, cv2.resize with INTER_LINEAR or INTER_AREA changes the detection count and moves boxes by more than 2 px.

Pillow computes each pass in fixed point: it rounds every weight to an integer with 22 fractional bits (round half away from zero), sums weight x pixel in integers, adds 2^21, shifts right by 22 and clips to 0 to 255.

Use that integer arithmetic for this model. Float weights differ from Pillow by a level on a few pixels, and on the test image that turns one box by 0.2 rad.

Divide the whole canvas by 255 after the resize. There is no mean or std normalization.

Oriented boxes, Standardexport
AusgabeFormBedeutung
pred_logits[batch, queries, nc]Raw class logits per query, sigmoid not applied. 300 queries and 15 DOTA classes for the released checkpoints.
pred_boxes[batch, queries, 5]Rotated boxes as cx, cy, w, h, a. cx and w are normalized 0 to 1 of the input width, cy and h of the input height, both on the padded canvas. a is the angle divided by pi, 0 to 1.

Nachbearbeitung

  1. Apply sigmoid to pred_logits.
  2. Flatten the scores to queries x nc and take the top max_det (300 by default) over all queries x classes. For flat index k, the query is k // nc and the class is k % nc. One query can yield several classes.
  3. Keep the entries whose score is strictly above the confidence threshold (0.25 by default). There is no NMS, rotated or axis-aligned, so the IoU threshold is not used.
  4. Map boxes back to the original image: multiply cx and w by the input width, cy and h by the input height, then divide all four by r. The padding is on the right and bottom, so no offset applies. LibreYOLO does not clip these boxes.
  5. The angle in radians is a x pi. LibreYOLO reports each box as cx, cy, w, h, angle in original-image pixels and radians.
  6. The corners are (cx + dx cos(angle) - dy sin(angle), cy + dx sin(angle) + dy cos(angle)) for (dx, dy) = (-w / 2, -h / 2), (w / 2, -h / 2), (w / 2, h / 2), (-w / 2, h / 2). With y pointing down, a positive angle turns the box clockwise on screen.
  7. LibreYOLO's axis-aligned box for a detection is the smallest box that encloses its four corners.
  8. nms=True is not available for this family: export raises NotImplementedError.

LibreRTDETRv4

Tensorimages float32 [batch, 3, height, width]
FarbeRGB
SkalierungPixel / 255
Normalisierungkeine
Größenanpassungauf Breite x Höhe strecken (ohne Auffüllen, Seitenverhältnis wird nicht beibehalten), Pillow bilinear
So reproduzierst du die bilineare Skalierung von Pillow

LibreYOLO skaliert mit dem BILINEAR-Filter von Pillow (Image.resize). Das ist weder OpenCV INTER_LINEAR noch INTER_AREA: Beim Verkleinern weitet Pillow den Filter um den Verkleinerungsfaktor, und die Skalierungen von OpenCV verändern Detektionen und verschieben Boxen um mehrere Pixel. Um es ohne Pillow nachzubauen, skaliere eine Achse, runde auf 8 Bit, skaliere dann die andere Achse und runde erneut. Pro Achse gilt s = in_size / out_size und f = max(s, 1). Ausgabepixel i hat das Zentrum c = (i + 0.5) * s und liest Quellpixel j von int(c - f + 0.5) bis int(c + f + 0.5) - 1, auf das Bild begrenzt, jeweils mit dem Gewicht max(0, 1 - |j + 0.5 - c| / f), geteilt durch die Summe der Gewichte. Pillow rechnet in Festkomma und wählt die Achsenreihenfolge anhand der Bildform, daher können Gleitkomma-Gewichte bei einigen Pixeln um eine Stufe abweichen. Das ändert die Ergebnisse in unseren Prüfungen nicht.

Square input only. Export rejects a non-square imgsz, and height equals width, 640 by default. Other square sizes, such as 512, also export.

Batch size 1 only. The graph declares a dynamic batch axis, but batches of 2 or more fail in 1.7.0.

Divide by 255 after the resize. There is no mean or std normalization.

Detection, Standardexport
AusgabeFormBedeutung
pred_logits[batch, queries, nc]Raw class logits per query, sigmoid not applied. 300 queries and 80 classes for the COCO checkpoints.
pred_boxes[batch, queries, 4]Boxes as cx, cy, w, h, normalized 0 to 1 of the input.

Nachbearbeitung

  1. Apply sigmoid to pred_logits.
  2. Flatten the scores to queries x nc and take the top max_det (300 by default) over all queries x classes. For flat index k, the query is k // nc and the class is k % nc. One query can yield several classes.
  3. Keep the entries whose score is strictly above the confidence threshold (0.25 by default). There is no NMS, so the IoU threshold is not used.
  4. Convert the query's box to x1, y1, x2, y2 with x1 = cx - w / 2, y1 = cy - h / 2, x2 = cx + w / 2, y2 = cy + h / 2.
  5. Map boxes back to the original image: multiply x by the original width and y by the original height. The input was stretched, so no pad offset applies. LibreYOLO does not clip these boxes.
  6. nms=True is not available for this family: export raises NotImplementedError.

Um deine eigene Implementierung zu prüfen, lade dieselbe Datei mit LibreYOLO: LibreYOLO("model.onnx").predict("image.jpg") liefert die Referenzergebnisse. Geprüft mit LibreYOLO 1.7.0.

Checkpoints

Alle veröffentlichten Gewichtsdateien dieser Familie.

DateiEingabe (px)Lizenz der Gewichte
Detection
LibreRTDETRr34.pt640apache-2.0
LibreRTDETRr18.pt640apache-2.0
LibreRTDETRr50.pt640apache-2.0
LibreRTDETRr50m.pt640apache-2.0
LibreRTDETRr101.pt640apache-2.0
LibreRTDETRl.pt640apache-2.0
LibreRTDETRx.pt640apache-2.0
LibreRTDETRv2r18.pt640apache-2.0
LibreRTDETRv2r34.pt640apache-2.0
LibreRTDETRv2r50m.pt640apache-2.0
LibreRTDETRv2r50.pt640apache-2.0
LibreRTDETRv2r101.pt640apache-2.0
LibreRTDETRv4s.pt640apache-2.0
LibreRTDETRv4m.pt640apache-2.0
LibreRTDETRv4l.pt640apache-2.0
LibreRTDETRv4x.pt640apache-2.0
Oriented boxes
LibreRTDETRv2n-obb.ptapache-2.0
LibreRTDETRv2s-obb.pt640apache-2.0
LibreRTDETRv2m-obb.pt640apache-2.0
LibreRTDETRv2l-obb.pt640apache-2.0
LibreRTDETRv2x-obb.pt640apache-2.0

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

Der Dateiname enthält Version, dann Größe und dann Aufgabe. Erkennungsgewichte heißen LibreRTDETR<size>.pt, LibreRTDETRv2<size>.pt und LibreRTDETRv4<size>.pt, alle bei 640 px. Orientierte Gewichte gibt es nur für Version 2. Sie tragen zusätzlich das Aufgabensuffix und reichen von LibreRTDETRv2n-obb.pt bis LibreRTDETRv2x-obb.pt. Alle arbeiten bei 1024 px und wurden auf DOTA v1.0 statt COCO trainiert.

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
RT-DETR, RT-DETRv2 and RT-DETRv4, Baidu (versions 1 and 2), Peking University and Tsinghua University (version 4)
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. All three versions carry it, across two repositories and three papers: RT-DETR and RT-DETRv2 at github.com/lyuwenyu/RT-DETR, and RT-DETRv4 at github.com/RT-DETRs/RT-DETRv4, which is cited separately (arXiv 2510.25257). RT-DETRv4 distills from a DINOv3 teacher while training only; the released student weights hold no DINOv3 parameters, and the tensors that fed the teacher are dropped when a checkpoint is converted, so Meta's DINOv3 license does not reach them.

Zitieren

@misc{lv2023detrs,
      title={DETRs Beat YOLOs on Real-time Object Detection},
      author={Yian Zhao and Wenyu Lv and Shangliang Xu and Jinman Wei and Guanzhong Wang and Qingqing Dang and Yi Liu and Jie Chen},
      year={2023},
      eprint={2304.08069},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

@misc{lv2024rtdetrv2improvedbaselinebagoffreebies,
      title={RT-DETRv2: Improved Baseline with Bag-of-Freebies for Real-Time Detection Transformer}, 
      author={Wenyu Lv and Yian Zhao and Qinyao Chang and Kui Huang and Guanzhong Wang and Yi Liu},
      year={2024},
      eprint={2407.17140},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2407.17140}, 
}

Aus dem Zitierblock der Autoren unter github.com/lyuwenyu/RT-DETR#citation kopiert.

Der obige Block entspricht der von den Autoren veröffentlichten Zitierangabe für die Objekterkennung mit Version 1 und 2. Die orientierten Gewichte von Version 2 haben mit dem Apache-2.0-Repository RiO-DETR einen dritten Upstream: github.com/RicePasteM/RiO-DETR. Von dort stammen die DOTA-Checkpoints. Zitiere dieses Projekt, wenn du einen davon verwendet hast. Version 4 ist eine eigene Veröffentlichung einer anderen Gruppe und besitzt einen eigenen Zitationsblock unter github.com/RT-DETRs/RT-DETRv4. Zitiere diesen, wenn du einen Checkpoint der Version 4 verwendet hast.

Mit LibreYOLO v1.6.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.