Transformers documentation

EoMT-DINOv3

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
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 2025-03-24 et contribué à Hugging Face Transformers le 2026-02-02.

EoMT-DINOv3

SDPA

Aperçu

La famille EoMT-DINOv3 étend l'architecture Encoder-only Mask Transformer avec des Vision Transformers pré-entraînés à l'aide de DINOv3. Cette mise à jour offre une qualité de segmentation supérieure sur les benchmarks ADE20K et COCO, tout en conservant la conception encoder-only qui rendait EoMT attractif pour les applications en temps réel.

Par rapport aux modèles basés sur DINOv2, les variantes DINOv3 exploitent des embeddings de position rotatifs, des blocs MLP à porte optionnels et les dernières recettes de pré-entraînement de Meta AI. Ces modifications apportent des gains de performance mesurables sur les tâches de segmentation sémantique, d'instance et panoptique, comme le souligne le DINOv3 model zoo.

L’architecture EoMT d’origine a été introduite dans l’article en vedette de CVPR 2025 Your ViT is Secretly an Image Segmentation Model de Tommie Kerssies, Niccolò Cavagnero, Alexander Hermans, Narges Norouzi, Giuseppe Averta, Bastian Leibe, Gijs Dubbelman et Daan de Geus. La mise à niveau DINOv3 conserve la même tête de segmentation légère et la même stratégie d’inférence basée sur des requêtes, tout en remplaçant l’encodeur par des points de contrôle ViT de DINOv3.

Astuces :

  • La configuration expose des paramètres spécifiques à DINOv3, tels que rope_theta et use_gated_mlp. Les grands squelettes DINOv3, comme dinov3-vitg14, s’attendent à use_gated_mlp=True.
  • Les modèles DINOv3 peuvent fonctionner sur une gamme plus large de résolutions grâce aux embeddings de position rotatifs. Le processeur d’images utilise par défaut des recadrages carrés, mais des tailles personnalisées peuvent être fournies via AutoImageProcessor.
  • Les points de contrôle pré-entraînés hébergés par le TU/e Mobile Perception Systems Lab fournissent des poids delta qui doivent être combinés avec les backbones DINOv3 en amont. Les utilitaires de conversion du dépôt officiel décrivent ce flux de travail en détail.

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

Exemples d'utilisation

Voici un exemple minimal montrant comment exécuter la segmentation panoptique avec un modèle EoMT basé sur DINOv3. Le même processeur d’images peut être réutilisé pour la segmentation sémantique ou la segmentation d’instances, simplement en changeant le point de contrôle.

import requests
import torch
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForUniversalSegmentation


model_id = "tue-mps/eomt-dinov3-coco-panoptic-base-640"
processor = AutoImageProcessor.from_pretrained(model_id)
model = AutoModelForUniversalSegmentation.from_pretrained(model_id, device_map="auto")

image = Image.open(requests.get("http://images.cocodataset.org/val2017/000000039769.jpg", stream=True).raw)

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

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

segmentation = processor.post_process_panoptic_segmentation(outputs, target_sizes=[image.size[::-1]])[0]
list(segmentation.keys())
['segmentation', 'segments_info']

EomtDinov3Config

classe transformers.EomtDinov3Config

< >

( 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 = 0is_encoder_decoder: bool = Falseid2label: 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 = Nonehidden_size: int = 1024num_hidden_layers: int = 24num_attention_heads: int = 16hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.0initializer_range: float = 0.02layer_norm_eps: float = 1e-06image_size: int | list[int] | tuple[int, int] = 640patch_size: int | list[int] | tuple[int, int] = 16num_channels: int = 3layerscale_value: float = 1.0drop_path_rate: float | int = 0.0num_upscale_blocks: int = 2attention_dropout: float | int = 0.0num_blocks: int = 4no_object_weight: float = 0.1class_weight: float = 2.0mask_weight: float = 5.0dice_weight: float = 5.0train_num_points: int = 12544oversample_ratio: float = 3.0importance_sample_ratio: float = 0.75num_queries: int = 200num_register_tokens: int = 4intermediate_size: int = 4096rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonequery_bias: bool = Truekey_bias: bool = Falsevalue_bias: bool = Trueproj_bias: bool = Truemlp_bias: bool = Trueuse_gated_mlp: bool = Falsepos_embed_shift: float | None = Nonepos_embed_jitter: float | None = Nonepos_embed_rescale: float | None = 2.0 )

