


Transformateurs de vision (ViTs) : Vision par ordinateur avec modèles de transformateurs
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 ?
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 :
- 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.
- Structure de quartier bidimensionnelle : les pixels proches sont plus susceptibles être liés, les filtres fonctionnent donc sur des régions spatialement adjacentes.
- É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
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
from transformers import ViTForImageClassification from PIL import Image from transformers import ViTImageProcessor
import requests import torch
# 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)
# 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)
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()])
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)
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds











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 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 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é.

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 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 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.

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.

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.
