Transformers documentation
EoMT-DINOv3
Ce modèle a été publié dans HF papers le 2025-03-24 et contribué à Hugging Face Transformers le 2026-02-02.
EoMT-DINOv3
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_thetaetuse_gated_mlp. Les grands squelettes DINOv3, commedinov3-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
< source >( 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éfaut1024) — Dimension des représentations cachées. - num_hidden_layers (
int, facultatif, par défaut24) — Nombre de couches cachées dans le décodeur Transformer. - num_attention_heads (
int, facultatif, valeur par défaut16) — Nombre de têtes d'attention pour chaque couche d'attention du décodeur Transformer. - hidden_act (
str, facultatif, par défautgelu) — 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éfaut0.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éfaut0.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éfaut1e-06) — L'épsilon utilisé par les couches de normalisation de couche. - image_size (
Union[int, list[int], tuple[int, int]], facultatif, par défaut640) — La taille (résolution) de chaque image. - patch_size (
Union[int, list[int], tuple[int, int]], facultatif, par défaut16) — La taille (résolution) de chaque patch. - num_channels (
int, facultatif, par défaut3) — 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éfaut0.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éfaut0.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éfaut2.0) — Poids relatif de l'erreur de classification dans le coût d'appariement hongrois. - mask_weight (
float, facultatif, valeur par défaut5.0) — Poids relatif de la perte focale dans la perte de segmentation panoptique. - dice_weight (
float, facultatif, par défaut5.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éfaut4096) — 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 pourrope_thetaet, le cas échéant, les paramètres utilisés pour le mise à l’échelle si vous souhaitez utiliser RoPE avec desmax_position_embeddingsplus longs. - query_bias (
bool, facultatif, par défautTrue) — Indique s'il faut utiliser un biais dans la projection de requête. - key_bias (
bool, facultatif, par défautFalse) — Indique s'il faut utiliser un biais dans la projection des clés. - value_bias (
bool, facultatif, par défautTrue) — Indique s'il faut utiliser un biais dans la projection de valeur. - proj_bias (
bool, facultatif, par défautTrue) — Indique s'il faut utiliser un biais dans la projection de sortie. - mlp_bias (
bool, facultatif, par défautTrue) — 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éfautFalse) — 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
< source >( 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.
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
< source >( 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
< source >( 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.Tensorde 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_classutilise 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 demask_labels, par exemple l'étiquette demask_labels[i][j]siclass_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
Moduleplutô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+ 1est 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.Tensorde 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é lorsqueoutput_hidden_states=Trueest passé ou lorsqueconfig.output_hidden_states=True) — Tuple detorch.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é lorsqueoutput_attentions=Trueest passé ou lorsqueconfig.output_attentions=True) — Tuple detuple(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.