Repository files navigation

Rangenet Library

This repository contains simple usage explanations of how the RangeNet++ inference works with the TensorRT and C++ interface.

Developed by Xieyuanli Chen, Andres Milioto and Jens Behley.

For more details about RangeNet++, one could find in LiDAR-Bonnetal.


How to use

Dependencies

System dependencies

First you need to install the nvidia driver and CUDA.

  • CUDA Installation guide: Link

  • Then you can do the other dependencies:

    $ sudo apt-get update $ sudo apt-get install -yqq build-essential python3-dev python3-pip apt-utils git cmake libboost-all-dev libyaml-cpp-dev libopencv-dev
Python dependencies
  • Then install the Python packages needed:

    $ sudo apt install python-empy
    $ sudo pip install catkin_tools trollius numpy
TensorRT

In order to infer with TensorRT during inference with the C++ libraries:

  • Install TensorRT: Link.
  • Our code and the pretrained model now only works with TensorRT version 5 (Note that you need at least version 5.1.0).
  • To make the code also works for higher versions of TensorRT, one could have a look at here.

Build the library

We use the catkin tool to build the library.

$ mkdir -p ~/catkin_ws/src
$ cd~/catkin_ws/src
$ git clone https://github.com/ros/catkin.git $ git clone https://github.com/PRBonn/rangenet_lib.git
$ cd .. && catkin init
$ catkin build rangenet_lib

Run the demo

To run the demo, you need a pre-trained model, which can be downloaded here, model.

A single LiDAR scan for running the demo, you could find in the example folder example/000000.bin. For more LiDAR data, you could download from KITTI odometry dataset.

For more details about how to train and evaluate a model, please refer to LiDAR-Bonnetal.

To infer a single LiDAR scan and visualize the semantic point cloud:

# go to the root path of the catkin workspace
$ cd~/catkin_ws
# use --verbose or -v to get verbose mode
$ ./devel/lib/rangenet_lib/infer -h # help
$ ./devel/lib/rangenet_lib/infer -p /path/to/the/pretrained/model -s /path/to/the/scan.bin --verbose

Notice: for the first time running, it will take several minutes to generate a .trt model for C++ interface.

Applications

Efficient LiDAR-based Semantic SLAM

Using rangenet_lib, we built a LiDAR-based Semantic SLAM system, called SuMa++.

You could find more implementation details in SuMa++.

LiDAR-based Semantic Loop Closing

OverlapNet is a LiDAR-based loop closure detection method, which uses multiple cues generated from LiDAR scans.

More information about our OverlapNet could be found here.

One could use our rangenet_lib to generate probabilities over semantic classes for training OverlapNet.

More detailed steps and discussion could be found here.

Citations

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

