Transformers documentation

D-FINE

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Ce modèle a été publié dans HF papers le 2024-10-17 et contribué à Hugging Face Transformers le 2025-04-29.

D-FINE

Aperçu

Le modèle D-FINE a été proposé dans D-FINE: Redefine Regression Task in DETRs as Fine-grained Distribution Refinement par Yansong Peng, Hebei Li, Peixi Wu, Yueyi Zhang, Xiaoyan Sun, Feng Wu

L'abstract de l'article est le suivant :

Nous présentons D-FINE, un détecteur d'objets en temps réel puissant qui atteint une précision de localisation exceptionnelle en redéfinissant la tâche de régression des boîtes englobantes dans les modèles DETR. D-FINE comprend deux composants clés : le raffinement de distribution à grain fin (Fine-grained Distribution Refinement, FDR) et l'auto-distillation de localisation optimale globale (Global Optimal Localization Self-Distillation, GO-LSD). FDR transforme le processus de régression, passant de la prédiction de coordonnées fixes au raffinement itératif de distributions de probabilité, fournissant ainsi une représentation intermédiaire à grain fin qui améliore considérablement la précision de la localisation. GO-LSD est une stratégie d'optimisation bidirectionnelle qui transfère les connaissances de localisation des distributions raffinées vers les couches plus superficielles par auto-distillation, tout en simplifiant les tâches de prédiction résiduelle pour les couches plus profondes. De plus, D-FINE intègre des optimisations légères dans les modules et opérations intensifs en calcul, atteignant un meilleur équilibre entre vitesse et précision. Plus précisément, D-FINE-L / X atteint 54,0 % / 55,8 % AP sur le jeu de données COCO à 124 / 78 FPS sur un GPU NVIDIA T4. Pré-entraîné sur Objects365, D-FINE-L / X atteint 57,1 % / 59,3 % AP, surpassant tous les détecteurs en temps réel existants. En outre, notre méthode améliore significativement les performances d'une large gamme de modèles DETR, jusqu'à 5,3 % AP, avec des paramètres et des coûts d'entraînement supplémentaires négligeables. Notre code et nos modèles pré-entraînés : this https URL.

Ce modèle a été contribué par VladOS95-cyber. Le code d'origine peut être trouvé ici.

Conseils d'utilisation

import torch

from transformers import AutoImageProcessor, DFineForObjectDetection
from transformers.image_utils import load_image


url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = load_image(url)

image_processor = AutoImageProcessor.from_pretrained("ustc-community/dfine_x_coco")
model = DFineForObjectDetection.from_pretrained("ustc-community/dfine_x_coco", device_map="auto")

inputs = image_processor(images=image, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs)

results = image_processor.post_process_object_detection(outputs, target_sizes=[(image.height, image.width)], threshold=0.5)

for result in results:
    for score, label_id, box in zip(result["scores"], result["labels"], result["boxes"]):
        score, label = score.item(), label_id.item()
        box = [round(i, 2) for i in box.tolist()]
        print(f"{model.config.id2label[label]}: {score:.2f} {box}")
cat: 0.96 [344.49, 23.4, 639.84, 374.27]
cat: 0.96 [11.71, 53.52, 316.64, 472.33]
remote: 0.95 [40.46, 73.7, 175.62, 117.57]
sofa: 0.92 [0.59, 1.88, 640.25, 474.74]
remote: 0.89 [333.48, 77.04, 370.77, 187.3]

DFineConfig

