Open mitu752 opened 1 month ago
但是我看dino的DINOTransformerDecoder没有skip_relation这个参数
Hi @mitu752
位置关系是在训练验证的时候都会使用。具体来说,我们的模型是有两个分支:主分支和辅助分支。skip_relation参数用于判断是否使用位置关系,主分支使用位置关系,skip_relation=True;辅助分支不使用,skip_relation=False。且辅助分支只在训练时候使用,用于加快收敛。问题中截出来的这部分是辅助分支。
DINO只有一个主分支,所以不需要skip_relation来区分。
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.maskedfill(attn_mask, float("-inf"))
请问下大佬验证过程不做这个操作的原因是什么
attn_mask是query之间的self-attention mask; 训练的时候因为有DN在,所以需要使用attn_mask控制dn的query和检测的query彼此看不到对方,所以pos_relation也需要用attn_mask掩掉一下; 验证的时候,没有了dn,所以不需要指定attn_mask了,就不需要用attn_mask掩掉pos_relation中的一些值了。
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