Multi-Scale Body-Part Mask Guide Attention for Person Re-identification

Multi-Scale Body-Part Mask Guide Attention for Person Re-identification

论文:Multi-Scale Boyd-Part Mask Guide Attention for Person Re-identification

论文链接:MMGA

代码:

摘要

背景:由于人的姿态变化,不同的光照、遮挡、错位、背景杂乱等原因,对人的重识别仍然具有挑战性。

贡献:文中提出了一种多尺度身体局部语义掩模引导注意力网络(MMGA),可以联合全身和局部的注意力,帮助提取全局和局部特征。在MMGA 中,使用身体部位的语义掩模信息来指导相应位置注意力的训练。

模型评估:实验结果表明,该方法可以有效的降低人的姿态估计、不对称和背景杂波的影响。该方法在Market1501数据集实现 rank-1/mPA 的 95%/ 87.2%,在DukeMTMC-reID数据集上实现 rank-1/mAP的89.5% / 78.1%,优于当前的最新方法。

引言

最近的一些研究表明,定位身体重要部位并学习这些信息区域的有鉴别性的特征,可以减少背景杂波和遮挡的负面影响,从而提高ReID 的精度。受到人视觉系统的启发,采用人体掩模指导注意模型训练,将人体从背景中分割出来,然后利用二值掩模对注意力网络进行引导,但通过整个人的掩模来引导注意力可能会抑制局部具有较强反应的有信息的身体部位区域。为此,文中引入了一个多尺度的人体局部掩模引导注意网络。将遮体分为上半身遮体和下半身遮体,分别用于指导上半身注意和下半身注意的训练。如图1所示,提出的网络可以

Multi-Scale attention (MSA) 即多尺度注意力机制,在不同研究中有不同的应用与体现。 ### 相关介绍 在“[MSA-Net]Multi-Scale Attention Network学习笔记”中,MSA - Net采用了VGG16的backbone ,对不同的改进策略效果进行比较,其中采用Multi density map + Mask - attention即(+M),以及Img Res(resize到1080P),带来的效果最明显,而加了scale - aware loss效果不明显 [^1]。在“篇2 - 多尺度注意力(Multi - scale attention)论文学习”里,论文提出了多尺度路径注意力残差网络(MPARN)用于旋转机械故障诊断,体现了多尺度注意力机制在故障诊断领域的应用 [^3]。 ### 原理 以MPARN为例,该方法主要由多尺度扩张卷积(MDC)层、路径注意力模块(PAM)和多尺度注意力残差块(MARB)组成。多尺度扩张卷积层能在不同尺度上提取特征,路径注意力模块可对不同路径的特征进行注意力分配,多尺度注意力残差块则结合了多尺度特征和残差连接,有助于特征的有效传递和融合 [^3]。 在“Multi - Scale Deep Feature Fusion for Vehicle Re - Identification”中,将每个阶段Si(x)的生成特征连接起来形成一个主要的多尺度和多层级描述符S(x),提出LWA来调整S(x)的权重并进行元素求和以获得最终描述符,可分辨性仅用Si(x)的平均强度进行测量,平均强度可根据输入数据动态计算,最后使用全连接(fc)层获取可训练的注意力图,并使用残差图保存主要的多尺度和多层级特征 [^4]。 ### 应用 - **旋转机械故障诊断**:如MPARN被用于旋转机械故障诊断,通过多尺度注意力机制更好地提取故障特征,提高诊断的准确性 [^3]。 - **车辆重识别**:在车辆重识别任务中,多尺度注意力机制可用于融合不同尺度的特征,构建多尺度和多层级描述符,从而提高车辆重识别的性能 [^4]。 ```python # 以下为一个简单示意代码,模拟多尺度特征连接与注意力分配 import torch import torch.nn as nn # 模拟多尺度特征 feature_s1 = torch.randn(1, 64, 32, 32) feature_s2 = torch.randn(1, 128, 16, 16) feature_s3 = torch.randn(1, 256, 8, 8) # 假设的注意力权重调整模块 class AttentionModule(nn.Module): def __init__(self, in_channels): super(AttentionModule, self).__init__() self.fc = nn.Linear(in_channels, 1) self.sigmoid = nn.Sigmoid() def forward(self, x): b, c, h, w = x.size() x = x.view(b, c, -1).mean(dim=-1) # 计算平均强度 attention_weights = self.sigmoid(self.fc(x)) return attention_weights.unsqueeze(-1).unsqueeze(-1) # 连接多尺度特征 features = [feature_s1, feature_s2, feature_s3] connected_features = [] for feature in features: # 为简单示意,这里不做尺寸调整,实际应用需调整 connected_features.append(feature) # 调整权重 lwa = AttentionModule(sum([f.size(1) for f in connected_features])) final_descriptor = 0 for feature in connected_features: attention_weights = lwa(feature) final_descriptor += attention_weights * feature print(final_descriptor.size()) ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值