classe transformers.DFineConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = Trueinitializer_range: float = 0.01initializer_bias_prior_prob: float | None = Nonelayer_norm_eps: float = 1e-05batch_norm_eps: float = 1e-05backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonefreeze_backbone_batch_norms: bool = Trueencoder_hidden_dim: int = 256encoder_in_channels: list[int] | tuple[int, ...] = (512, 1024, 2048)feat_strides: list[int] | tuple[int, ...] = (8, 16, 32)encoder_layers: int = 1encoder_ffn_dim: int = 1024encoder_attention_heads: int = 8dropout: float | int = 0.0activation_dropout: float | int = 0.0encode_proj_layers: list[int] | tuple[int, ...] = (2,)positional_encoding_temperature: int = 10000encoder_activation_function: str = 'gelu'activation_function: str = 'silu'eval_size: int | None = Nonenormalize_before: bool = Falsehidden_expansion: float = 1.0d_model: int = 256num_queries: int = 300decoder_in_channels: list[int] | tuple[int, ...] = (256, 256, 256)decoder_ffn_dim: int = 1024num_feature_levels: int = 3decoder_n_points: int | list[int] = 4decoder_layers: int = 6decoder_attention_heads: int = 8decoder_activation_function: str = 'relu'attention_dropout: float | int = 0.0num_denoising: int = 100label_noise_ratio: float = 0.5box_noise_scale: float = 1.0learn_initial_query: bool = Falseanchor_image_size: int | list[int] | None = Nonewith_box_refine: bool = Truematcher_alpha: float = 0.25matcher_gamma: float = 2.0matcher_class_cost: float = 2.0matcher_bbox_cost: float = 5.0matcher_giou_cost: float = 2.0use_focal_loss: bool = Trueauxiliary_loss: bool = Truefocal_loss_alpha: float = 0.75focal_loss_gamma: float = 2.0weight_loss_vfl: float = 1.0weight_loss_bbox: float = 5.0weight_loss_giou: float = 2.0weight_loss_fgl: float = 0.15weight_loss_ddf: float = 1.5eos_coefficient: float = 0.0001eval_idx: int = -1layer_scale: int | float = 1.0max_num_bins: int = 32reg_scale: float = 4.0depth_mult: float = 1.0top_prob_values: int = 4lqe_hidden_dim: int = 64lqe_layers: int = 2decoder_offset_scale: float = 0.5decoder_method: str = 'default'up: float = 0.5tie_word_embeddings: bool = True )

