Transformers documentation

ConvNeXt V2

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 2023-01-02 et ajouté à Hugging Face Transformers le 2023-03-14.

ConvNeXt V2

Aperçu

Le modèle ConvNeXt V2 a été proposé dans ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders par Sanghyun Woo, Shoubhik Debnath, Ronghang Hu, Xinlei Chen, Zhuang Liu, In So Kweon, Saining Xie. ConvNeXt V2 est un modèle purement convolutif (ConvNet), inspiré de la conception des Vision Transformers, et succède à ConvNeXT.

L'abstract de l'article est le suivant :

Porté par des architectures améliorées et de meilleurs cadres d’apprentissage de représentations, le domaine de la reconnaissance visuelle a connu une modernisation rapide et une amélioration notable des performances au début des années 2020. Par exemple, les ConvNets modernes, représentés par ConvNeXt, ont démontré de solides performances dans divers scénarios. Bien que ces modèles aient été initialement conçus pour l’apprentissage supervisé avec les étiquettes ImageNet, ils peuvent également bénéficier potentiellement de techniques d’apprentissage auto-supervisé telles que les auto-encodeurs masqués (MAE). Cependant, nous avons constaté que la simple combinaison de ces deux approches conduit à des performances médiocres. Dans cet article, nous proposons un cadre d’auto-encodeur masqué entièrement convolutif et une nouvelle couche de Normalisation de Réponse Globale (GRN) qui peut être ajoutée à l’architecture ConvNeXt pour renforcer la compétition inter-canaux des caractéristiques. Cette co-conception des techniques d’apprentissage auto-supervisé et de l’amélioration architecturale donne naissance à une nouvelle famille de modèles appelée ConvNeXt V2, qui améliore significativement les performances des ConvNets purs sur divers benchmarks de reconnaissance, y compris la classification ImageNet, la détection COCO et la segmentation ADE20K. Nous fournissons également des modèles ConvNeXt V2 pré-entraînés de différentes tailles, allant d’un modèle Atto efficace de 3,7M de paramètres avec une précision top-1 de 76,7 % sur ImageNet, à un modèle Huge de 650M qui atteint une précision record de 88,9 % en utilisant uniquement des données d’entraînement publiques.

drawing ConvNeXt V2 architecture. Taken from the original paper.

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

Ressources

Une liste de ressources officielles Hugging Face et de la communauté (indiquées par 🌎) pour vous aider à démarrer avec ConvNeXt V2.

Image Classification

Si vous souhaitez soumettre une ressource pour qu'elle soit incluse ici, n'hésitez pas à ouvrir une Pull Request et nous la examinerons ! La ressource devrait idéalement démontrer quelque chose de nouveau plutôt que de dupliquer une ressource existante.

ConvNextV2Config

classe transformers.ConvNextV2Config

< >

( 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 = Nonenum_channels: int = 3patch_size: int | list[int] | tuple[int, int] = 4num_stages: int = 4hidden_sizes: list[int] | tuple[int, ...] | None = (96, 192, 384, 768)depths: list[int] | tuple[int, ...] | None = (3, 3, 9, 3)hidden_act: str = 'gelu'initializer_range: float = 0.02layer_norm_eps: float = 1e-12drop_path_rate: float | int = 0.0image_size: int | list[int] | tuple[int, int] = 224_out_features: list[str] | None = None_out_indices: list[int] | None = None )

Paramètres

  • num_channels (int, facultatif, par défaut 3) — Le nombre de canaux d'entrée.
  • patch_size (Union[int, list[int], tuple[int, int]], facultatif, par défaut 4) — La taille (résolution) de chaque patch.
  • num_stages (int, facultatif, valeur par défaut : 4) — Le nombre de stades du modèle.
  • hidden_sizes (Union[list[int], tuple[int, ...]], facultatif, par défaut (96, 192, 384, 768)) — Dimension (taille cachée) à chaque étape du modèle.
  • depths (Union[list[int], tuple[int, ...]], facultatif, par défaut (3, 3, 9, 3)) — Profondeur de chaque couche du 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.
  • 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-12) — L'épsilon utilisé par les couches de normalisation de couche.
  • drop_path_rate (Union[float, int], facultatif, par défaut 0.0) — Taux de drop path pour la fusion des patches.
  • image_size (Union[int, list[int], tuple[int, int]], facultatif, par défaut 224) — La taille (résolution) de chaque image.

