3.26日报

完成了人体识别模块的部分内容,并且想到了创新点,跨膜态注意力融合机制

class CrossModalAttention(nn.Module):
    """创新点3:跨模态注意力融合机制"""
    def __init__(self, channels):
        super().__init__()
        self.query = nn.Conv2d(channels, channels//8, 1)
        self.key = nn.Conv2d(channels, channels//8, 1)
        self.value = nn.Conv2d(channels, channels, 1)
        self.gamma = nn.Parameter(torch.zeros(1))
        
    def forward(self, x1, x2):
        batch_size, C, H, W = x1.shape
        
        # 将一种模态作为query,另一种作为key/value
        q = self.query(x1).view(batch_size, -1, H*W).permute(0, 2, 1)
        k = self.key(x2).view(batch_size, -1, H*W)
        v = self.value(x2).view(batch_size, -1, H*W)
        
        attention = torch.bmm(q, k)
        attention = F.softmax(attention, dim=-1)
        
        out = torch.bmm(v, attention.permute(0, 2, 1))
        out = out.view(batch_size, C, H, W)
        out = self.gamma * out + x1  # 残差连接
        return out

 

 
posted @ 2025-04-09 11:07  Code13  阅读(13)  评论(0)    收藏  举报