Skip to content

This repository contains methods for the automatic extraction of urban street furniture from labeled PointClouds.

License

Notifications You must be signed in to change notification settings

Amsterdam-AI-Team/Urban_PointCloud_Analysis

Repository files navigation

Extracting urban street furniture from labeled point clouds

This repository contains methods for the automatic extraction of urban street furniture from labeled PointClouds. It serves as a post-processing toolbox for our data fusion labeling approach, but it can also be used for point clouds that were labeled manually or by semantic segmentation algorithms, with minor modifications.

This is work in progress: for now, we only provide code to extract the location of pole-like objects. Further methods to extract other types of street furniture will follow. For more background on this project, please have a look at our accompanying blog post.

Example: visualization of one extracted pole.

Example: visualization of one extracted pole.

Folder Structure


Installation

  1. Clone this repository:

    git clone https://github.com/Amsterdam-AI-Team/Urban_PointCloud_Analysis.git
  2. Install the dependencies:

    pip install -r requirements.txt
    # optional requirements for Jupyter notebooks:
    pip install -r requirements-notebooks.txt
  3. Additionally, install our Urban PointCloud Processing package:

    pip install https://github.com/Amsterdam-AI-Team/Urban_PointCloud_Processing/releases/download/v0.1/upcp-0.1-py3-none-any.whl
  4. Finally, install cccorelib and pycc by following the instructions on their GitHub page. Please note, these two packages are not available on the Python Package Index (PyPi).

  5. Check out the notebooks for a demonstration.

The code has been tested with Python 3.8 on Linux, MacOS and Windows.


Usage

We provide tutorial notebooks that demonstrate how the tools can be used. Labeled example point clouds are provided to get started.

  1. Get labeled point clouds (for example with UPCP or RandLA-Net).
  2. Run Extract_poles.ipynb to extract all individual poles with some properties. It returns a csv file with one row per pole.
  3. Run Visualize_poles.ipynb (or visualize_poles.py) to create images for each pole. It returns 3 images per pole.
  4. Run the pole tagger tool to check and correct all individual poles visually.

NB. The notebooks Dataset_statistics is for additional analysis.


Contributing

Feel free to help out! Open an issue, submit a PR or contact us.


Acknowledgements

This repository was created by Amsterdam Intelligence for the City of Amsterdam.


License

This project is licensed under the terms of the European Union Public License 1.2 (EUPL-1.2).