关于MSDeformableAttention的理解与代码解读

Deformable Attention
MMDet-Deformable DETR源码解读
代码解析


MSDeformableAttention 是一个自定义的类,代表“多尺度可变形注意力模块”(Multi-Scale Deformable Attention Module)

  • 多尺度(Multi-Scale): 在深度学习中,多尺度通常指在不同空间分辨率或感受野上处理特征。这有助于模型捕获不同大小的上下文信息。
  • 可变形(Deformable): 在这里,“可变形”可能指的是注意力模块能够自适应地调整其关注的区域或采样点。这与传统的固定形状的卷积核或注意力机制形成对比,后者通常在固定的空间位置进行操作。
  • 注意力模块(Attention Module): 注意力模块是神经网络中的一个组件,它允许模型在处理信息时对不同部分赋予不同的权重。这有助于模型聚焦于输入中最相关或最有信息的部分。
class MSDeformableAttention(nn.Layer):
    def __init__(self,
                 embed_dim=256,
                 num_heads=8,
                 num_levels=4,
                 num_points=4,
                 lr_mult=0.1):
        """
        Multi-Scale Deformable Attention Module
        """
        super(MSDeformableAttention, self).__init__()
        self.embed_dim = embed_dim
        self.num_heads = num_heads
        self.num_levels = num_levels
        self.num_points = num_points
        self.total_points = num_heads * num_levels * num_points

        self.head_dim = embed_dim // num_heads
        assert self.head_dim * num_heads == self.embed_dim, "embed_dim must be divisible by num_heads"

        self.sampling_offsets = nn.Linear(
            embed_dim,
            self.total_points * 2,
            weight_attr=ParamAttr(learning_rate=lr_mult),
            bias_attr=ParamAttr(learning_rate=lr_mult))

        self.attention_weights = nn.Linear(embed_dim, self.total_points)
        self.value_proj = nn.Linear(embed_dim, embed_dim)
        self.output_proj = nn.Linear(embed_dim, embed_dim)
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jeremy_lf

你的鼓励是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值