diff --git a/.gitignore b/.gitignore index 06a5b99..6f01003 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ data/ log/ *.pyc - +.DS_Store diff --git a/README.md b/README.md index 2e327f0..1e0e0ee 100644 --- a/README.md +++ b/README.md @@ -4,28 +4,22 @@ We propose a new neural network module dubbed EdgeConv suitable for CNN-based hi [[Project]](https://liuziwei7.github.io/projects/DGCNN) [[Paper]](https://arxiv.org/abs/1801.07829) ## Overview -`DGCNN` is the author's re-implementation of Dynamic Graph CNN, which achieves state-of-the-art performance on point-cloud-related high-level tasks including category classification, semantic segmentation and part segmentation. +`DGCNN` is the author's re-implementation of Dynamic Graph CNN, which achieves state-of-the-art performance on point-cloud-related high-level tasks including category classification, semantic segmentation and part segmentation. - + Further information please contact [Yue Wang](https://www.csail.mit.edu/person/yue-wang) and [Yongbin Sun](https://autoid.mit.edu/people-2). -## Other Implementations -* [pytorch-dgcnn](https://rusty1s.github.io/pytorch_geometric/build/html/modules/nn.html#torch_geometric.nn.conv.EdgeConv) +## Author's Implementations + +The classification experiments in our paper are done with the pytorch implementation. -## Requirements -* [TensorFlow](https://www.tensorflow.org/) +* [tensorflow-dgcnn](./tensorflow) +* [pytorch-dgcnn](./pytorch) -## Point Cloud Classification -* Run the training script: -``` bash -python train.py -``` -* Run the evaluation script after training finished: -``` bash -python evalutate.py +## Other Implementations +* [pytorch-geometric](https://rusty1s.github.io/pytorch_geometric/build/html/modules/nn.html#torch_geometric.nn.conv.EdgeConv) -``` ## Citation Please cite this paper if you want to use it in your work, diff --git a/pytorch/README.md b/pytorch/README.md new file mode 100644 index 0000000..5352c6a --- /dev/null +++ b/pytorch/README.md @@ -0,0 +1,33 @@ +# Dynamic Graph CNN for Learning on Point Clouds (PyTorch) + +## Point Cloud Classification +* Run the training script: + + +``` 1024 points +python main.py --exp_name=dgcnn_1024 --model=dgcnn --num_points=1024 --k=20 --use_sgd=True +``` + +``` 2048 points +python main.py --exp_name=dgcnn_2048 --model=dgcnn --num_points=2048 --k=40 --use_sgd=True +``` + +* Run the evaluation script after training finished: + +``` 1024 points +python main.py --exp_name=dgcnn_1024_eval --model=dgcnn --num_points=1024 --k=20 --use_sgd=True --eval=True --model_path=checkpoints/dgcnn_1024/models/model.t7 +``` + +``` 2048 points +python main.py --exp_name=dgcnn_2048_eval --model=dgcnn --num_points=2048 --k=40 --use_sgd=True --eval=True --model_path=checkpoints/dgcnn_2048/models/model.t7 +``` + +* Run the evaluation script with pretrained models: + +``` 1024 points +python main.py --exp_name=dgcnn_1024_eval --model=dgcnn --num_points=1024 --k=20 --use_sgd=True --eval=True --model_path=pretrained/model.1024.t7 +``` + +``` 2048 points +python main.py --exp_name=dgcnn_2048_eval --model=dgcnn --num_points=2048 --k=40 --use_sgd=True --eval=True --model_path=pretrained/model.2048.t7 +``` diff --git a/tensorflow/README.md b/tensorflow/README.md new file mode 100644 index 0000000..a2381bb --- /dev/null +++ b/tensorflow/README.md @@ -0,0 +1,15 @@ +# Dynamic Graph CNN for Learning on Point Clouds (TensorFlow) + +## Point Cloud Classification +* Run the training script: + +``` bash +python train.py +``` + +* Run the evaluation script after training finished: + +``` bash +python evalutate.py + +``` diff --git a/evaluate.py b/tensorflow/evaluate.py similarity index 100% rename from evaluate.py rename to tensorflow/evaluate.py diff --git a/misc/demo_teaser.png b/tensorflow/misc/demo_teaser.png similarity index 100% rename from misc/demo_teaser.png rename to tensorflow/misc/demo_teaser.png diff --git a/models/dgcnn.py b/tensorflow/models/dgcnn.py similarity index 100% rename from models/dgcnn.py rename to tensorflow/models/dgcnn.py diff --git a/models/transform_nets.py b/tensorflow/models/transform_nets.py similarity index 100% rename from models/transform_nets.py rename to tensorflow/models/transform_nets.py diff --git a/part_seg/README.md b/tensorflow/part_seg/README.md similarity index 100% rename from part_seg/README.md rename to tensorflow/part_seg/README.md diff --git a/part_seg/download_data.sh b/tensorflow/part_seg/download_data.sh similarity index 100% rename from part_seg/download_data.sh rename to tensorflow/part_seg/download_data.sh diff --git a/part_seg/part_seg_model.py b/tensorflow/part_seg/part_seg_model.py similarity index 100% rename from part_seg/part_seg_model.py rename to tensorflow/part_seg/part_seg_model.py diff --git a/part_seg/test.py b/tensorflow/part_seg/test.py similarity index 100% rename from part_seg/test.py rename to tensorflow/part_seg/test.py diff --git a/part_seg/testing_ply_file_list.txt b/tensorflow/part_seg/testing_ply_file_list.txt similarity index 100% rename from part_seg/testing_ply_file_list.txt rename to tensorflow/part_seg/testing_ply_file_list.txt diff --git a/part_seg/train_multi_gpu.py b/tensorflow/part_seg/train_multi_gpu.py similarity index 100% rename from part_seg/train_multi_gpu.py rename to tensorflow/part_seg/train_multi_gpu.py diff --git a/part_seg/train_results/trained_models/checkpoint b/tensorflow/part_seg/train_results/trained_models/checkpoint similarity index 100% rename from part_seg/train_results/trained_models/checkpoint rename to tensorflow/part_seg/train_results/trained_models/checkpoint diff --git a/part_seg/train_results/trained_models/epoch_175.ckpt.data-00000-of-00001 b/tensorflow/part_seg/train_results/trained_models/epoch_175.ckpt.data-00000-of-00001 similarity index 100% rename from part_seg/train_results/trained_models/epoch_175.ckpt.data-00000-of-00001 rename to tensorflow/part_seg/train_results/trained_models/epoch_175.ckpt.data-00000-of-00001 diff --git a/part_seg/train_results/trained_models/epoch_175.ckpt.index b/tensorflow/part_seg/train_results/trained_models/epoch_175.ckpt.index similarity index 100% rename from part_seg/train_results/trained_models/epoch_175.ckpt.index rename to tensorflow/part_seg/train_results/trained_models/epoch_175.ckpt.index diff --git a/part_seg/train_results/trained_models/epoch_175.ckpt.meta b/tensorflow/part_seg/train_results/trained_models/epoch_175.ckpt.meta similarity index 100% rename from part_seg/train_results/trained_models/epoch_175.ckpt.meta rename to tensorflow/part_seg/train_results/trained_models/epoch_175.ckpt.meta diff --git a/provider.py b/tensorflow/provider.py similarity index 100% rename from provider.py rename to tensorflow/provider.py diff --git a/sem_seg/README.md b/tensorflow/sem_seg/README.md similarity index 100% rename from sem_seg/README.md rename to tensorflow/sem_seg/README.md diff --git a/sem_seg/batch_inference.py b/tensorflow/sem_seg/batch_inference.py similarity index 100% rename from sem_seg/batch_inference.py rename to tensorflow/sem_seg/batch_inference.py diff --git a/sem_seg/collect_indoor3d_data.py b/tensorflow/sem_seg/collect_indoor3d_data.py similarity index 100% rename from sem_seg/collect_indoor3d_data.py rename to tensorflow/sem_seg/collect_indoor3d_data.py diff --git a/sem_seg/download_data.sh b/tensorflow/sem_seg/download_data.sh similarity index 100% rename from sem_seg/download_data.sh rename to tensorflow/sem_seg/download_data.sh diff --git a/sem_seg/eval_iou_accuracy.py b/tensorflow/sem_seg/eval_iou_accuracy.py similarity index 100% rename from sem_seg/eval_iou_accuracy.py rename to tensorflow/sem_seg/eval_iou_accuracy.py diff --git a/sem_seg/indoor3d_util.py b/tensorflow/sem_seg/indoor3d_util.py similarity index 100% rename from sem_seg/indoor3d_util.py rename to tensorflow/sem_seg/indoor3d_util.py diff --git a/sem_seg/meta/all_data_label.txt b/tensorflow/sem_seg/meta/all_data_label.txt similarity index 100% rename from sem_seg/meta/all_data_label.txt rename to tensorflow/sem_seg/meta/all_data_label.txt diff --git a/sem_seg/meta/anno_paths.txt b/tensorflow/sem_seg/meta/anno_paths.txt similarity index 100% rename from sem_seg/meta/anno_paths.txt rename to tensorflow/sem_seg/meta/anno_paths.txt diff --git a/sem_seg/meta/area1_data_label.txt b/tensorflow/sem_seg/meta/area1_data_label.txt similarity index 100% rename from sem_seg/meta/area1_data_label.txt rename to tensorflow/sem_seg/meta/area1_data_label.txt diff --git a/sem_seg/meta/area2_data_label.txt b/tensorflow/sem_seg/meta/area2_data_label.txt similarity index 100% rename from sem_seg/meta/area2_data_label.txt rename to tensorflow/sem_seg/meta/area2_data_label.txt diff --git a/sem_seg/meta/area3_data_label.txt b/tensorflow/sem_seg/meta/area3_data_label.txt similarity index 100% rename from sem_seg/meta/area3_data_label.txt rename to tensorflow/sem_seg/meta/area3_data_label.txt diff --git a/sem_seg/meta/area4_data_label.txt b/tensorflow/sem_seg/meta/area4_data_label.txt similarity index 100% rename from sem_seg/meta/area4_data_label.txt rename to tensorflow/sem_seg/meta/area4_data_label.txt diff --git a/sem_seg/meta/area5_data_label.txt b/tensorflow/sem_seg/meta/area5_data_label.txt similarity index 100% rename from sem_seg/meta/area5_data_label.txt rename to tensorflow/sem_seg/meta/area5_data_label.txt diff --git a/sem_seg/meta/area6_data_label.txt b/tensorflow/sem_seg/meta/area6_data_label.txt similarity index 100% rename from sem_seg/meta/area6_data_label.txt rename to tensorflow/sem_seg/meta/area6_data_label.txt diff --git a/sem_seg/meta/class_names.txt b/tensorflow/sem_seg/meta/class_names.txt similarity index 100% rename from sem_seg/meta/class_names.txt rename to tensorflow/sem_seg/meta/class_names.txt diff --git a/sem_seg/model.py b/tensorflow/sem_seg/model.py similarity index 100% rename from sem_seg/model.py rename to tensorflow/sem_seg/model.py diff --git a/sem_seg/test_job.sh b/tensorflow/sem_seg/test_job.sh similarity index 100% rename from sem_seg/test_job.sh rename to tensorflow/sem_seg/test_job.sh diff --git a/sem_seg/train.py b/tensorflow/sem_seg/train.py similarity index 100% rename from sem_seg/train.py rename to tensorflow/sem_seg/train.py diff --git a/sem_seg/train_job.sh b/tensorflow/sem_seg/train_job.sh similarity index 100% rename from sem_seg/train_job.sh rename to tensorflow/sem_seg/train_job.sh diff --git a/train.py b/tensorflow/train.py similarity index 100% rename from train.py rename to tensorflow/train.py diff --git a/utils/data_prep_util.py b/tensorflow/utils/data_prep_util.py similarity index 100% rename from utils/data_prep_util.py rename to tensorflow/utils/data_prep_util.py diff --git a/utils/eulerangles.py b/tensorflow/utils/eulerangles.py similarity index 100% rename from utils/eulerangles.py rename to tensorflow/utils/eulerangles.py diff --git a/utils/pc_util.py b/tensorflow/utils/pc_util.py similarity index 100% rename from utils/pc_util.py rename to tensorflow/utils/pc_util.py diff --git a/utils/plyfile.py b/tensorflow/utils/plyfile.py similarity index 100% rename from utils/plyfile.py rename to tensorflow/utils/plyfile.py diff --git a/utils/tf_util.py b/tensorflow/utils/tf_util.py similarity index 100% rename from utils/tf_util.py rename to tensorflow/utils/tf_util.py