Closed ashawkey closed 3 years ago
Hi,
The original code for paper was implemented under pytorch 1.1.0 (and only runnable under this version). We upgraded the code adaptive to new pytorch and pointnet++ to make it earlier for more users. The pre-trained weights were also retrained under the new pytorch and pointnet++ libs. There could be some differences, and you can see our claim here.
Thanks for the clarification! I didn't expect the difference to be this large.
And for the second question, I have tried to use conf_thresh = 0.8
, but still got 3179
mesh proposals per category. Is this a normal behaviour to have so many false positives?
Hi,
For each bbox proposal, we predict a shape correspondingly. so actually the number of box proposals and mesh proposals are equal. For the detection part, we followed the architecture of votenet. Maybe you can refer to their code for the false positives problem.
Hope this addressed your questions.
Hi,
After checking the code again, I think there is a mistake in the online evaluation code, which causes the abnormal number of FPs. The online evaluation code seems to repeatedly use the same mesh proposal for 8 classes, even if the network has predicted the class of the mesh (and use the class code to generate the mesh).
# i = batch_id, ii = label, j = proposal_id
# e.g., we already know proposal j is table, but this line will add it repeatedly as table, chair, sofa, ..., for evaluating mAP.
sample_idx = [(ii, j) for ii in range(config_dict['dataset_config'].num_class) for j in range(N_proposals) if pred_mask[i, j] == 1 and obj_prob[i, j] > config_dict['conf_thresh']]
which in my opinion should be:
sem_cls_preds = sem_cls_probs.argmax(2) # add earlier for convenience
# e.g., only add proposal j as table for evaluating mAP.
sample_idx = [(sem_cls_preds[i, j], j) for j in range(N_proposals) if pred_mask[i, j] == 1 and obj_prob[i, j] > config_dict['conf_thresh']]
This will also speed up the evaluation greatly since the total number of the proposals processed is divided by 8.
@yinyunie Looking forward to your reply. This can be helpful to follow your work.
Hi, thanks for your comments.
For the mAP calculation, we followed the eval code from votenet. The philosophy here is to assign each predicted proposal box with the corresponding mesh. The number of meshes should be equal to the number of box proposals. In votenet, they also used the same box proposal for all classes in evaluation, in case they need to calculate AP score for each class. could you please check: https://github.com/facebookresearch/votenet/blob/2f6d6d36ff98d96901182e935afe48ccee82d566/eval.py#L41
and their evaluation argument:
python eval.py --dataset scannet --checkpoint_path log_scannet/checkpoint.tar --dump_dir eval_scannet --num_point 40000 --cluster_sampling seed_fps --use_3d_nms --use_cls_nms --per_class_proposal
Hope this helps you.
Best regards, Yinyu
Hi, So this is an intended behaviour. Thanks a lot!
Hello, thanks for the amazing work!
I'm trying to reproduce the results with the pre-trained model, but I got quite different per category AP scores from the paper:
Besides, there seems to be a lot of false positives at
conf_thresh = 0.05
:Is this expected? Or should I use a higher confidence threshold?