@@ -218,14 +218,19 @@ def forward(self,
218218 score_head ,
219219 query_pos_head ,
220220 attn_mask = None ,
221- memory_mask = None ):
221+ memory_mask = None ,
222+ query_pos_head_inv_sig = False ):
222223 output = tgt
223224 dec_out_bboxes = []
224225 dec_out_logits = []
225226 ref_points_detach = F .sigmoid (ref_points_unact )
226227 for i , layer in enumerate (self .layers ):
227228 ref_points_input = ref_points_detach .unsqueeze (2 )
228- query_pos_embed = query_pos_head (ref_points_detach )
229+ if not query_pos_head_inv_sig :
230+ query_pos_embed = query_pos_head (ref_points_detach )
231+ else :
232+ query_pos_embed = query_pos_head (
233+ inverse_sigmoid (ref_points_detach ))
229234
230235 output = layer (output , ref_points_input , memory ,
231236 memory_spatial_shapes , memory_level_start_index ,
@@ -276,6 +281,7 @@ def __init__(self,
276281 label_noise_ratio = 0.5 ,
277282 box_noise_scale = 1.0 ,
278283 learnt_init_query = True ,
284+ query_pos_head_inv_sig = False ,
279285 eval_size = None ,
280286 eval_idx = - 1 ,
281287 eps = 1e-2 ):
@@ -321,6 +327,7 @@ def __init__(self,
321327 if learnt_init_query :
322328 self .tgt_embed = nn .Embedding (num_queries , hidden_dim )
323329 self .query_pos_head = MLP (4 , 2 * hidden_dim , hidden_dim , num_layers = 2 )
330+ self .query_pos_head_inv_sig = query_pos_head_inv_sig
324331
325332 # encoder head
326333 self .enc_output = nn .Sequential (
@@ -464,7 +471,9 @@ def forward(self, feats, pad_mask=None, gt_meta=None):
464471 self .dec_bbox_head ,
465472 self .dec_score_head ,
466473 self .query_pos_head ,
467- attn_mask = attn_mask )
474+ attn_mask = attn_mask ,
475+ memory_mask = None ,
476+ query_pos_head_inv_sig = self .query_pos_head_inv_sig )
468477 return (out_bboxes , out_logits , enc_topk_bboxes , enc_topk_logits ,
469478 dn_meta )
470479
0 commit comments