Open encichou opened 2 months ago
![Uploading Scable_bug.png…]()
Based on the maptr framework, it seems the code should be revised as shown in the image above.
` bev_embed, hs, init_reference, inter_references, global_bev = outputs outputs_classes = [] outputs_coords = [] outputs_box_coords = [] for lvl in range(len(hs)): hs[lvl] = hs[lvl].permute(1, 0, 2)
outputs_class = self.cls_branches[lvl](hs[lvl].view(bs, self.num_vec, -1, self.embed_dims).mean(2))
xy = self.reg_branches[lvl](hs[lvl])
if lvl == 0:
reference = init_reference
else:
reference = inter_references[lvl - 1]
outputs_coord = (inverse_sigmoid(reference) + xy).sigmoid()
# outputs_coord = (inverse_sigmoid(inter_references[lvl]) + xy).sigmoid()
outputs_box_coord, outputs_coord = self.transform_box(outputs_coord)
outputs_coords.append(outputs_coord)
outputs_box_coords.append(outputs_box_coord)
outputs_classes.append(outputs_class)
`
` bev_embed, hs, init_reference, inter_references, global_bev = outputs outputs_classes = [] outputs_coords = [] outputs_box_coords = [] for lvl in range(len(hs)): hs[lvl] = hs[lvl].permute(1, 0, 2)
outputs_class = self.cls_branches[lvl](hs[lvl].view(bs, self.num_vec, -1, self.embed_dims).mean(2)) xy = self.reg_branches[lvl](hs[lvl]) if lvl == 0: reference = init_reference else: reference = inter_references[lvl - 1] outputs_coord = (inverse_sigmoid(reference) + xy).sigmoid() # outputs_coord = (inverse_sigmoid(inter_references[lvl]) + xy).sigmoid() outputs_box_coord, outputs_coord = self.transform_box(outputs_coord) outputs_coords.append(outputs_coord) outputs_box_coords.append(outputs_box_coord) outputs_classes.append(outputs_class)
`
yea,so their code is wrong.
bev_embed, hs, init_reference, inter_references, global_bev = outputs outputs_classes = [] outputs_coords = [] outputs_box_coords = [] for lvl in range(len(hs)): hs[lvl] = hs[lvl].permute(1, 0, 2) outputs_class = self.cls_branches[lvl](hs[lvl].view(bs, self.num_vec, -1, self.embed_dims).mean(2)) xy = self.reg_branches[lvl](hs[lvl]) outputs_coord = (inverse_sigmoid(inter_references[lvl]) + xy).sigmoid() outputs_box_coord, outputs_coord = self.transform_box(outputs_coord) outputs_coords.append(outputs_coord) outputs_box_coords.append(outputs_box_coord) outputs_classes.append(outputs_class)
inter_references have already added offset,so the inter_references used incorrectly.