Code Monkey home page Code Monkey logo

lisa's Introduction

Lidar Light Scattering Augmentation (LISA)

LISA is a physics based augmentation method that models effects of adverse weather conditions on lidar data. It treats effects of small scatterers on average using the Beer-Lambert law where extinction coefficients are calculated thorugh Mie theory and particle size distributions. Rain and snow models use a hybrid Monte-Carlo method to augment clean lidar point clouds for a given rain rate. LISA can be easily extended to other scatterers with different droplet size models or materials (i.e dust).

One of these effects is reduced range due to attenuation of the laser signal due to scatterers. Note sparsity of the rainy scenes at large distances from the sensor: Reduced range

Particles near the sensor can backscatter enough light and cause false detections (blue box). Also note "fuzziness" of the scan lines under adverse weather arising from reduced SNR (signal to noise ratio) which leads to range uncertainty. Randomly scattered points near sensor and lost points

Using LISA

For original paper code look here which has implementations for fog and snow as well. It is tested better than the current project but slower which is why we switched from a pure python implementation to C++ with python bindings.

Option 1: Install using pip

pip install pylisa

Option 2: Build from the source and install using pip:

git clone --recursive https://github.com/velatkilic/LISA.git
cd LISA
pip install .

Basic usage:

Create a Lisa object

lidar = pylisa.Lidar() # lidar object
water = pylisa.Water() # material object
rain  = pylisa.MarshallPalmerRain() # particle distribution model

augm  = pylisa.Lisa(lidar, water, rain)

where

  • the lidar object provides information such as laser wavelength, min/max range, beam divergence etc
  • the material object (in this case water) provides information about refractive index as a function of wavelength
  • the particle distribution model (in this case Marshall Pallmer rain model) provides information about droplet distribution as a function of rain rate

Next feed point cloud data (2D array) to the augmentor

# Point cloud format: x,y,z,reflectance
pc    = [[1.0, 0., 0., 0.5]] # this can also be a 2D numpy array (N,4)

# New point cloud format: x_new, y_new, z_new, reflectance_new, label
# where label = 0 for lost point, label = 1 for randomly scattered point and label = 2 for noisy original points
pcnew = augm.augment(pc, 30) # for a rain rate of 30 mm/hr
pcnew = augm.augment(pc)     # or use this method to sample rain rates from an exponential distribution

For developers: Documentation for the c++ code can be generated using Doxygen.

Known issues/todo:

  • Using the default contructor for the Lisa object in Python restarts the kernel
  • Implement fog and snow models

Reference

Cite as

V. Kilic, D. Hegde, V. Sindagi, A.B. Cooper, M.A. Foster and V.M. Patel, "Lidar Light Scattering Augmentation (LISA): Physics-based Simulation of Adverse Weather Conditions for 3D Object Detection", arXiv:2107.07004, (2021).

lisa's People

Contributors

velatkilic avatar

Watchers

James Cloos avatar

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.