RF-DETR
Một detection transformer dự đoán tập đối tượng cố định thay vì lưới dày đặc, nên không cần NMS khi suy luận. LibreYOLO hỗ trợ mô hình cho bốn tác vụ.
- Tác vụ
- detection, instance segmentation, pose, oriented boxes
- Kích thước
- n, s, m, l for detection and oriented boxes; n through xx for segmentation; x for pose
- Cài đặt
pip install "libreyolo[rfdetr]"- Bậc hỗ trợ
- Chủ lực, từ v1.0.0. Các tính năng được thiết kế và kiểm chứng đầy đủ trên GPU ở bậc này trước tiên.
- Giấy phép
- Mã nguồn MIT, trọng số Apache-2.0. Sử dụng thương mại
Cài đặt
RF-DETR cần extra riêng, extra này cài thêm transformers cho backbone.
pip install "libreyolo[rfdetr]"Nếu không có extra này, việc nạp một checkpoint hoặc tên mô hình RF-DETR, từ Python hay từ CLI, sẽ dừng với một lỗi nêu đích danh dòng cài đặt này.
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("LibreRFDETRs.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreRFDETRs.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.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))Đố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 lựa chọn query;
không có bước NMS cần điều chỉnh. Xem dự đoán để biết về nguồn,
streaming và xử lý kết quả.
Các đường xử lý phát hiện, phân đoạn và hộp xoay dùng phép đổi kích thước song tuyến tính OpenCV với số thực, không khử răng cưa; tác vụ tư thế vẫn dùng phép đổi kích thước có khử răng cưa. imgsz=(height, width) hình chữ nhật phải khớp lưới patch/window của tác vụ. Danh mục checkpoint có cả bộ phát hiện UI. Histogram sự kiện dùng hồ sơ đầu vào đã ghi.
Các biến thể
Bốn kích thước phát hiện, từ n đến l, và bốn tác vụ dùng chung một kiến trúc:
phân đoạn, tư thế và box định hướng dùng lại decoder phát hiện với head khác, nên
nhận cùng các đối số. Phân đoạn có thêm x và xx, còn tư thế chỉ có bản x.
Các kích thước có số tham số tương tự và chủ yếu khác nhau ở độ phân giải đầu vào.
| Checkpoint | Đầu vào (px) | mAP 50-95 | Tham số (M) |
|---|---|---|---|
| LibreRFDETRn | 384 | 51.4 | 30.47 |
| LibreRFDETRs | 512 | 55.2 | 32.11 |
| LibreRFDETRm | 576 | 57.4 | 33.69 |
| LibreRFDETRl | 704 | 58.6 | 33.93 |
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.
Huấn luyện
Huấn luyện bắt đầu từ checkpoint đã công bố cho cả bốn tác vụ.
pretrained=False thay vào đó khởi tạo lại toàn bộ mạng, kể cả backbone, và
huấn luyện từ đầu.
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt")model.train(data="my-dataset.yaml", epochs=50, imgsz=512, batch=8, lr0=1e-4)libreyolo train model=LibreRFDETRs.pt data=my-dataset.yaml \ epochs=50 imgsz=512 batch=8 lr0=1e-4from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt")model.train(data="my-dataset.yaml", epochs=50, lora=True)libreyolo train model=LibreRFDETRs.pt data=my-dataset.yaml \ epochs=50 device=0,1 batch=-1Hai đối số quan trọng hơn ở đây so với detector CNN. Giữ lr0 ở mức 1e-4 trở
xuống vì detector transformer phân kỳ ở learning rate mà mô hình YOLO vẫn chịu
được. Giữ imgsz ở độ phân giải gốc của checkpoint trừ khi có lý do thay đổi.
Đầu vào phải chia hết cho kích thước patch của backbone nhân số cửa sổ; LibreYOLO
kiểm tra điều này trước khi chạy và nêu các kích thước hợp lệ gần nhất.
Tinh chỉnh segment bắt đầu từ một checkpoint segment, vì RF-DETR không có chuyển đổi từ detect sang segment. libreyolo train model=LibreRFDETRn-seg.pt task=segment nạp checkpoint đó, còn một checkpoint phát hiện đối tượng với task=segment sẽ dừng với một lỗi.
Xem huấn luyện để biết về tập dữ liệu, tăng cường dữ liệu, multi-GPU và logger.
Lần chạy mới mặc định dùng output_dir=None, được chuyển thành runs/train/rfdetr_exp với hậu tố tăng dần và exist_ok=False. Lần chạy được tiếp tục sẽ ghi tiếp vào thư mục chạy của checkpoint đó. Dataset tư thế nhiều lớp đối tượng dùng kpt_names với khóa là chỉ số hoặc tên lớp đối tượng; danh sách rỗng đánh dấu lớp chỉ có bounding box. Dự đoán đệm keypoint đến kpt_shape; fitness keypoint-mAP không chấm điểm các lớp chỉ có bounding box.
Đánh giá
val() trả về từ điển các khóa metrics/ bao gồm mAP 50, mAP 50-95, mAP 75 và
average recall theo chuẩn COCO, đượ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("LibreRFDETRs.pt") # val() trả về dict thông thường, không phải đối tượngmetrics = model.val(data="my-dataset.yaml", imgsz=512) print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/mAP75"], metrics["metrics/AR100"])libreyolo val model=LibreRFDETRs.pt data=my-dataset.yaml imgsz=512# YAML COCO đi kèm 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=LibreRFDETRn.pt data=coco.yaml imgsz=384 \ allow_download_scripts=TrueXuấ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ợ. Runtime parity coverage lives in tests/e2e/test_tensorrt.py. | Detection to OpenVINO: được hỗ trợ. Runtime parity coverage lives in tests/e2e/test_openvino.py. | 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: được hỗ trợ. Conversion is available, but runtime parity requires a macOS runner. | Detection to Core AI: được hỗ trợ |
| Instance segmentation | Instance segmentation to ONNX: được hỗ trợ | Instance segmentation to TorchScript: được hỗ trợ | Instance segmentation to ExecuTorch: được hỗ trợ | Instance segmentation to TensorRT: được hỗ trợ. A published Apache-2.0 trained segmentation checkpoint exports and reloads, but public top-k class membership changes. | Instance segmentation to OpenVINO: được hỗ trợ. After Hungarian query alignment, the converted-runtime element match rate is 69.0%, below the validation bar. | Instance segmentation to Paddle: không được hỗ trợ | Instance segmentation to MNN: không được hỗ trợ | Instance segmentation to RKNN: không được hỗ trợ | Instance segmentation to ncnn: không được hỗ trợ | Instance segmentation to TFLite: không được hỗ trợ | Instance segmentation to CoreML: không được hỗ trợ | Instance segmentation to Core AI: không được hỗ trợ |
| Pose | Pose to ONNX: được hỗ trợ | Pose to TorchScript: được hỗ trợ | Pose to ExecuTorch: được hỗ trợ | Pose to TensorRT: được hỗ trợ. A published Apache-2.0 trained pose checkpoint exports and reloads, but matched public boxes fall to 0.704 IoU with 41.4-pixel coordinate drift. | Pose to OpenVINO: được hỗ trợ. After Hungarian query alignment, the converted-runtime element match rate is 72.75%, below the validation bar. | Pose to Paddle: không được hỗ trợ | Pose to MNN: không được hỗ trợ | Pose to RKNN: không được hỗ trợ | Pose to ncnn: không được hỗ trợ | Pose to TFLite: không được hỗ trợ | Pose to CoreML: không được hỗ trợ | Pose to Core AI: không đượ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ợ. A deterministic synthetic OBB fixture exports and reloads, but public top-k class membership changes. | Oriented boxes to OpenVINO: được hỗ trợ. After Hungarian query alignment, the converted-runtime element match rate is 91.25%, below the validation bar. | 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ợ |
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ũng
hỗ trợ chạy đồ thị trong runtime độc lập không cài LibreYOLO, nhưng khi đó bạn
phải tự viết bước tiền xử lý và hậu xử lý.
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt")model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True) # Các đối số được mọi định dạng chấp nhận:## format "onnx" | "torchscript" | "executorch" | "tensorrt"# | "openvino" | "paddle" | "mnn" | "rknn" | "ncnn"# | "tflite" | "coreml" | "coreai".# "engine" is an alias for tensorrt, "litert" for tflite.# imgsz int hoặc (chiều cao, chiều rộng). Mặc định là# độ phân giải gốc.# batch int, mặc định 1.# half bool, xuất ở FP16. Mặc định False.# int8 bool, xuất ở INT8. Mặc định False. Cần `data`.# data đường dẫn đến YAML tập dữ liệu, dùng để hiệu chuẩn int8.# fraction float, phần tập hiệu chuẩn cần dùng. Mặc định 1.0.# dynamic bool, các trục động. Mặc định True.# simplify bool, chạy đơn giản hóa đồ thị ONNX. Mặc định True.# opset int, ONNX opset. Được chọn theo họ khi không chỉ định.# device str, thiết bị dùng để truy vết. Mặc định là thiết bị của mô hình.# output_path str, mặc định là tên suy ra từ checkpoint.# verbose bool, mặc định False.# allow_download_scripts bool, mặc định False. Cho phép mã Python# nhúng trong YAML tập dữ liệu cần tải xuống.## Một số định dạng nhận thêm đối số riêng, chẳng hạn nền tảng đích RKNN.# Các đối số đó được ghi trong trang của từng định dạng.libreyolo export model=LibreRFDETRs.pt format=onnx imgsz=512libreyolo export model=LibreRFDETRs.pt format=tensorrt imgsz=512 half=Truefrom 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("LibreRFDETRs.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)import numpy as npimport onnxruntime as ort # Chạy trực tiếp đồ thị nghĩa là bạn tự thực hiện tiền xử lý và hậu xử lý.# Hãy kiểm tra chữ ký trước khi kết nối.session = ort.InferenceSession("weights/LibreRFDETRs.onnx")name = session.get_inputs()[0].nameoutputs = session.run(None, {name: np.zeros((1, 3, 512, 512), dtype=np.float32)}) for meta, array in zip(session.get_outputs(), outputs): print(meta.name, array.shape)Đầu vào và đầu ra ONNX
| Tensor | input float32 [batch, 3, height, width] |
|---|---|
| Màu | RGB |
| Chuẩn hóa tỉ lệ | pixel / 255 |
| Chuẩn hóa | trung bình [0.485,0.456,0.406], độ lệch chuẩn [0.229,0.224,0.225] |
| Đổi kích thước | custom, bilinear |
The input tensor is named input, not images.
Square input only. Export rejects a non-square imgsz. The default size comes from the checkpoint and is stored in the imgsz metadata key: 384 for LibreRFDETRn, 312 for LibreRFDETRn-seg, 576 for LibreRFDETRx-pose.
A custom imgsz must be a multiple of patch size x windows: 32 for detection and OBB, 12 for segmentation n, 24 for the other segmentation sizes and for pose.
Stretch the whole image to width x height. There is no letterbox and no padding, so the aspect ratio is not kept.
Detection, segmentation and OBB: convert the 8-bit RGB image to float32 and divide by 255 first, then resize the float image with cv2.resize INTER_LINEAR (half-pixel centers, no antialiasing). Resizing the 8-bit image before dividing is close but moves scores by up to about 0.01.
Pose resizes differently: divide by 255 the same way, then resize the float image with antialiased bilinear, as torch.nn.functional.interpolate does with mode bilinear, align_corners False and antialias True. This is the filter of Pillow's BILINEAR, which widens by the shrink factor, but in float with no rounding to 8 bits. Per axis, let s = in_size / out_size and f = max(s, 1). Output pixel i has center c = (i + 0.5) * s. It reads source pixels j from int(c - f + 0.5) to int(c + f + 0.5) - 1, clipped to the image, each with weight max(0, 1 - |j + 0.5 - c| / f). Divide the weights by their sum.
The pose model is sensitive to this. On the test image, cv2.resize INTER_LINEAR or INTER_AREA adds 3 to 9 detections, and Pillow on the 8-bit image adds one and moves keypoints by more than 4 px.
Then subtract the mean and divide by the std per channel.
nms=True is not available for this family: export raises NotImplementedError.
Detection, xuất mặc định
| Đầu ra | Hình dạng | Ý nghĩa |
|---|---|---|
dets | [batch, queries, 4] | Boxes as cx, cy, w, h, normalized 0 to 1 of the input. 300 queries. |
labels | [batch, queries, columns] | Raw class logits per query, sigmoid not applied. The COCO checkpoints have 91 columns, where column k is COCO category id k. For other checkpoints column j is class j. |
Hậu xử lý
- Apply sigmoid to labels.
- Flatten the scores of one image to queries x columns and take the top k over all of them, with k equal to queries (300). For flat index i, the query is i // columns and the column is i % columns. 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.
- When labels has 91 columns and nc is 80 (the COCO checkpoints), the column is a COCO category id. Class i is the i-th id, counting from 0, in this list: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 67, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90. Drop entries whose id is not in the list. With any other column count the column is the class.
- Convert the query's box to 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.
Instance segmentation, xuất mặc định
| Đầu ra | Hình dạng | Ý nghĩa |
|---|---|---|
dets | [batch, queries, 4] | Boxes as cx, cy, w, h, normalized 0 to 1 of the input. 100 queries for sizes n and s, 200 for m and l, 300 for x and xx. |
labels | [batch, queries, columns] | Raw class logits per query, sigmoid not applied. 91 columns for the COCO checkpoints, where column k is COCO category id k. |
masks | [batch, queries, mask_h, mask_w] | Raw mask logits per query over the whole input, at a quarter of the input size: 78 x 78 at 312 x 312. |
Hậu xử lý
- Select, threshold, map classes and decode boxes exactly as for detection, with k equal to queries.
- Take the mask of each kept query and resize the logits straight to the original image size with bilinear, half-pixel centers and no antialiasing (cv2.resize INTER_LINEAR on the float logits gives the same).
- A pixel is foreground when its resized logit is above 0.
Pose, xuất mặc định
| Đầu ra | Hình dạng | Ý nghĩa |
|---|---|---|
dets | [batch, queries, 4] | Boxes as cx, cy, w, h, normalized 0 to 1 of the input. 100 queries. |
labels | [batch, queries, columns] | Raw class logits per query, sigmoid not applied, with the keypoint class term already added inside the graph. Column 0 is an empty slot and column j + 1 is class j, so the person checkpoint has 2 columns. |
keypoints | [batch, queries, columns * num_keypoints, 8] | One block of num_keypoints rows per label column, 2 x 17 = 34 rows here. Each row is x, y normalized 0 to 1 of the input, findable logit, visible logit, log_l11, l21, log_l22 and a class logit term. The num_keypoints_per_class metadata key ([0, 17]) says how many rows of each block are real keypoints. |
Hậu xử lý
- Apply sigmoid to labels. Flatten to queries x columns and take the top k over all of them, with k equal to queries (100). For flat index i, the query is i // columns and the column is i % columns.
- For each entry take its column's keypoint block: rows column * num_keypoints onward, of which the first num_keypoints_per_class[column] are used.
- Rescore each entry whose column has keypoints. Per used keypoint, with a = log_l11, b = l21, d = log_l22 and p = sigmoid(findable logit): sigma = exp(-2a) + exp(-2d) + b^2 * exp(-2a - 2d). Then trace = log(sum of p * sigma / sum of p) over the used keypoints, and score = score * exp(-0.2 * trace). Scores can go above 1.
- Drop entries whose column is 0. The class is column - 1.
- Keep the entries whose new score is strictly above the confidence threshold (0.25 by default). There is no NMS.
- Decode and map the box as for detection. LibreYOLO does not clip these boxes.
- Keypoint x is x * original width and keypoint y is y * original height. Keypoint confidence is sigmoid(findable logit). LibreYOLO does not use the visible logit.
Oriented boxes, xuất mặc định
| Đầu ra | Hình dạng | Ý nghĩa |
|---|---|---|
dets | [batch, queries, 4] | Rotated boxes as cx, cy, w, h, normalized 0 to 1 of the input. 300 queries. |
labels | [batch, queries, columns] | Raw class logits per query, sigmoid not applied. Column j is class j. The 6-class checkpoint has 7 columns: the last one is not a class and LibreYOLO does not drop it. |
angles | [batch, queries, 1] | Rotation in radians from -pi / 2 to pi / 2, tanh already applied, measured on the square input. The width side points along (cos(angle), sin(angle)) with y pointing down. |
Hậu xử lý
- Select and threshold as for detection, with k equal to queries (300). The column is the class.
- The stretch scales x and y by different amounts, so map each box back through its corners. In normalized input units, with c = cos(angle) and s = sin(angle), the corners are (cx, cy) - u - v, + u - v, + u + v and - u + v, with u = (c * w / 2, s * w / 2) and v = (-s * h / 2, c * h / 2).
- Multiply corner x by the original width and corner y by the original height.
- Fit cv2.minAreaRect to the 4 corners and convert its angle to radians. Raise w and h to at least 1e-4. If h > w, swap them and add pi / 2 to the angle. Then wrap the angle to [-pi / 2, pi / 2) with angle = (angle + pi / 2) mod pi - pi / 2.
- The result is cx, cy, w, h, angle in original-image pixels, with w the long side.
Để 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 | ||
| LibreRFDETRl.pt | 704 | apache-2.0 |
| LibreRFDETRm.pt | 576 | apache-2.0 |
| LibreRFDETRn.pt | 384 | apache-2.0 |
| LibreRFDETRs.pt | 512 | apache-2.0 |
| LibreRFDETRm-ui.pt | mit | |
| Instance segmentation | ||
| LibreRFDETRn-seg.pt | 312 | apache-2.0 |
| LibreRFDETRs-seg.pt | 384 | apache-2.0 |
| LibreRFDETRm-seg.pt | 432 | apache-2.0 |
| LibreRFDETRl-seg.pt | 504 | apache-2.0 |
| LibreRFDETRx-seg.pt | 624 | apache-2.0 |
| LibreRFDETRxx-seg.pt | 768 | apache-2.0 |
| Pose | ||
| LibreRFDETRx-pose.pt | 576 | apache-2.0 |
| Oriented boxes | ||
| LibreRFDETRn-obb.pt | 384 | cc-by-4.0 |
| LibreRFDETRs-obb.pt | 512 | cc-by-4.0 |
| LibreRFDETRm-obb.pt | 576 | cc-by-4.0 |
| LibreRFDETRl-obb.pt | 704 | cc-by-4.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.
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
- RF-DETR, Roboflow
- Giấy phép thượng nguồn
- Apache-2.0
- Nguồn thượng nguồn
- github.com/roboflow/rf-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.
Trích dẫn
@inproceedings{robinson2026rfdetr,
title = {RF-DETR: Real-Time Detection Transformer},
author = {Robinson, Isaac and Robicheaux, Peter and Popov, Matvei and Ramanan, Deva and Peri, Neehar},
booktitle = {International Conference on Learning Representations (ICLR)},
year = {2026},
url = {https://arxiv.org/abs/2511.09554}
}Được sao chép từ khối trích dẫn của tác giả tại github.com/roboflow/rf-detr#citation.