j96w / DenseFusion

"DenseFusion: 6D Object Pose Estimation by Iterative Dense Fusion" code repository
https://sites.google.com/view/densefusion
MIT License
1.1k stars 300 forks source link

All confidence scores of "foam_brick" are always 1. #186

Open oorrppp2 opened 3 years ago

oorrppp2 commented 3 years ago

I checked all confidence scores like below.

I added 2 lines in "tools/eval_ycb.py" 192ln,

        indices = torch.LongTensor([range(21)])
        indices = Variable(indices).cuda()

and I changed the estimator function as below.

        pred_r, pred_t, pred_c, emb = estimator(img_masked, cloud, choose, index, indices)

I changed the function in "lib/network.py" 95ln to below. (PoseNet::forward)

def forward(self, img, x, choose, obj, objs):

I added 3 lines in "lib/network.py" 122ln. (PoseNet::forward)

    all_cx = torch.index_select(cx[0], 0, objs[0])
    all_cx = all_cx.contiguous().transpose(2, 1).contiguous()

And I printed mean of all_c[20] (i.e. mean confidence value of "foam_brick") like below.

    print(torch.mean(all_cx[20]))

Finally, it always printed

    tensor(1.0000, device='cuda:0', grad_fn=<MeanBackward0>)

But the other mean confidence almost uniformly spread. Is it possible? or Did I make any mistakes? (Tested with trained checkpoint "pose_model_26_0.012863246640872631.pth", "pose_refine_model_69_0.009449292959118935.pth" downloaded from https://drive.google.com/drive/folders/19ivHpaKm9dOrr12fzC8IDFczWRPFxho7 )