Home

Awesome

Unsupervised Point Cloud Reconstruction for Classific Feature Learning

Introduction

Can unsupervised point cloud reconstruction extract features suitable for classification?

This work aims to show whether learning a unsupervised point cloud reconstruction task, for example FoldingNet, is able to extract features performing well in classification. We do all experiments under the framework of FoldingNet.

Details for FoldingNet see FoldingNet: Point Cloud Auto-encoder via Deep Grid Deformation (https://arxiv.org/abs/1712.07262).

We also tried to use DGCNN as encoder. DGCNN provides two type of networks, one for classification and one for segmentation. We use "DGCNN_Cls" to denote network for classification and "DGCNN_Seg" for segmentation. For both network, we adopt the feature extraction part as encoder in FoldingNet.

Experimental results show that better reconstruction performance do not correspond with better classfication accuracy of linear SVM classifier. Feature which good at classfication contains more nonobjective information, losing the ability to reconstruct detailedly. However, it is only this nonobjective information that is capable to capture the high level characteristic of its belonging category and thus make a great contribution in classfication task.

The key contributions of this work are as follows:

If you find this work useful, please cite:

@article{tao2020,
      Author = {An Tao},
      Title = {Unsupervised Point Cloud Reconstruction for Classific Feature Learning},
      Journal = {https://github.com/antao97/UnsupervisedPointCloudReconstruction},
      Year = {2020}
}

 

Requirements

 

Download datasets

Download the HDF5 format datasets (where each shape is sampled 2,048 points uniformly):

You can find more details about the above datasets in this repo.

 

Experiment settings

To evaluate the quality of extracted features, we use ShapeNetCore.v2 dataset to both train the FoldingNet auto-encoder and a linear SVM classifier. Specifically, we train the linear SVM classifier on ShapeNetCore.v2 dataset using the features (latent representations) obtained from the auto-encoder, while training the autoencoder from the ShapeNetCore.v2 dataset with 278 epoches.

For transfer performance, we train the linear SVM classifier on ModelNet 40 dataset using the features (latent representations) obtained from the same auto-encoder trained from the ShapeNetCore.v2 dataset.

FoldingNet has demonstrated that a 2D plane grid can be gradually folded into a meaningful point cloud. However, can uniformly sampled points from surface of sphere gradually turn into a meaningful point cloud? This is reasonable because 3D point clouds are actually sampled from surface of an object. We generate source points from surface of sphere using farthest point sampling algorithm.

A cloud of points corresponding to a shape can also be thought of as samples from a distribution that corresponds to the surface of this shape. Thus the goal for reconstruction task is to train a model which is able to transform source distribution, for example gaussian distribution, into the distribution corresponds to the surface of this shape. In this work we also try to use source points for decoder sampled from gaussian distribution N(0, I). However, it's worth noting that there is no relationship among x, y and z axises for points sampled from gaussian distribution, while for points from both plane grid and sphere surfance the relationship exists. Also because points sampled from gaussian distribution are i.i.d., there is no relationship among all points.

In all experiments, we follow the training scheme of FoldingNet.

Note that:

<p float="left"> <img src="image/distance.png" width="410" hspace="200"/> </p>

To train the network, run

python main.py --exp_name <exp name> --dataset_root <root directory for datasets> --encoder <foldnet | dgcnn_cls | dgcnn_seg> --k <16 | 20 | 40> --shape <plane | sphere | gaussian> --dataset shapenetcorev2 --gpu <gpu ids>

You can download our already trained models from [TsinghuaCloud] or [BaiduDisk] and place them under snapshot/.

To evaluate the performance of a given trained model, run

python main.py --eval --model_path <model path> --dataset_root <root directory for datasets> --encoder <foldnet | dgcnn_cls | dgcnn_seg> --k <16 | 20 | 40> --shape <plane | sphere | gaussian> --dataset <shapenetcorev2 | modelnet40> --batch_size 4 --gpu <gpu ids> 

Use --no_cuda if you want to run in CPU.

To visulize the reconstruction performance, run

python visualization.py --dataset_root <root directory for datasets> --dataset <modelnet40 | shapenetcorev2> --item=<index for data> --split <train | test> --encoder <foldnet | dgcnn_cls | dgcnn_seg> --k <16 | 20 | 40> --shape <plane | sphere | gaussian> --model_path=snapshot/<exp name>/models --draw_original --draw_source_points

Our script generates XML files and you are required to use Mitsuba to render them.

To use Tensorboard, run

tensorboard --logdir tensorboard --bind_all

You can find the Tensorboard records under tensorboard/.

 

Classification accuracy of linear SVM classifier

Results with different settings

EncoderKEpochsShapeShapeNetCore.v2ModelNet40
FoldingNet paperOriginal16278PlaneUnknown88.4%
This workOriginal16278Plane81.5%88.4%
This workOriginal16278Sphere81.9%88.8%
This workOriginal16278Gaussian81.2%87.6%
This workDGCNN_cls20250Plane83.7%90.6%
This workDGCNN_cls20250Sphere83.7%91.0%
This workDGCNN_cls20250Gaussian84.0%90.6%
This workDGCNN_cls40250Plane83.5%90.0%
This workDGCNN_cls40250Sphere83.6%90.0%
This workDGCNN_cls40250Gaussian83.2%90.0%
This workDGCNN_seg20290Plane83.2%90.0%
This workDGCNN_seg20290Sphere83.5%90.4%
This workDGCNN_seg20290Gaussian83.3%89.9%
This workDGCNN_seg40290Plane83.7%89.6%
This workDGCNN_seg40290Sphere83.6%90.7%
This workDGCNN_seg40290Gaussian83.2%89.8%

Comparison to supervised method

We also train DGCNN_Cls with classification task on ShapeNetCore.v2 dataset, using the training scheme from DGCNN paper. We train two networks for classification. One uses the setting the same as reconstruction and the other uses the best setting for classification.

TaskEncoderKFeature DimEpochsBatch SizeShapeNetCore.v2ModelNet40
ReconstructionDGCNN_cls205122501683.7%91.0%
ClassificationDGCNN_cls205122501694.5%90.4%
ReconstructionDGCNN_cls4010242503282.8%89.0%
ClassificationDGCNN_cls4010242503296.8%92.0%

If you want to run this experiment, just run

python main.py --task <reconstruct | classify> --exp_name <exp name> --dataset_root <root directory for datasets> --encoder dgcnn_cls --feat_dims <512 | 1024> --k <20 | 40> --dataset shapenetcorev2 --batch_size <16 | 32> --gpu <gpu ids>

You can also find our trained model in above mentioned links. To evaluate the performance, run

python main.py --eval --task <reconstruct | classify> --model_path <model path> --dataset_root <root directory for datasets> --encoder dgcnn_cls --feat_dims <512 | 1024> --k <20 | 40> --shape sphere --dataset <shapenetcorev2 | modelnet40> --batch_size 4 --gpu <gpu ids> 

Baseline Results

We test classification accuracy of linear SVM classifier with untrained encoder. This table shows the baseline performance.

EncoderKShapeNetCore.v2ModelNet40
Original1625.4%5.2%
DGCNN_cls2074.7%69.5%
DGCNN_cls4075.0%73.0%
DGCNN_seg2072.0%62.0%
DGCNN_seg4073.1%64.0%

If you want to run this experiment, just run

python main.py --eval --dataset_root <root directory for datasets> --encoder dgcnn_cls --k <16 | 20 | 40> --dataset <shapenetcorev2 | modelnet40> --gpu <gpu ids> 

Compare to other unsupervised feature learning models

Models are all trained in ShapeNetCore dataset and transfered into ModelNet40 dataset.

ModelReferenceModelNet40
SPHSGP 200368.2%
LFDCGF 200375.5%
T-L NetworkECCV 201674.4%
VConv-DAEECCV 201675.5%
3D-GANNIPS 201683.3%
Latent-GANICML 201883.7%
PointGrowArXiv 201883.8%
MRTNet-VAEECCV 201886.4%
PointFlowICCV 201986.8%
PCGANArXiv 201887.8%
FoldingNetCVPR 201888.4%
PointCapsNetCVPR 201988.9%
Multi-TaskICCV 201989.1%
MAP-VAEICCV 201990.2%
FoldingNet (DGCNN_Cls_K20 + Sphere)-91.0%

 

Reconstruction performance

Sourse

   2D Plane   Spherical surface Gaussian distribution

<p float="left"> <img src="image/plane.png" width="65" hspace="40"/> <img src="image/sphere.png" width="65" hspace="40"/> <img src="image/gaussian.png" width="65" hspace="40"/> </p>

ShapeNetCore.v2 dataset

           Original         DGCNN_Cls (K20)     DGCNN_Seg (K20)

 Input   Plane  Sphere Gaussian  Plane  Sphere Gaussian  Plane  Sphere Gaussian

<p float="left"> <img src="image/input/shapenetcorev2_train16_airplane_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_shapenetcorev2_train16_airplane.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_shapenetcorev2_train16_airplane.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_shapenetcorev2_train16_airplane.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_shapenetcorev2_train16_airplane.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_shapenetcorev2_train16_airplane.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_shapenetcorev2_train16_airplane.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_shapenetcorev2_train16_airplane.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_shapenetcorev2_train16_airplane.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_shapenetcorev2_train16_airplane.jpg" width="73"/> <img src="image/input/shapenetcorev2_test57_chair_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_shapenetcorev2_test57_chair.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_shapenetcorev2_test57_chair.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_shapenetcorev2_test57_chair.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_shapenetcorev2_test57_chair.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_shapenetcorev2_test57_chair.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_shapenetcorev2_test57_chair.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_shapenetcorev2_test57_chair.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_shapenetcorev2_test57_chair.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_shapenetcorev2_test57_chair.jpg" width="73"/> <img src="image/input/shapenetcorev2_train4_tower_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_shapenetcorev2_train4_tower.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_shapenetcorev2_train4_tower.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_shapenetcorev2_train4_tower.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_shapenetcorev2_train4_tower.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_shapenetcorev2_train4_tower.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_shapenetcorev2_train4_tower.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_shapenetcorev2_train4_tower.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_shapenetcorev2_train4_tower.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_shapenetcorev2_train4_tower.jpg" width="73"/> <img src="image/input/shapenetcorev2_train13_table_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_shapenetcorev2_train13_table.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_shapenetcorev2_train13_table.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_shapenetcorev2_train13_table.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_shapenetcorev2_train13_table.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_shapenetcorev2_train13_table.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_shapenetcorev2_train13_table.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_shapenetcorev2_train13_table.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_shapenetcorev2_train13_table.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_shapenetcorev2_train13_table.jpg" width="73"/> <img src="image/input/shapenetcorev2_test37_earphone_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_shapenetcorev2_test37_earphone.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_shapenetcorev2_test37_earphone.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_shapenetcorev2_test37_earphone.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_shapenetcorev2_test37_earphone.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_shapenetcorev2_test37_earphone.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_shapenetcorev2_test37_earphone.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_shapenetcorev2_test37_earphone.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_shapenetcorev2_test37_earphone.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_shapenetcorev2_test37_earphone.jpg" width="73"/> <img src="image/input/shapenetcorev2_test59_lamp_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_shapenetcorev2_test59_lamp.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_shapenetcorev2_test59_lamp.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_shapenetcorev2_test59_lamp.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_shapenetcorev2_test59_lamp.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_shapenetcorev2_test59_lamp.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_shapenetcorev2_test59_lamp.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_shapenetcorev2_test59_lamp.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_shapenetcorev2_test59_lamp.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_shapenetcorev2_test59_lamp.jpg" width="73"/> <img src="image/input/shapenetcorev2_train12_bench_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_shapenetcorev2_train12_bench.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_shapenetcorev2_train12_bench.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_shapenetcorev2_train12_bench.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_shapenetcorev2_train12_bench.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_shapenetcorev2_train12_bench.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_shapenetcorev2_train12_bench.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_shapenetcorev2_train12_bench.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_shapenetcorev2_train12_bench.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_shapenetcorev2_train12_bench.jpg" width="73"/> <img src="image/input/shapenetcorev2_train10_bag_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_shapenetcorev2_train10_bag.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_shapenetcorev2_train10_bag.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_shapenetcorev2_train10_bag.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_shapenetcorev2_train10_bag.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_shapenetcorev2_train10_bag.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_shapenetcorev2_train10_bag.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_shapenetcorev2_train10_bag.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_shapenetcorev2_train10_bag.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_shapenetcorev2_train10_bag.jpg" width="73"/> </p>

ModelNet40 dataset

           Original         DGCNN_Cls (K20)     DGCNN_Seg (K20)

 Input   Plane  Sphere Gaussian  Plane  Sphere Gaussian  Plane  Sphere Gaussian

<p float="left"> <img src="image/input/modelnet40_train11_airplane_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_modelnet40_train11_airplane.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_modelnet40_train11_airplane.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_modelnet40_train11_airplane.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_modelnet40_train11_airplane.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_modelnet40_train11_airplane.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_modelnet40_train11_airplane.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_modelnet40_train11_airplane.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_modelnet40_train11_airplane.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_modelnet40_train11_airplane.jpg" width="73"/> <img src="image/input/modelnet40_train12_chair_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_modelnet40_train12_chair.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_modelnet40_train12_chair.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_modelnet40_train12_chair.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_modelnet40_train12_chair.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_modelnet40_train12_chair.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_modelnet40_train12_chair.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_modelnet40_train12_chair.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_modelnet40_train12_chair.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_modelnet40_train12_chair.jpg" width="73"/> <img src="image/input/modelnet40_train7_vase_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_modelnet40_train7_vase.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_modelnet40_train7_vase.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_modelnet40_train7_vase.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_modelnet40_train7_vase.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_modelnet40_train7_vase.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_modelnet40_train7_vase.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_modelnet40_train7_vase.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_modelnet40_train7_vase.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_modelnet40_train7_vase.jpg" width="73"/> <img src="image/input/modelnet40_train16_table_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_modelnet40_train16_table.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_modelnet40_train16_table.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_modelnet40_train16_table.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_modelnet40_train16_table.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_modelnet40_train16_table.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_modelnet40_train16_table.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_modelnet40_train16_table.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_modelnet40_train16_table.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_modelnet40_train16_table.jpg" width="73"/> <img src="image/input/modelnet40_train0_laptop_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_modelnet40_train0_laptop.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_modelnet40_train0_laptop.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_modelnet40_train0_laptop.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_modelnet40_train0_laptop.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_modelnet40_train0_laptop.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_modelnet40_train0_laptop.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_modelnet40_train0_laptop.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_modelnet40_train0_laptop.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_modelnet40_train0_laptop.jpg" width="73"/> <img src="image/input/modelnet40_train19_bench_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_modelnet40_train19_bench.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_modelnet40_train19_bench.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_modelnet40_train19_bench.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_modelnet40_train19_bench.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_modelnet40_train19_bench.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_modelnet40_train19_bench.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_modelnet40_train19_bench.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_modelnet40_train19_bench.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_modelnet40_train19_bench.jpg" width="73"/> <img src="image/input/modelnet40_train10_bookshelf_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_modelnet40_train10_bookshelf.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_modelnet40_train10_bookshelf.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_modelnet40_train10_bookshelf.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_modelnet40_train10_bookshelf.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_modelnet40_train10_bookshelf.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_modelnet40_train10_bookshelf.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_modelnet40_train10_bookshelf.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_modelnet40_train10_bookshelf.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_modelnet40_train10_bookshelf.jpg" width="73"/> <img src="image/input/modelnet40_train14_plant_orign.jpg" width="73"/> <img src="image/original_plane/shapenetcorev2_278_modelnet40_train14_plant.jpg" width="73"/> <img src="image/original_sphere/shapenetcorev2_278_modelnet40_train14_plant.jpg" width="73"/> <img src="image/original_gaussian/shapenetcorev2_278_modelnet40_train14_plant.jpg" width="73"/> <img src="image/dgcnn_cls_plane/shapenetcorev2_250_modelnet40_train14_plant.jpg" width="73"/> <img src="image/dgcnn_cls_sphere/shapenetcorev2_250_modelnet40_train14_plant.jpg" width="73"/> <img src="image/dgcnn_cls_gaussian/shapenetcorev2_250_modelnet40_train14_plant.jpg" width="73"/> <img src="image/dgcnn_seg_plane/shapenetcorev2_290_modelnet40_train14_plant.jpg" width="73"/> <img src="image/dgcnn_seg_sphere/shapenetcorev2_290_modelnet40_train14_plant.jpg" width="73"/> <img src="image/dgcnn_seg_gaussian/shapenetcorev2_290_modelnet40_train14_plant.jpg" width="73"/> </p>

 

CD (Chamfer Distance) scores for trained model

We provide the avg CD scores in each dataset after training, which serves as the measurement of folding performance. CD scores are multiplied by 10^4.

Results with different settings

EncoderKShapeShapeNetCore.v2ModelNet40
Original16Plane11.119.88
Original16Sphere10.589.69
Original16Gaussian9.6311.09
DGCNN_cls20Plane11.0812.68
DGCNN_cls20Sphere11.0712.68
DGCNN_cls20Gaussian11.1812.77
DGCNN_cls40Plane11.7413.36
DGCNN_cls40Sphere11.1712.58
DGCNN_cls40Gaussian14.7717.03
DGCNN_seg20Plane11.2812.55
DGCNN_seg20Sphere10.8812.49
DGCNN_seg20Gaussian13.3615.19
DGCNN_seg40Plane11.1912.69
DGCNN_seg40Sphere10.6812.69
DGCNN_seg40Gaussian11.9513.74

Compare to other reconstruction methods

Models are all trained and evaluated in ShapeNetCore dataset.

ModelReferenceShapeNetCore.v2
Latent-GANICML 20187.12
AtlasNetCVPR 20185.13
PointFlowICCV 20197.54
FoldingNet (Gaussian)-9.63

 

Performance analysis

Effectiveness of our reimplementation

The performance on ModelNet40 dataset is enough to validate the effectiveness of our reimplementation.

Points from sphere surface

The results of sphere show that the so-called "FoldingNet" does not restrict with folding operation. The essensce of FoldingNet decoder, i.e. MLP, is to map points from original space into new space, no matter the structure of points in original space is 2D plane grid or something else. Also, this mapping does not change neighbouring relations of points, which means adjacent points in original space are also adjacent in new space. Because point clouds are sampled from surface of an object, i.e. closed surface, the closed surface can be seen as mapped from surface of sphere just like pinching a blowing glass or Chinese sugar-figure. Thus it is reasonable to map uniformly sampled points from sphere surface to target point clouds through MLP, and as a matter of course we would consider reconstruction results for source points from sphere surface is better than 2D plane grid.

Points from gaussian distribution

Because each point is sampled independently from same gaussian distribution N(0, I), i.e. i.i.d., there is no relationship among points and the values of three axises. The reconstruction model has to learn the relationship with no prior knowledge, just like drawing on a white paper. If designed properly source points from gaussian distribution can do perfect job for reconstruction, but they can not help to extract good features for classification. This is because in order to learn the relationship the model need to focus to every details, and that is the reason why the learned model lose the ablity to extract feature in a more abstract sight, which is crucial for classification. The experimental results validate that in order to extract features suitable for classification, it is better to have some proper prior knowledge for souce points in order.

Classification v.s. reconstruction

This experiment shows that training without labels can also obtain comparable results and thus validates the effectiveness of reconstruction.

Reconstruction performance

All networks run well in low curvature smooth surface, but fail in not differentiable area (crossing of planes) and high curvature surface. Because a large number of training samples have four legs, e.g. chair and table, reconstruction network also runs well in these four legs shapes. The visualized results also show characteristics of reconstructed point cloud with different corresponding source points types and encoder types.

From both visualized results and avg CD sorces, the overall reconstruction performance of ShapeNetCore.v2 dataset (training dataset) is better than ModelNet40 dataset (transfer dataset).

 

Reference repos: