@@ -70,19 +70,25 @@ class Fusion(nn.Module):
70
70
71
71
# 跨模态注意力矩阵: 每个点云点与图像中每个位置之间的相似度得分
72
72
phi = torch.bmm(p_feature.permute(0 , 2 , 1 ), i_feature)* self .div_scale # [B, N_p, N_i]
73
+
73
74
# 每列是一个 softmax 分布(每个图像位置对应的所有点云点), 表示:“对于图像中的每一个位置,应该关注哪些点云点?”
74
75
phi_p = F.softmax(phi,dim = 1 )
75
76
# 每行是一个 softmax 分布(每个点云点对应的所有图像位置), 表示:“对于点云中的每一个点,应该关注图像中的哪些位置?”
76
77
phi_i = F.softmax(phi,dim = - 1 )
78
+
77
79
# I_enhance 是图像 patch 引导下提取的点云信息增强后的图像特征
78
80
# 它不是直接包含原始图像 patch 的语义
79
81
# 而是通过“点云中相关点”的方式重构图像 patch 的语义
80
82
I_enhance = torch.bmm(p_feature, phi_p) # [B, C, N_i]
81
- # P_enhance 是每个点云点引导下提取的图像信息增强后的点云点特征
83
+ # P_enhance 是每个点云局部区域关键点引导下提取的图像信息增强后的点云关键点局部区域特征
82
84
P_enhance = torch.bmm(i_feature, phi_i.permute(0 ,2 ,1 )) # [B, C, N_p]
85
+
86
+ # 在跨模态融合后,进一步提取各自模态内部的语义一致性与结构关系,形成更稳定的联合表示。
83
87
I = self .img_attention(I_enhance.mT) # [B, N_i, C]
84
88
P = self .point_attention(P_enhance.mT) # [B, N_p, C]
85
-
89
+
90
+ # 将图像patch和点云点拼接成一个统一的token序列
91
+ # 使用自注意力机制提炼两个模态之间的语义一致性
86
92
joint_patch = torch.cat((P, I), dim = 1 )
87
93
multi_feature = self .joint_attention(joint_patch) # [B, N_p+N_i, C]
88
94
0 commit comments