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ở.
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 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ộ.
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)libreyolo predict model=LibreDEIMn.pt save=True \ source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpgfrom 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. conf và max_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, femto và pico, 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-95 | Tham số (M) |
|---|---|---|---|
| LibreDEIMl | 640 | 57.8 | 31.24 |
| LibreDEIMm | 640 | 55.4 | 19.59 |
| LibreDEIMn | 640 | 46.8 | 3.78 |
| LibreDEIMs | 640 | 52.1 | 10.32 |
| LibreDEIMx | 640 | 59.6 | 62.62 |
| LibreDEIMv2atto | 320 | 27.5 | 0.51 |
| LibreDEIMv2femto | 416 | 34.5 | 0.98 |
| LibreDEIMv2l | 640 | 58.6 | 32.55 |
| LibreDEIMv2m | 640 | 56.0 | 18.36 |
| LibreDEIMv2n | 640 | 46.7 | 3.6 |
| LibreDEIMv2pico | 640 | 42.2 | 1.54 |
| LibreDEIMv2s | 640 | 53.0 | 9.78 |
| LibreDEIMv2x | 640 | 61.3 | 51.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.
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)libreyolo train model=LibreDEIMn.pt data=coco128.yaml \ epochs=50 batch=8 lr0=1e-4from 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)# 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)libreyolo train model=LibreDEIMn.pt data=coco128.yaml \ epochs=50 device=0,1Hã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, imgsz và lr0 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.
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"])libreyolo val model=LibreDEIMn.pt data=coco128.yaml# 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=TrueCá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ụ | 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: 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.
# Cần extra onnx: pip install "libreyolo[onnx]"from libreyolo import LibreYOLO model = LibreYOLO("LibreDEIMn.pt")path = model.export(format="onnx")print(path)libreyolo export model=LibreDEIMn.pt format=onnxfrom 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.pt | 640 | apache-2.0 |
| LibreDEIMs.pt | 640 | apache-2.0 |
| LibreDEIMm.pt | 640 | apache-2.0 |
| LibreDEIMl.pt | 640 | apache-2.0 |
| LibreDEIMx.pt | 640 | apache-2.0 |
| LibreDEIMv2n.pt | 640 | apache-2.0 |
| LibreDEIMv2s.pt | 640 | other |
| LibreDEIMv2m.pt | 640 | other |
| LibreDEIMv2l.pt | 640 | other |
| LibreDEIMv2x.pt | 640 | other |
| LibreDEIMv2atto.pt | apache-2.0 | |
| LibreDEIMv2femto.pt | apache-2.0 | |
| LibreDEIMv2pico.pt | 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.
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).
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.