Dome-DETR
Un spécialiste des objets minuscules construit sur D-FINE : une tête de densité décide où se trouvent les objets, l'attention de l'encodeur est restreinte aux fenêtres qui les contiennent, et le nombre de queries est dimensionné à partir de cette densité au lieu d'être fixe. LibreYOLO le prend en charge pour la détection.
- Tâches
- detection
- Tailles
- s, m, l at 800 px
- Installer
pip install libreyolo- Niveau de support
- Pris en charge, depuis v1.5.0. Modèles entraînables complémentaires : maintenus au vert dans la CI, avec des fonctionnalités ajoutées selon les occasions.
- Origine
- Dome-DETR par The Dome-DETR Authors, Apache-2.0 code; academic-research-only weights. Article, source
- Licences
- Code Apache-2.0, poids Apache-2.0 code; academic-research-only weights. Usage commercial
Installation
Dome-DETR ne demande aucun extra optionnel. Tout ce qu'il importe est présent dans l'installation de base.
pip install libreyoloPrédire
Les six checkpoints convertis se téléchargent automatiquement depuis les miroirs LibreYOLO. Leurs conditions d'amont réservent l'utilisation à la recherche académique.
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Les poids pré-entraînés sont réservés à la recherche académique.model = LibreYOLO("LibreDOMEDETRs-visdrone.pt", device="cpu")print(model(SAMPLE_IMAGE).boxes)L'objet Results renvoyé est celui que renvoie chaque famille, remplacer un
détecteur par un autre est donc une modification d'une ligne. conf et
max_det filtrent la sélection des queries ; iou est accepté par parité d'API
mais n'a aucun effet, car le décodeur est un prédicteur d'ensemble sans étape de
NMS. Voir la prédiction pour les sources, le streaming et le
traitement des résultats.
Deux capacités sont désactivées pour cette famille. La capture de graphe CUDA est désactivée, car le nombre de queries de PAQI dépend des données et la passe avant change donc de forme d'une image à l'autre, ce qui est exactement ce que la capture de graphe ne peut pas absorber. L'augmentation au moment du test tourne à une seule taille carrée fixe, une demande de TTA multi-échelle est donc sans effet.
Variantes
Trois tailles, s, m et l, toutes en 800 par 800. La taille sélectionne le backbone, et le dataset dont viennent les poids sélectionne la profondeur du décodeur et le budget de queries, un code de taille seul n'identifie donc pas un graphe. Les poids AI-TOD-V2 sélectionnent entre 300 et 1500 queries par image, les poids VisDrone entre 250 et 500, et le grand modèle exécute quatre couches de décodeur sur AI-TOD-V2 contre six sur VisDrone.
Dome-DETR est D-FINE avec trois ajouts. DeFE prédit une carte de densité. MWAS utilise cette carte pour restreindre l'attention de l'encodeur aux fenêtres qui contiennent effectivement des objets, plutôt que de porter l'attention partout. PAQI dimensionne l'ensemble de queries à partir de cette même densité au lieu de décoder un nombre fixe de 300. Le gain se concentre là où les objets sont les plus petits, et se réduit à mesure qu'ils grandissent : l'ablation d'amont elle-même fait passer l'AP sur les objets très minuscules de 14.0 à 17.8 tandis que l'AP sur les objets moyens ne passe que de 45.4 à 46.4. Considérez-le comme un complément de D-FINE pour l'imagerie aérienne, de drone et de télédétection, pas comme un remplacement.
Aucune ligne de benchmark Vision Analysis n'est enregistrée pour cette famille.
Entraîner
Dome-DETR est entraînable. L'entraînement exécute l'objectif complet d'amont : les losses de D-FINE plus la supervision de densité et de comptage de DeFE, avec les queries de remplissage masquées hors des termes de classification et des masques d'attention de denoising par image, pour que le remplissage d'une image ne puisse pas fuiter dans celui d'une autre.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDOMEDETRs-visdrone.pt")model.train(data="my-dataset.yaml", epochs=160, imgsz=800, batch=4, lr0=2e-4)libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \ epochs=160 imgsz=800 batch=4 lr0=2e-4libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \ epochs=160 device=0,1 batch=4La configuration hérite de la recette de D-FINE et change ce que MWAS exige.
imgsz vaut 800, lr0 vaut 2e-4, le groupe de paramètres du backbone est mis
à l'échelle par backbone_lr_mult=0.1, et multi_scale est forcé à off, car
les fenêtres MWAS ont besoin que l'entrée reste divisible par le stride 8.
batch vaut 4 par défaut plutôt que les 16 de D-FINE : PAQI complète chaque
batch jusqu'à son membre le plus large, la mémoire suit donc l'image la plus
chargée du batch plutôt que l'image moyenne.
Une réserve honnête sur l'exactitude. L'amont entraîne pendant 160 époques avec
MultiStepLR(milestones=[80, 120], gamma=0.8), tandis que ces valeurs par
défaut exécutent le planning flat-cosine de D-FINE sur les mêmes 160 époques. Ce
planning n'a pas été reproduit ici et les chiffres d'AP de l'article n'ont pas
été reproduits non plus, lisez-les donc comme les résultats des auteurs d'amont
plutôt que comme une promesse que cette recette les atteint. Fournissez le
planning d'amont si l'objectif est d'égaler l'article.
Voir l'entraînement pour les datasets, l'augmentation, le multi-GPU et les loggers.
Valider
val() renvoie un dictionnaire indexé par nom de métrique, et affiche les
résultats par classe quand verbose est laissé activé.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDOMEDETRs-visdrone.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yamlLa validation s'exécute sur votre propre dataset, dans le format sur lequel vous avez entraîné. Le contrôle de validation COCO de la bibliothèque ne s'applique pas ici, puisqu'il n'existe aucun checkpoint COCO à mesurer pour cette famille.
Exporter
L'export n'est pris en charge pour aucun format, et en demander un lève une erreur au lieu de produire un fichier.
La raison est PAQI. Il décide du nombre de queries par image, à partir de propositions filtrées par densité et d'une boucle gloutonne de suppression adaptative à la densité, la longueur de sortie du décodeur est donc une propriété de l'entrée et non du graphe. Le tracing fige le nombre que l'image de tracing a produit, ce qui donne un artefact qui renvoie silencieusement de mauvais résultats pour toute autre image. Une formulation statique devrait dérouler cette suppression sur l'ensemble des 250 à 1500 candidats, et se rabattre sur un top-k fixe supprimerait exactement le rappel sur les objets minuscules pour lequel cette famille existe. S'il vous faut un transformer de détection exportable, D-FINE est celui vers lequel se tourner.
Checkpoints
| Fichier | Licence des poids |
|---|---|
| Detection | |
| LibreDOMEDETRs-aitod.pt | other |
| LibreDOMEDETRm-aitod.pt | other |
| LibreDOMEDETRl-aitod.pt | other |
| LibreDOMEDETRs-visdrone.pt | other |
| LibreDOMEDETRm-visdrone.pt | other |
| LibreDOMEDETRl-visdrone.pt | other |
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
- Dome-DETR, The Dome-DETR Authors
- Licence du projet d'origine
- Apache-2.0 code; academic-research-only weights
- Source du projet d'origine
- github.com/RicePasteM/Dome-DETR
- Code de LibreYOLO
- MIT
- Poids
- Apache-2.0 code; academic-research-only weights, republiés sur huggingface.co/LibreYOLO
- Interprétation
- The upstream source is Apache-2.0. Six mirrored checkpoints retain the publisher academic-research-only restriction.
Les six miroirs conservent la restriction d'amont à la recherche académique. Le code relève d'une licence distincte. Le dépôt d'amont est sous Apache-2.0, le portage LibreYOLO sous MIT, et les poids que vous entraînez sur vos propres données vous appartiennent.