ajhamdi / MVTN

pytorch implementation of the ICCV'21 paper "MVTN: Multi-View Transformation Network for 3D Shape Recognition"
100 stars 9 forks source link

ScanObjectNN (paper table 2) #5

Closed sheshap closed 2 years ago

sheshap commented 3 years ago

Hi Thank you so much for the code release.

Can you please give the exact training and evaluation commands used for training and testing the ScanObjectNN dataset to recreate the results of table 2 in paper?

Thanks in advance. Much appreciated.

ajhamdi commented 3 years ago

Hi @sheshap

python run_mvtn.py --data_dir data/ScanObjectNN/ --run_mode train --mvnetwork viewgcn --nb_views 12 --views_config learned_spherical --pc_rendering --pretrained --shape_extractor PointNet --features_type logits --clip_grads  
sheshap commented 3 years ago

@ajhamdi

Few of the arguments mentioned in the above command are not recognized.

run_mvtn.py: error: unrecognized arguments: --pretrained --shape_extractor PointNet --features_type logits --clip_grads

ajhamdi commented 3 years ago

Because the config.yaml configuration file has them by default already. This command should do

python run_mvtn.py --data_dir data/ScanObjectNN/ --run_mode train --mvnetwork viewgcn --nb_views 12 --pc_rendering
sheshap commented 3 years ago

@ajhamdi

The above command resulted in the best training accuracy of 89.02% and test accuracy of 87.5 on the obj_only variant.

Paper: 92.6%

ajhamdi commented 3 years ago

Are you using one-stage training or two-stage? The results in the paper reported are for two-stage in which the first stage is trained on ModelNet ( CNN ) . Also, make sure you are setting canonical_distance: 1.0 in the config.yaml file

Please read the documentation in the config.yaml file and python run_mvtn --help

sheshap commented 2 years ago

Please confirm if the following two commands represent the two stages. Much appreciated.

The first stage is 50 epochs of training the backbone CNN on the single view images

1) python run_mvtn.py --data_dir data/ModelNet40/ --run_mode train --mvnetwork mvcnn --nb_views 1 --views_config learned_spherical --pc_rendering

The second stage is 35 epochs on the multi-view network on the M views of the 3D object.

2) python run_mvtn.py --data_dir data/ScanObjectNN/ --run_mode train --mvnetwork viewgcn --nb_views 12 --views_config learned_spherical --pc_rendering --resume_second true --resume_first false

P.S: Using only the 2nd command without resume flags has given me 91.4% accuracy for the obj_only variant of ScanObjectNN

Kindly, Please provide exact commands/configurations to recreate your results on the ScanObjectNN dataset variants.

Thanks

sheshap commented 2 years ago

@ajhamdi Can you please help with exact configurations/commands to recreate results on ScanObjectNN?

sheshap commented 2 years ago

@ajhamdi

I used the below command and got 82.5% on PB_T50_RS

python run_mvtn.py --data_dir data/ScanObjectNN --run_mode train --mvnetwork mvcnn --nb_views 12 --views_config learned_spherical --pc_rendering -dsetp hardest

Can you please provide the exact configurations/commands to recreate results on ScanObjectNN based on two-phase training for viewgcn?

Thanks in Advance.

sheshap commented 2 years ago

I was able to reproduce 92.6% (scanobjectnn - with_bg) using the below commands.

python run_mvtn.py --data_dir ../MVTN/data/ModelNet40/ --run_mode train --mvnetwork viewgcn --nb_views 1 --views_config learned_spherical --pc_rendering --viewgcn_phase first

python run_mvtn.py --data_dir data/ScanObjectNN/ --run_mode train --mvnetwork viewgcn --nb_views 12 --views_config learned_spherical --pc_rendering --viewgcn_phase second --dset_variant with_bg

Closing the issue. Thanks

P.S: reproduced 92.3% (obj_only) and 82.9% (hardest)