RT-DETR

Transformer detekcyjny przeznaczony do wnioskowania w czasie rzeczywistym. Dekoduje stały zestaw zapytań zamiast gęstej siatki, dlatego nie wykonuje NMS. LibreYOLO zawiera trzy jego wersje rozróżniane przez ładowany punkt kontrolny, a wersja 2 obsługuje także ramki zorientowane.

Zadania
detection, oriented boxes
Rozmiary
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
Instalacja
pip install libreyolo
Poziom obsługi
Główny, od wersji v1.1.0. Główne trenowalne detektory: otrzymują funkcje po modelach flagowych w tej samej fali wydań.
Projekt źródłowy
RT-DETR, RT-DETRv2 and RT-DETRv4, autorzy: Baidu (versions 1 and 2), Peking University and Tsinghua University (version 4), licencja: Apache-2.0. Publikacja, kod źródłowy
Licencje
Kod: Apache-2.0, wagi: Apache-2.0. Użycie komercyjne

Instalacja

RT-DETR nie wymaga opcjonalnych dodatków. Wszystkie importowane przez niego elementy znajdują się w instalacji podstawowej, a dodatek rtdetr jest stabilną nazwą, która niczego do niej nie dodaje.

bash
pip install libreyolo

Dostrajanie adaptera z lora=True jest wyjątkiem i wymaga dodatku lora.

bash
pip install "libreyolo[lora]"

Predykcja

Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane w lokalnej pamięci podręcznej.

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
Wideo
from libreyolo import LibreYOLO # Wersja jest częścią nazwy pliku, a fabryka wybiera ścieżkę według# punktu kontrolnego, dlatego wszystkie trzy ładują się tak samo.model = LibreYOLO("LibreRTDETRv4s.pt") # Dowolne źródło akceptowane przez bibliotekę: plik, folder, URL, indeks kamery,# strumień RTSP albo lista .streamsfor result in model.predict("clip.mp4", stream=True, save=True):    print(len(result.boxes))
Ramki zorientowane
from libreyolo import LibreYOLO # Tylko wersja 2. Przyrostek -obb wybiera zadanie, a punkt kontrolny# jest rozpoznawany jako zorientowany na podstawie własnych tensorów,# dlatego argument task nie jest potrzebny. Te wagi to DOTA v1.0,# 15 klas lotniczych w rozdzielczości 1024 px.model = LibreYOLO("LibreRTDETRv2n-obb.pt")result = model("aerial.png", save=True) obb = result.obbprint(obb.xywhr)     # (N, 5): cx, cy, w, h, radianyprint(obb.xyxyxyxy)  # te same wiersze jako cztery punkty narożneprint(result.boxes.xyxy)  # otaczające ramki wyrównane do osi
Ramki zorientowane, CLI
libreyolo predict model=LibreRTDETRv2n-obb.pt source=aerial.png save=True

Zwracany obiekt Results jest taki sam dla każdej rodziny, więc zamiana na inny detektor wymaga zmiany jednego wiersza. Parametry conf i max_det filtrują dekodowanie top-k dla zapytań i klas. Nie ma etapu NMS do dostrojenia, a iou jest przyjmowane, lecz nieużywane. Zorientowany punkt kontrolny natywnie wypełnia result.obb, a także result.boxes otaczającymi prostokątami wyrównanymi do osi. Informacje o źródłach, strumieniowaniu i obsłudze wyników znajdziesz w sekcji predykcja.

Warianty

Dostępne są trzy wersje i łącznie dwa zadania, a kody rozmiarów nie tworzą jednej serii. Wersja 1 nazywa rozmiary według backbone, ResNet lub HGNetv2. Wersja 2 ponownie wykorzystuje tylko nazwy ResNet: wersja 1 zawiera już dwa rozmiary HGNetv2, a wyniki wersji 2 były dla nich na tyle zbliżone, że LibreYOLO nie publikuje zduplikowanych wag. Wersja 4 używa zwykłej serii literowej, która koliduje z nazwami HGNetv2 z wersji 1, dlatego sam kod rozmiaru nie identyfikuje modelu. Wersja jest zapisana w nazwie pliku punktu kontrolnego.

