All Projects → lijx10 → So Net

lijx10 / So Net

Licence: mit
SO-Net: Self-Organizing Network for Point Cloud Analysis, CVPR2018

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to So Net

3d Bat
3D Bounding Box Annotation Tool (3D-BAT) Point cloud and Image Labeling
Stars: ✭ 179 (-39.73%)
Mutual labels:  autonomous-driving, 3d, point-cloud
Scan2Cap
[CVPR 2021] Scan2Cap: Context-aware Dense Captioning in RGB-D Scans
Stars: ✭ 81 (-72.73%)
Mutual labels:  point-cloud, cvpr
3d Pointcloud
Papers and Datasets about Point Cloud.
Stars: ✭ 179 (-39.73%)
Mutual labels:  autonomous-driving, point-cloud
LiDAR fog sim
LiDAR fog simulation
Stars: ✭ 101 (-65.99%)
Mutual labels:  point-cloud, autonomous-driving
Openpcdet
OpenPCDet Toolbox for LiDAR-based 3D Object Detection.
Stars: ✭ 2,199 (+640.4%)
Mutual labels:  autonomous-driving, point-cloud
Dbnet
DBNet: A Large-Scale Dataset for Driving Behavior Learning, CVPR 2018
Stars: ✭ 172 (-42.09%)
Mutual labels:  autonomous-driving, point-cloud
Depth-Guided-Inpainting
Code for ECCV 2020 "DVI: Depth Guided Video Inpainting for Autonomous Driving"
Stars: ✭ 50 (-83.16%)
Mutual labels:  point-cloud, autonomous-driving
Meshlab
The open source mesh processing system
Stars: ✭ 2,619 (+781.82%)
Mutual labels:  3d, point-cloud
CVPR-2020-point-cloud-analysis
CVPR 2020 papers focusing on point cloud analysis
Stars: ✭ 48 (-83.84%)
Mutual labels:  point-cloud, cvpr
efficient online learning
Efficient Online Transfer Learning for 3D Object Detection in Autonomous Driving
Stars: ✭ 20 (-93.27%)
Mutual labels:  point-cloud, autonomous-driving
urban road filter
Real-time LIDAR-based Urban Road and Sidewalk detection for Autonomous Vehicles 🚗
Stars: ✭ 134 (-54.88%)
Mutual labels:  point-cloud, autonomous-driving
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (+531.65%)
Mutual labels:  autonomous-driving, point-cloud
Dh3d
DH3D: Deep Hierarchical 3D Descriptors for Robust Large-Scale 6DOF Relocalization
Stars: ✭ 96 (-67.68%)
Mutual labels:  autonomous-driving, point-cloud
BtcDet
Behind the Curtain: Learning Occluded Shapes for 3D Object Detection
Stars: ✭ 104 (-64.98%)
Mutual labels:  point-cloud, autonomous-driving
Pointcnn
PointCNN: Convolution On X-Transformed Points (NeurIPS 2018)
Stars: ✭ 1,120 (+277.1%)
Mutual labels:  autonomous-driving, point-cloud
SGGpoint
[CVPR 2021] Exploiting Edge-Oriented Reasoning for 3D Point-based Scene Graph Analysis (official pytorch implementation)
Stars: ✭ 41 (-86.2%)
Mutual labels:  point-cloud, cvpr
Spatiotemporalsegmentation
4D Spatio-Temporal Semantic Segmentation on a 3D video (a sequence of 3D scans)
Stars: ✭ 141 (-52.53%)
Mutual labels:  3d, cvpr
Pangolin
Python binding of 3D visualization library Pangolin
Stars: ✭ 157 (-47.14%)
Mutual labels:  3d, point-cloud
FLAT
[ICCV2021 Oral] Fooling LiDAR by Attacking GPS Trajectory
Stars: ✭ 52 (-82.49%)
Mutual labels:  point-cloud, autonomous-driving
awesome-lidar
😎 Awesome LIDAR list. The list includes LIDAR manufacturers, datasets, point cloud-processing algorithms, point cloud frameworks and simulators.
Stars: ✭ 217 (-26.94%)
Mutual labels:  point-cloud, autonomous-driving

