Deep Compression for Dense Point Cloud Maps.

Overview

DEPOCO

This repository implements the algorithms described in our paper Deep Compression for Dense Point Cloud Maps.

How to get started (using Docker)

Dependenices nvida-docker

Install nvida-docker and follow these instructions

Data

You can download the dataset from here and link the dataset to the docker container by configuring the Makefile

DATASETS=<path-to-your-data>

Building the docker container

For building the Docker Container simply run

make build

in the root directory.

Running the Code

The first step is to run the docker container:

make run

The following commands assume to be run inside the docker container.

Training

For training a network we first have to create the config file with all the parameters. An example of this can be found in /depoco/config/depoco.yaml. Make sure to give each config file a unique experiment_id: ... to not override previous models. To train the network simply run

python3 trainer -cfg <path-to-your-config>

Evaluation

Evaluating the network on the test set can be done by:

python3 evaluate.py -cfg <path-to-your-config>

All results will be saved in a dictonary.

Plotting the results

We can plot the quantitative results e.g. by using Jupyter-Lab. An example of this is provided in depoco/notebooks/visualize.ipynb. Jupyter-Lab can be started in the Docker container by:

jupyter-lab  --ip 0.0.0.0 --no-browser --allow-root

The 8888 port is forwarded which allows us to use it as if it would be on the host machine.

Pretrained models

The config files and the pretrained weights of our models are stored in depoco/network_files/eX/. The results can be inspected by the jupyter notebook depoco/notebooks/visualize.ipynb.

How to get started (without Docker)

Installation

A list of all dependencies and install instructions can be derived from the Dockerfile.

Running the code

After installation the training and evaluation can be run as explained before.

Qualitative Results

Plotting the point clouds using open3d can be done by

pyhon3 evaluate -cfg <path-to-your-config>

This can not be done in the docker container and thus requires the installation on the local machine.

Citation

If you use this library for any academic work, please cite the original paper.

@article{wiesmann2021ral,
author = {L. Wiesmann and A. Milioto and X. Chen and C. Stachniss and J. Behley},
title = {{Deep Compression for Dense Point Cloud Maps}},
journal = {IEEE Robotics and Automation Letters (RA-L)},
volume = 6,
issue = 2,
pages = {2060-2067},
doi = {10.1109/LRA.2021.3059633},
year = 2021
}
You might also like...
PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place Recognition, CVPR 2018
PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place Recognition, CVPR 2018

PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place Recognition PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place

Implementation of "A Deep Learning Loss Function based on Auditory Power Compression for Speech Enhancement" by pytorch

This repository is used to suspend the results of our paper "A Deep Learning Loss Function based on Auditory Power Compression for Speech Enhancement"

An efficient and easy-to-use deep learning model compression framework
An efficient and easy-to-use deep learning model compression framework

TinyNeuralNetwork 简体中文 TinyNeuralNetwork is an efficient and easy-to-use deep learning model compression framework, which contains features like neura

Official Pytorch implementation for Deep Contextual Video Compression, NeurIPS 2021

Introduction Official Pytorch implementation for Deep Contextual Video Compression, NeurIPS 2021 Prerequisites Python 3.8 and conda, get Conda CUDA 11

Code for
Code for "PV-RAFT: Point-Voxel Correlation Fields for Scene Flow Estimation of Point Clouds", CVPR 2021

PV-RAFT This repository contains the PyTorch implementation for paper "PV-RAFT: Point-Voxel Correlation Fields for Scene Flow Estimation of Point Clou

Unofficial implementation of Point-Unet: A Context-Aware Point-Based Neural Network for Volumetric Segmentation

Point-Unet This is an unofficial implementation of the MICCAI 2021 paper Point-Unet: A Context-Aware Point-Based Neural Network for Volumetric Segment

Point-NeRF: Point-based Neural Radiance Fields
Point-NeRF: Point-based Neural Radiance Fields