Checkpoint modeluWejście (px)mAP 50-95Parametry (mln)
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. Wyniki zmierzono za pomocą zestawu benchmarkowego LibreYOLO i opublikowano w Vision Analysis, gdzie porównywane są opóźnienia na różnych urządzeniach i w różnych środowiskach uruchomieniowych oraz znajdują się pełne zapisy przebiegów.

Wersja 2 zachowuje architekturę i układ słownika stanu wersji 1, a zmienia sposób próbkowania uwagi deformowalnej. Dlatego są rozróżniane na podstawie metadanych w punkcie kontrolnym, a nie kształtu. Wersja 4 pochodzi z innej linii: ponownie wykorzystuje architekturę i trenera D-FINE, a jej wagi powstały przez destylację bazowego modelu wizyjnego DINOv3 z nauczyciela do ucznia HGNetv2. W LibreYOLO LibreRTDETRv4 jest podklasą LibreDFINE z trwale wyłączoną głowicą masek, dlatego obsługuje wyłącznie detekcję.

Ramki zorientowane w wersji 2

Wersja 2 jako jedyna zawiera drugie zadanie. Obsługuje detect i obb, które nie korzystają ze wspólnego grafu ani serii rozmiarów. Detekcja używa rozmiarów ResNet przy 640 px. Detekcja zorientowana korzysta z serii HGNetv2, n, s, m, l i x, przy 1024 px, a rozmiar wejścia jest ustalany według zadania, nie rodziny. Punkt kontrolny jest rozpoznawany jako zorientowany na podstawie własnych tensorów, pięciowspółrzędnych głowic ramek i parametrów próbkowania wersji 2. Dzięki temu wagi -obb ładują się do grafu zorientowanego bez argumentu task, a niezgodność obu wariantów powoduje jawny błąd zamiast cichej reinterpretacji.

Opublikowane pliki mają nazwy od LibreRTDETRv2n-obb.pt do LibreRTDETRv2x-obb.pt. Są to oficjalne jedno­skalowe punkty kontrolne DOTA v1.0 przekonwertowane do formatu LibreYOLO, z 15 klasami lotniczymi od samolotu i statku po port i śmigłowiec. Nazwy klas są zapisane w punkcie kontrolnym. W przeciwieństwie do detekcji zadanie zorientowane obsługuje wyłącznie wnioskowanie: działają predykcja, walidacja i eksport, a train() na modelu zorientowanym zgłasza błąd. Śledzenie i augmentacja podczas testowania również nie obsługują ramek zorientowanych. Sekcja detekcja zorientowana opisuje zadanie, format etykiet i metryki.

Trenowanie

Trenowanie rozpoczyna się od opublikowanego punktu kontrolnego. Parametr pretrained jest przyjmowany, a następnie odrzucany we wszystkich trzech wersjach, więc pretrained=False nie daje losowo zainicjalizowanego modelu. Cała ta sekcja dotyczy detekcji. Zadanie zorientowane wersji 2 obsługuje wyłącznie wnioskowanie i nie ma ścieżki przenoszenia wag detekcji, ponieważ oba zadania używają innych backbone'ów.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt") # coco128.yaml pobiera próbkę 128 obrazów przy pierwszym użyciu. Dla# rzeczywistego przebiegu ustaw `data` na własny plik YAML zbioru danych.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
# Wymaga dodatku lora: pip install "libreyolo[lora]"from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt")model.train(data="coco128.yaml", epochs=50, lora=True)
Wiele GPU
libreyolo train model=LibreRTDETRr18.pt data=coco128.yaml \  epochs=50 device=0,1

Najważniejszym argumentem jest szybkość uczenia, a każda wersja ma własną wartość domyślną zamiast wartości wspólnej dla biblioteki. Sygnatura train() w Pythonie odczytuje ją z konfiguracji trenowania tej wersji, a CLI ustala tę samą wartość, gdy lr0 nie zostanie przekazane. Wersje 1 i 2 przyjmują również lr_backbone i domyślnie ustawiają je na jedną dwudziestą lr0, zgodnie z oryginalną konfiguracją. Wersja 4 korzysta z trenera D-FINE, który skaluje grupę parametrów backbone za pomocą backbone_lr_mult.

Pozostaw imgsz w natywnym rozmiarze punktu kontrolnego, chyba że istnieje powód, by go zmienić. Walidacja i predykcja w innych rozmiarach działają, z jednym zastrzeżeniem: rozmiar prostokątny, którego liczba tokenów odpowiada rozmiarowi natywnemu, nadal używa osadzenia zbudowanego dla niewłaściwych proporcji.

Informacje o zbiorach danych, augmentacji, wielu GPU i loggerach znajdziesz w sekcji trenowanie.

RT-DETRv4 domyślnie włącza amp=True z amp_dtype="float16". Aby używać FP32, należy przekazać amp=False.

Walidacja

Metoda val() zwraca słownik kluczy metrics/ obejmujących precyzję, czułość, mAP 50 i mAP 50-95, mierzone na dowolnym zbiorze danych w formacie użytym do trenowania.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt") # val() zwraca zwykły słownik, a nie obiektmetrics = 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
Walidacja na COCO
# coco-val-only.yaml pobiera 5000 obrazów val2017 i pomija zestaw# treningowy. Zawiera osadzony skrypt pobierania, dlatego wymaga# jawnego zezwolenia, chyba że zbiór danych jest już dostępny lokalnie.libreyolo val model=LibreRTDETRr18.pt data=coco-val-only.yaml \  allow_download_scripts=True
Ramki zorientowane
from libreyolo import LibreYOLO # Walidacja zorientowana dopasowuje za pomocą obróconego IoU, dlatego predykcja# we właściwym miejscu, lecz pod złym kątem, jest liczona jako chybienie.model = LibreYOLO("LibreRTDETRv2n-obb.pt")metrics = model.val(data="my-obb-dataset.yaml") print(metrics["metrics/mAP50-95(OBB)"])print(metrics["metrics/mAP50(OBB)"])

Wiersze w powyższej tabeli benchmarków pochodzą z zestawu benchmarkowego LibreYOLO. Uwaga pod tabelą wskazuje zbiór danych, który je wygenerował, i zawiera odnośniki do zapisów przebiegów.

Walidacja zorientowana korzysta z tego samego wywołania i raportuje te same klucze oraz cztery powtórzone z przyrostkiem (OBB). Dopasowanie używa obróconego IoU zamiast IoU otaczających prostokątów, dlatego błąd kąta jest liczony jako chybienie. Ustawienie augment=True jest odrzucane w tym zadaniu.

Eksport

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: obsługiwaneDetection to TorchScript: obsługiwaneDetection to ExecuTorch: obsługiwaneDetection to TensorRT: obsługiwaneDetection to OpenVINO: obsługiwaneDetection to Paddle: brak obsługiDetection to MNN: obsługiwaneDetection to RKNN: brak obsługiDetection to ncnn: brak obsługiDetection to TFLite: brak obsługiDetection to CoreML: brak obsługiDetection to Core AI: obsługiwane
Oriented boxesOriented boxes to ONNX: obsługiwaneOriented boxes to TorchScript: obsługiwaneOriented boxes to ExecuTorch: obsługiwaneOriented boxes to TensorRT: obsługiwaneOriented boxes to OpenVINO: obsługiwaneOriented boxes to Paddle: brak obsługiOriented boxes to MNN: brak obsługiOriented boxes to RKNN: brak obsługiOriented boxes to ncnn: brak obsługiOriented boxes to TFLite: brak obsługiOriented boxes to CoreML: brak obsługiOriented boxes to Core AI: brak obsługi