Paramètres

  • is_encoder_decoder (bool, facultatif, valeur par défaut True) — Indique si le modèle est utilisé comme encodeur/décodeur ou non.
  • initializer_range (float, facultatif, par défaut 0.01) — L'écart-type de la truncated_normal_initializer utilisé pour initialiser toutes les matrices de poids.
  • initializer_bias_prior_prob (float, facultatif) — La probabilité a priori utilisée par l’initialiseur de biais pour initialiser les biais de enc_score_head et class_embed. Si None, prior_prob est calculé comme prior_prob = 1 / (num_labels + 1) lors de l’initialisation des poids du modèle.
  • layer_norm_eps (float, facultatif, valeur par défaut 1e-05) — L'épsilon utilisé par les couches de normalisation de couche.
  • batch_norm_eps (float, facultatif, valeur par défaut 1e-05) — L'épsilon utilisé par les couches de normalisation par lot.
  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], facultatif) — La configuration du modèle backbone.
  • freeze_backbone_batch_norms (bool, facultatif, valeur par défaut True) — Indique s'il faut figer les couches de normalisation par lot dans le backbone.
  • encoder_hidden_dim (int, facultatif, par défaut 256) — Dimension des représentations cachées.
  • encoder_in_channels (list, facultatif, par défaut [512, 1024, 2048]) — Entrées de caractéristiques multi-niveaux pour l’encodeur.
  • feat_strides (list[int], facultatif, par défaut [8, 16, 32]) — Pas utilisés dans chaque carte de caractéristiques.
  • encoder_layers (int, facultatif, valeur par défaut 1) — Nombre de couches cachées dans l’encodeur Transformer. Utilise la même valeur que num_layers si non défini.
  • encoder_ffn_dim (int, facultatif, par défaut 1024) — Dimension de la couche « intermédiaire » (souvent appelée couche feed-forward) de l’encodeur.
  • encoder_attention_heads (int, facultatif, valeur par défaut 8) — Nombre de têtes d'attention pour chaque couche d'attention dans l'encodeur Transformer.
  • dropout (Union[float, int], facultatif, par défaut 0.0) — Le taux appliqué à toutes les couches de dropout.
  • activation_dropout (Union[float, int], facultatif, valeur par défaut 0.0) — Le taux de dropout appliqué aux activations à l'intérieur de la couche entièrement connectée.
  • encode_proj_layers (list[int], facultatif, par défaut [2]) — Indices des couches projetées à utiliser dans l'encodeur.
  • positional_encoding_temperature (int, facultatif, valeur par défaut 10000) — Le paramètre de température utilisé pour créer les encodages positionnels.
  • encoder_activation_function (str, facultatif, par défaut "gelu") — La fonction d'activation non linéaire (fonction ou chaîne de caractères) dans l'encodeur et le pooler. Si c'est une chaîne de caractères, "gelu", "relu", "silu" et "gelu_new" sont pris en charge.
  • activation_function (str, facultatif, par défaut silu) — La fonction d'activation non linéaire (fonction ou chaîne de caractères) du décodeur. Par exemple, "gelu", "relu", "silu", etc.
  • eval_size (tuple[int, int], facultatif) — Hauteur et largeur utilisées pour calculer la hauteur et la largeur effectives des embeddings de position après prise en compte du pas (stride).
  • normalize_before (bool, facultatif, par défaut False) — Détermine si la normalisation par couche doit être appliquée dans la couche d'encodeur du transformer avant les modules d'auto-attention et de réseau de neurones à propagation avant.
  • hidden_expansion (float, facultatif, valeur par défaut 1.0) — Ratio d'expansion pour agrandir la taille de la dimension de RepVGGBlock et CSPRepLayer.
  • d_model (int, facultatif, par défaut 256) — Taille des couches encodeur et de la couche pooler.
  • num_queries (int, facultatif, valeur par défaut 300) — Nombre de requêtes d'objets.
  • decoder_in_channels (list, facultatif, par défaut [256, 256, 256]) — Dimensions des caractéristiques multi-niveaux pour le décodeur
  • decoder_ffn_dim (int, facultatif, valeur par défaut 1024) — Dimension de la couche « intermédiaire » (souvent appelée couche feed-forward) du décodeur.
  • num_feature_levels (int, facultatif, valeur par défaut 3) — Le nombre de niveaux de caractéristiques d'entrée.
  • decoder_n_points (int, facultatif, valeur par défaut 4) — Le nombre de clés échantillonnées à chaque niveau de fonctionnalités pour chaque tête d’attention du décodeur.
  • decoder_layers (int, facultatif, valeur par défaut 6) — Nombre de couches cachées dans le décodeur Transformer. Utilise la même valeur que num_layers si non défini.
  • decoder_attention_heads (int, facultatif, valeur par défaut 8) — Nombre de têtes d'attention pour chaque couche d'attention du décodeur Transformer.
  • decoder_activation_function (str, facultatif, par défaut "relu") — La fonction d’activation non linéaire (fonction ou chaîne de caractères) du décodeur. Si c’est une chaîne de caractères, "gelu", "relu", "silu" et "gelu_new" sont pris en charge.
  • attention_dropout (Union[float, int], facultatif, valeur par défaut 0.0) — Le taux de dropout appliqué aux probabilités d'attention.
  • num_denoising (int, facultatif, valeur par défaut 100) — Nombre total de tâches ou de requêtes de débruitage à utiliser pour le débruitage contrastif.
  • label_noise_ratio (float, facultatif, valeur par défaut 0.5) — La proportion d'étiquettes de débruitage auxquelles du bruit aléatoire doit être ajouté.
  • box_noise_scale (float, facultatif, valeur par défaut 1.0) — Échelle ou amplitude du bruit à ajouter aux boîtes englobantes.
  • learn_initial_query (bool, facultatif, par défaut False) — Indique si les embeddings de requête initiaux du décodeur doivent être appris pendant l’entraînement
  • anchor_image_size (tuple[int, int], facultatif) — Hauteur et largeur de l'image d'entrée utilisée lors de l'évaluation pour générer les ancres de boîtes englobantes. Si None, la génération automatique des ancres est appliquée.
  • with_box_refine (bool, facultatif, valeur par défaut True) — Indique s'il faut appliquer un raffinement itératif des boîtes englobantes, où chaque couche du décodeur affine les boîtes englobantes sur la base des prédictions de la couche précédente.
  • matcher_alpha (float, facultatif, valeur par défaut 0.25) — Paramètre alpha utilisé par le Hungarian Matcher.
  • matcher_gamma (float, facultatif, valeur par défaut 2.0) — Paramètre gamma utilisé par le Hungarian Matcher.
  • matcher_class_cost (float, facultatif, valeur par défaut 2.0) — Le poids relatif de la perte de classe utilisé par le Hungarian Matcher.
  • matcher_bbox_cost (float, facultatif, valeur par défaut 5.0) — Le poids relatif de la perte de boîte englobante utilisé par le Matcher hongrois.
  • matcher_giou_cost (float, facultatif, valeur par défaut 2.0) — Le poids relatif de la perte giou utilisée par le Hungarian Matcher.
  • use_focal_loss (bool, facultatif, valeur par défaut True) — Paramètre indiquant si la focal loss doit être utilisée.
  • auxiliary_loss (bool, facultatif, par défaut True) — Indique si les pertes de décodage auxiliaires (pertes à chaque couche du décodeur) doivent être utilisées.
  • focal_loss_alpha (float, facultatif, valeur par défaut 0.75) — Paramètre alpha utilisé pour calculer la focal loss.
  • focal_loss_gamma (float, facultatif, valeur par défaut 2.0) — Paramètre gamma utilisé pour calculer la focal loss.
  • weight_loss_vfl (float, facultatif, valeur par défaut 1.0) — Poids relatif de la perte varifocal dans la perte de détection d'objets.
  • weight_loss_bbox (float, facultatif, valeur par défaut 5.0) — Poids relatif de la perte de boîte englobante L1 dans la perte de détection d'objets.
  • weight_loss_giou (float, facultatif, valeur par défaut 2.0) — Poids relatif de la perte d'IoU généralisée dans la perte de détection d'objets.
  • weight_loss_fgl (float, facultatif, valeur par défaut 0.15) — Poids relatif de la perte de localisation fine dans la perte de détection d'objets.
  • weight_loss_ddf (float, facultatif, valeur par défaut 1.5) — Poids relatif de la perte focale de distillation découplée dans la perte de détection d'objets.
  • eos_coefficient (float, facultatif, par défaut 0.0001) — Poids de classification relatif de la classe « no-object » dans la perte de détection d’objets.
  • eval_idx (int, facultatif, valeur par défaut -1) — Index de la couche du décodeur à utiliser pour l'évaluation. Si négatif, compte à partir de la fin (par exemple, -1 signifie utiliser la dernière couche). Cela permet une prédiction précoce dans la pile du décodeur tout en entraînant les couches ultérieures.
  • layer_scale (float, facultatif, par défaut 1.0) — Facteur d'échelle pour la dimension cachée dans les couches de décodeur ultérieures. Utilisé pour ajuster la capacité du modèle après la couche d'évaluation.
  • max_num_bins (int, facultatif, valeur par défaut 32) — Nombre maximal de bins pour le raffinement des boîtes englobantes guidé par la distribution. Des valeurs plus élevées permettent une localisation plus fine mais augmentent le calcul.
  • reg_scale (float, facultatif, valeur par défaut 4.0) — Facteur d'échelle pour la distribution de régression. Contrôle l'étendue et la granularité du processus de raffinement des boîtes englobantes.
  • depth_mult (float, facultatif, valeur par défaut 1.0) — Multiplicateur du nombre de blocs dans les couches RepNCSPELAN4. Utilisé pour ajuster la profondeur du modèle tout en conservant son architecture.
  • top_prob_values (int, facultatif, valeur par défaut 4) — Nombre de valeurs de probabilité supérieures à prendre en compte dans la distribution de chaque coin.
  • lqe_hidden_dim (int, facultatif, valeur par défaut 64) — Taille de la dimension cachée pour le réseau Location Quality Estimator (LQE).
  • lqe_layers (int, facultatif, valeur par défaut 2) — Nombre de couches dans le MLP de l'estimateur de qualité de localisation.
  • decoder_offset_scale (float, facultatif, valeur par défaut 0.5) — Échelle de décalage utilisée dans l'attention déformable.
  • decoder_method (str, facultatif, par défaut "default") — La méthode à utiliser pour le décodeur : "default" ou "discrete".
  • up (float, facultatif, valeur par défaut 0.5) — Contrôle les bornes supérieures de la fonction de pondération.
  • tie_word_embeddings (bool, facultatif, par défaut True) — Indique s'il faut lier les embeddings de poids selon la correspondance tied_weights_keys du modèle.

