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