Paramètres

  • hidden_size (int, facultatif, par défaut 1024) — Dimension des représentations cachées.
  • num_hidden_layers (int, facultatif, par défaut 24) — Nombre de couches cachées dans le décodeur Transformer.
  • num_attention_heads (int, facultatif, valeur par défaut 16) — Nombre de têtes d'attention pour chaque couche d'attention du décodeur Transformer.
  • hidden_act (str, facultatif, par défaut gelu) — La fonction d'activation non linéaire (fonction ou chaîne de caractères) du décodeur. Par exemple, "gelu", "relu", "silu", etc.
  • hidden_dropout_prob (Union[float, int], facultatif, par défaut 0.0) — La probabilité de dropout pour toutes les couches entièrement connectées des embeddings, de l'encodeur et du pooler.
  • initializer_range (float, facultatif, par défaut 0.02) — L'écart-type de la truncated_normal_initializer utilisé pour initialiser toutes les matrices de poids.
  • layer_norm_eps (float, facultatif, valeur par défaut 1e-06) — L'épsilon utilisé par les couches de normalisation de couche.
  • image_size (Union[int, list[int], tuple[int, int]], facultatif, par défaut 640) — La taille (résolution) de chaque image.
  • patch_size (Union[int, list[int], tuple[int, int]], facultatif, par défaut 16) — La taille (résolution) de chaque patch.
  • num_channels (int, facultatif, par défaut 3) — Le nombre de canaux d'entrée.
  • layerscale_value (float, facultatif, valeur par défaut 1.0) — Valeur initiale du paramètre LayerScale.
  • drop_path_rate (Union[float, int], facultatif, par défaut 0.0) — Taux de drop path pour la fusion des patches.
  • num_upscale_blocks (int, facultatif, valeur par défaut 2) — Nombre de blocs de remonte en résolution utilisés dans le décodeur ou la tête de segmentation.
  • attention_dropout (Union[float, int], facultatif, valeur par défaut 0.0) — Le taux de dropout appliqué aux probabilités d'attention.
  • num_blocks (int, facultatif, valeur par défaut 4) — Nombre de blocs de caractéristiques ou de stades dans l'architecture.
  • no_object_weight (float, facultatif, valeur par défaut 0.1) — Poids de la perte pour la classe « no object » dans la segmentation panoptique/instance.
  • class_weight (float, facultatif, par défaut 2.0) — Poids relatif de l'erreur de classification dans le coût d'appariement hongrois.
  • mask_weight (float, facultatif, valeur par défaut 5.0) — Poids relatif de la perte focale dans la perte de segmentation panoptique.
  • dice_weight (float, facultatif, par défaut 5.0) — Poids relatif de la perte dice dans la perte de segmentation panoptique.
  • train_num_points (int, facultatif, valeur par défaut 12544) — Nombre de points à échantillonner pour le calcul de la perte de masque pendant l’entraînement.
  • oversample_ratio (float, facultatif, valeur par défaut 3.0) — Ratio de suréchantillonnage utilisé dans l'échantillonnage de points pour l'entraînement du masque.
  • importance_sample_ratio (float, facultatif, valeur par défaut 0,75) — Ratio de points à échantillonner en fonction de l'importance pendant l'entraînement.
  • num_queries (int, facultatif, valeur par défaut 200) — Nombre de requêtes d'objets dans le Transformer.
  • num_register_tokens (int, facultatif, valeur par défaut : 4) — Nombre de jetons d'enregistrement apprenables ajoutés à l'entrée du transformeur.
  • intermediate_size (int, facultatif, par défaut 4096) — Dimension des représentations du MLP.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], facultatif) — Dictionnaire contenant les paramètres de configuration pour les embeddings RoPE. Le dictionnaire doit contenir une valeur pour rope_theta et, le cas échéant, les paramètres utilisés pour le mise à l’échelle si vous souhaitez utiliser RoPE avec des max_position_embeddings plus longs.
  • query_bias (bool, facultatif, par défaut True) — Indique s'il faut utiliser un biais dans la projection de requête.
  • key_bias (bool, facultatif, par défaut False) — Indique s'il faut utiliser un biais dans la projection des clés.
  • value_bias (bool, facultatif, par défaut True) — Indique s'il faut utiliser un biais dans la projection de valeur.
  • proj_bias (bool, facultatif, par défaut True) — Indique s'il faut utiliser un biais dans la projection de sortie.
  • mlp_bias (bool, facultatif, par défaut True) — Indique s'il faut utiliser un biais dans les couches up_proj, down_proj et gate_proj des couches MLP.
  • use_gated_mlp (bool, facultatif, par défaut False) — Indique s'il faut utiliser des couches MLP à porte.
  • pos_embed_shift (float, facultatif) — Valeur de décalage pour les embeddings de position.
  • pos_embed_jitter (float, facultatif) — Valeur de jitter pour les embeddings de position.
  • pos_embed_rescale (float, facultatif, valeur par défaut 2.0) — Valeur de remise à l'échelle pour les embeddings de position.

