DEIM

조밀 일대일 매칭으로 학습하는 detection transformer로 기반이 되는 DETR 레시피보다 훨씬 적은 epoch에 수렴합니다. LibreYOLO는 두 버전을 제공하며 불러온 체크포인트로 구분합니다.

작업
detection
크기
deim: n, s, m, l, x at 640 px
설치
pip install libreyolo
지원 티어
코어, v1.2.0부터 지원. 학습 가능한 핵심 탐지기입니다. 기능은 같은 릴리스 주기에서 플래그십을 따릅니다.
업스트림
Intellindust AI Lab의 DEIM and DEIMv2, Apache-2.0; the DEIMv2 DINOv3 backbone adds Meta's DINOv3 License. 논문, 소스
라이선스
코드 Apache-2.0, 가중치 Apache-2.0; the DEIMv2 DINOv3 backbone adds Meta's DINOv3 License. 상업적 사용

설치

두 버전 모두 선택적 extra가 필요하지 않습니다. 가져오는 모든 항목이 기본 설치에 포함됩니다.

bash
pip install libreyolo

단, lora=True를 사용하는 어댑터 미세 조정에는 lora extra가 필요합니다.

bash
pip install "libreyolo[lora]"

예측

처음 사용할 때 Hugging Face에서 가중치를 다운로드해 로컬에 캐시합니다.

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
동영상
from libreyolo import LibreYOLO # 버전은 파일명에 포함되고 팩토리는 체크포인트에 따라 라우팅하므로# 두 버전을 같은 방식으로 불러옵니다.model = LibreYOLO("LibreDEIMv2pico.pt") # 라이브러리가 받는 모든 소스: 파일, 폴더, URL, 웹캠 인덱스,# RTSP 스트림 또는 .streams 목록for result in model.predict("clip.mp4", stream=True, save=True):    print(len(result.boxes))

반환되는 Results 객체는 모든 제품군이 반환하는 것과 같으므로 탐지기를 바꾸려면 한 줄만 변경하면 됩니다. confmax_det은 쿼리와 클래스의 top-k 디코딩을 필터링합니다. 조정할 NMS 단계가 없으며 iou는 허용되지만 사용되지 않습니다. 소스, 스트리밍, 결과 처리는 예측을 참조합니다.

변형

버전 1은 같은 입력 크기의 다섯 가지 크기를 제공합니다. 버전 2는 이 다섯 이름을 유지하고 더 작은 atto, femto, pico 세 가지를 추가합니다. 앞의 두 크기는 나머지보다 낮은 기본 입력 크기를 사용합니다. 따라서 다섯 크기 코드는 두 버전에 모두 존재하지만 서로 다른 모델을 나타내며 버전은 체크포인트 파일명에 기록됩니다.

