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.

bash
pip install libreyolo

Pré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.

Python
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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDOMEDETRs-visdrone.pt")model.train(data="my-dataset.yaml", epochs=160, imgsz=800, batch=4, lr0=2e-4)
CLI
libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \  epochs=160 imgsz=800 batch=4 lr0=2e-4
Multi-GPU
libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \  epochs=160 device=0,1 batch=4

La 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é.

Python
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"])
CLI
libreyolo val model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml

La 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

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.

Vérifié avec LibreYOLO v1.6.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.