Before going through this document, ensure you've read and made all preparations described in the Model Release section of README.md (as well as its subsections). By the end of it you should have the DCP and RPM-Net projects somewhere in your computer and the environmental variable SPOONFUL_PREFIX
defined. For convenience, we consider defined an additional environmental variable with DCP's and RPM-Net's project folder
export SPOONFUL_PREFIX="<path to just-a-spoonful's parent folder>/just-a-spoonful"
export DCP_PREFIX="<path to dcp's parent folder>/dcp"
export RPM_PREFIX="<path to rpmnet's parent folder>/RPMNet"
Results that can generated with the original repositories from DCP and RPM-Net will have the tag [original]
in the title.
The following results can be generated with the original DCP repository. The metrics you're looking for appear as rot_RMSE
, rot_MAE
, trans_RMSE
and trans_MAE
of the A--------->B
output section. All follow-up commands assume your current working directory is DCP project folder.
cd "$DCP_PREFIX"
- DCP vanilla
python main.py --exp_name=dcp_v2 --model=dcp --emb_nn=dgcnn --pointer=transformer --head=svd --eval --gaussian_spoonful True --model_path="$SPOONFUL_PREFIX/share/weights/dcp/vanilla.t7"
- Ours
python main.py --exp_name=dcp_v2 --model=dcp --emb_nn=dgcnn --pointer=transformer --head=svd --eval --gaussian_spoonful True --model_path="$SPOONFUL_PREFIX/share/weights/dcp/ours.t7"
- DCP vanilla - no available model. The model provided by the project was trained with access to all categories of objects. I just copied the results from DCP's paper.
- Ours
python main.py --exp_name=dcp_v2 --model=dcp --emb_nn=dgcnn --pointer=transformer --head=svd --eval --unseen True --model_path="$SPOONFUL_PREFIX/share/weights/dcp/ours-unseen.t7"
Note: In the following commands I make use of the wildcard symbol * used to expand the paths to all models under share/weights/init-unseen/vanilla/
and share/weights/init-unseen/ours/
. Because of it, I no longer escape the path between quotes when specifying the model paths.
- DCP vanilla
python eval_initialization.py --exp_name=dcp_v2 --model=dcp --emb_nn=dgcnn --pointer=transformer --head=svd --eval --unseen True --init_model_list $SPOONFUL_PREFIX/share/weights/dcp/init-unseen/vanilla/*
- Ours
python eval_initialization.py --exp_name=dcp_v2 --model=dcp --emb_nn=dgcnn --pointer=transformer --head=svd --eval --unseen True --init_model_list $SPOONFUL_PREFIX/share/weights/dcp/init-unseen/ours/*
-
DCP vanilla
python main.py --exp_name=dcp_v2 --model=dcp --emb_nn=dgcnn --pointer=transformer --head=svd --eval --model_path="$SPOONFUL_PREFIX/share/weights/dcp/vanilla.t7"
-
Ours
python main.py --exp_name=dcp_v2 --model=dcp --emb_nn=dgcnn --pointer=transformer --head=svd --eval --model_path="$SPOONFUL_PREFIX/share/weights/dcp/ours.t7"
The following results can be generated with the original RPM-Net repository. The metrics you're looking for appear as DeepCP metrics: rot-mae, trans-mae
, Rotation error (deg, mean)
, Translation error (mean)
and Chamfer error (mean-sq)
, for the final iteration (5th - Evaluation result (iter 4)
) of the iterative registration procedure.
All follow-up commands assume your current working directory is
cd "$RPM_PREFIX/src"
- RPM vanilla - provided by the authors here
python eval.py --noise_type crop --resume "$SPOONFUL_PREFIX/share/weights/rpm-net/vanilla-crop.pth"
- Ours
python eval.py --noise_type crop --resume "$SPOONFUL_PREFIX/share/weights/rpm-net/ours-crop.pth"
- RPM vanilla trained without the inlier loss
python eval.py --noise_type crop --resume "$SPOONFUL_PREFIX/share/weights/rpm-net/vanilla-no-inlier-loss-crop.pth"
- Ours trained without the inlier loss
python eval.py --noise_type crop --resume "$SPOONFUL_PREFIX/share/weights/rpm-net/ours-no-inlier-loss-crop.pth"
- RPM vanilla - provided by the authors here
python eval.py --noise_type jitter --resume "$SPOONFUL_PREFIX/share/weights/rpm-net/vanilla-jitter.pth"
- Ours. You'll notice the mean isotropic error is actually lower than what we reported in the table. Probably a copy-paste error.
python eval.py --noise_type jitter --resume "$SPOONFUL_PREFIX/share/weights/rpm-net/ours-jitter.pth"