Macierz obejmuje całą linię na jednej stronie. Jeśli trzy wersje różnią się obsługą formatu, komórka pokazuje najsłabszy poziom spośród nich, więc możliwości żadnej ładowanej wersji nie są zawyżane. Wiersz zorientowany dotyczy wyłącznie wersji 2. ONNX i TorchScript zostały dla niej zwalidowane w FP32, z partią 1 i stałym płótnem 1024 na 1024. OpenVINO, TensorRT i ExecuTorch konwertują i ładują ponownie model, ale nie osiągnęły zgodności surowych wyników dla całego zestawu zapytań. Najlepsze ramki zgadzają się z dokładnością do ułamka piksela, natomiast ogon wyników się rozbiega.

Wyeksportowany artefakt jest ponownie ładowany przez LibreYOLO() na podstawie rozszerzenia pliku, więc plik .onnx lub .engine zachowuje się jak punkt kontrolny i zwraca ten sam obiekt Results.

Python
# Wymaga dodatku onnx: 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
Ramki zorientowane
# ONNX i TorchScript są zwalidowanymi formatami docelowymi dla zadania# zorientowanego, w FP32, z partią 1 i stałym płótnem 1024 na 1024.libreyolo export model=LibreRTDETRv2n-obb.pt format=onnx imgsz=1024libreyolo export model=LibreRTDETRv2n-obb.pt format=torchscript imgsz=1024
Użycie wyeksportowanego pliku
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Fabryka wybiera ścieżkę na podstawie rozszerzenia pliku, dlatego# artefakt ładuje się jak punkt kontrolny i zwraca ten sam obiekt Results.model = LibreYOLO("LibreRTDETRr18.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Wejścia i wyjścia ONNX

LibreRTDETR and LibreRTDETRv2

Tensorimages float32 [batch, 3, height, width]
KolorRGB
Skalowaniepiksel / 255
Normalizacjabrak
Zmiana rozmiarurozciągnij do szerokości x wysokości (bez wypełnienia, proporcje nie są zachowane), 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, eksport domyślny
WyjścieKształtZnaczenie
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.

Przetwarzanie końcowe

  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]
KolorRGB
Skalowaniepiksel / 255
Normalizacjabrak
Zmiana rozmiarucustom, Pillow bilinear
Jak odtworzyć dwuliniowe skalowanie Pillow

LibreYOLO skaluje filtrem BILINEAR z Pillow (Image.resize). To nie jest OpenCV INTER_LINEAR ani INTER_AREA: przy zmniejszaniu Pillow poszerza filtr o współczynnik zmniejszenia, a skalowania OpenCV zmieniają detekcje i przesuwają ramki o kilka pikseli. Aby odtworzyć to bez Pillow, przeskaluj jedną oś, zaokrąglij do 8 bitów, potem przeskaluj drugą oś i zaokrąglij ponownie. Dla każdej osi niech s = in_size / out_size oraz f = max(s, 1). Piksel wyjściowy i ma środek c = (i + 0.5) * s i czyta piksele źródłowe j od int(c - f + 0.5) do int(c + f + 0.5) - 1, przycięte do obrazu, każdy z wagą max(0, 1 - |j + 0.5 - c| / f), podzieloną przez sumę wag. Pillow liczy w arytmetyce stałoprzecinkowej i wybiera kolejność osi na podstawie kształtu obrazu, więc wagi zmiennoprzecinkowe mogą się od niego różnić o jeden poziom na kilku pikselach. To nie zmienia wyników w naszych sprawdzeniach.

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, eksport domyślny
WyjścieKształtZnaczenie
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.

Przetwarzanie końcowe

  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]
KolorRGB
Skalowaniepiksel / 255
Normalizacjabrak
Zmiana rozmiarurozciągnij do szerokości x wysokości (bez wypełnienia, proporcje nie są zachowane), Pillow bilinear
Jak odtworzyć dwuliniowe skalowanie Pillow