SO-Net

SO-Net: Self-Organizing Network for Point Cloud Analysis. CVPR 2018, Salt Lake City, USA Jiaxin Li, Ben M. Chen, Gim Hee Lee, National University of Singapore

Introduction

SO-Net is a deep network architecture that processes 2D/3D point clouds. It enables various applications including but not limited to classification, shape retrieval, segmentation, reconstruction. The arXiv version of SO-Net can be found here.

@article{li2018sonet,
      title={SO-Net: Self-Organizing Network for Point Cloud Analysis},
      author={Li, Jiaxin and Chen, Ben M and Lee, Gim Hee},
      journal={arXiv preprint arXiv:1803.04249},
      year={2018}
}

Inspired by Self-Organizing Network (SOM), SO-Net performs dimensional reduction on point clouds and extracts features based on the SOM nodes, with theoretical guarantee of invariance to point order. SO-Net explicitly models the spatial distribution of points and provides precise control of the receptive field overlap.

This repository releases codes of 4 applications:

  • Classification - ModelNet 40/10, MNIST dataset
  • Shape Retrieval - SHREC 2016 dataset
  • Part Segmentation - ShapeNetPart dataset
  • Auto-encoder - ModelNet 40/10, SHREC 2016, ShapeNetPart

Installation

Requirements:

cd models/index_max_ext
python3 setup.py install

Optional dependency:

Dataset

For ModelNet40/10 and ShapeNetPart, we use the pre-processed dataset provided by PointNet++ of Charles R. Qi. For SHREC2016, we sampled points uniformly from the original *.obj files. Matlab codes that perform sampling is provided in data/.

In SO-Net, we can decouple the SOM training as data pre-processing. So we further process the datasets by generating a SOM for each point cloud. The codes for batch-SOM training can be found in data/.

In addition, our prepared datasets can be found in Google Drive: MNIST, ModelNet, ShapeNetPart, SHREC2016.

Usage

Configuration

The 4 applications share the same SO-Net architecture, which is implemented in models/. Typically each task has its own folder like modelnet/, part-seg/ that contains its own configuration options.py, training script train.py and testing script test.py.

To run these tasks, you may need to set the dataset type and path in options.py, by changing the default value of --dataset, --dataroot.

Visualization

We use visdom for visualization. Various loss values and the reconstructed point clouds (in auto-encoder) are plotted in real-time. Please start the visdom server before training, otherwise there will be warnings/errors, though the warnings/errors won't affect the training process.

python3 -m visdom.server

The visualization results can be viewed in browser with the address of:

http://localhost:8097

Application - Classification

Point cloud classification can be done on ModelNet40/10 and SHREC2016 dataset. Besides setting --dataset and --dataroot, --classes should be set to the desired class number, i.e, 55 for SHREC2016, 40 for ModelNet40 and 10 for ModelNet10.

cd modelnet/
python3 train.py

Application - Shape Retrieval

The training of shape retrieval is the same as classification, while at testing phase, the score vector (length 55 for SHREC2016) is regarded as the feature vector. We calculate the L2 feature distance between each shape in the test set and all shapes in the same predicted category from the test set (including itself). The corresponding retrieval list is constructed by sorting these shapes according to the feature distances.

cd shrec16/
python3 train.py

Application - Part Segmentation

Segmentation is formulated as a per-point classification problem.

cd part-seg/
python3 train.py

Application - Auto-encoder

An input point cloud is compressed into a feature vector, based on which a point cloud is reconstructed to minimize the Chamfer loss. Supports ModelNet, ShapeNetPart, SHREC2016.

cd autoencoder/
python3 train.py

License

This repository is released under MIT License (see LICENSE file for details).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].