jingy1yu / ScalableMap

The official repository for ScalableMap (CoRL 2023)
62 stars 2 forks source link

your code maybe have some bug #3

Open encichou opened 2 months ago

encichou commented 2 months ago

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.

encichou commented 2 months ago

![Uploading Scable_bug.png…]()

xiaopan999 commented 1 month ago

截屏2024-07-26 11 45 09 Based on the maptr framework, it seems the code should be revised as shown in the image above.

xiaopan999 commented 1 month ago

` 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)

`

encichou commented 1 month ago

` 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.