Ceci est la classe de configuration destinée à stocker la configuration d'un DFineModel. Elle est utilisée pour instancier un modèle D Fine en fonction des arguments spécifiés, définissant ainsi l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de ustc-community/dfine-xlarge-coco

Les objets de configuration héritent de PreTrainedConfig et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de PreTrainedConfig pour plus d’informations.

DFineModel

classe transformers.DFineModel

< >

( config: DFineConfig )

Paramètres

  • config (DFineConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.

Modèle RT-DETR (composé d'un backbone et d'un encodeur-décodeur) produisant des états cachés bruts sans aucune tête au sommet.

Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)

Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.

forward

< >

( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DFineModelOutput or tuple(torch.Tensor)

Paramètres

  • pixel_values (torch.Tensor de forme (batch_size, num_channels, image_size, image_size)) — Les tenseurs correspondant aux images d'entrée. Les valeurs de pixels peuvent être obtenues à l'aide de image_processor_class. Voir image_processor_class.__call__ pour plus de détails (processor_class utilise image_processor_class pour le traitement des images).
  • pixel_mask (torch.LongTensor de forme (batch_size, height, width), facultatif) — Masque pour éviter d'appliquer l'attention aux valeurs de pixels de bourrage. Les valeurs du masque sont sélectionnées dans [0, 1]:
    • 1 pour les pixels réels (c.-à-d. non masqués),
    • 0 pour les pixels qui sont du bourrage (c.-à-d. masqués).

    Qu'est-ce que les masques d'attention ?

  • encoder_outputs (torch.Tensor, facultatif) — Tuple composé de (last_hidden_state, facultatif : hidden_states, facultatif : attentions) last_hidden_state de forme (batch_size, sequence_length, hidden_size), facultatif) est une séquence d’états cachés à la sortie de la dernière couche de l’encodeur. Utilisé dans l’attention croisée du décodeur.
  • inputs_embeds (torch.Tensor de forme (batch_size, sequence_length, hidden_size), facultatif) — Facultativement, au lieu de passer la carte de caractéristiques aplatie (sortie du backbone + couche de projection), vous pouvez choisir de passer directement une représentation aplatie d'une image.
  • labels (list[Dict] de longueur (batch_size,), facultatif) — Étiquettes pour le calcul de la perte de correspondance bipartite. Liste de dictionnaires, chaque dictionnaire contenant au moins les 2 clés suivantes : ‘class_labels’ et ‘boxes’ (les étiquettes de classes et les boîtes englobantes d’une image du lot, respectivement). Les étiquettes de classes elles-mêmes doivent être un torch.LongTensor de longueur (number of bounding boxes in the image,) et les boîtes un torch.Tensor de forme (number of bounding boxes in the image, 4).

