Referência para ultralytics/nn/modules/transformer.py
Nota
Este ficheiro está disponível em https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/nn/modules/transformer .py. Se encontrares um problema, por favor ajuda a corrigi-lo contribuindo com um Pull Request 🛠️. Obrigado 🙏!
ultralytics.nn.modules.transformer.TransformerEncoderLayer
Bases: Module
Define uma única camada do codificador de transformador.
Código fonte em ultralytics/nn/modules/transformer.py
__init__(c1, cm=2048, num_heads=8, dropout=0.0, act=nn.GELU(), normalize_before=False)
Inicializa o TransformerEncoderLayer com os parâmetros especificados.
Código fonte em ultralytics/nn/modules/transformer.py
forward(src, src_mask=None, src_key_padding_mask=None, pos=None)
Propaga a entrada através do módulo codificador.
Código fonte em ultralytics/nn/modules/transformer.py
forward_post(src, src_mask=None, src_key_padding_mask=None, pos=None)
Executa a passagem progressiva com pós-normalização.
Código fonte em ultralytics/nn/modules/transformer.py
forward_pre(src, src_mask=None, src_key_padding_mask=None, pos=None)
Executa a passagem para a frente com pré-normalização.
Código fonte em ultralytics/nn/modules/transformer.py
with_pos_embed(tensor, pos=None)
staticmethod
ultralytics.nn.modules.transformer.AIFI
Bases: TransformerEncoderLayer
Define a camada de transformação AIFI.
Código fonte em ultralytics/nn/modules/transformer.py
__init__(c1, cm=2048, num_heads=8, dropout=0, act=nn.GELU(), normalize_before=False)
Inicializa a instância AIFI com os parâmetros especificados.
build_2d_sincos_position_embedding(w, h, embed_dim=256, temperature=10000.0)
staticmethod
Constrói uma incorporação de posição seno-coseno 2D.
Código fonte em ultralytics/nn/modules/transformer.py
forward(x)
Passagem para a camada do transformador AIFI.
Código fonte em ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.TransformerLayer
Bases: Module
Camada do transformador https://arxiv.org/abs/2010.11929 (camadas LayerNorm removidas para melhor desempenho).
Código fonte em ultralytics/nn/modules/transformer.py
__init__(c, num_heads)
Inicializa um mecanismo de auto-atenção utilizando transformações lineares e atenção multi-cabeça.
Código fonte em ultralytics/nn/modules/transformer.py
forward(x)
Aplica um bloco transformador à entrada x e devolve a saída.
ultralytics.nn.modules.transformer.TransformerBlock
Bases: Module
Vision Transformer https://arxiv.org/abs/2010.11929.
Código fonte em ultralytics/nn/modules/transformer.py
__init__(c1, c2, num_heads, num_layers)
Inicializa um módulo Transformer com incorporação de posição e número especificado de cabeças e camadas.
Código fonte em ultralytics/nn/modules/transformer.py
forward(x)
Propaga a entrada através do módulo de estrangulamento.
Código fonte em ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.MLPBlock
Bases: Module
Implementa um único bloco de um perceptron de várias camadas.
Código fonte em ultralytics/nn/modules/transformer.py
__init__(embedding_dim, mlp_dim, act=nn.GELU)
Inicializa o MLPBlock com a dimensão de incorporação especificada, a dimensão MLP e a função de ativação.
Código fonte em ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.MLP
Bases: Module
Implementa um perceptron de várias camadas simples (também chamado FFN).
Código fonte em ultralytics/nn/modules/transformer.py
__init__(input_dim, hidden_dim, output_dim, num_layers)
Inicializa o MLP com as dimensões de entrada, oculta e de saída e o número de camadas especificados.
Código fonte em ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.LayerNorm2d
Bases: Module
Módulo de normalização de camadas 2D inspirado nas implementações Detectron2 e ConvNeXt.
Implementações originais em https://github.com/facebookresearch/detectron2/blob/main/detectron2/layers/batch_norm.py e https://github.com/facebookresearch/ConvNeXt/blob/main/models/convnext.py.
Código fonte em ultralytics/nn/modules/transformer.py
__init__(num_channels, eps=1e-06)
Inicializa o LayerNorm2d com os parâmetros fornecidos.
Código fonte em ultralytics/nn/modules/transformer.py
forward(x)
Executa a passagem para a frente para a normalização da camada 2D.
Código fonte em ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.MSDeformAttn
Bases: Module
Módulo de Atenção Deformável Multiescala baseado nas implementações Deformable-DETR e PaddleDetection.
https://github.com/fundamentalvision/Deformable-DETR/blob/main/models/ops/modules/ms_deform_attn.py
Código fonte em 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)
Inicializa o MSDeformAttn com os parâmetros fornecidos.
Código fonte em ultralytics/nn/modules/transformer.py
forward(query, refer_bbox, value, value_shapes, value_mask=None)
Executa a passagem para a frente para a atenção deformável multiescala.
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/transformers/deformable_transformer.py
Parâmetros:
Nome | Tipo | Descrição | Predefinição |
---|---|---|---|
query |
Tensor
|
[bs, query_length, C] |
necessário |
refer_bbox |
Tensor
|
[bs, query_length, n_levels, 2], intervalo em [0, 1], topo-esquerda (0,0), inferior-direita (1, 1), incluindo a área de preenchimento |
necessário |
value |
Tensor
|
[bs, comprimento_do_valor, C] |
necessário |
value_shapes |
List
|
[n_levels, 2], [(H_0, W_0), (H_1, W_1), ..., (H_{L-1}, W_{L-1})] |
necessário |
value_mask |
Tensor
|
[bs, value_length], Verdadeiro para elementos sem preenchimento, Falso para elementos com preenchimento |
None
|
Devolve:
Nome | Tipo | Descrição |
---|---|---|
output |
Tensor
|
[bs, Length_{query}, C] |
Código fonte em ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.DeformableTransformerDecoderLayer
Bases: Module
Camada de descodificação de transformadores deformáveis inspirada nas implementações PaddleDetection e 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
Código fonte em 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)
Inicializa o DeformableTransformerDecoderLayer com os parâmetros fornecidos.
Código fonte em ultralytics/nn/modules/transformer.py
forward(embed, refer_bbox, feats, shapes, padding_mask=None, attn_mask=None, query_pos=None)
Executa a passagem para a frente através de toda a camada do descodificador.
Código fonte em ultralytics/nn/modules/transformer.py
forward_ffn(tgt)
Efectua a passagem para a frente através da parte da rede de alimentação da camada.
with_pos_embed(tensor, pos)
staticmethod
ultralytics.nn.modules.transformer.DeformableTransformerDecoder
Bases: Module
Implementação de um descodificador de transformada deformável baseado em PaddleDetection.
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/transformers/deformable_transformer.py
Código fonte em ultralytics/nn/modules/transformer.py
__init__(hidden_dim, decoder_layer, num_layers, eval_idx=-1)
Inicializa o DeformableTransformerDecoder com os parâmetros fornecidos.
Código fonte em ultralytics/nn/modules/transformer.py
forward(embed, refer_bbox, feats, shapes, bbox_head, score_head, pos_mlp, attn_mask=None, padding_mask=None)
Executa a passagem para a frente em todo o descodificador.