Deformable DETR
Deformable DETR remplace la cross-attention dense de DETR par un échantillonnage épars et multi-échelle autour de chaque point de référence, ce qui a rendu les détecteurs transformer réellement entraînables. LibreYOLO fournit cinq tailles pour la détection, en inférence seule.
- Tâches
- detection
- Tailles
- r50ss, r50ssdc5, r50, r50refine, r50twostage 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.
- Licences
- Code Apache-2.0, poids Apache-2.0. Usage commercial
Installation
Deformable DETR ne demande aucun extra optionnel. Tout ce qu'il importe fait partie de l'installation de base, avec un cœur d'attention déformable multi-échelle en PyTorch pur.
pip install libreyoloInstaller 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.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDeformableDETRr50.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreDeformableDETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueL'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, Deformable DETR est en inférence seule. Le projet d'origine
l'entraîne avec un appariement hongrois et une focal loss de classification ;
cette recette n'est pas implémentée ici, donc train() lève
NotImplementedError.
Variantes
Cinq checkpoints couvrent les configurations publiées, toutes à la même
résolution d'entrée. r50ss limite l'attention à une seule échelle de
caractéristiques ; r50ssdc5 y ajoute un étage C5 dilaté dans le backbone.
r50 est la configuration multi-échelle par défaut, qui échantillonne sur
quatre niveaux de cartes de caractéristiques. r50refine ajoute un raffinement
itératif des bounding box au fil des couches du décodeur, et r50twostage
génère ses propositions de régions initiales à partir de la sortie de
l'encodeur au lieu de requêtes apprises.
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é.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.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"])libreyolo val model=LibreDeformableDETRr50.pt data=my-dataset.yamlExporter
| Tâche | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX : pris en charge | Detection to TorchScript : pris en charge | Detection to ExecuTorch : pris en charge | Detection to TensorRT : pris en charge | Detection to OpenVINO : pris en charge | Detection to Paddle : non pris en charge | Detection to MNN : non pris en charge | Detection to RKNN : non pris en charge | Detection to ncnn : non pris en charge | Detection to TFLite : non pris en charge | Detection to CoreML : non pris en charge | Detection 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)libreyolo export model=LibreDeformableDETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDeformableDETRr50.pt format=tensorrt imgsz=800 half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # La factory s'appuie sur l'extension du fichier, donc un artefact# exporté se charge comme n'importe quel checkpoint et renvoie le# même objet Results.model = LibreYOLO("LibreDeformableDETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Checkpoints
Tous les fichiers de poids publiés de cette famille.
| Fichier | Entrée (px) | Licence des poids |
|---|---|---|
| Detection | ||
| LibreDeformableDETRr50ss.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50ssdc5.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50twostage.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50refine.pt | 800 | apache-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
- Deformable DETR, SenseTime
- Licence du projet d'origine
- Apache-2.0
- Source du projet d'origine
- github.com/fundamentalvision/Deformable-DETR
- 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 five checkpoints are converted from SenseTime's own Hugging Face mirrors, each of which declares apache-2.0 in its model card; that declaration, not the original repository's Google Drive release links, is the redistribution basis.
Citation
@article{zhu2020deformable,
title={Deformable DETR: Deformable Transformers for End-to-End Object Detection},
author={Zhu, Xizhou and Su, Weijie and Lu, Lewei and Li, Bin and Wang, Xiaogang and Dai, Jifeng},
journal={arXiv preprint arXiv:2010.04159},
year={2020}
}Copié depuis le bloc de citation des auteurs sur github.com/fundamentalvision/Deformable-DETR#citing-deformable-detr.