Table des matières
Que sont les transformateurs de vision ?
Qu'est-ce que le biais inductif ?
Comment fonctionnent les Vision Transformers
Démo de code
Maison développement back-end Tutoriel Python Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs

Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs

Jan 23, 2025 pm 01:37 PM

Au cours des dernières années, les transformateurs ont transformé le domaine de la PNL en apprentissage automatique. Modèles comme GPT et BERT ont établi de nouvelles références dans la compréhension et la génération du langage humain. Désormais, le même principe est appliqué au domaine de la vision par ordinateur. Un développement récent dans le domaine de la vision par ordinateur est la vision transformateurs ou ViT. Comme détaillé dans l'article « Une Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs vaut 16 x 16 mots : transformateurs pour la reconnaissance d'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss à grande échelle », Les ViT et les modèles basés sur des transformateurs sont conçus pour remplacer les modèles convolutifs. réseaux de neurones (CNN). Les Vision Transformers sont une nouvelle approche de la résolution de problèmes informatiques vision. Au lieu de s'appuyer sur les réseaux de neurones convolutifs traditionnels (CNN), qui constituent l'épine dorsale des tâches liées à l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs depuis des décennies, Les ViT utilisent l'architecture du transformateur pour traiter les Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss. Ils traitent des patchs d'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs comme des mots dans une phrase, permettant au modèle d'apprendre le relations entre ces correctifs, tout comme il apprend le contexte dans un paragraphe de texte.

Contrairement aux CNN, les ViT divisent les Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss d'entrée en patchs, les sérialisent en vecteurs et réduire leur dimensionnalité à l'aide d'une matrice multiplication. Un codeur de transformateur traite ensuite ces vecteurs comme intégrations de jetons. Dans cet article, nous explorerons les transformateurs de vision et leurs principales différences avec les réseaux de neurones convolutifs. Qu'est-ce qui fait ce qui les intéresse particulièrement est leur capacité à comprendre le monde modèles dans une Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs, ce avec quoi les CNN peuvent avoir du mal.

Que sont les transformateurs de vision ?

Les transformateurs de vision utilisent le concept d'attention et les transformateurs pour Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss de processus - ceci est similaire aux transformateurs dans un langage naturel contexte de traitement (NLP). Cependant, au lieu d'utiliser des jetons, l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs est divisé en patchs et fourni sous la forme d’une séquence linéaire intégrée. Ces les patchs sont traités de la même manière que les jetons ou les mots sont traités en PNL.

Au lieu de regarder l'ensemble de l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs simultanément, un ViT coupe l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs en petits morceaux comme un puzzle. Chaque pièce est tournée dans une liste de nombres (un vecteur) qui décrit ses caractéristiques, puis le modèle examine toutes les pièces et détermine leur relation avec les uns les autres en utilisant un mécanisme de transformateur.

Contrairement aux CNN, les ViT fonctionnent en appliquant des filtres ou des noyaux spécifiques sur une Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs pour détecter des caractéristiques spécifiques, telles que des motifs de bords. C'est le processus de convolution qui est très similaire à une imprimante numérisant un Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs. Ces filtres glissent sur toute l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs et mettent en évidence caractéristiques significatives. Le réseau empile ensuite plusieurs couches de ces filtres, identifiant progressivement des modèles plus complexes.
Avec les CNN, la mise en commun des couches réduit la taille des cartes de caractéristiques. Ces les couches analysent les entités extraites pour faire des prédictions utiles pour reconnaissance d'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss, détection d'objets, etc. Cependant, les CNN ont une portée fixe champ récepteur, limitant ainsi la capacité de modéliser à longue portée dépendances.

Comment CNN visualise les Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss ?Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs

Les ViT, bien qu'ils aient plus de paramètres, utilisent des mécanismes d'auto-attention pour une meilleure représentation des fonctionnalités et réduire le besoin de couches plus profondes. Les CNN nécessitent une architecture beaucoup plus profonde pour obtenir un résultat similaire. pouvoir de représentation, ce qui entraîne une augmentation des coûts de calcul.

De plus, les CNN ne peuvent pas capturer des modèles d'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss au niveau mondial car leurs filtres se concentrent sur les régions locales d’une Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs. Pour comprendre le Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs entière ou relations distantes, les CNN reposent sur l'empilement de plusieurs couches et la mise en commun, élargissant le champ de vision. Toutefois, ce processus peut perdent des informations globales à mesure qu'elles agrègent les détails étape par étape.

Les ViT, quant à eux, divisent l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs en patchs qui sont traités comme des jetons d’entrée individuels. En utilisant leur auto-attention, les ViT comparent tous les correctifs simultanément et découvrez leurs relations. Cela leur permet pour capturer des modèles et des dépendances sur toute l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs sans en les construisant couche par couche.