체크포인트입력(px)mAP 50-95파라미터(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. LibreYOLO 벤치마크 도구로 측정하고 Vision Analysis에 공개했습니다. 이곳에서 하드웨어와 런타임별 지연 시간을 비교하고 전체 실행 기록을 확인할 수 있습니다.

버전 1은 D-FINE 구조를 유지하고 분류 목적 함수를 조밀 일대일 레시피의 matchability-aware 손실로 교체합니다. 따라서 두 제품군은 거의 모든 state dict 키를 공유하며 체크포인트 메타데이터로 구분합니다. 버전 2는 해당 학습 계약을 유지하면서 백본을 혼합합니다. s 미만은 HGNetv2, s 이상은 공간 튜닝 어댑터가 있는 DINOv3 vision transformer를 사용합니다. 이 백본 때문에 네 체크포인트에 두 번째 라이선스가 적용되므로 배포 전에 라이선스를 읽습니다.

학습

학습은 공개된 체크포인트에서 시작합니다. pretrained는 학습기에 전달되지 않습니다. 버전 1은 알 수 없는 키라고 경고하고 무시하며 버전 2는 제거합니다. 어느 버전도 무작위로 초기화된 모델을 제공하지 않습니다.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDEIMn.pt") # coco128.yaml은 처음 사용할 때 이미지 128개 샘플을 다운로드합니다.# 실제 실행에서는 `data`를 자체 데이터셋 YAML로 지정합니다.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 # 미설정 시 epochs, batch, imgsz, lr0는 불러온 크기의 공개 레시피에서 가져옵니다.model = LibreYOLO("LibreDEIMv2pico.pt")model.train(data="coco128.yaml", epochs=50)
LoRA
# lora extra가 필요합니다: pip install "libreyolo[lora]"from libreyolo import LibreYOLO model = LibreYOLO("LibreDEIMn.pt")model.train(data="coco128.yaml", epochs=50, lora=True)
다중 GPU
libreyolo train model=LibreDEIMn.pt data=coco128.yaml \  epochs=50 device=0,1

버전 1에서는 lr0를 직접 전달합니다. Python train() 시그니처 기본값은 공개 COCO 레시피의 4e-4이지만 제품군 학습 구성에는 미세 조정 기본값으로 1e-4가 들어 있으며 CLI에서 인수를 생략하면 이 낮은 값을 사용합니다. 구성에는 근거도 기록되어 있습니다. 실제 미세 조정에 사용하는 배치 크기의 소규모 데이터셋에서 COCO 학습률은 전이 성능을 측정 가능하게 낮췄습니다.

버전 2는 기본값을 자체적으로 결정합니다. epochs, batch, imgsz, lr0를 설정하지 않으면 불러온 크기의 공개 레시피에서 각각 읽으므로 작은 크기는 별도 설정 없이 자체 입력 해상도에서 학습하며 전달한 값은 레시피를 재정의합니다. imgsz에는 제약이 있습니다. 양의 32 배수여야 하며 그렇지 않으면 실행 전에 예외가 발생합니다.

데이터셋, 증강, 다중 GPU, 로거는 학습을 참조합니다.

검증

val()은 학습에 사용한 형식의 데이터셋을 대상으로 측정한 정밀도, 재현율, mAP 50, mAP 50-95를 포함하는 metrics/ 키 사전을 반환합니다.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDEIMn.pt") # val()은 객체가 아닌 일반 dict를 반환합니다.metrics = 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
COCO 기준 평가
# coco-val-only.yaml은 val2017 이미지 5000개를 가져오고 학습 집합은 생략합니다.# 내장 다운로드 스크립트가 있으므로 데이터셋이 로컬에 없다면 명시적 권한이 필요합니다.libreyolo val model=LibreDEIMn.pt data=coco-val-only.yaml \  allow_download_scripts=True

위 벤치마크 표의 행은 LibreYOLO 벤치마크 도구에서 나옵니다. 표 아래 참고 사항에는 수치를 만든 데이터셋과 실행 기록 링크가 있습니다.

내보내기

작업ONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection 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: 지원함

매트릭스는 두 버전을 한 페이지에서 다룹니다. 형식 지원이 다르면 셀은 둘 중 더 약한 수준을 표시하므로 불러온 버전에 대한 지원을 과장하지 않습니다.

내보낸 아티팩트는 파일 접미사에 따라 LibreYOLO()로 다시 불러오므로 .onnx 또는 .engine 파일은 체크포인트처럼 동작하며 동일한 Results를 반환합니다.

Python
# onnx extra가 필요합니다: 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
내보낸 파일 사용
from libreyolo import LibreYOLO, SAMPLE_IMAGE # 팩토리는 파일 접미사에 따라 라우팅하므로 내보낸 아티팩트도# 다른 체크포인트처럼 불러와 동일한 Results 객체를 반환합니다.model = LibreYOLO("LibreDEIMn.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

체크포인트

이 제품군에 공개된 모든 가중치 파일입니다.

파일입력(px)가중치 라이선스
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

위의 모든 파일은 현재 LibreYOLO 조직에 있으며 처음 사용할 때 내려받습니다.

라이선스

내려받는 특정 가중치의 Hugging Face 저장소에서 라이선스를 확인하십시오. LibreYOLO 조직의 모든 체크포인트에는 라이선스가 있으며 한 계열 안에서도 항상 같지는 않습니다. 해당 저장소가 신뢰할 수 있는 기준입니다. 아래 요약은 이 페이지를 마지막으로 검증했을 때 적용된 내용을 설명합니다.

관련 라이선스에 관한 설명이며 법률 자문이 아닙니다. 상업적으로 중요한 사안이라면 라이선스를 직접 읽고 별도의 법률 자문을 받으십시오.

원작
DEIM and DEIMv2, Intellindust AI Lab
업스트림 라이선스
Apache-2.0; the DEIMv2 DINOv3 backbone adds Meta's DINOv3 License
LibreYOLO 코드
MIT
가중치
Apache-2.0; the DEIMv2 DINOv3 backbone adds Meta's DINOv3 License, 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. 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).
S 이상 DEIMv2 크기 네 개는 DINOv3에서 백본을 가져오므로 가중치 저장소에 Apache-2.0과 Meta의 DINOv3 License가 모두 적용됩니다. LibreYOLO도 동일한 계약 아래 DINOv3 백본 소스를 제공합니다. S 미만의 모든 DEIMv2 크기를 포함한 나머지 제품군은 Apache-2.0만 적용됩니다.

인용

@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},
}

github.com/Intellindust-AI-Lab/DEIM#5-citation에 있는 저자의 인용 블록에서 복사했습니다.

DEIMv2는 별도 논문이며 github.com/Intellindust-AI-Lab/DEIMv2에 자체 인용 블록이 있습니다. 버전 2 체크포인트를 사용했다면 이를 인용합니다.

LibreYOLO v1.5.0에서 검증되었습니다. 이 페이지의 지원 표, 체크포인트, 벤치마크 수치는 출시된 라이브러리와 공개된 가중치에서 생성되며 수동으로 작성되지 않습니다.