Référence pour ultralytics/nn/modules/transformer.py
Note
Ce fichier est disponible à l'adresse https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/nn/modules/transformer .py. Si tu repères un problème, aide à le corriger en contribuant à une Pull Request 🛠️. Merci 🙏 !
ultralytics.nn.modules.transformer.TransformerEncoderLayer
Bases : Module
DĂ©finit une seule couche du transformateur encodeur.
Code source dans ultralytics/nn/modules/transformer.py
__init__(c1, cm=2048, num_heads=8, dropout=0.0, act=nn.GELU(), normalize_before=False)
Initialise le TransformerEncoderLayer avec les paramètres spécifiés.
Code source dans ultralytics/nn/modules/transformer.py
forward(src, src_mask=None, src_key_padding_mask=None, pos=None)
En avant propage l'entrée à travers le module d'encodage.
Code source dans ultralytics/nn/modules/transformer.py
forward_post(src, src_mask=None, src_key_padding_mask=None, pos=None)
Effectue une passe avant avec post-normalisation.
Code source dans ultralytics/nn/modules/transformer.py
forward_pre(src, src_mask=None, src_key_padding_mask=None, pos=None)
Effectue une passe avant avec pré-normalisation.
Code source dans ultralytics/nn/modules/transformer.py
with_pos_embed(tensor, pos=None)
staticmethod
ultralytics.nn.modules.transformer.AIFI
Bases : TransformerEncoderLayer
DĂ©finit la couche du transformateur AIFI.
Code source dans ultralytics/nn/modules/transformer.py
__init__(c1, cm=2048, num_heads=8, dropout=0, act=nn.GELU(), normalize_before=False)
Initialise l'instance AIFI avec les paramètres spécifiés.
build_2d_sincos_position_embedding(w, h, embed_dim=256, temperature=10000.0)
staticmethod
Construit l'intégration de la position sinus-cosinus en 2D.
Code source dans ultralytics/nn/modules/transformer.py
forward(x)
Passe avant pour la couche transformatrice de l'AIFI.
Code source dans ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.TransformerLayer
Bases : Module
Couche de transformateur https://arxiv.org/abs/2010.11929 (couches LayerNorm supprimées pour une meilleure performance).
Code source dans ultralytics/nn/modules/transformer.py
__init__(c, num_heads)
Initialise un mécanisme d'auto-attention utilisant des transformations linéaires et une attention multi-têtes.
Code source dans ultralytics/nn/modules/transformer.py
forward(x)
Applique un bloc transformateur à l'entrée x et renvoie la sortie.
ultralytics.nn.modules.transformer.TransformerBlock
Bases : Module
Vision Transformer https://arxiv.org/abs/2010.11929.
Code source dans ultralytics/nn/modules/transformer.py
__init__(c1, c2, num_heads, num_layers)
Initialise un module Transformer avec l'intégration de la position et le nombre spécifié de têtes et de couches.
Code source dans ultralytics/nn/modules/transformer.py
forward(x)
Forward propage l'entrée à travers le module goulot d'étranglement.
Code source dans ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.MLPBlock
Bases : Module
Implémente un seul bloc d'un perceptron multicouche.
Code source dans ultralytics/nn/modules/transformer.py
__init__(embedding_dim, mlp_dim, act=nn.GELU)
Initialise le bloc MLP avec la dimension d'intégration, la dimension MLP et la fonction d'activation spécifiées.
Code source dans ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.MLP
Bases : Module
Met en œuvre un simple perceptron multicouche (également appelé FFN).
Code source dans ultralytics/nn/modules/transformer.py
__init__(input_dim, hidden_dim, output_dim, num_layers)
Initialise le MLP avec les dimensions d'entrée, cachées et de sortie spécifiées et le nombre de couches.
Code source dans ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.LayerNorm2d
Bases : Module
Module de normalisation des couches 2D inspiré des implémentations de Detectron2 et ConvNeXt.
Les implémentations originales dans https://github.com/facebookresearch/detectron2/blob/main/detectron2/layers/batch_norm.py et https://github.com/facebookresearch/ConvNeXt/blob/main/models/convnext.py.
Code source dans ultralytics/nn/modules/transformer.py
__init__(num_channels, eps=1e-06)
Initialise LayerNorm2d avec les paramètres donnés.
Code source dans ultralytics/nn/modules/transformer.py
forward(x)
Effectue une passe avant pour la normalisation des couches 2D.
Code source dans ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.MSDeformAttn
Bases : Module
Module d'attention déformable multi-échelle basé sur les implémentations de Deformable-DETR et PaddleDetection.
https://github.com/fundamentalvision/Deformable-DETR/blob/main/models/ops/modules/ms_deform_attn.py
Code source dans ultralytics/nn/modules/transformer.py
216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 |
|
__init__(d_model=256, n_levels=4, n_heads=8, n_points=4)
Initialise MSDeformAttn avec les paramètres donnés.
Code source dans ultralytics/nn/modules/transformer.py
forward(query, refer_bbox, value, value_shapes, value_mask=None)
Effectue la passe avant pour l'attention déformable à plusieurs échelles.
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/transformers/deformable_transformer.py
Paramètres :
Nom | Type | Description | DĂ©faut |
---|---|---|---|
query |
Tensor
|
[bs, query_length, C] |
requis |
refer_bbox |
Tensor
|
[bs, query_length, n_levels, 2], Ă©tendue dans [0, 1], haut-gauche (0,0), bas-droit (1, 1), y compris la zone de remplissage |
requis |
value |
Tensor
|
[bs, value_length, C] |
requis |
value_shapes |
List
|
[n_niveaux, 2], [(H_0, W_0), (H_1, W_1), ..., (H_{L-1}, W_{L-1})]. |
requis |
value_mask |
Tensor
|
[bs, value_length], True pour les éléments sans padding, False pour les éléments avec padding. |
None
|
Retourne :
Nom | Type | Description |
---|---|---|
output |
Tensor
|
[bs, Length_{query}, C] |
Code source dans ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.DeformableTransformerDecoderLayer
Bases : Module
Couche de décodeur de transformateur déformable inspirée des implémentations PaddleDetection et Deformable-DETR.
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/transformers/deformable_transformer.py https://github.com/fundamentalvision/Deformable-DETR/blob/main/models/deformable_transformer.py
Code source dans ultralytics/nn/modules/transformer.py
__init__(d_model=256, n_heads=8, d_ffn=1024, dropout=0.0, act=nn.ReLU(), n_levels=4, n_points=4)
Initialise le DeformableTransformerDecoderLayer avec les paramètres donnés.
Code source dans ultralytics/nn/modules/transformer.py
forward(embed, refer_bbox, feats, shapes, padding_mask=None, attn_mask=None, query_pos=None)
Effectue la passe avant à travers toute la couche du décodeur.
Code source dans ultralytics/nn/modules/transformer.py
forward_ffn(tgt)
Effectue une passe avant à travers la partie du réseau d'alimentation de la couche.
with_pos_embed(tensor, pos)
staticmethod
Ajoute des enchâssements positionnels à l'entrée tensor, si elle est fournie.
ultralytics.nn.modules.transformer.DeformableTransformerDecoder
Bases : Module
Mise en œuvre d'un décodeur de transformateur déformable basé sur PaddleDetection.
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/transformers/deformable_transformer.py
Code source dans ultralytics/nn/modules/transformer.py
__init__(hidden_dim, decoder_layer, num_layers, eval_idx=-1)
Initialise le DeformableTransformerDecoder avec les paramètres donnés.
Code source dans ultralytics/nn/modules/transformer.py
forward(embed, refer_bbox, feats, shapes, bbox_head, score_head, pos_mlp, attn_mask=None, padding_mask=None)
Effectue la passe avant à travers tout le décodeur.