Experiments on ShapeNet

January 23, 2020 ยท View on GitHub

Data

We use ShapeNet data and their renderings, as provided by R2N2.

Run

datasets/shapenet/download_shapenet.sh

to download R2N2, and the train/val/test splits. You also need the original ShapeNet Core v1 & binvox dataset, which require registration before downloading.

Preprocessing

python tools/preprocess_shapenet.py \
--shapenet_dir /path/to/ShapeNetCore.v1 \
--shapenet_binvox_dir /path/to/ShapeNetCore.v1.binvox \
--output_dir ./datasets/shapenet/ShapeNetV1processed \
--zip_output

The above command preprocesses the ShapeNet dataset to reduce the data loading time. The preprocessed data will be saved in ./datasets/shapenet and will be zipped. The zipped output is useful when training in clusters.

Training

python tools/train_net_shapenet.py --num-gpus 8 \
--config-file configs/shapenet/voxmesh_R50.yaml

When --copy_data, the preprocessed zipped data from above will be copied to a local /tmp directory. This is particularly useful when training on remote clusters, as it reduces the io time during training

Testing and Evaluation

python tools/train_net_shapenet.py --eval-only --num-gpus 1 \
--config-file configs/shapenet/voxmesh_R50.yaml \
MODEL.CHECKPOINT shapenet://voxmesh_R50.pth

The output of the evaluation produces the results as shown in Table 2 of our paper. To evaluate under the Pixel2Mesh protocol, as in Table 1 of our paper, add --eval-p2m.

Models

Mesh R-CNNPixel2MeshSphereInit
voxmesh_R50.pthpixel2mesh_R50.pthsphereinit_R50.pth

Note that we release only the light and pretty for both our and the baseline models.

Performance

Scale-normalized Protocol

Performance of our model on ShapeNet test set under the scale-normalized evaluation protocol (as in Table 2 of our paper).

category#instanceschamfernormalF1(0.1)F1(0.3)F1(0.5)
bench87120.1208990.65753642.400586.003695.128
chair325200.1836930.71236231.690679.827592.0139
lamp111220.4139650.67299230.504870.344984.5068
speaker77520.2537960.73082924.833574.660688.237
firearm113860.1683230.62143947.225185.27193.8171
table407960.1483570.7564242.24986.203994.1623
watercraft92980.2241680.64281230.058975.533289.9764
plane194160.1874650.68428539.00980.99892.1069
cabinet75410.1112940.7512234.822786.934695.371
car359810.1076050.64785729.639785.792596.2938
monitor52560.2180320.77936527.253177.297990.904
couch152260.1442790.7230227.573481.68494.3294
cellphone50450.1215040.85043742.916888.988896.1367
total2100510.1848750.71004434.62981.503192.5372
per-instance2100510.1711890.7027534.937282.410793.1323

Pixel2Mesh Protocol

Performance of our model on ShapeNet test set under the pixel2mesh evaluation protocol (as in Table 1 of our paper). To evaluate under this protocol, add the --eval-p2m flag.

category#instanceschamfernormalF1(0.0001)F1(0.0002)
bench87120.0002952520.65750873.468184.4999
chair325200.0004004150.71234866.522779.3634
lamp111220.0007889150.67305760.105771.7711
speaker77520.0005821520.73079759.997473.8792
firearm113860.0003570160.62143875.976185.5111
table407960.0003429910.75644276.077685.4878
watercraft92980.0004490610.64279162.80876.5464
plane194160.0003131410.68433375.810485.3897
cabinet75410.0002936130.75130672.630284.7327
car359810.0002405850.64789671.811885.5155
monitor52560.0004709650.77939764.291777.8422
couch152260.0003553690.72301364.138879.327
cellphone50450.0002803970.85045677.301187.8698
total2100510.0003976820.7100669.30381.3643
per-instance2100510.0003683170.70276870.447982.3373