Ceci est la classe de configuration destinée à stocker la configuration d'un ConvNextV2Model. Elle est utilisée pour instancier un modèle Convnextv2 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 facebook/convnextv2-tiny-1k-224

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.

Exemple :

>>> from transformers import ConvNeXTV2Config, ConvNextV2Model

>>> # Initializing a ConvNeXTV2 convnextv2-tiny-1k-224 style configuration
>>> configuration = ConvNeXTV2Config()

>>> # Initializing a model (with random weights) from the convnextv2-tiny-1k-224 style configuration
>>> model = ConvNextV2Model(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

ConvNextV2Model

classe transformers.ConvNextV2Model

< >

( config: ConvNextV2Config )

Paramètres

  • config (ConvNextV2Config) — 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 Convnextv2 brut, qui produit des états cachés bruts sans aucune tête spécifique 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: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPoolingAndNoAttention or tuple(torch.Tensor)

Paramètres

  • pixel_values (torch.Tensor de forme (batch_size, num_channels, image_size, image_size), facultatif) — Les tenseurs correspondant aux images d’entrée. Les valeurs de pixels peuvent être obtenues à l’aide de ConvNextImageProcessor. Voir ConvNextImageProcessor.call() pour plus de détails (processor_class utilise ConvNextImageProcessor pour le traitement des images).

Retourne

BaseModelOutputWithPoolingAndNoAttention ou tuple(torch.Tensor)

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

La méthode forward du ConvNextV2Model 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.

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

  • pooler_output (torch.Tensor de forme (batch_size, hidden_size)) — État caché de la dernière couche après une opération de pooling sur les dimensions spatiales.

  • 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, num_channels, height, width).

    États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.

Exemple :

ConvNextV2ForImageClassification

classe transformers.ConvNextV2ForImageClassification

< >

( config: ConvNextV2Config )

Paramètres

  • config (ConvNextV2Config) — 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 ConvNextV2 avec une tête de classification d'images au sommet (une couche linéaire au-dessus des fonctionnalités agrégées), par exemple pour ImageNet.

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: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs ) → ImageClassifierOutputWithNoAttention or tuple(torch.Tensor)

Paramètres

  • pixel_values (torch.Tensor de forme (batch_size, num_channels, image_size, image_size), facultatif) — Les tenseurs correspondant aux images d’entrée. Les valeurs de pixels peuvent être obtenues à l’aide de ConvNextImageProcessor. Voir ConvNextImageProcessor.call() pour plus de détails (processor_class utilise ConvNextImageProcessor pour le traitement des images).
  • labels (torch.LongTensor de forme (batch_size,), facultatif) — Étiquettes pour le calcul de la perte de classification/régression d'image. Les indices doivent être dans [0, ..., config.num_labels - 1]. Si config.num_labels == 1, une perte de régression est calculée (perte du carré moyen). Si config.num_labels > 1, une perte de classification est calculée (entropie croisée).

Retourne

ImageClassifierOutputWithNoAttention ou tuple(torch.Tensor)

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

La méthode forward de ConvNextV2ForImageClassification 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 de forme (1,), facultatif, renvoyé lorsque labels est fourni) — Perte de classification (ou de régression si config.num_labels==1).
  • logits (torch.Tensor de forme (batch_size, config.num_labels)) — Scores de classification (ou de régression si config.num_labels==1) (avant SoftMax).
  • 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 étape) de forme (batch_size, num_channels, height, width). États cachés (aussi appelés cartes de caractéristiques) du modèle à la sortie de chaque étape.

Exemple :

>>> from transformers import AutoImageProcessor, ConvNextV2ForImageClassification
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/convnextv2-tiny-1k-224")
>>> model = ConvNextV2ForImageClassification.from_pretrained("facebook/convnextv2-tiny-1k-224")

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

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...
Update on GitHub