DEIM

Một detection transformer được huấn luyện bằng phép ghép one-to-one dense, hội tụ trong số epoch ít hơn nhiều so với các công thức DETR làm nền tảng cho nó. LibreYOLO có hai phiên bản, được phân biệt bằng checkpoint bạn tải.

Tác vụ
detection
Kích thước
deim: n, s, m, l, x at 640 px
Cài đặt
pip install libreyolo
Bậc hỗ trợ
Cốt lõi, từ v1.2.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
DEIM and DEIMv2 của Intellindust AI Lab, Apache-2.0; the DEIMv2 DINOv3 backbone adds Meta's DINOv3 License. Bài báo, mã nguồn
Giấy phép
Mã nguồn Apache-2.0, trọng số Apache-2.0; the DEIMv2 DINOv3 backbone adds Meta's DINOv3 License. Sử dụng thương mại

Cài đặt

Cả hai phiên bản đều không cần extra tùy chọn. Mọi thành phần mà chúng import đều có trong bản cài đặt cơ sở.

bash
pip install libreyolo

Tinh chỉnh bằng adapter với lora=True là ngoại lệ và cần extra lora.

bash
pip install "libreyolo[lora]"

Dự đoán

Trọng số được tải về từ Hugging Face trong lần sử dụng đầu tiên và được lưu vào bộ nhớ đệm cục bộ.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDEIMn.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreDEIMn.pt save=True \  source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg
Video
from libreyolo import LibreYOLO # Phiên bản là một phần của tên tệp và factory định tuyến theo# checkpoint, vì vậy cả hai đều tải theo cùng một cách.model = LibreYOLO("LibreDEIMv2pico.pt") # Bất kỳ nguồn nào thư viện chấp nhận: tệp, thư mục, URL, chỉ mục 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ề cũng là đối tượng mà mọi họ mô hình đều trả về, vì vậy việc chuyển sang detector khác chỉ cần thay đổi một dòng. confmax_det lọc phép giải mã top-k trên các query và lớp đối tượng; không có bước NMS để điều chỉnh, còn iou được chấp nhận nhưng không được dùng. Xem dự đoán để biết về nguồn, xử lý luồng và kết quả.

Biến thể

Phiên bản 1 cung cấp năm kích thước, tất cả ở cùng kích thước đầu vào. Phiên bản 2 giữ lại năm tên đó và bổ sung ba kích thước nhỏ hơn là atto, femtopico, trong đó hai kích thước đầu chạy nguyên bản ở kích thước đầu vào thấp hơn phần còn lại. Do đó năm mã kích thước tồn tại ở cả hai phiên bản và đặt tên cho các mô hình khác nhau; phiên bản được ghi trong tên tệp checkpoint.

CheckpointĐầu vào (px)mAP 50-95Tham số (M)
LibreDEIMl64057.831.24
LibreDEIMm64055.419.59
LibreDEIMn64046.83.78
LibreDEIMs64052.110.32
LibreDEIMx64059.662.62
LibreDEIMv2atto32027.50.51
LibreDEIMv2femto41634.50.98
LibreDEIMv2l64058.632.55
LibreDEIMv2m64056.018.36
LibreDEIMv2n64046.73.6
LibreDEIMv2pico64042.21.54
LibreDEIMv2s64053.09.78
LibreDEIMv2x64061.351.21

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 1 giữ kiến trúc của D-FINE và thay mục tiêu phân loại bằng loss nhận biết khả năng ghép từ công thức one-to-one dense, vì vậy hai họ mô hình dùng chung gần như mọi key state dict và được phân biệt bằng metadata trong checkpoint. Phiên bản 2 giữ hợp đồng huấn luyện đó và kết hợp các backbone: HGNetv2 ở kích thước dưới s, và vision transformer DINOv3 với spatial tuning adapter ở s trở lên. Chính backbone đó thêm giấy phép thứ hai cho bốn checkpoint này, vì vậy hãy đọc giấy phép trước khi phát hành một checkpoint.

Huấn luyện

Quá trình huấn luyện bắt đầu từ checkpoint đã phát hành. pretrained không bao giờ đến được trainer: phiên bản 1 cảnh báo key không xác định rồi bỏ qua, phiên bản 2 loại bỏ key này. Không phiên bản nào cung cấp mô hình khởi tạo ngẫu nhiên.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDEIMn.pt") # coco128.yaml tải mẫu 128 ảnh trong lần sử dụng đầu tiên. Hãy trỏ `data`# đến YAML dataset của bạn cho một lượt chạy thực tế.model.train(data="coco128.yaml", epochs=50, batch=8, lr0=1e-4)
CLI
libreyolo train model=LibreDEIMn.pt data=coco128.yaml \  epochs=50 batch=8 lr0=1e-4
DEIMv2
from libreyolo import LibreYOLO # Khi không đặt, epochs, batch, imgsz và lr0 lấy từ công thức đã phát hành# cho kích thước được tải.model = LibreYOLO("LibreDEIMv2pico.pt")model.train(data="coco128.yaml", epochs=50)
LoRA
# Cần extra lora: pip install "libreyolo[lora]"from libreyolo import LibreYOLO model = LibreYOLO("LibreDEIMn.pt")model.train(data="coco128.yaml", epochs=50, lora=True)
Multi-GPU
libreyolo train model=LibreDEIMn.pt data=coco128.yaml \  epochs=50 device=0,1

Hãy tự truyền lr0 trên phiên bản 1. Chữ ký train() Python mặc định là 4e-4, mức từ công thức COCO đã phát hành, trong khi cấu hình huấn luyện của họ mô hình mang 1e-4 làm mặc định tinh chỉnh, và giá trị thấp hơn đó là giá trị CLI phân giải khi thiếu đối số. Cấu hình ghi lại phép đo làm căn cứ: ở kích thước batch thực sự dùng trong tinh chỉnh, trên các dataset nhỏ, learning rate COCO làm giảm rõ rệt hiệu quả transfer.

Phiên bản 2 tự phân giải các giá trị mặc định đó. Để trống epochs, batch, imgszlr0 khiến mô hình đọc từng giá trị từ công thức đã phát hành cho kích thước được tải, nhờ đó các kích thước nhỏ huấn luyện ở độ phân giải đầu vào riêng mà không cần chỉ định, còn giá trị bạn truyền sẽ ghi đè công thức. imgsz là đối số bị ràng buộc: giá trị phải là bội số dương của 32, nếu không phiên bản 2 sẽ phát sinh lỗi trước khi bắt đầu lượt chạy.

Xem huấn luyện để biết về dataset, tăng cường dữ liệu (data augmentation), multi-GPU và logger.

Xác thực

val() trả về dictionary gồm các key metrics/ cho precision, recall, mAP 50 và mAP 50-95, được đo trên mọi dataset có định dạng giống định dạng bạn đã dùng để huấn luyện.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDEIMn.pt") # val() trả về dict thuần túy, 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"])
CLI
libreyolo val model=LibreDEIMn.pt data=coco128.yaml
So sánh trên COCO
# coco-val-only.yaml tìm nạp 5000 ảnh val2017 và bỏ qua tập# huấn luyện. Tệp chứa script tải xuống nhúng, vì vậy cần# cấp quyền rõ ràng trừ khi dataset đã có ở máy.libreyolo val model=LibreDEIMn.pt data=coco-val-only.yaml \  allow_download_scripts=True

Các hàng trong bảng benchmark bên trên đến từ bộ công cụ benchmark của LibreYOLO; ghi chú dưới bảng đó ghi lại dataset đã tạo ra chúng và liên kết đến bản ghi các lượt chạy.

Xuất

Tác vụONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: được hỗ trợDetection to TorchScript: được hỗ trợDetection to ExecuTorch: không được hỗ trợDetection to TensorRT: được hỗ trợDetection to OpenVINO: được hỗ trợDetection to Paddle: đượ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ợ

