End-To-End Optimization of LiDAR Beam Configuration

Overview

End-To-End Optimization of LiDAR Beam Configuration

arXiv | IEEE Xplore

This repository is the official implementation of the paper:

End-To-End Optimization of LiDAR Beam Configuration for 3D Object Detection and Localization

Niclas Vödisch, Ozan Unal, Ke Li, Luc Van Gool, and Dengxin Dai.

To appear in RA-L.

Overview of 3D object detection

If you find our work useful, please consider citing our paper:

to be added after publication

📔 Abstract

Pre-determined beam configurations of low-resolution LiDARs are task-agnostic, hence simply using can result in non-optimal performance. In this work, we propose to optimize the beam distribution for a given target task via a reinforcement learning-based learning-to-optimize (RL-L2O) framework. We design our method in an end-to-end fashion leveraging the final performance of the task to guide the search process. Due to the simplicity of our approach, our work can be integrated with any LiDAR-based application as a simple drop-in module. In this repository, we provide the code for the exemplary task of 3D object detection.

🏗️ ️ Setup

To clone this repository and all submodules run:

git clone --recurse-submodules -j8 [email protected]:vniclas/lidar_beam_selection.git

⚙️ Installation

To install this code, please follow the steps below:

  1. Create a conda environment: conda create -n beam_selection python=3.8
  2. Activate the environment: conda activate beam_selection
  3. Install dependencies: pip install -r requirements.txt
  4. Install cudatoolkit (change to the used CUDA version):
    conda install cudnn cudatoolkit=10.2
  5. Install spconv (change to the used CUDA version):
    pip install spconv-cu102
  6. Install OpenPCDet (linked as submodule):
    cd third_party/OpenPCDet && python setup.py develop && cd ../..
  7. Install Pseudo-LiDAR++ (linked as submodule):
    pip install -r third_party/Pseudo_Lidar_V2/requirements.txt
    pip install pillow==8.3.2 (avoid runtime warnings)

💾 Data Preparation

  1. Download KITTI 3D Object Detection dataset and extract the files:
    1. Left color images image_2
    2. Right color images image_3
    3. Velodyne point clouds velodyne
    4. Camera calibration matrices calib
    5. Training labels label_2
  2. Predict the depth maps:
    1. Download pretrained model (training+validation)
    2. Generate the data:
    cd third_party/Pseudo_Lidar_V2  
    python ./src/main.py -c src/configs/sdn_kitti_train.config \
    --resume PATH_TO_CHECKPOINTS/sdn_kitti_object_trainval.pth --datapath PATH_TO_KITTI/training/ \
    --data_list ./split/trainval.txt --generate_depth_map --data_tag trainval \
    --save_path PATH_TO_DATA/sdn_kitti_train_set
    Note: Please adjust the paths PATH_TO_CHECKPOINTS, PATH_TO_KITTI, and PATH_TO_DATA to match your setup.
  3. Rename training/velodyne to training/velodyne_original
  4. Symlink the KITTI folders to PCDet:
    • ln -s PATH_TO_KITTI/training third_party/OpenPCDet/data/kitti/training
    • ln -s PATH_TO_KITTI/testing third_party/OpenPCDet/data/kitti/testing

🏃 Running 3D Object Detection

  1. Adjust paths in main.py. Further available parameters are listed in rl_l2o/eps_greedy_search.py and can be added in main.py.
  2. Adjust the number of epochs of the 3D object detector in (we used 40 epochs):
  3. Adjust the training scripts of the utilized detector to match your setup, e.g., object_detection/scripts/train_pointpillar.sh.
  4. Initiate the search: python main.py
    Note: Since we keep intermediate results to easily re-use them in later iterations, running the script will create a lot of data in the output_dir specified in main.py. You might want to manually delete some folders from time to time.

🔧 Adding more Tasks

Due to the design of the RL-L2O framework, it can be used as a simple drop-in module for many LiDAR applications. To apply the search algorithm to another task, just implement a custom RewardComputer, e.g., see object_detection/compute_reward.py. Additionally, you will have to prepare a set of features for each LiDAR beam. For the KITTI 3D Object Detection dataset, we provide the features as presented in the paper in object_detection/data/features_pcl.pkl.

👩‍⚖️ License

Creative Commons License
This software is made available for non-commercial use under a Creative Commons Attribution-NonCommercial 4.0 International License. A summary of the license can be found on the Creative Commons website.

Owner
Niclas
PhD student
Niclas
Warning: This project does not have any current developer. See bellow.

Pylearn2: A machine learning research library Warning : This project does not have any current developer. We will continue to review pull requests and