Retourne

DFineModelOutput ou tuple(torch.Tensor)

Un DFineModelOutput ou un tuple de torch.Tensor (si return_dict=False est passé ou lorsque config.return_dict=False) comprenant divers éléments en fonction de la configuration (None) et des entrées.

La méthode forward de DFineModel redéfinit la méthode spéciale __call__.

Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance Module plutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.

  • last_hidden_state (torch.Tensor de forme (batch_size, num_queries, hidden_size)) — Séquence d'états cachés à la sortie de la dernière couche du décodeur du modèle.

  • intermediate_hidden_states (torch.Tensor de forme (batch_size, config.decoder_layers, num_queries, hidden_size)) — États cachés intermédiaires empilés (sortie de chaque couche du décodeur).

  • intermediate_logits (torch.Tensor de forme (batch_size, config.decoder_layers, sequence_length, config.num_labels)) — Logits intermédiaires empilés (logits de chaque couche du décodeur).

  • intermediate_reference_points (torch.Tensor de forme (batch_size, config.decoder_layers, num_queries, 4)) — Points de référence intermédiaires empilés (points de référence de chaque couche du décodeur).

  • intermediate_predicted_corners (torch.Tensor de forme (batch_size, config.decoder_layers, num_queries, 4)) — Coins intermédiaires prédits empilés (coins prédits de chaque couche du décodeur).

  • initial_reference_points (torch.Tensor de forme (batch_size, num_queries, 4)) — Points de référence initiaux utilisés pour la première couche du décodeur.

  • decoder_hidden_states (tuple[torch.Tensor], facultatif, renvoyé lorsque output_hidden_states=True est passé ou lorsque config.output_hidden_states=True) — Tuple de torch.Tensor (un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme (batch_size, sequence_length, hidden_size).

    États cachés du décodeur à la sortie de chaque couche, plus les sorties de l'intégration initiale.

  • decoder_attentions (tuple[torch.Tensor], facultatif, renvoyé lorsque output_attentions=True est passé ou lorsque config.output_attentions=True) — Tuple de torch.Tensor (un par couche) de forme (batch_size, num_heads, sequence_length, sequence_length).

    Poids d'attention du décodeur, après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'auto-attention.

  • cross_attentions (tuple[torch.Tensor], facultatif, renvoyé lorsque output_attentions=True est passé ou lorsque config.output_attentions=True) — Tuple de torch.Tensor (un par couche) de forme (batch_size, num_heads, sequence_length, sequence_length).

    Poids d'attention de la couche d'attention croisée du décodeur, après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'attention croisée.

  • encoder_last_hidden_state (torch.Tensor de forme (batch_size, sequence_length, hidden_size), facultatif) — Séquence d'états cachés à la sortie de la dernière couche de l'encodeur du modèle.

  • encoder_hidden_states (tuple[torch.Tensor], facultatif, renvoyé lorsque output_hidden_states=True est passé ou lorsque config.output_hidden_states=True) — Tuple de torch.Tensor (un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme (batch_size, sequence_length, hidden_size).

    États cachés de l'encodeur à la sortie de chaque couche, plus les sorties des embeddings initiaux.

  • encoder_attentions (tuple[torch.Tensor], facultatif, renvoyé lorsque output_attentions=True est passé ou lorsque config.output_attentions=True) — Tuple de torch.Tensor (un par couche) de forme (batch_size, num_heads, sequence_length, sequence_length).

    Poids d'attention de l'encodeur, après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'auto-attention.

  • init_reference_points (torch.Tensor de forme (batch_size, num_queries, 4)) — Points de référence initiaux transmis au décodeur du Transformer.

  • enc_topk_logits (torch.Tensor de forme (batch_size, sequence_length, config.num_labels)) — Scores des boîtes englobantes prédites, où les config.two_stage_num_proposals boîtes englobantes ayant les scores les plus élevés sont sélectionnées comme propositions de régions à l’étape de l’encodeur. Sortie de la classification binaire des boîtes englobantes (c’est-à-dire premier plan et arrière-plan).

  • enc_topk_bboxes (torch.Tensor de forme (batch_size, sequence_length, 4)) — Logits des coordonnées des boîtes englobantes prédites à l'étape de l'encodeur.

  • enc_outputs_class (torch.Tensor de forme (batch_size, sequence_length, config.num_labels), facultatif, renvoyé lorsque config.with_box_refine=True et config.two_stage=True) — Scores des boîtes englobantes prédites, où les config.two_stage_num_proposals boîtes englobantes ayant les scores les plus élevés sont sélectionnées comme propositions de régions dans la première étape. Sortie de la classification binaire des boîtes englobantes (c.-à-d. premier plan et arrière-plan).

  • enc_outputs_coord_logits (torch.Tensor de forme (batch_size, sequence_length, 4), facultatif, renvoyé lorsque config.with_box_refine=True et config.two_stage=True) — Logits des coordonnées des boîtes englobantes prédites à la première étape.

  • denoising_meta_values (dict, facultatif) — Dictionnaire supplémentaire pour les valeurs liées au débruitage.

Exemples :

>>> from transformers import AutoImageProcessor, DFineModel
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> image_processor = AutoImageProcessor.from_pretrained("PekingU/DFine_r50vd")
>>> model = DFineModel.from_pretrained("PekingU/DFine_r50vd")

>>> inputs = image_processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 300, 256]

DFineForObjectDetection

classe transformers.DFineForObjectDetection

< >

( config: DFineConfig )

Paramètres

  • config (DFineConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.

Le modèle RT-DETR (composé d'un backbone et d'un encodeur-décodeur) produit des boîtes englobantes et des logits qui sont ensuite décodés en scores et en classes.

Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)

Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.

forward

< >

( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DFineObjectDetectionOutput or tuple(torch.Tensor)

Paramètres

  • pixel_values (torch.Tensor de forme (batch_size, num_channels, image_size, image_size)) — Les tenseurs correspondant aux images d'entrée. Les valeurs de pixels peuvent être obtenues à l'aide de image_processor_class. Voir image_processor_class.__call__ pour plus de détails (processor_class utilise image_processor_class pour le traitement des images).
  • pixel_mask (torch.LongTensor de forme (batch_size, height, width), facultatif) — Masque pour éviter d'appliquer l'attention aux valeurs de pixels de bourrage. Les valeurs du masque sont sélectionnées dans [0, 1]:
    • 1 pour les pixels réels (c.-à-d. non masqués),
    • 0 pour les pixels qui sont du bourrage (c.-à-d. masqués).

    Qu'est-ce que les masques d'attention ?

  • encoder_outputs (torch.Tensor, facultatif) — Tuple composé de (last_hidden_state, facultatif : hidden_states, facultatif : attentions) last_hidden_state de forme (batch_size, sequence_length, hidden_size), facultatif) est une séquence d’états cachés à la sortie de la dernière couche de l’encodeur. Utilisé dans l’attention croisée du décodeur.
  • inputs_embeds (torch.Tensor de forme (batch_size, sequence_length, hidden_size), facultatif) — Facultativement, au lieu de passer input_ids, vous pouvez choisir de passer directement une représentation intégrée. Cela est utile si vous souhaitez un meilleur contrôle sur la manière de convertir les indices input_ids en vecteurs associés que la matrice de recherche d’intégration interne du modèle.
  • labels (list[Dict] de longueur (batch_size,), facultatif) — Étiquettes pour le calcul de la perte de correspondance bipartite. Liste de dictionnaires, chaque dictionnaire contenant au moins les 2 clés suivantes : ‘class_labels’ et ‘boxes’ (les étiquettes de classes et les boîtes englobantes d’une image du lot, respectivement). Les étiquettes de classes elles-mêmes doivent être un torch.LongTensor de longueur (number of bounding boxes in the image,) et les boîtes un torch.Tensor de forme (number of bounding boxes in the image, 4).

Retourne

DFineObjectDetectionOutput ou tuple(torch.Tensor)

Un DFineObjectDetectionOutput ou un tuple de torch.Tensor (si return_dict=False est passé ou lorsque config.return_dict=False) comprenant divers éléments en fonction de la configuration (None) et des entrées.

La méthode forward de DFineForObjectDetection surcharge la méthode spéciale __call__.

Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance Module plutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.

  • loss (torch.Tensor de forme (1,), facultatif, renvoyé lorsque labels est fourni)) — Perte totale en tant que combinaison linéaire d'une négative log-vraisemblance (entropie croisée) pour la prédiction de classe et d'une perte de boîte englobante. Cette dernière est définie comme une combinaison linéaire de la perte L1 et de la perte d'IoU généralisée insensible à l'échelle.

  • loss_dict (Dict, facultatif) — Un dictionnaire contenant les pertes individuelles. Utile pour la journalisation.

  • logits (torch.Tensor de forme (batch_size, num_queries, num_classes + 1)) — Logits de classification (y compris no-object) pour toutes les requêtes.

  • pred_boxes (torch.Tensor de forme (batch_size, num_queries, 4)) — Coordonnées des boîtes normalisées pour toutes les requêtes, représentées sous la forme (center_x, center_y, width, height). Ces valeurs sont normalisées dans [0, 1], par rapport à la taille de chaque image individuelle du lot (en ignorant le padding éventuel). Vous pouvez utiliser ~DFineImageProcessor.post_process_object_detection pour récupérer les boîtes englobantes non normalisées (absolues).

  • auxiliary_outputs (list[Dict], facultatif) — Facultatif, renvoyé uniquement lorsque les pertes auxiliaires sont activées (c.-à-d. config.auxiliary_loss est défini sur True) et que des étiquettes sont fournies. C'est une liste de dictionnaires contenant les deux clés ci-dessus (logits et pred_boxes) pour chaque couche du décodeur.

  • last_hidden_state (torch.Tensor de forme (batch_size, num_queries, hidden_size)) — Séquence d'états cachés à la sortie de la dernière couche du décodeur du modèle.

  • intermediate_hidden_states (torch.Tensor de forme (batch_size, config.decoder_layers, num_queries, hidden_size)) — États cachés intermédiaires empilés (sortie de chaque couche du décodeur).

  • intermediate_logits (torch.Tensor de forme (batch_size, config.decoder_layers, num_queries, config.num_labels)) — Logits intermédiaires empilés (logits de chaque couche du décodeur).

  • intermediate_reference_points (torch.Tensor de forme (batch_size, config.decoder_layers, num_queries, 4)) — Points de référence intermédiaires empilés (points de référence de chaque couche du décodeur).

  • intermediate_predicted_corners (torch.Tensor de forme (batch_size, config.decoder_layers, num_queries, 4)) — Coins intermédiaires prédits empilés (coins prédits de chaque couche du décodeur).

  • initial_reference_points (torch.Tensor de forme (batch_size, config.decoder_layers, num_queries, 4)) — Points de référence initiaux empilés (points de référence initiaux de chaque couche du décodeur).

  • decoder_hidden_states (tuple[torch.Tensor], facultatif, renvoyé lorsque output_hidden_states=True est passé ou lorsque config.output_hidden_states=True) — Tuple de torch.Tensor (un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme (batch_size, sequence_length, hidden_size).

    États cachés du décodeur à la sortie de chaque couche, plus les sorties de l'intégration initiale.

  • decoder_attentions (tuple[torch.Tensor], facultatif, renvoyé lorsque output_attentions=True est passé ou lorsque config.output_attentions=True) — Tuple de torch.Tensor (un par couche) de forme (batch_size, num_heads, sequence_length, sequence_length).

    Poids d'attention du décodeur, après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'auto-attention.

  • cross_attentions (tuple[torch.Tensor], facultatif, renvoyé lorsque output_attentions=True est passé ou lorsque config.output_attentions=True) — Tuple de torch.Tensor (un par couche) de forme (batch_size, num_heads, sequence_length, sequence_length).

    Poids d'attention de la couche d'attention croisée du décodeur, après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'attention croisée.

  • encoder_last_hidden_state (torch.Tensor de forme (batch_size, sequence_length, hidden_size), facultatif) — Séquence d'états cachés à la sortie de la dernière couche de l'encodeur du modèle.

  • encoder_hidden_states (tuple[torch.Tensor], facultatif, renvoyé lorsque output_hidden_states=True est passé ou lorsque config.output_hidden_states=True) — Tuple de torch.Tensor (un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme (batch_size, sequence_length, hidden_size).

    États cachés de l'encodeur à la sortie de chaque couche, plus les sorties des embeddings initiaux.

  • encoder_attentions (tuple[torch.Tensor], facultatif, renvoyé lorsque output_attentions=True est passé ou lorsque config.output_attentions=True) — Tuple de torch.Tensor (un par couche) de forme (batch_size, num_heads, sequence_length, sequence_length).

    Poids d'attention de l'encodeur, après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'auto-attention.

  • init_reference_points (torch.Tensor de forme (batch_size, num_queries, 4)) — Points de référence initiaux transmis au décodeur du Transformer.

  • enc_topk_logits (torch.Tensor de forme (batch_size, sequence_length, config.num_labels), facultatif, renvoyé lorsque config.with_box_refine=True et config.two_stage=True) — Logits des coordonnées des boîtes englobantes prédites dans l’encodeur.

  • enc_topk_bboxes (torch.Tensor de forme (batch_size, sequence_length, 4), facultatif, renvoyé lorsque config.with_box_refine=True et config.two_stage=True) — Logits des coordonnées des boîtes englobantes prédites dans l’encodeur.

  • enc_outputs_class (torch.Tensor de forme (batch_size, sequence_length, config.num_labels), facultatif, renvoyé lorsque config.with_box_refine=True et config.two_stage=True) — Scores des boîtes englobantes prédites, où les config.two_stage_num_proposals boîtes englobantes ayant les scores les plus élevés sont sélectionnées comme propositions de régions dans la première étape. Sortie de la classification binaire des boîtes englobantes (c.-à-d. premier plan et arrière-plan).

  • enc_outputs_coord_logits (torch.Tensor de forme (batch_size, sequence_length, 4), facultatif, renvoyé lorsque config.with_box_refine=True et config.two_stage=True) — Logits des coordonnées des boîtes englobantes prédites à la première étape.

  • denoising_meta_values (dict, facultatif) — Dictionnaire supplémentaire pour les valeurs liées au débruitage

Exemple :

>>> import torch
>>> from transformers.image_utils import load_image
>>> from transformers import AutoImageProcessor, DFineForObjectDetection

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)

>>> image_processor = AutoImageProcessor.from_pretrained("ustc-community/dfine-xlarge-coco")
>>> model = DFineForObjectDetection.from_pretrained("ustc-community/dfine-xlarge-coco")

>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")

>>> # forward pass
>>> outputs = model(**inputs)

>>> logits = outputs.logits
>>> list(logits.shape)
[1, 300, 80]

>>> boxes = outputs.pred_boxes
>>> list(boxes.shape)
[1, 300, 4]

>>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> target_sizes = torch.tensor([image.size[::-1]])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)
>>> result = results[0]  # first image in batch

>>> for score, label, box in zip(result["scores"], result["labels"], result["boxes"]):
...     box = [round(i, 2) for i in box.tolist()]
...     print(
...         f"Detected {model.config.id2label[label.item()]} with confidence "
...         f"{round(score.item(), 3)} at location {box}"
...     )
Detected cat with confidence 0.958 at location [344.49, 23.4, 639.84, 374.27]
Detected cat with confidence 0.956 at location [11.71, 53.52, 316.64, 472.33]
Detected remote with confidence 0.947 at location [40.46, 73.7, 175.62, 117.57]
Detected sofa with confidence 0.918 at location [0.59, 1.88, 640.25, 474.74]
Update on GitHub