Code Monkey home page Code Monkey logo

farthest-point-sampling's Introduction

Farthest Point Sampling

Efficient Farthest Point Sampling: A performant Python implementation for subsampling large point clouds without exhaustive distance calculations. This lightweight library is optimized for performance and ease-of-use in large datasets, leveraging the power of NumPy.

Farthest Point Sampling Example

Example of Farthest Point Sampling (image source: Minibatch AI Blog)

Table of Contents

Introduction

Farthest Point Sampling (FPS) is a widely used technique in computer graphics, machine learning, and computational geometry to reduce the size of a point cloud while preserving the overall structure. This Python implementation provides a fast and efficient way to perform FPS on large datasets without the need to compute all pairs of distances.

Installation

To use this library, simply clone the repository to your local machine using the following command:

bashCopy code

git clone https://github.com/yotamnahum/farthest-point-sampling.git

Once the repository is cloned, you can import the farthest_point_sampling function from the main file in your Python scripts or Jupyter notebooks.

from farthest_point_sampling import farthest_point_sampling

Usage Examples

Here are some examples demonstrating how to use the farthest_point_sampling function:

### Basic Usage
import numpy as np
from farthest_point_sampling import farthest_point_sampling

data = np.random.rand(100, 1024)
point_idx = farthest_point_sampling(data, 3) 
print(point_idx)
# Output: array([80, 79, 27])
### Specifying a Starting Point
import numpy as np
from farthest_point_sampling import farthest_point_sampling

data = np.random.rand(100, 1024)
point_idx = farthest_point_sampling(data, 5, start_idx=60)
print(point_idx)
# Output: array([60, 39, 59, 21, 73])`

Feel free to experiment with different datasets and tweak the parameters to achieve the desired level of point cloud reduction. This efficient implementation makes it easy to incorporate Farthest Point Sampling into your projects for improved performance and resource usage.

farthest-point-sampling's People

Contributors

yotamnahum avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

farthest-point-sampling's Issues

Simple trick for performance

Recently I am discovering techniques for high-performance FPS in CPU. I find this library quite useful and efficient.

But I also noticed that the performance could still be improved by the following one-line code:

def farthest_point_sampling(arr, n_sample, start_idx=None):
    """
    ... ...
    """
    # NOTE: column major layout for best performance
    arr = np.asfortranarray(arr)

    n_points, n_dim = arr.shape
    ... ...

Benchmark shows the differences:
image
image

Hope this could help :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.