Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

SnapNet: point cloud semantization using deep segmentation network

SnapNet products


Please acknowledge the authors and the following research paper:

"Unstructured point cloud semantic labeling using deep segmentation networks", A.Boulch and B. Le Saux and N. Audebert, Eurographics Workshop on 3D Object Retrieval 2017

Abstract and paper here.


This work is part of two projects:

  • INACHUS is European FP7 project that aims to achieve a significant time reduction related to Urban Search and Rescue (USaR) phase by providing wide-area situation awareness solutions for improved detection and localisation of the trapped victims assisted by simulation tools for predicting structural failures and a holistic decision support mechanism incorporating operational procedures and resources of relevant actors.
  • DeLTA is a research project hosted at ONERA, The French Aerospace Lab. Among its objectives are the development and the promotion of innovative machine learning based approaches for aerospace applications.


This code and weights are both released under a dual license, research and commercial. Basically the code is GPLv3 for open access (contact us for non open purposes) and the weights are released under Creative Commons BY-NC-SA (contact us for non open purposes). See the license.


The code is composed of two main parts: a C++ library and a python scripts. The C++ library permits to load the files at Semantic 3D format and compute the composite features as described in the paper.

The python scripts generates the views using the Pyqtgraph 3D viewer and predict the segmentation using TensorFlow.



Dependencies in the semantic3D_utils repository :

  • NanoFlann: nanoflann.hpp
  • Eigen


  • TensorFlow: it is the deep learning framework used in this implementation (deprecated)
  • Pytorch
  • TQDM, Scipy, Numpy ...


To generate the C++/Python library.

    cd semantic3D_utils
    python install --home="."

It will build the library.

Note: in the, we have filled the path with the standard path for PCL installation libraries and headers on Ubuntu 16.04.

Configuration file

The Configuration file is a json file containing the parameters and paths:


    "training": true,

    "create_mesh" : true,
    "create_views" : true,
    "create_images" : true,

    "backend": "pytorch",

    "batch_size" : 24,
    "learning_rate" : 1e-4,
    "epoch_nbr" : 100,
    "label_nbr" : 10,
    "input_ch" : 3,

    "train_rgb" : true,
    "train_composite" : true,
    "train_fusion" : true,

    "saver_directory_rgb" : "path_to_rgb_model_directory",
    "saver_directory_composite" : "path_to_composite_model_directory",
    "saver_directory_fusion" : "path_to_fusion_model_directory",

It is used in the python scripts, to avoid code recopy.

Launching the python scripts

For the training and testing dataset, the point cloud decimation, views and images generation are called with:

python3 --config config.json

To train the models (rgb, composite and fusion) from scratch, run:

python3 --config config.json

The semantic predictions on images and back-projection on the decimated clouds can be called using:

python3 --config config.json

Finally to generate the files at the Semantic 3D format and assign a label to each point of the original point cloud, run;

python3 --config config.json

Tensorflow version

The new code has not been tested with tensorflow. Updates on the tensorflow code are welcome. It is also possible to revert to a previous commit to get a working version.

Pre-trained models

For the old Tensorflow version, the pre-trained weights are available:

RGB model

Composite model

Fusion model (to be used with RGB and Composite)

For training from scratch, if needed, the pretrained weights of VGG16, from the caffe model are available here