Point-NeRF: Point-based Neural Radiance Fields Project Sites | Paper | Primary c

Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds (CVPR 2022, Oral)
Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds (CVPR 2022, Oral)

Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds (CVPR 2022, Oral) This is the official implementat

Pytorch implementation of PCT: Point Cloud Transformer

PCT: Point Cloud Transformer This is a Pytorch implementation of PCT: Point Cloud Transformer.

Comments
  • Cannot Install `octree_handler` on Google Colab

    Cannot Install `octree_handler` on Google Colab

    Hello. I am trying to run the code on Google Colab. While trying to install the third party dependency (following the instructions given in the Dockerfile) octree_handler via the command:

    cd depoco/submodules/octree_handler && pip3 install -U .

    ...I get the following error:

    Processing /content/git-clone/submodules/octree_handler
      DEPRECATION: A future pip version will change local packages to be built in-place without first copying to a temporary directory. We recommend you use --use-feature=in-tree-build to test your packages with this new behavior before it becomes the default.
       pip 21.3 will remove support for this functionality. You can find discussion regarding this at https://github.com/pypa/pip/issues/7555.
    Building wheels for collected packages: octree-handler
      Building wheel for octree-handler (setup.py) ... error
      ERROR: Failed building wheel for octree-handler
      Running setup.py clean for octree-handler
    Failed to build octree-handler
    Installing collected packages: octree-handler
        Running setup.py install for octree-handler ... error
    ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-7l37y9ju/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-7l37y9ju/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-qzusj2ky/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.7/octree-handler Check the logs for full command output.
    
    opened by aakashsinghbais 2
  • Large Layered Clusters in Output Clouds Obtained from the Decoder.

    Large Layered Clusters in Output Clouds Obtained from the Decoder.

    Hello @louis-wiesmann . After training the model to at the default params with epochs=15, I am using the trained model to test the results on a sample point cloud.

    The input cloud I used for testing when looked from side looks like this : image

    On the other hand, the output obtained from the decoder looks like this: image

    As is clearly visible, the output from the decoder has a somewhat layered structure. Is there any way to minimize this / correct this?

    Some other info:

    1. Total points in the original cloud = 11,000,000
    2. max_nr_points (set in the yaml file) = 60,000

    Also, I am getting some big clusters in the outputs that I get from the decoder...as can be seen in sample outputs below :

    Input CloudOutput Cloud

    Can you please tell if there is any parameter that can be tweaked in the YAML config file to get rid of this layered clustering. Or is there any other way to minimize or eliminate this ?

    NOTE : I have already seen the other issue on clustering, but in my case the clusters seem to be large.

    Thanks

    opened by aakashsinghbais 1
  • Retaining Labels in the Output Clouds from Decoder

    Retaining Labels in the Output Clouds from Decoder

    Hello @louis-wiesmann . Is there any way to retain the class labels of the points obtained after decompression from the decoder?

    Thanks in advance. Aakash

    opened by aakashsinghbais 5
  • setup octree-handler problem

    setup octree-handler problem

    when I install the 3rdparty dependencies, I meet the problem:

    deep-point-map-compression/submodules/octree_handler$ pip3 install -U .

    the problem is:

    /home/bianjiang/CVPR/deep-point-map-compression/submodules/octree-handler/src/OctreeHandler.cpp: In member function ‘Eigen::MatrixXf Octree::computeEigenvaluesNormal(const float&)’: /home/bianjiang/CVPR/deep-point-map-compression/submodules/octree-handler/src/OctreeHandler.cpp:181:12: error: ‘cout’ is not a member of ‘std’ 181 | std::cout << "sing: " << singularv | ^~~~ /home/bianjiang/CVPR/deep-point-map-compression/submodules/octree-handler/src/OctreeHandler.cpp:9:1: note: ‘std::cout’ is defined in header ‘’; did you forget to ‘#include ’? 8 | #include <eigen3/Eigen/Dense> +++ |+#include 9 | #include make[2]: *** [src/CMakeFiles/octree_handler.dir/build.make:63:src/CMakeFiles/octree_handler.dir/OctreeHandler.cpp.o] error 1 make[1]: *** [CMakeFiles/Makefile2:94:src/CMakeFiles/octree_handler.dir/all] error 2 make: *** [Makefile:84:all] error 2

    I solve this probelm by add #include <iostream> to deep-point-map-compression/submodules/octree-handler/src/OctreeHandler.h

    So if anyone meets the same problem, this method may work.

    opened by Py-debug 3