Ceci est la classe de configuration destinée à stocker la configuration d'un Eomt Dinov3Model. Elle est utilisée pour instancier un modèle Eomt Dinov3 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 du tue-mps/coco_panoptic_eomt_large_640_dinov3

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.

EomtDinov3PreTrainedModel

classe transformers.EomtDinov3PreTrainedModel

< >

( config: PreTrainedConfig*inputs**kwargs )

Paramètres

  • config (PreTrainedConfig) — 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.

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

( *args**kwargs )

Valeur factice pour un chemin pointé (par exemple torch.float32) : les chaînes d’accès aux attributs et les appels se comportent comme des décorateurs de pass-through, repr est le chemin pointé, et son utilisation comme classe de base substitue une base type ordinaire (PEP 560 __mro_entries__), de sorte que les vraies sous-classes conservent un métaclasse normal et que inspect.signature lit leur __init__ réel plutôt que celui d’une valeur factice.

EomtDinov3ForUniversalSegmentation

classe transformers.EomtDinov3ForUniversalSegmentation

< >

( config: EomtDinov3Config )

Paramètres

  • config (EomtDinov3Config) — 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 EoMT-DINOv3 avec une tête en haut pour la segmentation d'instances/sémantique/panoptique.

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: Tensormask_labels: list[torch.Tensor] | None = Noneclass_labels: list[torch.Tensor] | None = Nonepatch_offsets: list[torch.Tensor] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → EomtDinov3ForUniversalSegmentationOutput 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 EomtImageProcessor. Voir EomtImageProcessor.call() pour plus de détails (processor_class utilise EomtImageProcessor pour le traitement des images).
  • mask_labels (list[torch.Tensor], facultatif) — liste d'étiquettes de masque de forme (num_labels, height, width) à fournir à un modèle
  • class_labels (list[torch.LongTensor], facultatif) — liste des étiquettes de classes cibles de forme (num_labels, height, width) à fournir à un modèle. Elles identifient les étiquettes de mask_labels, par exemple l'étiquette de mask_labels[i][j] si class_labels[i][j].
  • patch_offsets (list[torch.Tensor], facultatif) — liste de tuples indiquant l’index de l’image ainsi que les positions de début et de fin des patches pour la segmentation sémantique.

Retourne

EomtDinov3ForUniversalSegmentationOutput ou tuple(torch.Tensor)

Un EomtDinov3ForUniversalSegmentationOutput 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 (EomtDinov3Config) et des entrées.

La méthode forward de EomtDinov3ForUniversalSegmentation 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.

  • loss (torch.Tensor, facultatif) — La perte calculée, renvoyée lorsque des étiquettes sont présentes.
  • class_queries_logits (torch.Tensor, facultatif) — Un tenseur de forme (batch_size, num_queries, num_labels + 1) représentant les classes proposées pour chaque requête. Notez que le + 1 est nécessaire car nous intégrons la classe nulle.
  • masks_queries_logits (torch.Tensor, facultatif) — Un tenseur de forme (batch_size, num_queries, height, width) représentant les masques proposés pour chaque requête.
  • last_hidden_state (torch.Tensor de forme (batch_size, num_channels, height, width)) — Derniers états cachés (carte de caractéristiques finale) de la dernière couche.
  • 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 + un pour la sortie de chaque étape) de forme (batch_size, sequence_length, hidden_size). États cachés de toutes les couches du modèle.
  • attentions (tuple(tuple(torch.Tensor)), facultatif, renvoyé lorsque output_attentions=True est passé ou lorsque config.output_attentions=True) — Tuple de tuple(torch.Tensor) (un par couche) de forme (batch_size, num_heads, sequence_length, sequence_length). Poids des attentions auto et croisées du décodeur du transformer.
  • patch_offsets (list[torch.Tensor], facultatif) — liste de tuples indiquant l’index de l’image ainsi que les positions de début et de fin des patches pour la segmentation sémantique.
Update on GitHub