Transformers documentation

TimmWrapper

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

TimmWrapper

Aperçu

Classe d'aide permettant de charger des modèles timm pour les utiliser avec la bibliothèque transformers et ses autoclasses.

from urllib.request import urlopen

import torch
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForImageClassification


# Load image
image = Image.open(urlopen(
    'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))

# Load model and image processor
checkpoint = "timm/resnet50.a1_in1k"
image_processor = AutoImageProcessor.from_pretrained(checkpoint)
model = AutoModelForImageClassification.from_pretrained(checkpoint).eval( device_map="auto")

# Preprocess image
inputs = image_processor(image)

# Forward pass
with torch.no_grad():
    logits = model(**inputs).logits

# Get top 5 predictions
top5_probabilities, top5_class_indices = torch.topk(logits.softmax(dim=1) * 100, k=5)

Ressources

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

Image Classification

Pour un aperçu plus détaillé, veuillez lire le article de blog officiel sur l'intégration de timm.

TimmWrapperConfig

classe transformers.TimmWrapperConfig

< >

( 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 = Nonearchitecture: str = 'resnet50'initializer_range: float = 0.02do_pooling: bool = Truemodel_args: dict[str, typing.Any] | None = None )

Paramètres

  • architecture (str, facultatif, par défaut "resnet50") — L’architecture timm à charger.
  • 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.
  • do_pooling (bool, facultatif, par défaut True) — Indique s'il faut effectuer un pooling sur last_hidden_state dans TimmWrapperModel ou non.
  • model_args (dict[str, Any], facultatif) — Arguments supplémentaires à passer à la fonction timm.create_model. Par exemple, model_args={"depth": 3} pour timm/vit_base_patch32_clip_448.laion2b_ft_in12k_in1k afin de créer un modèle avec 3 blocs. La valeur par défaut est None.

Ceci est la classe de configuration destinée à stocker la configuration d'un TimmWrapperModel. Elle est utilisée pour instancier un modèle Timm Wrapper en fonction des arguments spécifiés, en définissant l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de resnet50

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 TimmWrapperModel

>>> # Initializing a timm model
>>> model = TimmWrapperModel.from_pretrained("timm/resnet18.a1_in1k")

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

TimmWrapperImageProcessor

classe transformers.TimmWrapperImageProcessor

< >

( pretrained_cfg: dictarchitecture: str | None = None**kwargs )

Paramètres

  • pretrained_cfg (dict[str, Any]) — La configuration du modèle pré-entraîné utilisée pour résoudre les transformations d'évaluation et d'entraînement.
  • architecture (Optional[str], facultatif) — Nom de l'architecture du modèle.

Classe enveloppe pour les modèles timm destinée à être utilisée dans transformers.

prétraiter

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]return_tensors: str | transformers.utils.generic.TensorType | None = 'pt' )

Paramètres

  • images (ImageInput) — Image à prétraiter. Attend une image unique ou un lot d'images
  • return_tensors (str ou TensorType, facultatif) — Le type de tenseurs à retourner.

Prétraitez une image ou un lot d'images.

TimmWrapperModel

classe transformers.TimmWrapperModel

< >

( config: TimmWrapperConfig )

Classe enveloppe pour les modèles timm destinés à être utilisés dans transformers.

forward

< >

( pixel_values: Tensoroutput_attentions: bool | None = Noneoutput_hidden_states: bool | list[int] | None = Nonereturn_dict: bool | None = Nonedo_pooling: bool | None = Noneuse_cache: bool | None = None**kwargs ) → TimmWrapperModelOutput 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 TimmWrapperImageProcessor. Voir TimmWrapperImageProcessor.call() pour plus de détails (processor_class utilise TimmWrapperImageProcessor pour le traitement des images).
  • output_attentions (bool, facultatif) — Indique s'il faut retourner les tenseurs d'attention de toutes les couches d'attention. Non compatible avec les modèles enveloppés par timm.
  • output_hidden_states (bool, facultatif) — Indique s'il faut retourner les états cachés de toutes les couches. Non compatible avec les modèles enveloppés par timm.
  • return_dict (bool, facultatif) — Indique s'il faut retourner un ModelOutput plutôt qu'un simple tuple.
  • do_pooling (bool, facultatif) — Indique s'il faut effectuer un pooling sur le TimmWrapperModel ou non. Si None est passé, la valeur de do_pooling issue de la configuration est utilisée.
  • use_cache (bool, facultatif) — Si défini sur True, les états clé-valeur past_key_values sont renvoyés et peuvent être utilisés pour accélérer le décodage (voir past_key_values).