Laboratoire d’Informatique des Systèmes Adaptatifs 2.7k Dec 26, 2022
A Pytorch Implementation of [Source data‐free domain adaptation of object detector through domain

A Pytorch Implementation of Source data‐free domain adaptation of object detector through domain‐specific perturbation Please follow Faster R-CNN and

1 Dec 25, 2021
Code for paper "Do Language Models Have Beliefs? Methods for Detecting, Updating, and Visualizing Model Beliefs"

This is the codebase for the paper: Do Language Models Have Beliefs? Methods for Detecting, Updating, and Visualizing Model Beliefs Directory Structur

Peter Hase 19 Aug 21, 2022
MultiTaskLearning - Multi Task Learning for 3D segmentation

Multi Task Learning for 3D segmentation Perception stack of an Autonomous Drivin

2 Sep 22, 2022
The pytorch implementation of the paper "text-guided neural image inpainting" at MM'2020

TDANet: Text-Guided Neural Image Inpainting, MM'2020 (Oral) MM | ArXiv This repository implements the paper "Text-Guided Neural Image Inpainting" by L

LisaiZhang 75 Dec 22, 2022
Contrastive Language-Image Pretraining

CLIP [Blog] [Paper] [Model Card] [Colab] CLIP (Contrastive Language-Image Pre-Training) is a neural network trained on a variety of (image, text) pair

OpenAI 11.5k Jan 08, 2023
CM building dataset Timisoara

CM_building_dataset_Timisoara Date created: Febr-2020 The Timi\c{s}oara Building Dataset - TMBuD - is composed of 160 images with the resolution of 76

Orhei Ciprian 5 Sep 07, 2022
Vikrant Deshpande 1 Nov 17, 2022
The implementation for the SportsCap (IJCV 2021)

SportsCap: Monocular 3D Human Motion Capture and Fine-grained Understanding in Challenging Sports Videos ProjectPage | Paper | Video | Dataset (Part01

Chen Xin 79 Dec 16, 2022
Learning the Beauty in Songs: Neural Singing Voice Beautifier; ACL 2022 (Main conference); Official code

Learning the Beauty in Songs: Neural Singing Voice Beautifier Jinglin Liu, Chengxi Li, Yi Ren, Zhiying Zhu, Zhou Zhao Zhejiang University ACL 2022 Mai

Jinglin Liu 257 Dec 30, 2022
PyTorch implementation of Neural Dual Contouring.

NDC PyTorch implementation of Neural Dual Contouring. Citation We are still writing the paper while adding more improvements and applications. If you

Zhiqin Chen 140 Dec 26, 2022
Official Implementation of "Designing an Encoder for StyleGAN Image Manipulation"

Designing an Encoder for StyleGAN Image Manipulation (SIGGRAPH 2021) Recently, there has been a surge of diverse methods for performing image editing

749 Jan 09, 2023
Distributed Asynchronous Hyperparameter Optimization in Python

Hyperopt: Distributed Hyperparameter Optimization Hyperopt is a Python library for serial and parallel optimization over awkward search spaces, which

6.5k Jan 01, 2023
Algorithmic encoding of protected characteristics and its implications on disparities across subgroups

Algorithmic encoding of protected characteristics and its implications on disparities across subgroups This repository contains the code for the paper

Team MIRA - BioMedIA 15 Oct 24, 2022
基于YoloX目标检测+DeepSort算法实现多目标追踪Baseline

项目简介: 使用YOLOX+Deepsort实现车辆行人追踪和计数,代码封装成一个Detector类,更容易嵌入到自己的项目中。 代码地址(欢迎star): https://github.com/Sharpiless/yolox-deepsort/ 最终效果: 运行demo: python demo

114 Dec 30, 2022
MogFace: Towards a Deeper Appreciation on Face Detection

MogFace: Towards a Deeper Appreciation on Face Detection Introduction In this repo, we propose a promising face detector, termed as MogFace. Our MogFa

48 Dec 20, 2022
LTR_CrossEncoder: Legal Text Retrieval Zalo AI Challenge 2021

LTR_CrossEncoder: Legal Text Retrieval Zalo AI Challenge 2021 We propose a cross encoder model (LTR_CrossEncoder) for information retrieval, re-retrie

Xuan Hieu Duong 7 Jan 12, 2022
Adversarial Attacks on Probabilistic Autoregressive Forecasting Models.

Attack-Probabilistic-Models This is the source code for Adversarial Attacks on Probabilistic Autoregressive Forecasting Models. This repository contai

SRI Lab, ETH Zurich 25 Sep 14, 2022
Using machine learning to predict and analyze high and low reader engagement for New York Times articles posted to Facebook.

How The New York Times can increase Engagement on Facebook Using machine learning to understand characteristics of news content that garners "high" Fa

Jessica Miles 0 Sep 16, 2021
Automatic Attendance marker for LMS Practice School Division, BITS Pilani

LMS Attendance Marker Automatic script for lazy people to mark attendance on LMS for Practice School 1. Setup Add your LMS credentials and time slot t

Nihar Bansal 3 Jun 12, 2021