Coder Social home page Coder Social logo

da-pseudo-lidar's Introduction

Domain Adaptation for 3D Object Detection

This project was submitted as part of the requirements of the course CSE 291 A (Domain Adaptation) by Prof. Manmohan Chandraker at UC San Diego.

Contents

Introduction

3D object detection is an important component of autonomous driving. However, LiDAR sensors are expensive and so is labeling large amount of data. Thus, in this project, we try to use domain adaptation to solve 3D object detection problem using only images at the time of inference.

Usage

1. Overview

The project basically has three components:

  • Data Processing: mainly contained in preprocessing folder and uses Frustum-Pointnets repo
  • Depth Adaptation: This is done using T2Net and code is contained in Synthetic2Realistic submodule
  • 3D Object Detection DA: frustum_pointnet folder contains all the relevant code

2. Code Structure

2.1 Preprocessing

  • generate_vkitti_frustum.py: generates frustums for Virtual KITTI data
  • generate_lidar.py: generates pseudo-LiDAR based on KITTI depth predictions

2.2 Synthetic2Realistic

  • train.py: for training the model
  • test.py: for generating the depth predictions using the model
  • model: contains all the relevant model details
  • dataloader: creates file or directory based dataloaders
  • options: specifies the list of all available training and testing options

2.3 frustum_pointnet

  • configs: contains options for each experiment
  • data: stores frustum data for Virtual KITTI and KITTI
  • datasets: dataloaders
  • evaluate: code for evaluating performance
  • meters: code for evaluation metrics
  • models: models details
  • modules: losses and C++ pytorch modules

Training files:

  • train.py: trains target only model using Frustum-PointNet
  • train_vkitti.py: trains source only model using Frustum-PointNet
  • train_dan.py: trains Frustum-PointDAN Basic
  • train_dan_full.py: trains PointDAN for all the sub-models of Frustum-PointNet
  • train_dan_parallel.py: trains Frustum-PointDAN Parallel
  • train_dan_simple.py: trains DA Frustum-PointNet Basic
  • train_dan_simple_parallel.py: trains DA Frustum-PointNet Parallel
  • train_dan_simple_full.py: trains DA Frustum-PointNet for all three sub-models

3. Usage

3.1 Preprocessing

  • Generate Vkitti Frustums
cd preprocessing
python3 generate_vkitti_frustum.py --gen_train --gen_val --car_only 
--path <path to vkitti folder>

3.2 Depth Estimation

git submodule init
git submodule update
cd Synthetic2Realistic
python3 train.py <specify options>

Please look at mytrain.sh and mytest.sh for suggested use.

3.3 3D Object Detection

cd frustum_pointnet
sh setup.sh
python3 <train_file> --configs <specify config file> --devices <GPU IDs>
  • Training Example
python3 train_dan_simple.py --configs configs/dan/simple/simpledan.py --devices 0
  • Testing Example
python3 train_dan_simple.py --configs configs/dan/simple/simpledan.py --devices 0 --evaluate

Contact

If you have any question, please feel free to email us.

Anurag Paul ([email protected]), Manjot Singh Bilkhu, Devendra Partap Yadav, Harshul Gupta

da-pseudo-lidar's People

Contributors

anurag1paul avatar mileyan avatar manjotms10 avatar div99 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.