Owner
Photogrammetry & Robotics Bonn
Photogrammetry & Robotics Lab at the University of Bonn
Photogrammetry & Robotics Bonn
Revisiting Discriminator in GAN Compression: A Generator-discriminator Cooperative Compression Scheme (NeurIPS2021)

Revisiting Discriminator in GAN Compression: A Generator-discriminator Cooperative Compression Scheme (NeurIPS2021) Overview Prerequisites Linux Pytho

Shaojie Li 34 Mar 31, 2022
An Image compression simulator that uses Source Extractor and Monte Carlo methods to examine the post compressive effects different compression algorithms have.

ImageCompressionSimulation An Image compression simulator that uses Source Extractor and Monte Carlo methods to examine the post compressive effects o

James Park 1 Dec 11, 2021
Style-based Point Generator with Adversarial Rendering for Point Cloud Completion (CVPR 2021)

Style-based Point Generator with Adversarial Rendering for Point Cloud Completion (CVPR 2021) An efficient PyTorch library for Point Cloud Completion.

Microsoft 119 Jan 2, 2023
Implementation of the "PSTNet: Point Spatio-Temporal Convolution on Point Cloud Sequences" paper.

PSTNet: Point Spatio-Temporal Convolution on Point Cloud Sequences Introduction Point cloud sequences are irregular and unordered in the spatial dimen

Hehe Fan 63 Dec 9, 2022
Implementation of the "Point 4D Transformer Networks for Spatio-Temporal Modeling in Point Cloud Videos" paper.

Point 4D Transformer Networks for Spatio-Temporal Modeling in Point Cloud Videos Introduction Point cloud videos exhibit irregularities and lack of or

Hehe Fan 101 Dec 29, 2022
Synthetic LiDAR sequential point cloud dataset with point-wise annotations

SynLiDAR dataset: Learning From Synthetic LiDAR Sequential Point Cloud This is official repository of the SynLiDAR dataset. For technical details, ple

null 78 Dec 27, 2022
[ICCV 2021 Oral] SnowflakeNet: Point Cloud Completion by Snowflake Point Deconvolution with Skip-Transformer

This repository contains the source code for the paper SnowflakeNet: Point Cloud Completion by Snowflake Point Deconvolution with Skip-Transformer (ICCV 2021 Oral). The project page is here.

AllenXiang 65 Dec 26, 2022
Implementation of "Fast and Flexible Temporal Point Processes with Triangular Maps" (Oral @ NeurIPS 2020)

Fast and Flexible Temporal Point Processes with Triangular Maps This repository includes a reference implementation of the algorithms described in "Fa

Oleksandr Shchur 20 Dec 2, 2022
[PyTorch] Official implementation of CVPR2021 paper "PointDSC: Robust Point Cloud Registration using Deep Spatial Consistency". https://arxiv.org/abs/2103.05465

PointDSC repository PyTorch implementation of PointDSC for CVPR'2021 paper "PointDSC: Robust Point Cloud Registration using Deep Spatial Consistency",

null 153 Dec 14, 2022
GndNet: Fast ground plane estimation and point cloud segmentation for autonomous vehicles using deep neural networks.

GndNet: Fast Ground plane Estimation and Point Cloud Segmentation for Autonomous Vehicles. Authors: Anshul Paigwar, Ozgur Erkent, David Sierra Gonzale

Anshul Paigwar 114 Dec 29, 2022