@inproceedings{milioto2019iros,
author = {A. Milioto and I. Vizzo and J. Behley and C. Stachniss},
title = {{RangeNet++: Fast and Accurate LiDAR Semantic Segmentation}},
booktitle = {IEEE/RSJ Intl.~Conf.~on Intelligent Robots and Systems (IROS)},
year = 2019,
codeurl = {https://github.com/PRBonn/lidar-bonnetal},
videourl = {https://youtu.be/wuokg7MFZyU},
}

If you use SuMa++, please cite the corresponding paper:

@inproceedings{chen2019iros, author = {X. Chen and A. Milioto and E. Palazzolo and P. Giguère and J. Behley and C. Stachniss},
title = {{SuMa++: Efficient LiDAR-based Semantic SLAM}},
booktitle = {Proceedings of the IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS)},
year = {2019},
codeurl = {https://github.com/PRBonn/semantic_suma/},
videourl = {https://youtu.be/uo3ZuLuFAzk},
}

License

Copyright 2019, Xieyuanli Chen, Andres Milioto, Jens Behley, Cyrill Stachniss, University of Bonn.

This project is free software made available under the MIT License. For details see the LICENSE file.

About

Inference module for RangeNet++ (milioto2019iros, chen2019iros)

Resources

Stars

359 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Rangenet Library

This repository contains simple usage explanations of how the RangeNet++ inference works with the TensorRT and C++ interface.

Developed by Xieyuanli Chen, Andres Milioto and Jens Behley.

For more details about RangeNet++, one could find in LiDAR-Bonnetal.


How to use

Dependencies

System dependencies

First you need to install the nvidia driver and CUDA.

  • CUDA Installation guide: Link

  • Then you can do the other dependencies:

    $ sudo apt-get update $ sudo apt-get install -yqq build-essential python3-dev python3-pip apt-utils git cmake libboost-all-dev libyaml-cpp-dev libopencv-dev
Python dependencies
  • Then install the Python packages needed:

    $ sudo apt install python-empy
    $ sudo pip install catkin_tools trollius numpy
TensorRT

In order to infer with TensorRT during inference with the C++ libraries:

  • Install TensorRT: Link.
  • Our code and the pretrained model now only works with TensorRT version 5 (Note that you need at least version 5.1.0).
  • To make the code also works for higher versions of TensorRT, one could have a look at here.

Build the library

We use the catkin tool to build the library.

$ mkdir -p ~/catkin_ws/src
$ cd~/catkin_ws/src
$ git clone https://github.com/ros/catkin.git $ git clone https://github.com/PRBonn/rangenet_lib.git
$ cd .. && catkin init
$ catkin build rangenet_lib

Run the demo

To run the demo, you need a pre-trained model, which can be downloaded here, model.

A single LiDAR scan for running the demo, you could find in the example folder example/000000.bin. For more LiDAR data, you could download from KITTI odometry dataset.

For more details about how to train and evaluate a model, please refer to LiDAR-Bonnetal.

To infer a single LiDAR scan and visualize the semantic point cloud:

# go to the root path of the catkin workspace
$ cd~/catkin_ws
# use --verbose or -v to get verbose mode
$ ./devel/lib/rangenet_lib/infer -h # help
$ ./devel/lib/rangenet_lib/infer -p /path/to/the/pretrained/model -s /path/to/the/scan.bin --verbose

Notice: for the first time running, it will take several minutes to generate a .trt model for C++ interface.

Applications

Efficient LiDAR-based Semantic SLAM

Using rangenet_lib, we built a LiDAR-based Semantic SLAM system, called SuMa++.

You could find more implementation details in SuMa++.

LiDAR-based Semantic Loop Closing

OverlapNet is a LiDAR-based loop closure detection method, which uses multiple cues generated from LiDAR scans.

More information about our OverlapNet could be found here.

One could use our rangenet_lib to generate probabilities over semantic classes for training OverlapNet.

More detailed steps and discussion could be found here.

Citations

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

@inproceedings{milioto2019iros,
author = {A. Milioto and I. Vizzo and J. Behley and C. Stachniss},
title = {{RangeNet++: Fast and Accurate LiDAR Semantic Segmentation}},
booktitle = {IEEE/RSJ Intl.~Conf.~on Intelligent Robots and Systems (IROS)},
year = 2019,
codeurl = {https://github.com/PRBonn/lidar-bonnetal},
videourl = {https://youtu.be/wuokg7MFZyU},
}

If you use SuMa++, please cite the corresponding paper:

@inproceedings{chen2019iros, author = {X. Chen and A. Milioto and E. Palazzolo and P. Giguère and J. Behley and C. Stachniss},
title = {{SuMa++: Efficient LiDAR-based Semantic SLAM}},
booktitle = {Proceedings of the IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS)},
year = {2019},
codeurl = {https://github.com/PRBonn/semantic_suma/},
videourl = {https://youtu.be/uo3ZuLuFAzk},
}

License

Copyright 2019, Xieyuanli Chen, Andres Milioto, Jens Behley, Cyrill Stachniss, University of Bonn.

This project is free software made available under the MIT License. For details see the LICENSE file.

About

Inference module for RangeNet++ (milioto2019iros, chen2019iros)

Resources

Stars

359 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Rangenet Library

This repository contains simple usage explanations of how the RangeNet++ inference works with the TensorRT and C++ interface.

Developed by Xieyuanli Chen, Andres Milioto and Jens Behley.

For more details about RangeNet++, one could find in LiDAR-Bonnetal.


How to use

Dependencies

System dependencies

First you need to install the nvidia driver and CUDA.

  • CUDA Installation guide: Link

  • Then you can do the other dependencies:

    $ sudo apt-get update $ sudo apt-get install -yqq build-essential python3-dev python3-pip apt-utils git cmake libboost-all-dev libyaml-cpp-dev libopencv-dev
Python dependencies
  • Then install the Python packages needed:

    $ sudo apt install python-empy
    $ sudo pip install catkin_tools trollius numpy
TensorRT

In order to infer with TensorRT during inference with the C++ libraries:

  • Install TensorRT: Link.
  • Our code and the pretrained model now only works with TensorRT version 5 (Note that you need at least version 5.1.0).
  • To make the code also works for higher versions of TensorRT, one could have a look at here.

Build the library

We use the catkin tool to build the library.

$ mkdir -p ~/catkin_ws/src
$ cd~/catkin_ws/src
$ git clone https://github.com/ros/catkin.git $ git clone https://github.com/PRBonn/rangenet_lib.git
$ cd .. && catkin init
$ catkin build rangenet_lib

Run the demo

To run the demo, you need a pre-trained model, which can be downloaded here, model.

A single LiDAR scan for running the demo, you could find in the example folder example/000000.bin. For more LiDAR data, you could download from KITTI odometry dataset.

For more details about how to train and evaluate a model, please refer to LiDAR-Bonnetal.

To infer a single LiDAR scan and visualize the semantic point cloud:

# go to the root path of the catkin workspace
$ cd~/catkin_ws
# use --verbose or -v to get verbose mode
$ ./devel/lib/rangenet_lib/infer -h # help
$ ./devel/lib/rangenet_lib/infer -p /path/to/the/pretrained/model -s /path/to/the/scan.bin --verbose

Notice: for the first time running, it will take several minutes to generate a .trt model for C++ interface.

Applications

Efficient LiDAR-based Semantic SLAM

Using rangenet_lib, we built a LiDAR-based Semantic SLAM system, called SuMa++.

You could find more implementation details in SuMa++.

LiDAR-based Semantic Loop Closing

OverlapNet is a LiDAR-based loop closure detection method, which uses multiple cues generated from LiDAR scans.

More information about our OverlapNet could be found here.

One could use our rangenet_lib to generate probabilities over semantic classes for training OverlapNet.

More detailed steps and discussion could be found here.

Citations

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

@inproceedings{milioto2019iros,
author = {A. Milioto and I. Vizzo and J. Behley and C. Stachniss},
title = {{RangeNet++: Fast and Accurate LiDAR Semantic Segmentation}},
booktitle = {IEEE/RSJ Intl.~Conf.~on Intelligent Robots and Systems (IROS)},
year = 2019,
codeurl = {https://github.com/PRBonn/lidar-bonnetal},
videourl = {https://youtu.be/wuokg7MFZyU},
}

If you use SuMa++, please cite the corresponding paper:

@inproceedings{chen2019iros, author = {X. Chen and A. Milioto and E. Palazzolo and P. Giguère and J. Behley and C. Stachniss},
title = {{SuMa++: Efficient LiDAR-based Semantic SLAM}},
booktitle = {Proceedings of the IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS)},
year = {2019},
codeurl = {https://github.com/PRBonn/semantic_suma/},
videourl = {https://youtu.be/uo3ZuLuFAzk},
}

License

Copyright 2019, Xieyuanli Chen, Andres Milioto, Jens Behley, Cyrill Stachniss, University of Bonn.

This project is free software made available under the MIT License. For details see the LICENSE file.

About

Inference module for RangeNet++ (milioto2019iros, chen2019iros)

Resources

Stars

359 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Rangenet Library

This repository contains simple usage explanations of how the RangeNet++ inference works with the TensorRT and C++ interface.

Developed by Xieyuanli Chen, Andres Milioto and Jens Behley.

For more details about RangeNet++, one could find in LiDAR-Bonnetal.


How to use

Dependencies

System dependencies

First you need to install the nvidia driver and CUDA.

  • CUDA Installation guide: Link

  • Then you can do the other dependencies:

    $ sudo apt-get update $ sudo apt-get install -yqq build-essential python3-dev python3-pip apt-utils git cmake libboost-all-dev libyaml-cpp-dev libopencv-dev
Python dependencies
  • Then install the Python packages needed:

    $ sudo apt install python-empy
    $ sudo pip install catkin_tools trollius numpy
TensorRT

In order to infer with TensorRT during inference with the C++ libraries:

  • Install TensorRT: Link.
  • Our code and the pretrained model now only works with TensorRT version 5 (Note that you need at least version 5.1.0).
  • To make the code also works for higher versions of TensorRT, one could have a look at here.

Build the library

We use the catkin tool to build the library.

$ mkdir -p ~/catkin_ws/src
$ cd~/catkin_ws/src
$ git clone https://github.com/ros/catkin.git $ git clone https://github.com/PRBonn/rangenet_lib.git
$ cd .. && catkin init
$ catkin build rangenet_lib

Run the demo

To run the demo, you need a pre-trained model, which can be downloaded here, model.

A single LiDAR scan for running the demo, you could find in the example folder example/000000.bin. For more LiDAR data, you could download from KITTI odometry dataset.

For more details about how to train and evaluate a model, please refer to LiDAR-Bonnetal.

To infer a single LiDAR scan and visualize the semantic point cloud:

# go to the root path of the catkin workspace
$ cd~/catkin_ws
# use --verbose or -v to get verbose mode
$ ./devel/lib/rangenet_lib/infer -h # help
$ ./devel/lib/rangenet_lib/infer -p /path/to/the/pretrained/model -s /path/to/the/scan.bin --verbose

Notice: for the first time running, it will take several minutes to generate a .trt model for C++ interface.

Applications

Efficient LiDAR-based Semantic SLAM

Using rangenet_lib, we built a LiDAR-based Semantic SLAM system, called SuMa++.

You could find more implementation details in SuMa++.

LiDAR-based Semantic Loop Closing

OverlapNet is a LiDAR-based loop closure detection method, which uses multiple cues generated from LiDAR scans.

More information about our OverlapNet could be found here.

One could use our rangenet_lib to generate probabilities over semantic classes for training OverlapNet.

More detailed steps and discussion could be found here.

Citations

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

@inproceedings{milioto2019iros,
author = {A. Milioto and I. Vizzo and J. Behley and C. Stachniss},
title = {{RangeNet++: Fast and Accurate LiDAR Semantic Segmentation}},
booktitle = {IEEE/RSJ Intl.~Conf.~on Intelligent Robots and Systems (IROS)},
year = 2019,
codeurl = {https://github.com/PRBonn/lidar-bonnetal},
videourl = {https://youtu.be/wuokg7MFZyU},
}

If you use SuMa++, please cite the corresponding paper:

@inproceedings{chen2019iros, author = {X. Chen and A. Milioto and E. Palazzolo and P. Giguère and J. Behley and C. Stachniss},
title = {{SuMa++: Efficient LiDAR-based Semantic SLAM}},
booktitle = {Proceedings of the IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS)},
year = {2019},
codeurl = {https://github.com/PRBonn/semantic_suma/},
videourl = {https://youtu.be/uo3ZuLuFAzk},
}

License

Copyright 2019, Xieyuanli Chen, Andres Milioto, Jens Behley, Cyrill Stachniss, University of Bonn.

This project is free software made available under the MIT License. For details see the LICENSE file.

About

Inference module for RangeNet++ (milioto2019iros, chen2019iros)

Resources

Stars

359 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Rangenet Library

This repository contains simple usage explanations of how the RangeNet++ inference works with the TensorRT and C++ interface.

Developed by Xieyuanli Chen, Andres Milioto and Jens Behley.

For more details about RangeNet++, one could find in LiDAR-Bonnetal.


How to use

Dependencies

System dependencies

First you need to install the nvidia driver and CUDA.

  • CUDA Installation guide: Link

  • Then you can do the other dependencies:

    $ sudo apt-get update $ sudo apt-get install -yqq build-essential python3-dev python3-pip apt-utils git cmake libboost-all-dev libyaml-cpp-dev libopencv-dev
Python dependencies
  • Then install the Python packages needed:

    $ sudo apt install python-empy
    $ sudo pip install catkin_tools trollius numpy
TensorRT

In order to infer with TensorRT during inference with the C++ libraries:

  • Install TensorRT: Link.
  • Our code and the pretrained model now only works with TensorRT version 5 (Note that you need at least version 5.1.0).
  • To make the code also works for higher versions of TensorRT, one could have a look at here.

Build the library

We use the catkin tool to build the library.

$ mkdir -p ~/catkin_ws/src
$ cd~/catkin_ws/src
$ git clone https://github.com/ros/catkin.git $ git clone https://github.com/PRBonn/rangenet_lib.git
$ cd .. && catkin init
$ catkin build rangenet_lib

Run the demo

To run the demo, you need a pre-trained model, which can be downloaded here, model.

A single LiDAR scan for running the demo, you could find in the example folder example/000000.bin. For more LiDAR data, you could download from KITTI odometry dataset.

For more details about how to train and evaluate a model, please refer to LiDAR-Bonnetal.

To infer a single LiDAR scan and visualize the semantic point cloud:

# go to the root path of the catkin workspace
$ cd~/catkin_ws
# use --verbose or -v to get verbose mode
$ ./devel/lib/rangenet_lib/infer -h # help
$ ./devel/lib/rangenet_lib/infer -p /path/to/the/pretrained/model -s /path/to/the/scan.bin --verbose

Notice: for the first time running, it will take several minutes to generate a .trt model for C++ interface.

Applications

Efficient LiDAR-based Semantic SLAM

Using rangenet_lib, we built a LiDAR-based Semantic SLAM system, called SuMa++.

You could find more implementation details in SuMa++.

LiDAR-based Semantic Loop Closing

OverlapNet is a LiDAR-based loop closure detection method, which uses multiple cues generated from LiDAR scans.

More information about our OverlapNet could be found here.

One could use our rangenet_lib to generate probabilities over semantic classes for training OverlapNet.

More detailed steps and discussion could be found here.

Citations

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

@inproceedings{milioto2019iros,
author = {A. Milioto and I. Vizzo and J. Behley and C. Stachniss},
title = {{RangeNet++: Fast and Accurate LiDAR Semantic Segmentation}},
booktitle = {IEEE/RSJ Intl.~Conf.~on Intelligent Robots and Systems (IROS)},
year = 2019,
codeurl = {https://github.com/PRBonn/lidar-bonnetal},
videourl = {https://youtu.be/wuokg7MFZyU},
}

If you use SuMa++, please cite the corresponding paper:

@inproceedings{chen2019iros, author = {X. Chen and A. Milioto and E. Palazzolo and P. Giguère and J. Behley and C. Stachniss},
title = {{SuMa++: Efficient LiDAR-based Semantic SLAM}},
booktitle = {Proceedings of the IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS)},
year = {2019},
codeurl = {https://github.com/PRBonn/semantic_suma/},
videourl = {https://youtu.be/uo3ZuLuFAzk},
}

License

Copyright 2019, Xieyuanli Chen, Andres Milioto, Jens Behley, Cyrill Stachniss, University of Bonn.

This project is free software made available under the MIT License. For details see the LICENSE file.

About

Inference module for RangeNet++ (milioto2019iros, chen2019iros)

Resources

Stars

359 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Rangenet Library

This repository contains simple usage explanations of how the RangeNet++ inference works with the TensorRT and C++ interface.

Developed by Xieyuanli Chen, Andres Milioto and Jens Behley.

For more details about RangeNet++, one could find in LiDAR-Bonnetal.


How to use

Dependencies

System dependencies

First you need to install the nvidia driver and CUDA.

  • CUDA Installation guide: Link

  • Then you can do the other dependencies:

    $ sudo apt-get update $ sudo apt-get install -yqq build-essential python3-dev python3-pip apt-utils git cmake libboost-all-dev libyaml-cpp-dev libopencv-dev
Python dependencies
  • Then install the Python packages needed:

    $ sudo apt install python-empy
    $ sudo pip install catkin_tools trollius numpy
TensorRT

In order to infer with TensorRT during inference with the C++ libraries:

  • Install TensorRT: Link.
  • Our code and the pretrained model now only works with TensorRT version 5 (Note that you need at least version 5.1.0).
  • To make the code also works for higher versions of TensorRT, one could have a look at here.

Build the library

We use the catkin tool to build the library.

$ mkdir -p ~/catkin_ws/src
$ cd~/catkin_ws/src
$ git clone https://github.com/ros/catkin.git $ git clone https://github.com/PRBonn/rangenet_lib.git
$ cd .. && catkin init
$ catkin build rangenet_lib

Run the demo

To run the demo, you need a pre-trained model, which can be downloaded here, model.

A single LiDAR scan for running the demo, you could find in the example folder example/000000.bin. For more LiDAR data, you could download from KITTI odometry dataset.

For more details about how to train and evaluate a model, please refer to LiDAR-Bonnetal.

To infer a single LiDAR scan and visualize the semantic point cloud:

# go to the root path of the catkin workspace
$ cd~/catkin_ws
# use --verbose or -v to get verbose mode
$ ./devel/lib/rangenet_lib/infer -h # help
$ ./devel/lib/rangenet_lib/infer -p /path/to/the/pretrained/model -s /path/to/the/scan.bin --verbose

Notice: for the first time running, it will take several minutes to generate a .trt model for C++ interface.

Applications

Efficient LiDAR-based Semantic SLAM

Using rangenet_lib, we built a LiDAR-based Semantic SLAM system, called SuMa++.

You could find more implementation details in SuMa++.

LiDAR-based Semantic Loop Closing

OverlapNet is a LiDAR-based loop closure detection method, which uses multiple cues generated from LiDAR scans.

More information about our OverlapNet could be found here.

One could use our rangenet_lib to generate probabilities over semantic classes for training OverlapNet.

More detailed steps and discussion could be found here.

Citations

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

@inproceedings{milioto2019iros,
author = {A. Milioto and I. Vizzo and J. Behley and C. Stachniss},
title = {{RangeNet++: Fast and Accurate LiDAR Semantic Segmentation}},
booktitle = {IEEE/RSJ Intl.~Conf.~on Intelligent Robots and Systems (IROS)},
year = 2019,
codeurl = {https://github.com/PRBonn/lidar-bonnetal},
videourl = {https://youtu.be/wuokg7MFZyU},
}

If you use SuMa++, please cite the corresponding paper:

@inproceedings{chen2019iros, author = {X. Chen and A. Milioto and E. Palazzolo and P. Giguère and J. Behley and C. Stachniss},
title = {{SuMa++: Efficient LiDAR-based Semantic SLAM}},
booktitle = {Proceedings of the IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS)},
year = {2019},
codeurl = {https://github.com/PRBonn/semantic_suma/},
videourl = {https://youtu.be/uo3ZuLuFAzk},
}

License

Copyright 2019, Xieyuanli Chen, Andres Milioto, Jens Behley, Cyrill Stachniss, University of Bonn.

This project is free software made available under the MIT License. For details see the LICENSE file.

About

Inference module for RangeNet++ (milioto2019iros, chen2019iros)

Resources

Stars

359 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Rangenet Library

This repository contains simple usage explanations of how the RangeNet++ inference works with the TensorRT and C++ interface.

Developed by Xieyuanli Chen, Andres Milioto and Jens Behley.

For more details about RangeNet++, one could find in LiDAR-Bonnetal.


How to use

Dependencies

System dependencies

First you need to install the nvidia driver and CUDA.

  • CUDA Installation guide: Link

  • Then you can do the other dependencies:

    $ sudo apt-get update $ sudo apt-get install -yqq build-essential python3-dev python3-pip apt-utils git cmake libboost-all-dev libyaml-cpp-dev libopencv-dev
Python dependencies
  • Then install the Python packages needed:

    $ sudo apt install python-empy
    $ sudo pip install catkin_tools trollius numpy
TensorRT

In order to infer with TensorRT during inference with the C++ libraries:

  • Install TensorRT: Link.
  • Our code and the pretrained model now only works with TensorRT version 5 (Note that you need at least version 5.1.0).
  • To make the code also works for higher versions of TensorRT, one could have a look at here.

Build the library

We use the catkin tool to build the library.

$ mkdir -p ~/catkin_ws/src
$ cd~/catkin_ws/src
$ git clone https://github.com/ros/catkin.git $ git clone https://github.com/PRBonn/rangenet_lib.git
$ cd .. && catkin init
$ catkin build rangenet_lib

Run the demo

To run the demo, you need a pre-trained model, which can be downloaded here, model.

A single LiDAR scan for running the demo, you could find in the example folder example/000000.bin. For more LiDAR data, you could download from KITTI odometry dataset.

For more details about how to train and evaluate a model, please refer to LiDAR-Bonnetal.

To infer a single LiDAR scan and visualize the semantic point cloud:

# go to the root path of the catkin workspace
$ cd~/catkin_ws
# use --verbose or -v to get verbose mode
$ ./devel/lib/rangenet_lib/infer -h # help
$ ./devel/lib/rangenet_lib/infer -p /path/to/the/pretrained/model -s /path/to/the/scan.bin --verbose

Notice: for the first time running, it will take several minutes to generate a .trt model for C++ interface.

Applications

Efficient LiDAR-based Semantic SLAM

Using rangenet_lib, we built a LiDAR-based Semantic SLAM system, called SuMa++.

You could find more implementation details in SuMa++.

LiDAR-based Semantic Loop Closing

OverlapNet is a LiDAR-based loop closure detection method, which uses multiple cues generated from LiDAR scans.

More information about our OverlapNet could be found here.

One could use our rangenet_lib to generate probabilities over semantic classes for training OverlapNet.

More detailed steps and discussion could be found here.

Citations

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

@inproceedings{milioto2019iros,
author = {A. Milioto and I. Vizzo and J. Behley and C. Stachniss},
title = {{RangeNet++: Fast and Accurate LiDAR Semantic Segmentation}},
booktitle = {IEEE/RSJ Intl.~Conf.~on Intelligent Robots and Systems (IROS)},
year = 2019,
codeurl = {https://github.com/PRBonn/lidar-bonnetal},
videourl = {https://youtu.be/wuokg7MFZyU},
}

If you use SuMa++, please cite the corresponding paper:

@inproceedings{chen2019iros, author = {X. Chen and A. Milioto and E. Palazzolo and P. Giguère and J. Behley and C. Stachniss},
title = {{SuMa++: Efficient LiDAR-based Semantic SLAM}},
booktitle = {Proceedings of the IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS)},
year = {2019},
codeurl = {https://github.com/PRBonn/semantic_suma/},
videourl = {https://youtu.be/uo3ZuLuFAzk},
}

License

Copyright 2019, Xieyuanli Chen, Andres Milioto, Jens Behley, Cyrill Stachniss, University of Bonn.

This project is free software made available under the MIT License. For details see the LICENSE file.

About

Inference module for RangeNet++ (milioto2019iros, chen2019iros)

Resources

Stars

359 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Rangenet Library

This repository contains simple usage explanations of how the RangeNet++ inference works with the TensorRT and C++ interface.

Developed by Xieyuanli Chen, Andres Milioto and Jens Behley.

For more details about RangeNet++, one could find in LiDAR-Bonnetal.


How to use

Dependencies

System dependencies

First you need to install the nvidia driver and CUDA.

  • CUDA Installation guide: Link

  • Then you can do the other dependencies:

    $ sudo apt-get update $ sudo apt-get install -yqq build-essential python3-dev python3-pip apt-utils git cmake libboost-all-dev libyaml-cpp-dev libopencv-dev
Python dependencies
  • Then install the Python packages needed:

    $ sudo apt install python-empy
    $ sudo pip install catkin_tools trollius numpy
TensorRT

In order to infer with TensorRT during inference with the C++ libraries:

  • Install TensorRT: Link.
  • Our code and the pretrained model now only works with TensorRT version 5 (Note that you need at least version 5.1.0).
  • To make the code also works for higher versions of TensorRT, one could have a look at here.

Build the library

We use the catkin tool to build the library.

$ mkdir -p ~/catkin_ws/src
$ cd~/catkin_ws/src
$ git clone https://github.com/ros/catkin.git $ git clone https://github.com/PRBonn/rangenet_lib.git
$ cd .. && catkin init
$ catkin build rangenet_lib

Run the demo

To run the demo, you need a pre-trained model, which can be downloaded here, model.

A single LiDAR scan for running the demo, you could find in the example folder example/000000.bin. For more LiDAR data, you could download from KITTI odometry dataset.

For more details about how to train and evaluate a model, please refer to LiDAR-Bonnetal.

To infer a single LiDAR scan and visualize the semantic point cloud:

# go to the root path of the catkin workspace
$ cd~/catkin_ws
# use --verbose or -v to get verbose mode
$ ./devel/lib/rangenet_lib/infer -h # help
$ ./devel/lib/rangenet_lib/infer -p /path/to/the/pretrained/model -s /path/to/the/scan.bin --verbose

Notice: for the first time running, it will take several minutes to generate a .trt model for C++ interface.

Applications

Efficient LiDAR-based Semantic SLAM

Using rangenet_lib, we built a LiDAR-based Semantic SLAM system, called SuMa++.

You could find more implementation details in SuMa++.

LiDAR-based Semantic Loop Closing

OverlapNet is a LiDAR-based loop closure detection method, which uses multiple cues generated from LiDAR scans.

More information about our OverlapNet could be found here.

One could use our rangenet_lib to generate probabilities over semantic classes for training OverlapNet.

More detailed steps and discussion could be found here.

Citations

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

@inproceedings{milioto2019iros,
author = {A. Milioto and I. Vizzo and J. Behley and C. Stachniss},
title = {{RangeNet++: Fast and Accurate LiDAR Semantic Segmentation}},
booktitle = {IEEE/RSJ Intl.~Conf.~on Intelligent Robots and Systems (IROS)},
year = 2019,
codeurl = {https://github.com/PRBonn/lidar-bonnetal},
videourl = {https://youtu.be/wuokg7MFZyU},
}

If you use SuMa++, please cite the corresponding paper:

@inproceedings{chen2019iros, author = {X. Chen and A. Milioto and E. Palazzolo and P. Giguère and J. Behley and C. Stachniss},
title = {{SuMa++: Efficient LiDAR-based Semantic SLAM}},
booktitle = {Proceedings of the IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS)},
year = {2019},
codeurl = {https://github.com/PRBonn/semantic_suma/},
videourl = {https://youtu.be/uo3ZuLuFAzk},
}

License

Copyright 2019, Xieyuanli Chen, Andres Milioto, Jens Behley, Cyrill Stachniss, University of Bonn.

This project is free software made available under the MIT License. For details see the LICENSE file.

About

Inference module for RangeNet++ (milioto2019iros, chen2019iros)

Resources

Stars

359 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages