chreisinger / FEC

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FEC slogan

FEC: Fast Euclidean Clustering for Point Cloud Segmentation

Open In Colab Binder

[English] / 简体中文

This is the official repository for FEC.

Code repository locate permanently at here.

THIS REPOSITORY IN UNDER DAILY UPDATING!

Segmentation from point cloud data is essential in many applications ,such as remote sensing, mobile robots, or autonomous cars. However, the point clouds captured by the 3D range sensor are commonly sparse and unstructured, challenging efficient segmentation. A fast solution for point cloud instance segmentation with small computational demands is lacking. To this end, we propose a novel fast Euclidean clustering (FEC) algorithm which applies a point-wise scheme over the cluster-wise scheme used in existing works. The proposed method avoids traversing every point constantly in each nested loop, which is time and memory-consuming. Our approach is conceptually simple, easy to implement (40 lines in C++), and achieves two orders of magnitudes faster against the classical segmentation methods while producing high-quality results.

Table of Contents

Background

Prerequisites

In order to apply the FEC to varies programming language environment, we provide C++, Python, and Matlab style codes for implementation.

C++ environment

Python environment

The recommended way is to use Mini-/Anaconda and to create a new environment using:

$ conda env create -f environment.yml

Installation

C++ installation

If you are interested in building everything locally, it is recommended using Docker. To build, simply run:

$ make build

Python installation

There are two ways how you can install FEC: Editable or non-editable. If all you want to do is run experiments with existing datasets and existing models, you can use the non-editable installation. To install the latest release from PyPI:

$ pip install fec(not registered yet)

To install the package directly from the current master branch of this repository, including any changes that are not yet part of a release, run:

$ pip install git+https://github.com/YizhenLAO/FEC.git

If you want to try implementing your own models or datasets, you’ll need an editable installation. For this, start by downloading or cloning the repository to your local machine. If you use git, you can run:

$ git clone https://github.com/YizhenLAO/FEC.git

If you don’t know git, you can also download the code from here and extract the zip-file. After you cloned or downloaded the zip-file, you’ll end up with a directory called “fec” (or “fec-master”). Next, we’ll go to that directory and install a local, editable copy of the package:

$ cd fec
$ pip install -e .

Data

Please download demo data from:

Google Drive or Baidu Netdisk 

Examples

C++ code example

Python code example

Matlab code example

Citation

In case you use FEC in your research or work, it would be highly appreciated if you include a reference to our paper in any kind of publication.

latex

@Article{cao2022fec,
  AUTHOR = {Cao, Yu and Wang, Yancheng and Xue, Yifei and Zhang, Huiqing and Lao, Yizhen},
  TITLE = {FEC: Fast Euclidean Clustering for Point Cloud Segmentation},
  JOURNAL = {Drones},
  VOLUME = {6},
  YEAR = {2022},
  NUMBER = {11},
  ARTICLE-NUMBER = {325},
  URL = {https://www.mdpi.com/2504-446X/6/11/325},
  ISSN = {2504-446X},
  ABSTRACT = {Segmentation from point cloud data is essential in many applications, such as remote sensing, mobile robots, or autonomous cars. However, the point clouds captured by the 3D range sensor are commonly sparse and unstructured, challenging efficient segmentation. A fast solution for point cloud instance segmentation with small computational demands is lacking. To this end, we propose a novel fast Euclidean clustering (FEC) algorithm which applies a point-wise scheme over the cluster-wise scheme used in existing works. The proposed method avoids traversing every point constantly in each nested loop, which is time and memory-consuming. Our approach is conceptually simple, easy to implement (40 lines in C++), and achieves two orders of magnitudes faster against the classical segmentation methods while producing high-quality results.},
  DOI = {10.3390/drones6110325}
}

Maintainers

@YizhenLAO @IfeiHsueh @Cyy-caoyu

License

MIT(LICENSE) © Yizhen LAO

About


Languages

Language:C++ 67.0%Language:Python 33.0%