Ma trận bao quát cả hai phiên bản trên một trang: khi hai phiên bản khác nhau về một định dạng, ô hiển thị mức hỗ trợ yếu hơn, vì vậy nội dung ở đây không phóng đại khả năng của bất kỳ phiên bản nào bạn tải.

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 đối tượng Results.

Python
# Cần extra onnx: pip install "libreyolo[onnx]"from libreyolo import LibreYOLO model = LibreYOLO("LibreDEIMn.pt")path = model.export(format="onnx")print(path)
CLI
libreyolo export model=LibreDEIMn.pt format=onnx
Dùng tệp đã xuất
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Factory định tuyến dựa trên hậu tố tệp, vì vậy artifact đã xuất tải# như mọi checkpoint và trả về cùng đối tượng Results.model = LibreYOLO("LibreDEIMn.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpoint

Mọi tệp trọng số đã phát hành cho họ mô hình này.

TệpĐầu vào (px)Giấy phép trọng số
Detection
LibreDEIMn.pt640apache-2.0
LibreDEIMs.pt640apache-2.0
LibreDEIMm.pt640apache-2.0
LibreDEIMl.pt640apache-2.0
LibreDEIMx.pt640apache-2.0
LibreDEIMv2n.pt640apache-2.0
LibreDEIMv2s.pt640other
LibreDEIMv2m.pt640other
LibreDEIMv2l.pt640other
LibreDEIMv2x.pt640other
LibreDEIMv2atto.ptapache-2.0
LibreDEIMv2femto.ptapache-2.0
LibreDEIMv2pico.ptapache-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.

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
DEIM and DEIMv2, Intellindust AI Lab
Giấy phép thượng nguồn
Apache-2.0; the DEIMv2 DINOv3 backbone adds Meta's DINOv3 License
Nguồn thượng nguồn
github.com/Intellindust-AI-Lab/DEIM
Mã nguồn LibreYOLO
MIT
Trọng số
Apache-2.0; the DEIMv2 DINOv3 backbone adds Meta's DINOv3 License, đượ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. DEIM is Apache-2.0 throughout, and so are the DEIMv2 sizes below S, which use an HGNetv2 backbone. The DEIMv2 S, M, L and X sizes take their backbone from DINOv3, so both their weights and the backbone source vendored in LibreYOLO are additionally governed by Meta's DINOv3 License Agreement, which is not an OSI license: redistribution has to carry the agreement with it, and it forbids use for military or warfare purposes, weapons development, espionage, nuclear industries and anything subject to ITAR. Their Hugging Face repositories declare both licenses, and DEIMv2 is also cited separately (arXiv 2509.20787).
Bốn kích thước DEIMv2 từ S trở lên lấy backbone từ DINOv3, vì vậy repo trọng số của chúng mang cả Apache-2.0 và DINOv3 License của Meta, còn LibreYOLO cung cấp mã nguồn backbone DINOv3 theo cùng thỏa thuận đó. Phần còn lại của họ mô hình này, bao gồm mọi kích thước DEIMv2 dưới S, chỉ dùng Apache-2.0.

Trích dẫn

@misc{huang2024deim,
      title={DEIM: DETR with Improved Matching for Fast Convergence},
      author={Shihua, Huang and Zhichao, Lu and Xiaodong, Cun and Yongjun, Yu and Xiao, Zhou and Xi, Shen},
      booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
      year={2025},
}

Được sao chép từ khối trích dẫn của tác giả tại github.com/Intellindust-AI-Lab/DEIM#5-citation.

DEIMv2 là một bài báo riêng và có block trích dẫn riêng tại github.com/Intellindust-AI-Lab/DEIMv2; hãy trích dẫn bài đó nếu bạn dùng checkpoint phiên bản 2.

Đã kiểm chứng với LibreYOLO v1.5.0. Các bảng hỗ trợ, checkpoint và số liệu benchmark trên trang này được tạo từ thư viện đã phát hành và trọng số đã công bố, không phải viết thủ công.