RT-DETR
Một detection transformer được xây dựng cho suy luận thời gian thực: mô hình giải mã tập query cố định thay vì lưới dày đặc, nên không chạy NMS. LibreYOLO cung cấp ba phiên bản được phân biệt bằng checkpoint bạn tải, và phiên bản 2 còn hỗ trợ box định hướng.
- Tác vụ
- detection, oriented boxes
- Kích thước
- 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
- Cài đặt
pip install libreyolo- Bậc hỗ trợ
- Cốt lõi, từ v1.1.0. Các bộ phát hiện cốt lõi có thể huấn luyện: tính năng theo sau các mô hình chủ lực trong cùng đợt phát hành.
- Thượng nguồn
- RT-DETR, RT-DETRv2 and RT-DETRv4 của Baidu (versions 1 and 2), Peking University and Tsinghua University (version 4), Apache-2.0. Bài báo, mã nguồn
- Giấy phép
- Mã nguồn Apache-2.0, trọng số Apache-2.0. Sử dụng thương mại
Cài đặt
RT-DETR không cần extra tùy chọn. Mọi thành phần được import đều có trong bản
cài đặt cơ sở, còn extra rtdetr là tên ổn định không bổ sung gì.
pip install libreyoloTinh chỉnh bằng adapter với lora=True là ngoại lệ và cần extra lora.
pip install "libreyolo[lora]"Dự đoán
Trọng số được tải từ Hugging Face ở lần dùng đầu tiên và lưu vào bộ nhớ đệm cục bộ.
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 # Phiên bản nằm trong tên tệp và factory định tuyến theo checkpoint,# nên cả ba được tải theo cùng một cách.model = LibreYOLO("LibreRTDETRv4s.pt") # Mọi nguồn thư viện chấp nhận: tệp, thư mục, URL, chỉ số webcam,# luồng RTSP hoặc danh sách .streamsfor result in model.predict("clip.mp4", stream=True, save=True): print(len(result.boxes))from libreyolo import LibreYOLO # Chỉ phiên bản 2. Hậu tố -obb chọn tác vụ và checkpoint được nhận diện# là định hướng từ các tensor riêng, nên không cần đối số task. Các trọng# số này dùng DOTA v1.0, gồm 15 lớp ảnh trên không ở 1024 px.model = LibreYOLO("LibreRTDETRv2n-obb.pt")result = model("aerial.png", save=True) obb = result.obbprint(obb.xywhr) # (N, 5): cx, cy, w, h, radianprint(obb.xyxyxyxy) # cùng các hàng dưới dạng bốn điểm gócprint(result.boxes.xyxy) # các box thẳng trục bao quanhlibreyolo predict model=LibreRTDETRv2n-obb.pt source=aerial.png save=TrueĐối tượng Results trả về là loại mà mọi họ đều trả về, nên việc đổi sang
detector khác chỉ cần sửa một dòng. conf và max_det lọc phép giải mã top-k
trên các query và lớp; không có bước NMS cần điều chỉnh, còn iou được chấp nhận
nhưng không dùng. Checkpoint định hướng điền trực tiếp result.obb và cũng điền
result.boxes bằng các hình chữ nhật thẳng trục bao quanh. Xem
dự đoán để biết về nguồn, streaming và xử lý kết quả.
Các biến thể
Có ba phiên bản với hai tác vụ và mã kích thước không nằm trong một chuỗi duy nhất. Phiên bản 1 đặt tên kích thước theo backbone ResNet hoặc HGNetv2. Phiên bản 2 chỉ dùng lại các tên ResNet: phiên bản 1 đã phân phối hai kích thước HGNetv2, và kết quả phiên bản 2 trên các kích thước đó đủ gần để LibreYOLO không công bố trọng số trùng lặp. Phiên bản 4 dùng chuỗi chữ cái đơn giản, trùng với tên HGNetv2 của phiên bản 1, nên chỉ mã kích thước không thể xác định mô hình. Phiên bản được ghi trong tên tệp checkpoint.
| Checkpoint | Đầu vào (px) | mAP 50-95 | Tham số (M) |
|---|---|---|---|
| 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. Được đo bằng bộ benchmark LibreYOLO và công bố trên Vision Analysis, nơi so sánh độ trễ giữa các phần cứng và runtime, đồng thời lưu trữ đầy đủ bản ghi của từng lần chạy.
Phiên bản 2 giữ kiến trúc và bố cục state dict của phiên bản 1, đồng thời thay
đổi cách deformable attention lấy mẫu. Vì vậy, hai phiên bản được phân biệt bằng
metadata trong checkpoint thay vì shape. Phiên bản 4 thuộc một dòng khác: dùng
lại kiến trúc và trình huấn luyện của D-FINE, còn trọng số đến từ việc chưng cất
mô hình giáo viên vision foundation DINOv3 vào mô hình học sinh HGNetv2. Trong
LibreYOLO, LibreRTDETRv4 là lớp con của LibreDFINE với mask head bị tắt cố
định, nên chỉ hỗ trợ phát hiện.
Box định hướng trên phiên bản 2
Phiên bản 2 là phiên bản duy nhất có tác vụ thứ hai. Các tác vụ được hỗ trợ là
detect và obb, hai tác vụ không dùng chung đồ thị hay chuỗi kích thước. Phát
hiện dùng các kích thước ResNet ở 640 px; phát hiện định hướng dùng chuỗi HGNetv2
n, s, m, l và x ở 1024 px, còn kích thước đầu vào được phân giải theo tác vụ thay
vì theo họ. Checkpoint được nhận diện là định hướng từ các tensor riêng, qua head
box năm tọa độ và tham số lấy mẫu của phiên bản 2, nên trọng số -obb tải vào đồ
thị định hướng mà không cần đối số task; trạng thái không khớp giữa hai bên sẽ
là lỗi cứng thay vì được diễn giải lại âm thầm.
Các tệp đã công bố trải từ LibreRTDETRv2n-obb.pt đến
LibreRTDETRv2x-obb.pt. Đây là checkpoint DOTA v1.0 đơn thang chính thức đã
chuyển sang định dạng LibreYOLO, gồm 15 lớp ảnh trên không từ máy bay và tàu đến
cảng cùng trực thăng; tên lớp được đóng dấu vào checkpoint. Khác với phía phát
hiện, tác vụ định hướng chỉ dành cho suy luận: dự đoán, đánh giá và xuất hoạt
động, còn train() trên mô hình định hướng sẽ phát sinh lỗi. Theo dõi và tăng
cường dữ liệu khi kiểm thử cũng không hỗ trợ box định hướng.
Phát hiện định hướng trình bày tác vụ, định dạng
nhãn và các chỉ số.
Huấn luyện
Huấn luyện bắt đầu từ checkpoint đã công bố. pretrained được chấp nhận rồi bỏ
qua trên cả ba phiên bản, nên pretrained=False không tạo mô hình khởi tạo ngẫu
nhiên. Mọi nội dung trong phần này đều nói về phát hiện: tác vụ định hướng của
phiên bản 2 chỉ dành cho suy luận và không có luồng chuyển trọng số phát hiện sang
nó vì hai tác vụ dùng backbone khác nhau.
from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt") # coco128.yaml tải mẫu 128 ảnh ở lần dùng đầu tiên. Hãy trỏ `data`# đến YAML tập dữ liệu của bạn cho lượt chạy thực tế.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# Cần extra 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,1Learning rate là đối số cần đặt chính xác, và mỗi phiên bản có giá trị mặc định
riêng thay vì giá trị chung toàn thư viện. Chữ ký train() trong Python đọc giá
trị từ cấu hình huấn luyện của phiên bản đó, còn CLI phân giải cùng giá trị khi
không truyền lr0. Phiên bản 1 và 2 còn nhận lr_backbone, mặc định bằng một
phần hai mươi lr0 theo công thức gốc; phiên bản 4 chạy qua trình huấn luyện
D-FINE, thay vào đó scale nhóm tham số backbone bằng backbone_lr_mult.
Giữ imgsz ở kích thước gốc của checkpoint trừ khi có lý do thay đổi. Đánh giá
và dự đoán ở kích thước khác vẫn hoạt động, nhưng còn một hạn chế: kích thước hình
chữ nhật có số token khớp kích thước gốc vẫn dùng lại embedding được xây dựng cho
sai tỉ lệ khung hình.
Xem huấn luyện để biết về tập dữ liệu, tăng cường dữ liệu, multi-GPU và logger.
RT-DETRv4 mặc định bật amp=True với amp_dtype="float16". Truyền amp=False để dùng FP32.
Đánh giá
val() trả về từ điển các khóa metrics/ bao gồm precision, recall, mAP 50 và
mAP 50-95, được đo trên bất kỳ tập dữ liệu nào theo định dạng bạn đã huấn luyện.
from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt") # val() trả về dict thông thường, không phải đối tượngmetrics = 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 lấy 5.000 ảnh val2017 và bỏ qua tập huấn luyện.# Tệp chứa script tải xuống nhúng sẵn, nên cần quyền rõ ràng trừ khi# tập dữ liệu đã có cục bộ.libreyolo val model=LibreRTDETRr18.pt data=coco-val-only.yaml \ allow_download_scripts=Truefrom libreyolo import LibreYOLO # Đánh giá định hướng ghép bằng IoU xoay, nên dự đoán đúng vị trí nhưng# sai góc vẫn được tính là trượt.model = LibreYOLO("LibreRTDETRv2n-obb.pt")metrics = model.val(data="my-obb-dataset.yaml") print(metrics["metrics/mAP50-95(OBB)"])print(metrics["metrics/mAP50(OBB)"])Các hàng trong bảng benchmark trên đến từ hệ thống benchmark LibreYOLO; ghi chú dưới bảng nêu tập dữ liệu tạo ra chúng và liên kết đến bản ghi lượt chạy.
Đánh giá định hướng chạy qua cùng lời gọi và báo cáo cùng các khóa, cộng thêm bốn
khóa lặp lại với hậu tố (OBB). Việc ghép dùng IoU xoay thay vì IoU của các hình
chữ nhật bao quanh, nên lỗi góc được tính là trượt. augment=True bị từ chối trên
tác vụ này.
Xuất
| Tác vụ | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: được hỗ trợ | Detection to TorchScript: được hỗ trợ | Detection to ExecuTorch: được hỗ trợ | Detection to TensorRT: được hỗ trợ | Detection to OpenVINO: được hỗ trợ | Detection to Paddle: không được hỗ trợ | Detection to MNN: được hỗ trợ | Detection to RKNN: không được hỗ trợ | Detection to ncnn: không được hỗ trợ | Detection to TFLite: không được hỗ trợ | Detection to CoreML: không được hỗ trợ | Detection to Core AI: được hỗ trợ |
| Oriented boxes | Oriented boxes to ONNX: được hỗ trợ | Oriented boxes to TorchScript: được hỗ trợ | Oriented boxes to ExecuTorch: được hỗ trợ | Oriented boxes to TensorRT: được hỗ trợ | Oriented boxes to OpenVINO: được hỗ trợ | Oriented boxes to Paddle: không được hỗ trợ | Oriented boxes to MNN: không được hỗ trợ | Oriented boxes to RKNN: không được hỗ trợ | Oriented boxes to ncnn: không được hỗ trợ | Oriented boxes to TFLite: không được hỗ trợ | Oriented boxes to CoreML: không được hỗ trợ | Oriented boxes to Core AI: không được hỗ trợ |
Ma trận bao quát cả dòng mô hình trên một trang: khi ba phiên bản không thống nhất về một định dạng, ô hiển thị mức hỗ trợ yếu nhất trong ba phiên bản để không phóng đại khả năng của bất kỳ phiên bản nào bạn tải. Hàng định hướng chỉ thuộc phiên bản 2. ONNX và TorchScript đã được đánh giá ở FP32, batch 1 và canvas cố định 1024 x 1024; OpenVINO, TensorRT và ExecuTorch chuyển đổi rồi tải lại được nhưng chưa đạt mức tương đương đầu ra thô trên toàn bộ tập query, nên các box đầu khớp đến một phần pixel còn phần đuôi bị lệch.
Artifact đã xuất được tải lại qua LibreYOLO() dựa trên hậu tố tệp, vì vậy tệp
.onnx hoặc .engine hoạt động như checkpoint và trả về cùng Results.
# Cần extra 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 và TorchScript là các đích đã được đánh giá cho tác vụ định hướng,# ở FP32, batch 1, trên canvas cố định 1024 x 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 # Factory định tuyến theo hậu tố tệp, nên artifact đã xuất được tải# như mọi checkpoint và trả về cùng đối tượng Results.model = LibreYOLO("LibreRTDETRr18.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Đầu vào và đầu ra ONNX
LibreRTDETR and LibreRTDETRv2
| Tensor | images float32 [batch, 3, height, width] |
|---|---|
| Màu | RGB |
| Chuẩn hóa tỉ lệ | pixel / 255 |
| Chuẩn hóa | không có |
| Đổi kích thước | kéo giãn về rộng x cao (không đệm, không giữ tỉ lệ khung hình), 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, xuất mặc định
| Đầu ra | Hình dạng | Ý nghĩa |
|---|---|---|
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. |
Hậu xử lý
- 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
| Tensor | images float32 [batch, 3, height, width] |
|---|---|
| Màu | RGB |
| Chuẩn hóa tỉ lệ | pixel / 255 |
| Chuẩn hóa | không có |
| Đổi kích thước | custom, Pillow bilinear |
Cách tái tạo phép đổi kích thước bilinear của Pillow
LibreYOLO đổi kích thước bằng bộ lọc BILINEAR của Pillow (Image.resize). Đó không phải OpenCV INTER_LINEAR hay INTER_AREA: khi thu nhỏ, Pillow nới rộng bộ lọc theo hệ số thu nhỏ, còn các phép đổi kích thước của OpenCV làm thay đổi kết quả phát hiện và dịch các hộp đi vài pixel. Để tái tạo mà không dùng Pillow, hãy đổi kích thước một trục, làm tròn về 8 bit, rồi đổi kích thước trục còn lại và làm tròn lần nữa. Với mỗi trục, đặt s = in_size / out_size và f = max(s, 1). Pixel đầu ra i có tâm c = (i + 0.5) * s và đọc các pixel nguồn j từ int(c - f + 0.5) đến int(c + f + 0.5) - 1, giới hạn trong ảnh, mỗi pixel có trọng số max(0, 1 - |j + 0.5 - c| / f), chia cho tổng các trọng số. Pillow tính bằng dấu phẩy cố định và chọn thứ tự trục theo hình dạng ảnh, nên trọng số dấu phẩy động có thể lệch một mức ở vài pixel. Điều đó không làm thay đổi kết quả trong các kiểm tra của chúng tôi.
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, xuất mặc định
| Đầu ra | Hình dạng | Ý nghĩa |
|---|---|---|
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. |
Hậu xử lý
- 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
| Tensor | images float32 [batch, 3, height, width] |
|---|---|
| Màu | RGB |
| Chuẩn hóa tỉ lệ | pixel / 255 |
| Chuẩn hóa | không có |
| Đổi kích thước | kéo giãn về rộng x cao (không đệm, không giữ tỉ lệ khung hình), Pillow bilinear |
Cách tái tạo phép đổi kích thước bilinear của Pillow
LibreYOLO đổi kích thước bằng bộ lọc BILINEAR của Pillow (Image.resize). Đó không phải OpenCV INTER_LINEAR hay INTER_AREA: khi thu nhỏ, Pillow nới rộng bộ lọc theo hệ số thu nhỏ, còn các phép đổi kích thước của OpenCV làm thay đổi kết quả phát hiện và dịch các hộp đi vài pixel. Để tái tạo mà không dùng Pillow, hãy đổi kích thước một trục, làm tròn về 8 bit, rồi đổi kích thước trục còn lại và làm tròn lần nữa. Với mỗi trục, đặt s = in_size / out_size và f = max(s, 1). Pixel đầu ra i có tâm c = (i + 0.5) * s và đọc các pixel nguồn j từ int(c - f + 0.5) đến int(c + f + 0.5) - 1, giới hạn trong ảnh, mỗi pixel có trọng số max(0, 1 - |j + 0.5 - c| / f), chia cho tổng các trọng số. Pillow tính bằng dấu phẩy cố định và chọn thứ tự trục theo hình dạng ảnh, nên trọng số dấu phẩy động có thể lệch một mức ở vài pixel. Điều đó không làm thay đổi kết quả trong các kiểm tra của chúng tôi.
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, xuất mặc định
| Đầu ra | Hình dạng | Ý nghĩa |
|---|---|---|
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. |
Hậu xử lý
- 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.
Để kiểm tra bản triển khai của bạn, hãy chạy cùng tệp đó qua LibreYOLO: LibreYOLO("model.onnx").predict("image.jpg") trả về kết quả tham chiếu. Đã kiểm chứng với LibreYOLO 1.7.0.
Checkpoint
Mọi tệp trọng số đã công bố cho họ này.
| Tệp | Đầu vào (px) | Giấy phép trọng số |
|---|---|---|
| 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 |
Mọi tệp ở trên hiện đều có trong tổ chức LibreYOLO và được tải xuống trong lần sử dụng đầu tiên.
Tên tệp chứa phiên bản, tiếp đến kích thước rồi tác vụ. Trọng số phát hiện là
LibreRTDETR<size>.pt, LibreRTDETRv2<size>.pt và LibreRTDETRv4<size>.pt,
tất cả ở 640 px. Trọng số định hướng chỉ có cho phiên bản 2 và thêm hậu tố tác vụ,
từ LibreRTDETRv2n-obb.pt đến LibreRTDETRv2x-obb.pt, tất cả ở 1024 px và được
huấn luyện trên DOTA v1.0 thay vì COCO.
Giấy phép
Hãy kiểm tra giấy phép trong repo Hugging Face của trọng số cụ thể mà bạn tải xuống. Mỗi checkpoint trong tổ chức LibreYOLO đều có giấy phép riêng và giấy phép có thể khác nhau trong cùng một họ. Repo đó là nguồn có thẩm quyền; phần tóm tắt dưới đây mô tả các điều khoản áp dụng khi trang này được kiểm chứng lần gần nhất.
Đây là phần mô tả các giấy phép liên quan, không phải tư vấn pháp lý. Nếu câu trả lời có ý nghĩa về mặt thương mại, hãy tự đọc các giấy phép và tham khảo cố vấn của riêng bạn.
- Công trình gốc
- RT-DETR, RT-DETRv2 and RT-DETRv4, Baidu (versions 1 and 2), Peking University and Tsinghua University (version 4)
- Giấy phép thượng nguồn
- Apache-2.0
- Nguồn thượng nguồn
- github.com/lyuwenyu/RT-DETR
- Mã nguồn LibreYOLO
- MIT
- Trọng số
- Apache-2.0, được phát hành lại tại huggingface.co/LibreYOLO
- Diễn giải
- 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.
Trích dẫn
@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},
}Được sao chép từ khối trích dẫn của tác giả tại github.com/lyuwenyu/RT-DETR#citation.
Block trên là nội dung tác giả công bố cho tác vụ phát hiện của phiên bản 1 và 2. Trọng số định hướng phiên bản 2 có nguồn thượng nguồn thứ ba là repo RiO-DETR theo Apache-2.0 tại github.com/RicePasteM/RiO-DETR, nơi cung cấp các checkpoint DOTA; hãy trích dẫn dự án đó nếu bạn dùng một checkpoint. Phiên bản 4 là bài báo riêng của một nhóm khác và có block trích dẫn riêng tại github.com/RT-DETRs/RT-DETRv4; hãy trích dẫn bài đó nếu bạn dùng checkpoint phiên bản 4.