Skip to content

Commit 3410afa

Browse files
committed
updates
1 parent a53c78a commit 3410afa

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

src/3DVL/LASO.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -557,5 +557,48 @@ AFM 的网络结构可视化理解
557557

558558
结果表明:加入 AFM 显著提升了所有指标,说明其确实有效增强了语言-视觉的跨模态交互能力。
559559

560+
### RPO 参考点解码器
561+
562+
Referred Point Decoder(RPD)是 LASO 任务中用于生成功能区域掩码的核心模块。
563+
564+
它的主要目标是:
565+
566+
- 利用一组问题条件化的 affordance queries 通过 Transformer 解码器与点云特征交互 ,生成一组动态卷积核(dynamic kernels),最终通过这些 kernel 对 AFM 增强后的点特征进行卷积,得到分割掩码。
567+
568+
```python
569+
class TransformerDecoderLayer(nn.Module):
570+
571+
# tgt: text feature (b,l,c), memory: up_sample (b,n,c)
572+
def forward(self, tgt, memory,
573+
tgt_mask: Optional[Tensor] = None,
574+
memory_mask: Optional[Tensor] = None,
575+
tgt_key_padding_mask: Optional[Tensor] = None,
576+
memory_key_padding_mask: Optional[Tensor] = None,
577+
pos: Optional[Tensor] = None,
578+
query_pos: Optional[Tensor] = None):
579+
# 1. Affordance Query = 问题嵌入(Question Embedding)X + 可学习的位置编码(Learnable Position Embeddings)
580+
# 这里tgt就是Roberta编码得到的文本特征嵌入向量
581+
q = k = self.with_pos_embed(tgt, query_pos)
582+
# 2. 自注意力机制: 让每个 query 不仅理解自己的语义,还能感知其他 query 的信息,从而形成更完整的语言上下文理解。
583+
tgt2 = self.self_attn(q, k, value=tgt, attn_mask=tgt_mask,
584+
key_padding_mask=tgt_key_padding_mask)
585+
tgt = tgt + self.dropout1(tgt2)
586+
tgt = self.norm1(tgt) # (b,l,c)
587+
588+
# 3. 跨模态注意力机制: 每个 affordance query 都会基于其语言语义,从点云中找出最相关的功能区域,从而为后续的动态卷积和掩码预测提供基础。
589+
tgt2 = self.multihead_attn(query=self.with_pos_embed(tgt, query_pos),
590+
key=self.with_pos_embed(memory, pos),
591+
value=memory, attn_mask=memory_mask,
592+
key_padding_mask=memory_key_padding_mask,
593+
output_attentions = True)
594+
tgt = tgt + self.dropout2(tgt2)
595+
tgt = self.norm2(tgt) # (b,l,c)
596+
597+
# 4. MLP: 每个query通道维度做特征融合
598+
tgt2 = self.linear2(self.dropout(self.activation(self.linear1(tgt))))
599+
tgt = tgt + self.dropout3(tgt2)
600+
tgt = self.norm3(tgt) # (b,l,c)
601+
return tgt
602+
```
560603

561604

0 commit comments

Comments
 (0)