Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于带位置关系的自注意力 #23

Open
mitu752 opened this issue Sep 18, 2024 · 4 comments
Open

关于带位置关系的自注意力 #23

mitu752 opened this issue Sep 18, 2024 · 4 comments
Labels
question Further information is requested

Comments

@mitu752
Copy link

mitu752 commented Sep 18, 2024

Question

大佬,您好,我想问下这个位置关系只在验证的时候使用吗

来自models/bricks/relation_transformer.py
if self.training:
hybrid_classes, hybrid_coords = self.decoder(
query=hybrid_target,
value=memory,
key_padding_mask=mask_flatten,
reference_points=hybrid_reference_points,
spatial_shapes=spatial_shapes,
level_start_index=level_start_index,
valid_ratios=valid_ratios,
skip_relation=True,
)

补充信息

No response

@mitu752 mitu752 added the question Further information is requested label Sep 18, 2024
@mitu752
Copy link
Author

mitu752 commented Sep 18, 2024

但是我看dino的DINOTransformerDecoder没有skip_relation这个参数

@xiuqhou
Copy link
Owner

xiuqhou commented Sep 19, 2024

Hi @mitu752

位置关系是在训练验证的时候都会使用。具体来说,我们的模型是有两个分支:主分支和辅助分支。skip_relation参数用于判断是否使用位置关系,主分支使用位置关系,skip_relation=True;辅助分支不使用,skip_relation=False。且辅助分支只在训练时候使用,用于加快收敛。问题中截出来的这部分是辅助分支。

DINO只有一个主分支,所以不需要skip_relation来区分。

@mitu752
Copy link
Author

mitu752 commented Oct 15, 2024

Hi @mitu752

位置关系是在训练验证的时候都会使用。具体来说,我们的模型是有两个分支:主分支和辅助分支。skip_relation参数用于判断是否使用位置关系,主分支使用位置关系,skip_relation=True;辅助分支不使用,skip_relation=False。且辅助分支只在训练时候使用,用于加快收敛。问题中截出来的这部分是辅助分支。

DINO只有一个主分支,所以不需要skip_relation来区分。

大佬,还有个问题请教下,我看代码在验证过程中没有传入attn_mask,
来自[models/bricks/relation_transformer.py]
if attn_mask is not None:
pos_relation.masked_fill_(attn_mask, float("-inf"))
请问下大佬验证过程不做这个操作的原因是什么

@HaisongDing
Copy link

attn_mask是query之间的self-attention mask;
训练的时候因为有DN在,所以需要使用attn_mask控制dn的query和检测的query彼此看不到对方,所以pos_relation也需要用attn_mask掩掉一下;
验证的时候,没有了dn,所以不需要指定attn_mask了,就不需要用attn_mask掩掉pos_relation中的一些值了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants