参考资料 ultralytics/nn/modules/transformer.py
备注
该文件可从https://github.com/ultralytics/ultralytics/blob/main/ ultralytics/nn/modules/transformer .py 获取。如果您发现问题,请通过提交 Pull Request🛠️ 帮助修复。谢谢🙏!
ultralytics.nn.modules.transformer.TransformerEncoderLayer
垒球 Module
定义变压器编码器的单层。
源代码 ultralytics/nn/modules/transformer.py
__init__(c1, cm=2048, num_heads=8, dropout=0.0, act=nn.GELU(), normalize_before=False)
使用指定参数初始化 TransformerEncoderLayer。
源代码 ultralytics/nn/modules/transformer.py
forward(src, src_mask=None, src_key_padding_mask=None, pos=None)
通过编码器模块向前传播输入。
源代码 ultralytics/nn/modules/transformer.py
forward_post(src, src_mask=None, src_key_padding_mask=None, pos=None)
执行前向传递和后向归一化。
源代码 ultralytics/nn/modules/transformer.py
forward_pre(src, src_mask=None, src_key_padding_mask=None, pos=None)
执行预规范化前向传递。
源代码 ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.AIFI
定义 AIFI 变压器层。
源代码 ultralytics/nn/modules/transformer.py
__init__(c1, cm=2048, num_heads=8, dropout=0, act=nn.GELU(), normalize_before=False)
build_2d_sincos_position_embedding(w, h, embed_dim=256, temperature=10000.0)
staticmethod
建立二维正余弦位置嵌入。
源代码 ultralytics/nn/modules/transformer.py
forward(x)
AIFI 变压器层的正向通道。
源代码 ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.TransformerLayer
垒球 Module
转换器图层 https://arxiv.org/abs/2010.11929(为提高性能,删除了 LayerNorm 图层)。
源代码 ultralytics/nn/modules/transformer.py
__init__(c, num_heads)
利用线性变换和多头注意力,初始化自我注意力机制。
源代码 ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.TransformerBlock
垒球 Module
Vision Transformer https://arxiv.org/abs/2010.11929。
源代码 ultralytics/nn/modules/transformer.py
__init__(c1, c2, num_heads, num_layers)
使用位置嵌入和指定的头和层数初始化一个变换器模块。
源代码 ultralytics/nn/modules/transformer.py
forward(x)
前向模块通过瓶颈模块传播输入。
源代码 ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.MLPBlock
垒球 Module
执行多层感知器的单个模块。
源代码 ultralytics/nn/modules/transformer.py
__init__(embedding_dim, mlp_dim, act=nn.GELU)
用指定的嵌入维度、MLP 维度和激活函数初始化 MLPBlock。
源代码 ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.MLP
垒球 Module
执行简单的多层感知器(也称为 FFN)。
源代码 ultralytics/nn/modules/transformer.py
__init__(input_dim, hidden_dim, output_dim, num_layers)
以指定的输入、隐藏、输出维度和层数初始化 MLP。
源代码 ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.LayerNorm2d
垒球 Module
受 Detectron2 和 ConvNeXt 实现启发的二维层归一化模块。
最初在 https://github.com/facebookresearch/detectron2/blob/main/detectron2/layers/batch_norm.py 和 https://github.com/facebookresearch/ConvNeXt/blob/main/models/convnext.py。
源代码 ultralytics/nn/modules/transformer.py
__init__(num_channels, eps=1e-06)
使用给定参数初始化 LayerNorm2d。
源代码 ultralytics/nn/modules/transformer.py
forward(x)
执行前向传递,进行二维图层规范化。
源代码 ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.MSDeformAttn
垒球 Module
基于 Deformable-DETR 和 PaddleDetection 实现的多尺度可变形注意力模块。
https://github.com/fundamentalvision/Deformable-DETR/blob/main/models/ops/modules/ms_deform_attn.py
源代码 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)
使用给定参数初始化 MSDeformAttn。
源代码 ultralytics/nn/modules/transformer.py
forward(query, refer_bbox, value, value_shapes, value_mask=None)
对多尺度可变形注意力进行前向传递。
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/transformers/deformable_transformer.py
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
query |
Tensor
|
[双字节,查询长度,C] |
所需 |
refer_bbox |
Tensor
|
[bs,query_length,n_levels,2],范围在[0,1]内,左上角(0,0)、 右下(1,1),包括填充区域 |
所需 |
value |
Tensor
|
[双字节,数值长度,C] |
所需 |
value_shapes |
List
|
[n_级,2],[(H_0,W_0),(H_1,W_1),...,(H_{L-1},W_{L-1})] |
所需 |
value_mask |
Tensor
|
[bs,value_length],对无填充元素为 True,对有填充元素为 False |
None
|
返回:
名称 | 类型 | 说明 |
---|---|---|
output |
Tensor
|
[bs,Length_{query},C] |
源代码 ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.DeformableTransformerDecoderLayer
垒球 Module
受 PaddleDetection 和 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
源代码 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)
使用给定参数初始化 DeformableTransformerDecoderLayer。
源代码 ultralytics/nn/modules/transformer.py
forward(embed, refer_bbox, feats, shapes, padding_mask=None, attn_mask=None, query_pos=None)
通过整个解码器层进行前向传递。
源代码 ultralytics/nn/modules/transformer.py
forward_ffn(tgt)
通过该层的前馈网络部分进行前向传递。
ultralytics.nn.modules.transformer.DeformableTransformerDecoder
垒球 Module
基于 PaddleDetection 的可变形变压器解码器的实现
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/transformers/deformable_transformer.py
源代码 ultralytics/nn/modules/transformer.py
__init__(hidden_dim, decoder_layer, num_layers, eval_idx=-1)
使用给定的参数初始化 DeformableTransformerDecoder。
源代码 ultralytics/nn/modules/transformer.py
forward(embed, refer_bbox, feats, shapes, bbox_head, score_head, pos_mlp, attn_mask=None, padding_mask=None)
对整个解码器进行正向传递。