LibreYOLO skaluje filtrem BILINEAR z Pillow (Image.resize). To nie jest OpenCV INTER_LINEAR ani INTER_AREA: przy zmniejszaniu Pillow poszerza filtr o współczynnik zmniejszenia, a skalowania OpenCV zmieniają detekcje i przesuwają ramki o kilka pikseli. Aby odtworzyć to bez Pillow, przeskaluj jedną oś, zaokrąglij do 8 bitów, potem przeskaluj drugą oś i zaokrąglij ponownie. Dla każdej osi niech s = in_size / out_size oraz f = max(s, 1). Piksel wyjściowy i ma środek c = (i + 0.5) * s i czyta piksele źródłowe j od int(c - f + 0.5) do int(c + f + 0.5) - 1, przycięte do obrazu, każdy z wagą max(0, 1 - |j + 0.5 - c| / f), podzieloną przez sumę wag. Pillow liczy w arytmetyce stałoprzecinkowej i wybiera kolejność osi na podstawie kształtu obrazu, więc wagi zmiennoprzecinkowe mogą się od niego różnić o jeden poziom na kilku pikselach. To nie zmienia wyników w naszych sprawdzeniach.

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, eksport domyślny
WyjścieKształtZnaczenie
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.

Przetwarzanie końcowe

  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.

Aby sprawdzić własną implementację, uruchom ten sam plik w LibreYOLO: LibreYOLO("model.onnx").predict("image.jpg") zwraca wyniki wzorcowe. Zweryfikowano w LibreYOLO 1.7.0.

Punkty kontrolne

Wszystkie opublikowane pliki wag dla tej rodziny.

PlikWejście (px)Licencja wag
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

Każdy z powyższych plików jest obecnie dostępny w organizacji LibreYOLO i pobierany przy pierwszym użyciu.

Nazwa pliku zawiera wersję, następnie rozmiar i zadanie. Wagi detekcji to LibreRTDETR<size>.pt, LibreRTDETRv2<size>.pt i LibreRTDETRv4<size>.pt, wszystkie w rozdzielczości 640 px. Wagi zorientowane istnieją tylko dla wersji 2 i dodają przyrostek zadania, od LibreRTDETRv2n-obb.pt do LibreRTDETRv2x-obb.pt. Wszystkie działają przy 1024 px i zostały wytrenowane na DOTA v1.0 zamiast COCO.

Licencjonowanie

Sprawdź licencję w repozytorium konkretnych pobieranych wag na Hugging Face. Każdy checkpoint w organizacji LibreYOLO ma licencję, która nie zawsze jest taka sama w całej rodzinie. To repozytorium jest źródłem rozstrzygającym, a poniższe podsumowanie opisuje stan z chwili ostatniej weryfikacji tej strony.

To opis obowiązujących licencji, a nie porada prawna. Jeśli odpowiedź ma znaczenie komercyjne, przeczytaj licencje i zasięgnij własnej porady prawnej.

Oryginalna praca
RT-DETR, RT-DETRv2 and RT-DETRv4, Baidu (versions 1 and 2), Peking University and Tsinghua University (version 4)
Licencja projektu źródłowego
Apache-2.0
Kod źródłowy projektu
github.com/lyuwenyu/RT-DETR
Kod LibreYOLO
MIT
Wagi
Apache-2.0, ponownie opublikowane w huggingface.co/LibreYOLO
Interpretacja
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.

Cytowanie

@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}, 
}

Skopiowano z bloku cytowania autorów w github.com/lyuwenyu/RT-DETR#citation.

Powyższy blok odpowiada cytowaniu publikowanemu przez autorów dla detekcji w wersjach 1 i 2. Wagi zorientowane wersji 2 mają trzecie źródło, repozytorium RiO-DETR na licencji Apache-2.0 pod adresem github.com/RicePasteM/RiO-DETR, z którego pochodzą punkty kontrolne DOTA. Jeśli użyto jednego z nich, należy zacytować ten projekt. Wersja 4 jest osobną publikacją innej grupy i ma własny blok cytowania pod adresem github.com/RT-DETRs/RT-DETRv4. Jeśli użyto punktu kontrolnego wersji 4, należy zacytować tę publikację.

Zweryfikowano z LibreYOLO v1.6.0. Tabele obsługi, checkpointy i wyniki benchmarków na tej stronie są generowane na podstawie wydanej biblioteki i opublikowanych wag, a nie wpisywane ręcznie.