RT-DETR
Трансформер виявлення для інференсу в реальному часі: він декодує фіксований набір запитів замість щільної сітки, тому не виконує NMS. LibreYOLO містить три його версії, які розрізняються за завантаженою контрольною точкою, а версія 2 також підтримує орієнтовані рамки.
- Задачі
- detection, oriented boxes
- Розміри
- 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
- Встановлення
pip install libreyolo- Рівень підтримки
- Основний, починаючи з v1.1.0. Основні придатні до навчання детектори: функції з'являються після флагманських моделей у тій самій хвилі випуску.
- Першоджерело
- RT-DETR, RT-DETRv2 and RT-DETRv4, автори: Baidu (versions 1 and 2), Peking University and Tsinghua University (version 4), ліцензія Apache-2.0. Стаття, джерело
- Ліцензії
- Код: Apache-2.0, ваги: Apache-2.0. Комерційне використання
Встановлення
RT-DETR не потребує додаткових пакетів. Усі його імпорти входять до базового
встановлення, а додатковий пакет rtdetr є стабільною назвою, яка нічого не
додає.
pip install libreyoloВинятком є донавчання адаптерів із lora=True, для якого потрібен додатковий
пакет lora.
pip install "libreyolo[lora]"Передбачення
Під час першого використання ваги завантажуються з Hugging Face та кешуються локально.
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)libreyolo predict model=LibreRTDETRr18.pt save=True \ source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpgfrom libreyolo import LibreYOLO # Версія є частиною назви файлу, а фабрика виконує маршрутизацію за# контрольною точкою, тому всі три завантажуються однаково.model = LibreYOLO("LibreRTDETRv4s.pt") # Будь-яке джерело, яке приймає бібліотека: файл, каталог, URL-адреса,# індекс вебкамери, потік RTSP або список .streamsfor result in model.predict("clip.mp4", stream=True, save=True): print(len(result.boxes))from libreyolo import LibreYOLO # Лише версія 2. Суфікс -obb вибирає завдання, а орієнтованість контрольної точки# розпізнається за її власними тензорами, тому аргумент завдання# не потрібен. Ці ваги для DOTA v1.0, 15 класів аерофотознімків із 1024 px.model = LibreYOLO("LibreRTDETRv2n-obb.pt")result = model("aerial.png", save=True) obb = result.obbprint(obb.xywhr) # (N, 5): cx, cy, w, h, радіаниprint(obb.xyxyxyxy) # ті самі рядки у вигляді чотирьох кутових точокprint(result.boxes.xyxy) # осьові рамки, що їх охоплюютьlibreyolo predict model=LibreRTDETRv2n-obb.pt source=aerial.png save=TrueПовертається той самий об'єкт Results, що й для кожного сімейства, тому для
заміни детектора достатньо змінити один рядок. Параметри conf і max_det
фільтрують декодування top-k за запитами та класами; етапу NMS для налаштування
немає, а iou приймається, але не використовується. Орієнтована контрольна точка
нативно заповнює result.obb і також заповнює result.boxes осьовими
прямокутниками, що їх охоплюють. Джерела, потокове оброблення та роботу з
результатами описано на сторінці передбачення.
Варіанти
Доступні три версії та два завдання, а коди розміру не утворюють єдиного ряду. Версія 1 називає розміри за бекбоном, ResNet або HGNetv2. Версія 2 повторно використовує лише назви ResNet: версія 1 уже постачає два розміри HGNetv2, а результати версії 2 для них були достатньо близькими, тому LibreYOLO не публікує дубльованих ваг. Версія 4 використовує звичайний літерний ряд, який конфліктує з назвами HGNetv2 версії 1, тому самого коду розміру недостатньо для ідентифікації моделі. Версію записано в назві файлу контрольної точки.
| Контрольна точка | Вхід (пікс.) | mAP 50-95 | Параметри (млн) |
|---|---|---|---|
| LibreRTDETRl | 640 | 55.8 | 32.93 |
| LibreRTDETRr101 | 640 | 56.8 | 76.56 |
| LibreRTDETRr18 | 640 | 49.7 | 20.18 |
| LibreRTDETRr34 | 640 | 52.2 | 31.44 |
| LibreRTDETRr50 | 640 | 55.9 | 42.89 |
| LibreRTDETRr50m | 640 | 53.8 | 36.59 |
| LibreRTDETRx | 640 | 57.9 | 67.37 |
| LibreRTDETRv2r101 | 640 | 56.8 | 76.56 |
| LibreRTDETRv2r18 | 640 | 50.8 | 20.18 |
| LibreRTDETRv2r34 | 640 | 53.2 | 31.44 |
| LibreRTDETRv2r50 | 640 | 55.7 | 42.89 |
| LibreRTDETRv2r50m | 640 | 54.8 | 36.59 |
| LibreRTDETRv4l | 640 | 57.8 | 31.24 |
| LibreRTDETRv4m | 640 | 56.5 | 19.59 |
| LibreRTDETRv4s | 640 | 52.8 | 10.32 |
| LibreRTDETRv4x | 640 | 60.0 | 62.62 |
COCO val2017, 500 images. Виміряно засобами бенчмарку LibreYOLO й опубліковано на сторінці Vision Analysis, де порівнюють затримку на різному обладнанні та в різних середовищах виконання, а також зберігають повні записи запусків.
Версія 2 зберігає архітектуру та компонування словника стану версії 1 і змінює
спосіб вибірки деформованої уваги, тому вони розрізняються за метаданими
контрольної точки, а не формою. Версія 4 має інше походження: вона повторно
використовує архітектуру й тренер D-FINE, а її ваги отримано дистиляцією
фундаментальної візуальної моделі DINOv3 як учителя у модель HGNetv2 як учня.
У LibreYOLO LibreRTDETRv4 є підкласом LibreDFINE із примусово вимкненою
головою масок, тому підтримує лише виявлення.
Орієнтовані рамки у версії 2
Версія 2 є єдиною версією з другим завданням. Вона підтримує завдання detect
і obb, які не мають спільного графа чи ряду розмірів. Виявлення використовує
розміри ResNet із 640 px; орієнтоване виявлення використовує ряд HGNetv2, n, s,
m, l та x, із 1024 px, а розмір вхідних даних визначається для кожного завдання,
а не сімейства. Орієнтованість контрольної точки розпізнається за її власними
тензорами, п'ятикоординатними головами рамок і параметрами вибірки версії 2,
тому ваги -obb завантажуються в орієнтований граф без аргументу task, а
невідповідність спричиняє явну помилку замість непомітного переосмислення.
Опубліковано файли від LibreRTDETRv2n-obb.pt до LibreRTDETRv2x-obb.pt. Це
офіційні одномасштабні контрольні точки DOTA v1.0, перетворені у формат LibreYOLO,
із 15 класами аерофотознімків від літака та корабля до гавані й гелікоптера;
назви класів записано в контрольній точці. На відміну від виявлення, орієнтоване
завдання призначено лише для інференсу: передбачення, валідація й експорт працюють,
а train() для орієнтованої моделі спричиняє помилку. Відстеження та аугментація
під час тестування також не підтримують орієнтовані рамки. Завдання, формат міток
і метрики описано на сторінці
Орієнтоване виявлення.
Навчання
Навчання починається з опублікованої контрольної точки. pretrained приймається,
а потім відкидається в усіх трьох версіях, тому pretrained=False не створює
випадково ініціалізованої моделі. Усе в цьому розділі стосується виявлення:
орієнтоване завдання версії 2 призначено лише для інференсу, і немає шляху
перенесення з ваг виявлення, оскільки два завдання використовують різні бекбони.
from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt") # coco128.yaml завантажує вибірку зі 128 зображень під час першого використання. Для справжнього# запуску вкажіть у `data` YAML-файл власного датасету.model.train(data="coco128.yaml", epochs=50, batch=4, lr0=1e-4)libreyolo train model=LibreRTDETRr18.pt data=coco128.yaml \ epochs=50 batch=4 lr0=1e-4# Потрібен додатковий пакет lora: pip install "libreyolo[lora]"from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt")model.train(data="coco128.yaml", epochs=50, lora=True)libreyolo train model=LibreRTDETRr18.pt data=coco128.yaml \ epochs=50 device=0,1Швидкість навчання є ключовим аргументом, і кожна версія має власне типове
значення замість спільного для бібліотеки. Сигнатура методу train() у Python
читає його з навчальної конфігурації відповідної версії, а CLI визначає те саме
значення, якщо lr0 не передано. Версії 1 і 2 також приймають lr_backbone та
типово встановлюють його в одну двадцяту lr0 відповідно до оригінального
рецепта; версія 4 працює через тренер D-FINE, який масштабує групу параметрів
бекбона за допомогою backbone_lr_mult.
Залишайте imgsz із нативним розміром контрольної точки, якщо немає причини його
змінювати. Валідація й передбачення з іншими розмірами працюють з одним залишковим
ефектом: прямокутний розмір, кількість токенів якого відповідає нативному розміру,
усе одно повторно використовує ембединг, побудований для неправильного
співвідношення сторін.
Датасети, аугментацію, кілька GPU та системи журналювання описано на сторінці навчання.
RT-DETRv4 типово вмикає amp=True з amp_dtype="float16". Передайте amp=False для FP32.
Валідація
Метод val() повертає словник ключів metrics/ із точністю, повнотою, mAP 50
і mAP 50-95, виміряними для будь-якого датасету у форматі, на якому виконувалося
навчання.
from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt") # val() повертає звичайний словник, а не об'єктmetrics = model.val(data="coco128.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])libreyolo val model=LibreRTDETRr18.pt data=coco128.yaml# coco-val-only.yaml отримує 5000 зображень val2017 і пропускає# навчальну вибірку. Він містить вбудований скрипт завантаження, тому потребує# явного дозволу, якщо датасету ще немає локально.libreyolo val model=LibreRTDETRr18.pt data=coco-val-only.yaml \ allow_download_scripts=Truefrom libreyolo import LibreYOLO # Орієнтована валідація виконує зіставлення за повернутим IoU, тому передбачення в# правильному місці з неправильним кутом вважається промахом.model = LibreYOLO("LibreRTDETRv2n-obb.pt")metrics = model.val(data="my-obb-dataset.yaml") print(metrics["metrics/mAP50-95(OBB)"])print(metrics["metrics/mAP50(OBB)"])Рядки наведеної вище таблиці бенчмарків отримано за допомогою системи бенчмарків LibreYOLO; у примітці під таблицею зазначено датасет і наведено посилання на записи запусків.
Орієнтована валідація виконується тим самим викликом і повідомляє ті самі ключі,
а також чотири повторені ключі із суфіксом (OBB). Для зіставлення
використовується повернутий IoU, а не IoU прямокутників, що охоплюють рамки,
тому помилка кута вважається промахом. Параметр augment=True відхиляється
для цього завдання.
Експорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: підтримується | Detection to TorchScript: підтримується | Detection to ExecuTorch: підтримується | Detection to TensorRT: підтримується | Detection to OpenVINO: підтримується | Detection to Paddle: не підтримується | Detection to MNN: підтримується | Detection to RKNN: не підтримується | Detection to ncnn: не підтримується | Detection to TFLite: не підтримується | Detection to CoreML: не підтримується | Detection to Core AI: підтримується |
| Oriented boxes | Oriented boxes to ONNX: підтримується | Oriented boxes to TorchScript: підтримується | Oriented boxes to ExecuTorch: підтримується | Oriented boxes to TensorRT: підтримується | Oriented boxes to OpenVINO: підтримується | Oriented boxes to Paddle: не підтримується | Oriented boxes to MNN: не підтримується | Oriented boxes to RKNN: не підтримується | Oriented boxes to ncnn: не підтримується | Oriented boxes to TFLite: не підтримується | Oriented boxes to CoreML: не підтримується | Oriented boxes to Core AI: не підтримується |
Матриця охоплює все походження на одній сторінці: якщо підтримка формату в трьох версіях відрізняється, у клітинці показано найслабшу, щоб можливості жодної завантаженої версії не були перебільшені. Орієнтований рядок належить лише версії 2. ONNX і TorchScript валідовано для нього у FP32, з батчем 1 і фіксованим полотном 1024 на 1024; OpenVINO, TensorRT та ExecuTorch перетворюються й повторно завантажуються, але не досягли еквівалентності необробленого виходу для повного набору запитів, тому найкращі рамки збігаються до частки пікселя, а хвіст відхиляється.
Експортований артефакт повторно завантажується через LibreYOLO() за суфіксом
файлу, тому файл .onnx або .engine поводиться як контрольна точка й повертає
той самий Results.
# Потрібен додатковий пакет onnx: pip install "libreyolo[onnx]"from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt")path = model.export(format="onnx")print(path)libreyolo export model=LibreRTDETRr18.pt format=onnx# ONNX і TorchScript є валідованими цілями для орієнтованого завдання# у FP32, з батчем 1 і на фіксованому полотні 1024 на 1024.libreyolo export model=LibreRTDETRv2n-obb.pt format=onnx imgsz=1024libreyolo export model=LibreRTDETRv2n-obb.pt format=torchscript imgsz=1024from libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика виконує маршрутизацію за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreRTDETRr18.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Входи та виходи ONNX
LibreRTDETR and LibreRTDETRv2
| Тензор | images float32 [batch, 3, height, width] |
|---|---|
| Колір | RGB |
| Масштабування | піксель / 255 |
| Нормалізація | немає |
| Зміна розміру | розтягнути до ширини x висоти (без заповнення, співвідношення сторін не зберігається), 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, експорт за замовчуванням
| Вихід | Форма | Значення |
|---|---|---|
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. |
Постобробка
- Apply sigmoid to pred_logits.
- 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.
- 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.
- 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.
- 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.
- nms=True is not available for this family: export raises NotImplementedError.
LibreRTDETRv2 OBB
| Тензор | images float32 [batch, 3, height, width] |
|---|---|
| Колір | RGB |
| Масштабування | піксель / 255 |
| Нормалізація | немає |
| Зміна розміру | custom, Pillow bilinear |
Як відтворити білінійну зміну розміру Pillow
LibreYOLO змінює розмір фільтром BILINEAR з Pillow (Image.resize). Це не OpenCV INTER_LINEAR і не INTER_AREA: під час зменшення Pillow розширює фільтр на коефіцієнт зменшення, а зміна розміру в OpenCV змінює детекції та зсуває рамки на кілька пікселів. Щоб відтворити його без Pillow, змініть розмір за однією віссю, округліть до 8 біт, потім змініть розмір за іншою віссю й округліть знову. Для кожної осі нехай s = in_size / out_size і f = max(s, 1). Вихідний піксель i має центр c = (i + 0.5) * s і читає вихідні пікселі j від int(c - f + 0.5) до int(c + f + 0.5) - 1, обмежені зображенням, кожен з вагою max(0, 1 - |j + 0.5 - c| / f), поділеною на суму ваг. Pillow рахує у фіксованій крапці й обирає порядок осей за формою зображення, тому ваги з плаваючою крапкою можуть відрізнятися від нього на один рівень на кількох пікселях. Це не змінює результати в наших перевірках.
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, експорт за замовчуванням
| Вихід | Форма | Значення |
|---|---|---|
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. |
Постобробка
- Apply sigmoid to pred_logits.
- 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.
- 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.
- 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.
- The angle in radians is a x pi. LibreYOLO reports each box as cx, cy, w, h, angle in original-image pixels and radians.
- 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.
- LibreYOLO's axis-aligned box for a detection is the smallest box that encloses its four corners.
- nms=True is not available for this family: export raises NotImplementedError.
LibreRTDETRv4
| Тензор | images float32 [batch, 3, height, width] |
|---|---|
| Колір | RGB |
| Масштабування | піксель / 255 |
| Нормалізація | немає |
| Зміна розміру | розтягнути до ширини x висоти (без заповнення, співвідношення сторін не зберігається), Pillow bilinear |
Як відтворити білінійну зміну розміру Pillow
LibreYOLO змінює розмір фільтром BILINEAR з Pillow (Image.resize). Це не OpenCV INTER_LINEAR і не INTER_AREA: під час зменшення Pillow розширює фільтр на коефіцієнт зменшення, а зміна розміру в OpenCV змінює детекції та зсуває рамки на кілька пікселів. Щоб відтворити його без Pillow, змініть розмір за однією віссю, округліть до 8 біт, потім змініть розмір за іншою віссю й округліть знову. Для кожної осі нехай s = in_size / out_size і f = max(s, 1). Вихідний піксель i має центр c = (i + 0.5) * s і читає вихідні пікселі j від int(c - f + 0.5) до int(c + f + 0.5) - 1, обмежені зображенням, кожен з вагою max(0, 1 - |j + 0.5 - c| / f), поділеною на суму ваг. Pillow рахує у фіксованій крапці й обирає порядок осей за формою зображення, тому ваги з плаваючою крапкою можуть відрізнятися від нього на один рівень на кількох пікселях. Це не змінює результати в наших перевірках.
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, експорт за замовчуванням
| Вихід | Форма | Значення |
|---|---|---|
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. |
Постобробка
- Apply sigmoid to pred_logits.
- 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.
- 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.
- 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.
- 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.
- nms=True is not available for this family: export raises NotImplementedError.
Щоб перевірити власну реалізацію, пропустіть той самий файл через LibreYOLO: LibreYOLO("model.onnx").predict("image.jpg") повертає еталонні результати. Перевірено на LibreYOLO 1.7.0.
Контрольні точки
Усі опубліковані файли ваг для цього сімейства.
| Файл | Вхід (пікс.) | Ліцензія ваг |
|---|---|---|
| Detection | ||
| LibreRTDETRr34.pt | 640 | apache-2.0 |
| LibreRTDETRr18.pt | 640 | apache-2.0 |
| LibreRTDETRr50.pt | 640 | apache-2.0 |
| LibreRTDETRr50m.pt | 640 | apache-2.0 |
| LibreRTDETRr101.pt | 640 | apache-2.0 |
| LibreRTDETRl.pt | 640 | apache-2.0 |
| LibreRTDETRx.pt | 640 | apache-2.0 |
| LibreRTDETRv2r18.pt | 640 | apache-2.0 |
| LibreRTDETRv2r34.pt | 640 | apache-2.0 |
| LibreRTDETRv2r50m.pt | 640 | apache-2.0 |
| LibreRTDETRv2r50.pt | 640 | apache-2.0 |
| LibreRTDETRv2r101.pt | 640 | apache-2.0 |
| LibreRTDETRv4s.pt | 640 | apache-2.0 |
| LibreRTDETRv4m.pt | 640 | apache-2.0 |
| LibreRTDETRv4l.pt | 640 | apache-2.0 |
| LibreRTDETRv4x.pt | 640 | apache-2.0 |
| Oriented boxes | ||
| LibreRTDETRv2n-obb.pt | apache-2.0 | |
| LibreRTDETRv2s-obb.pt | 640 | apache-2.0 |
| LibreRTDETRv2m-obb.pt | 640 | apache-2.0 |
| LibreRTDETRv2l-obb.pt | 640 | apache-2.0 |
| LibreRTDETRv2x-obb.pt | 640 | apache-2.0 |
Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.
Назва файлу містить версію, потім розмір, а потім завдання. Ваги виявлення мають
назви LibreRTDETR<size>.pt, LibreRTDETRv2<size>.pt та
LibreRTDETRv4<size>.pt, усі для 640 px. Орієнтовані ваги існують лише для
версії 2 й додають суфікс завдання, від LibreRTDETRv2n-obb.pt до
LibreRTDETRv2x-obb.pt, усі для 1024 px і навчені на DOTA v1.0, а не COCO.
Ліцензування
Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.
Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.
- Оригінальна робота
- RT-DETR, RT-DETRv2 and RT-DETRv4, Baidu (versions 1 and 2), Peking University and Tsinghua University (version 4)
- Ліцензія першоджерела
- Apache-2.0
- Джерело першоджерела
- github.com/lyuwenyu/RT-DETR
- Код LibreYOLO
- MIT
- Ваги
- Apache-2.0, повторно опубліковано на huggingface.co/LibreYOLO
- Тлумачення
- 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.
Цитування
@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},
}Скопійовано з блоку цитування авторів на сторінці github.com/lyuwenyu/RT-DETR#citation.
У наведеному вище блоці подано цитування, яке автори публікують для виявлення у версіях 1 і 2. Орієнтовані ваги версії 2 мають третє першоджерело, репозиторій RiO-DETR за ліцензією Apache-2.0 на github.com/RicePasteM/RiO-DETR, звідки походять контрольні точки DOTA; цитуйте цей проєкт, якщо використовували одну з них. Версія 4 описана в окремій статті іншої групи й має власний блок цитування на сторінці github.com/RT-DETRs/RT-DETRv4; цитуйте його, якщо використовували контрольну точку версії 4.