Qu'est-ce que le biais inductif ?

Avant d'aller plus loin, il est important de comprendre le concept de biais inductif. Le biais inductif fait référence à l'hypothèse qu'un modèle fait à propos des données structure; pendant la formation, cela aide le modèle à être plus généralisé et réduire les biais. Dans les CNN, les biais inductifs incluent :

  1. Localité : les caractéristiques des Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss (comme les bords ou les textures) sont localisées dans de petites régions.
  2. Structure de quartier bidimensionnelle : les pixels proches sont plus susceptibles être liés, les filtres fonctionnent donc sur des régions spatialement adjacentes.
  3. Équivariance de traduction : les caractéristiques détectées dans une partie de l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs, comme un bord, conservent la même sens s'ils apparaissent dans une autre partie.

Ces biais rendent les CNN très efficaces pour les tâches d'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs, car ils sont intrinsèquement conçu pour exploiter les capacités spatiales et structurelles des Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss propriétés.

Les transformateurs de vision (ViT) ont beaucoup moins de biais inductifs spécifiques à l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs que les CNN. Dans les ViT :

  • Traitement global : les couches d'auto-attention opèrent sur l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs entière, ce qui permet au modèle de capturer les relations globales et dépendances sans être limité par les régions locales.
  • Structure 2D minimale : La structure 2D de l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs n'est utilisé qu'au début (lorsque l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs est divisée en patchs) et pendant le réglage fin (pour ajuster les intégrations positionnelles pour différents résolutions). Contrairement aux CNN, les ViT ne supposent pas que les pixels proches sont nécessairement liés.
  • Relations spatiales apprises : intégrations positionnelles dans Les ViT ne codent pas de relations spatiales 2D spécifiques lors de l'initialisation. Au lieu de cela, le modèle apprend toutes les relations spatiales à partir des données pendant la formation.

Comment fonctionnent les Vision Transformers

Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs

Vision Transformers utilise l'architecture standard des Transformers développé pour les séquences de texte 1D. Pour traiter les Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss 2D, ils sont divisé en patchs plus petits de taille fixe, tels que les pixels P P, qui sont aplatis en vecteurs. Si l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs a les dimensions H  W avec C canaux, le nombre total de patchs est N = H W / P P le nombre effectif longueur de la séquence d’entrée pour le transformateur. Ces patchs aplatis sont puis projeté linéairement dans un espace D de dimension fixe, appelé intégration de patchs.

Un jeton spécial apprenable, similaire au jeton [CLS] dans BERT, est ajouté au début de la séquence d’intégrations de correctifs. Ce jeton apprend un représentation d'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs globale qui est ensuite utilisée pour la classification. De plus, des intégrations positionnelles sont ajoutées aux intégrations de correctifs pour coder les informations de position, aidant le modèle à comprendre l'espace structure de l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs.

La séquence d'intégrations passe par l'encodeur Transformer, qui alterne entre deux opérations principales : l'auto-attention multi-têtes (MSA) et un réseau neuronal à action directe, également appelé bloc MLP. Chaque couche inclut la normalisation des couches (LN) appliqué avant ces opérations et connexions résiduelles ajoutées ensuite pour stabiliser l’entraînement. La sortie de l'encodeur du transformateur, spécifiquement l'état du jeton [CLS], est utilisé comme valeur de l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs représentation.

Une simple tête est ajoutée au jeton final [CLS] pour la classification tâches. Lors du pré-entraînement, cette tête est un petit perceptron multicouche (MLP), lors du réglage fin, il s'agit généralement d'une seule couche linéaire. Ce l'architecture permet aux ViT de modéliser efficacement les relations mondiales entre les patchs et utiliser toute la puissance de l'auto-attention pour l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs compréhension.

Dans un modèle hybride Vision Transformer, au lieu de diviser directement Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss brutes en patchs, la séquence d'entrée est dérivée de cartes de fonctionnalités généré par un CNN. Le CNN traite d'abord l'Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs, en extrayant des caractéristiques spatiales significatives, qui sont ensuite utilisées pour créer des correctifs. Ces patchs sont aplatis et projetés dans un espace de dimension fixe en utilisant la même projection linéaire entraînable que dans Vision standard Transformateurs. Un cas particulier de cette approche est l'utilisation de patchs de taille 1×1, où chaque patch correspond à un seul emplacement spatial dans le Carte des caractéristiques de CNN.

Dans ce cas, les dimensions spatiales de la carte des caractéristiques sont aplati, et la séquence résultante est projetée dans le Dimension d'entrée du transformateur. Comme pour le ViT standard, un un jeton de classification et des intégrations positionnelles sont ajoutés pour conserver informations de position et pour permettre une compréhension globale de l’Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs. Ce l'approche hybride exploite les atouts d'extraction de fonctionnalités locales des CNN tout en les combinant avec les capacités de modélisation globale de Transformateurs.

Démo de code

Voici le bloc de code sur la façon d'utiliser les transformateurs de vision sur Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss.

# Install the necessary libraries  pip install -q transformers
Copier après la connexion
from transformers import ViTForImageClassification  
from PIL import Image  
from transformers import ViTImageProcessor
Copier après la connexion
import requests  
import torch
Copier après la connexion
# Load the model and move it to ‘GPU’  device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224')  model.to(device)
Copier après la connexion
# Load the Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs to perform predictions  url = 'link to your Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs'  Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs = Image.open(requests.get(url, stream=True).raw)processor = ViTImageProcessor.from_pretrained('google/vit-base-patch16-224')  inputs = processor(Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss=Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs, return_tensors="pt").to(device)  pixel_values = inputs.pixel_values  
# print(pixel_values.shape)
Copier après la connexion

Le Le modèle ViT traite l’Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs. Il comprend un encodeur de type BERT et un tête de classification linéaire située au-dessus de l'état caché final de le jeton [CLS].

with torch.no_grad():  
  outputs = model(pixel_values)  logits = outputs.logits# logits.shapeprediction = logits.argmax(-1)  print("Predicted class:", model.config.id2label[prediction.item()])
Copier après la connexion

Voici une implémentation de base de Vision Transformer (ViT) à l'aide de PyTorch. Ce le code inclut les composants de base : intégration de correctifs, codage positionnel, et l'encodeur Transformer. Cela peut être utilisé pour une classification simple tâches.

import torchimport torch.nn as nnimport torch.nn.functional as Fclass VisionTransformer(nn.Module):
    def __init__(self, img_size=224, patch_size=16, num_classes=1000, dim=768, depth=12, heads=12, mlp_dim=3072, dropout=0.1):
        super(VisionTransformer, self).__init__()
        
        # Image and patch dimensions
        assert img_size % patch_size == 0, "Image size must be divisible by patch size"
        self.num_patches = (img_size // patch_size) ** 2
        self.patch_dim = (3 * patch_size ** 2)  # Assuming 3 channels (RGB)
        
        # Layers
        self.patch_embeddings = nn.Linear(self.patch_dim, dim)
        self.position_embeddings = nn.Parameter(torch.randn(1, self.num_patches   1, dim))
        self.cls_token = nn.Parameter(torch.randn(1, 1, dim))
        self.dropout = nn.Dropout(dropout)
        
        # Transformer Encoder
        self.transformer = nn.TransformerEncoder(
            nn.TransformerEncoderLayer(d_model=dim, nhead=heads, dim_feedforward=mlp_dim, dropout=dropout),
            num_layers=depth        )
        
        # MLP Head for classification
        self.mlp_head = nn.Sequential(
            nn.LayerNorm(dim),
            nn.Linear(dim, num_classes)
        )
    
    def forward(self, x):
        # Flatten patches and embed
        batch_size, channels, height, width = x.shape
        patch_size = height // int(self.num_patches ** 0.5)

        x = x.unfold(2, patch_size, patch_size).unfold(3, patch_size, patch_size)
        x = x.contiguous().view(batch_size, 3, patch_size, patch_size, -1)
        x = x.permute(0, 4, 1, 2, 3).flatten(2).permute(0, 2, 1)
        x = self.patch_embeddings(x)
        
        # Add positional embeddings
        cls_tokens = self.cls_token.expand(batch_size, -1, -1)
        x = torch.cat((cls_tokens, x), dim=1)
        x = x   self.position_embeddings
        x = self.dropout(x)
        
        # Transformer Encoder
        x = self.transformer(x)
        
        # Classification Head
        x = x[:, 0]  # CLS token
        return self.mlp_head(x)# Example usageif __name__ == "__main__":
    model = VisionTransformer(img_size=224, patch_size=16, num_classes=10, dim=768, depth=12, heads=12, mlp_dim=3072)
    print(model)
    
    dummy_img = torch.randn(8, 3, 224, 224)  # Batch of 8 Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurss, 3 channels, 224x224 size
    preds = model(dummy_img)
    print(preds.shape)  # Output: [8, 10] (Batch size, Number of classes)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1664
14
Tutoriel PHP
1269
29
Tutoriel C#
1249
24
Python vs C: applications et cas d'utilisation comparés Python vs C: applications et cas d'utilisation comparés Apr 12, 2025 am 12:01 AM

Python convient à la science des données, au développement Web et aux tâches d'automatisation, tandis que C convient à la programmation système, au développement de jeux et aux systèmes intégrés. Python est connu pour sa simplicité et son écosystème puissant, tandis que C est connu pour ses capacités de contrôle élevées et sous-jacentes.

Python: jeux, GUIS, et plus Python: jeux, GUIS, et plus Apr 13, 2025 am 12:14 AM

Python excelle dans les jeux et le développement de l'interface graphique. 1) Le développement de jeux utilise Pygame, fournissant des fonctions de dessin, audio et d'autres fonctions, qui conviennent à la création de jeux 2D. 2) Le développement de l'interface graphique peut choisir Tkinter ou Pyqt. Tkinter est simple et facile à utiliser, PYQT a des fonctions riches et convient au développement professionnel.