Retourne

TimmWrapperModelOutput ou tuple(torch.Tensor)

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

La méthode forward de TimmWrapperModel 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) — Le dernier état caché du modèle, en sortie avant l'application de la tête de classification.
  • pooler_output (torch.Tensor, facultatif) — La sortie agrégée dérivée de l'état caché final, le cas échéant.
  • hidden_states (tuple(torch.Tensor), facultatif, renvoyé si output_hidden_states=True est défini ou si config.output_hidden_states=True) — Un tuple contenant les états cachés intermédiaires du modèle à la sortie de chaque couche ou des couches spécifiées.
  • attentions (tuple(torch.Tensor), facultatif, renvoyé si output_attentions=True est défini ou si config.output_attentions=True.) — Un tuple contenant les poids d'attention intermédiaires du modèle à la sortie de chaque couche. Remarque : Actuellement, les modèles Timm ne prennent pas en charge la sortie des attentions.

Exemples :

>>> import torch
>>> from PIL import Image
>>> from urllib.request import urlopen
>>> from transformers import AutoModel, AutoImageProcessor

>>> # Load image
>>> image = Image.open(urlopen(
...     'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
... ))

>>> # Load model and image processor
>>> checkpoint = "timm/resnet50.a1_in1k"
>>> image_processor = AutoImageProcessor.from_pretrained(checkpoint)
>>> model = AutoModel.from_pretrained(checkpoint).eval()

>>> # Preprocess image
>>> inputs = image_processor(image)

>>> # Forward pass
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> # Get pooled output
>>> pooled_output = outputs.pooler_output

>>> # Get last hidden state
>>> last_hidden_state = outputs.last_hidden_state

TimmWrapperForImageClassification

classe transformers.TimmWrapperForImageClassification

< >

( config: TimmWrapperConfig )

Classe enveloppe pour les modèles timm destinés à être utilisés dans transformers pour la classification d'images.

forward

< >

( pixel_values: Tensorlabels: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | list[int] | None = Nonereturn_dict: bool | None = None**kwargs ) → ImageClassifierOutput 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 TimmWrapperImageProcessor. Voir TimmWrapperImageProcessor.call() pour plus de détails (processor_class utilise TimmWrapperImageProcessor 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).
  • output_attentions (bool, facultatif) — Indique s'il faut retourner les tenseurs d'attention de toutes les couches d'attention. Non compatible avec les modèles enveloppés par timm.
  • output_hidden_states (bool, facultatif) — Indique s'il faut retourner les états cachés de toutes les couches. Non compatible avec les modèles enveloppés par timm.
  • return_dict (bool, facultatif) — Indique s'il faut retourner un ModelOutput plutôt qu'un simple tuple. **kwargs : Arguments supplémentaires passés au forward du modèle timm.

Retourne

ImageClassifierOutput ou tuple(torch.Tensor)

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

La méthode forward de TimmWrapperForImageClassification 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, sequence_length, hidden_size). États cachés (également appelés cartes de caractéristiques) du modèle à la sortie de chaque étape.

  • 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, patch_size, sequence_length).

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

Exemples :

>>> import torch
>>> from PIL import Image
>>> from urllib.request import urlopen
>>> from transformers import AutoModelForImageClassification, AutoImageProcessor

>>> # Load image
>>> image = Image.open(urlopen(
...     'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
... ))

>>> # Load model and image processor
>>> checkpoint = "timm/resnet50.a1_in1k"
>>> image_processor = AutoImageProcessor.from_pretrained(checkpoint)
>>> model = AutoModelForImageClassification.from_pretrained(checkpoint).eval()

>>> # Preprocess image
>>> inputs = image_processor(image)

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

>>> # Get top 5 predictions
>>> top5_probabilities, top5_class_indices = torch.topk(logits.softmax(dim=1) * 100, k=5)
Update on GitHub