DINO-DETR

DINO-DETR, publié par IDEA Research sous le nom DINO, combine un entraînement par débruitage contrastif et une sélection mixte des requêtes par-dessus l'attention éparse de Deformable DETR. LibreYOLO fournit trois tailles pour la détection, en inférence seule.

Tâches
detection
Tailles
r50, r50s5, swinl at 800 px
Installer
pip install libreyolo
Niveau de support
Inférence uniquement, depuis v. Prédiction, validation et export uniquement. Les fonctionnalités d'entraînement ne s'appliquent pas.
Origine
DINO-DETR par IDEA Research, Apache-2.0. Article, source
Licences
Code Apache-2.0, poids Apache-2.0. Usage commercial

Installation

DINO-DETR ne demande aucun extra optionnel. Tout ce qu'il importe fait partie de l'installation de base, avec le même cœur d'attention déformable multi-échelle en PyTorch pur que la famille Deformable DETR de LibreYOLO.

bash
pip install libreyolo

Installer libreyolo[hub-kernels] est optionnel. Une fois le paquet kernels présent, LibreYOLO récupère au runtime un kernel compilé d'attention déformable multi-échelle depuis le Hugging Face Hub et l'utilise à la place du cœur en PyTorch pur ; LIBREYOLO_HUB_KERNELS=0 le désactive à nouveau.

Prédire

Les poids sont téléchargés depuis Hugging Face au premier usage, puis mis en cache localement.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDINODETRr50.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreDINODETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

L'objet Results renvoyé est celui que renvoie chaque famille, si bien que passer à un autre détecteur ne demande qu'une ligne. conf et max_det filtrent la sélection des requêtes ; iou est accepté par parité d'API mais n'a aucun effet, car le décodeur est un prédicteur d'ensembles sans étape de NMS. Voir la prédiction pour les sources, le streaming et le traitement des résultats.

Dans LibreYOLO, DINO-DETR est en inférence seule. Le projet d'origine l'entraîne avec un débruitage contrastif et un appariement hongrois ; cette recette n'est pas implémentée ici, donc train() lève NotImplementedError.

Variantes

Trois checkpoints, tous à la même résolution d'entrée. r50 et r50s5 partagent un backbone ResNet-50 et diffèrent par le nombre d'échelles de cartes de caractéristiques qui alimentent le décodeur, quatre contre cinq. swinl remplace le backbone par Swin-L et échantillonne lui aussi cinq échelles.

Valider

val() renvoie un dictionnaire de clés metrics/ couvrant la précision, le rappel, la mAP 50 et la mAP 50-95, mesurées sur n'importe quel dataset au format avec lequel vous avez entraîné.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDINODETRr50.pt") # val() renvoie un simple dict, pas un objetmetrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])
CLI
libreyolo val model=LibreDINODETRr50.pt data=my-dataset.yaml

Exporter

TâcheONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX : pris en chargeDetection to TorchScript : pris en chargeDetection to ExecuTorch : pris en chargeDetection to TensorRT : pris en chargeDetection to OpenVINO : pris en chargeDetection to Paddle : non pris en chargeDetection to MNN : non pris en chargeDetection to RKNN : non pris en chargeDetection to ncnn : non pris en chargeDetection to TFLite : non pris en chargeDetection to CoreML : non pris en chargeDetection to Core AI : non pris en charge

Un artefact exporté se recharge via LibreYOLO() selon son extension de fichier, si bien qu'un fichier .onnx ou .engine se comporte comme un checkpoint et renvoie le même Results. L'export liste les arguments que chaque format accepte.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDINODETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)
CLI
libreyolo export model=LibreDINODETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDINODETRr50.pt format=tensorrt imgsz=800 half=True
Utiliser le fichier exporté
from libreyolo import LibreYOLO, SAMPLE_IMAGE # La factory s'appuie sur l'extension du fichier, donc un artefact# exporté se charge comme un checkpoint et renvoie le même Results.model = LibreYOLO("LibreDINODETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpoints

Tous les fichiers de poids publiés de cette famille.

FichierEntrée (px)Licence des poids
Detection
LibreDINODETRr50.pt800apache-2.0
LibreDINODETRr50s5.pt800apache-2.0
LibreDINODETRswinl.pt800apache-2.0

Tous les fichiers ci-dessus sont actuellement disponibles dans l<link>organisation LibreYOLO</link> et sont téléchargés à la première utilisation.

Licence

Vérifiez la licence dans le dépôt Hugging Face des poids précis que vous téléchargez. Chaque checkpoint de l<link>organisation LibreYOLO</link> en possède une, et elles ne sont pas toujours identiques au sein dune même famille. Ce dépôt fait autorité ; le résumé ci-dessous décrit les conditions applicables lors de la dernière vérification de cette page.

Ceci décrit les licences concernées et ne constitue pas un conseil juridique. Si la réponse a une importance commerciale, lisez vous-même les licences et consultez votre propre avocat.

Travail d'origine
DINO-DETR, IDEA Research
Licence du projet d'origine
Apache-2.0
Source du projet d'origine
github.com/IDEA-Research/DINO
Code de LibreYOLO
MIT
Poids
Apache-2.0, republiés sur huggingface.co/LibreYOLO
Interprétation
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. The three checkpoints come from the authors' Google Drive release rather than a Hugging Face model card, and the upstream repository does not attach a license to the checkpoint files individually, so the redistribution basis is the repository-level Apache-2.0 declaration rather than a checkpoint-specific grant.

Les trois checkpoints officiels proviennent du dossier de publication Google Drive des auteurs, et non d'une model card Hugging Face. Le dépôt d'origine déclare Apache-2.0 au niveau du dépôt mais n'attache ni fichier de licence ni métadonnées de licence aux checkpoints eux-mêmes ; la base de redistribution est donc cette déclaration au niveau du dépôt plutôt qu'une concession propre aux checkpoints. Chaque miroir LibreYOLO fournit le texte de licence Apache-2.0 d'origine à l'identique, accompagné d'une note qui l'explique.

Citation

@misc{zhang2022dino,
      title={DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection}, 
      author={Hao Zhang and Feng Li and Shilong Liu and Lei Zhang and Hang Su and Jun Zhu and Lionel M. Ni and Heung-Yeung Shum},
      year={2022},
      eprint={2203.03605},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

@inproceedings{li2022dn,
      title={Dn-detr: Accelerate detr training by introducing query denoising},
      author={Li, Feng and Zhang, Hao and Liu, Shilong and Guo, Jian and Ni, Lionel M and Zhang, Lei},
      booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
      pages={13619--13627},
      year={2022}
}

@inproceedings{
      liu2022dabdetr,
      title={{DAB}-{DETR}: Dynamic Anchor Boxes are Better Queries for {DETR}},
      author={Shilong Liu and Feng Li and Hao Zhang and Xiao Yang and Xianbiao Qi and Hang Su and Jun Zhu and Lei Zhang},
      booktitle={International Conference on Learning Representations},
      year={2022},
      url={https://openreview.net/forum?id=oMI9PjOb9Jl}
}

Copié depuis le bloc de citation des auteurs sur github.com/IDEA-Research/DINO#bibtex.

Vérifié avec LibreYOLO v1.5.0. Les tableaux de support, les checkpoints et les chiffres de benchmark de cette page sont générés à partir de la bibliothèque publiée et des poids publiés, et non rédigés à la main.