Python vs C: courbes d'apprentissage et facilité d'utilisation Python vs C: courbes d'apprentissage et facilité d'utilisation Apr 19, 2025 am 12:20 AM

Python est plus facile à apprendre et à utiliser, tandis que C est plus puissant mais complexe. 1. La syntaxe Python est concise et adaptée aux débutants. Le typage dynamique et la gestion automatique de la mémoire le rendent facile à utiliser, mais peuvent entraîner des erreurs d'exécution. 2.C fournit des fonctionnalités de contrôle de bas niveau et avancées, adaptées aux applications haute performance, mais a un seuil d'apprentissage élevé et nécessite une gestion manuelle de la mémoire et de la sécurité.

Python et temps: tirer le meilleur parti de votre temps d'étude Python et temps: tirer le meilleur parti de votre temps d'étude Apr 14, 2025 am 12:02 AM

Pour maximiser l'efficacité de l'apprentissage de Python dans un temps limité, vous pouvez utiliser les modules DateTime, Time et Schedule de Python. 1. Le module DateTime est utilisé pour enregistrer et planifier le temps d'apprentissage. 2. Le module de temps aide à définir l'étude et le temps de repos. 3. Le module de planification organise automatiquement des tâches d'apprentissage hebdomadaires.

Python vs. C: Explorer les performances et l'efficacité Python vs. C: Explorer les performances et l'efficacité Apr 18, 2025 am 12:20 AM

Python est meilleur que C dans l'efficacité du développement, mais C est plus élevé dans les performances d'exécution. 1. La syntaxe concise de Python et les bibliothèques riches améliorent l'efficacité du développement. Les caractéristiques de type compilation et le contrôle du matériel de CC améliorent les performances d'exécution. Lorsque vous faites un choix, vous devez peser la vitesse de développement et l'efficacité de l'exécution en fonction des besoins du projet.

Python: automatisation, script et gestion des tâches Python: automatisation, script et gestion des tâches Apr 16, 2025 am 12:14 AM

Python excelle dans l'automatisation, les scripts et la gestion des tâches. 1) Automatisation: La sauvegarde du fichier est réalisée via des bibliothèques standard telles que le système d'exploitation et la fermeture. 2) Écriture de script: utilisez la bibliothèque PSUTIL pour surveiller les ressources système. 3) Gestion des tâches: utilisez la bibliothèque de planification pour planifier les tâches. La facilité d'utilisation de Python et la prise en charge de la bibliothèque riche en font l'outil préféré dans ces domaines.

Quelle partie fait partie de la bibliothèque standard Python: listes ou tableaux? Quelle partie fait partie de la bibliothèque standard Python: listes ou tableaux? Apr 27, 2025 am 12:03 AM

PythonlistSaReparmentofthestandardLibrary, tandis que les coloccules de colocède, tandis que les colocculations pour la base de la Parlementaire, des coloments de forage polyvalent, tandis que la fonctionnalité de la fonctionnalité nettement adressée.

Apprendre Python: 2 heures d'étude quotidienne est-elle suffisante? Apprendre Python: 2 heures d'étude quotidienne est-elle suffisante? Apr 18, 2025 am 12:22 AM

Est-ce suffisant pour apprendre Python pendant deux heures par jour? Cela dépend de vos objectifs et de vos méthodes d'apprentissage. 1) Élaborer un plan d'apprentissage clair, 2) Sélectionnez les ressources et méthodes d'apprentissage appropriées, 3) la pratique et l'examen et la consolidation de la pratique pratique et de l'examen et de la consolidation, et vous pouvez progressivement maîtriser les connaissances de base et les fonctions avancées de Python au cours de cette période.

See all articles