Code Monkey home page Code Monkey logo

squeezesegv2's Introduction

SqueezeSegV2: Improved Model Structure and Unsupervised Domain Adaptation for Road-Object Segmentation from a LiDAR Point Cloud

By Bichen Wu, Xuanyu Zhou, Sicheng Zhao, Xiangyu Yue, Kurt Keutzer (UC Berkeley)

This repository contains a tensorflow implementation of SqueezeSegV2, an improved convolutional neural network model for LiDAR segmentation and unsupervised domain adaptation for road-object segmentation from a LiDAR point cloud.

Please refer to our video for a high level introduction of this work: https://www.youtube.com/watch?v=ZitFO1_YpNM. For more details, please refer to our SqueezeSegV2 paper: https://arxiv.org/abs/1809.08495. If you find this work useful for your research, please consider citing:

 @inproceedings{wu2018squeezesegv2,
   title={SqueezeSegV2: Improved Model Structure and Unsupervised Domain Adaptation
   for Road-Object Segmentation from a LiDAR Point Cloud},
   author={Wu, Bichen and Zhou, Xuanyu and Zhao, Sicheng and Yue, Xiangyu and Keutzer, Kurt},
   booktitle={ICRA},
   year={2019},
 }
@inproceedings{wu2017squeezeseg,
   title={Squeezeseg: Convolutional neural nets with recurrent crf for real-time road-object segmentation from 3d lidar point cloud},
   author={Wu, Bichen and Wan, Alvin and Yue, Xiangyu and Keutzer, Kurt},
   booktitle={ICRA}, 
   year={2018}
 }
 @inproceedings{yue2018lidar,
   title={A lidar point cloud generator: from a virtual world to autonomous driving},
   author={Yue, Xiangyu and Wu, Bichen and Seshia, Sanjit A and Keutzer, Kurt and Sangiovanni-Vincentelli, Alberto L},
   booktitle={ICMR},
   pages={458--464},
   year={2018},
   organization={ACM}
 }

License

SqueezeSegV2 is released under the BSD license (See LICENSE for details). The dataset used for training, evaluation, and demostration of SqueezeSegV2 is modified from KITTI raw dataset. For your convenience, we provide links to download the converted dataset, which is distrubited under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.

Installation:

The instructions are tested on Ubuntu 16.04 with python 2.7 and tensorflow 1.4 with GPU support.

  • Clone the SqueezeSegV2 repository:

    git clone https://github.com/xuanyuzhou98/SqueezeSegV2.git

    We name the root directory as $SQSG_ROOT.

  • Setup virtual environment:

    1. By default we use Python2.7. Create the virtual environment

      virtualenv env
    2. Activate the virtual environment

      source env/bin/activate
  • Use pip to install required Python packages:

    pip install -r requirements.txt

Demo:

  • To run the demo script:
    cd $SQSG_ROOT/
    python ./src/demo.py
    If the installation is correct, the detector should write the detection results as well as 2D label maps to $SQSG_ROOT/data/samples_out. Here are examples of the output label map overlaped with the projected LiDAR signal. Green masks indicate clusters corresponding to cars and blue masks indicate cyclists.

Dataset:

  • First, download training and validation data (3.9 GB) from this link. This dataset contains LiDAR point-cloud projected to a 2D spherical surface. Refer to our paper for details of the data conversion procedure. This dataset is converted from KITTI raw dataset and is distrubited under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.
    cd $SQSG_ROOT/data/
    wget https://www.dropbox.com/s/pnzgcitvppmwfuf/lidar_2d.tgz
    tar -xzvf lidar_2d.tgz
    rm lidar_2d.tgz
  • The synthetic dataset we build is so far the largest synthetic LiDAR dataset of road scene for autonomous driving. It consistes of more than 120,000 scans with point-wise semantic labels. To get our synthetic dataset, you can fill out the request for the dataset through this link. The dataset contains the synthetic LiDAR point-cloud projected to a 2D spherical surface. Refer to our paper for details of the dataset. This dataset is distributed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.

Training/Validation

  • Now we can start training by

    cd $SQSG_ROOT/
    ./scripts/train.sh -gpu 0,1,2 -image_set train -log_dir ./log/

    Training logs and model checkpoints will be saved in the log directory.

  • We can launch evaluation script simutaneously with training

    cd $SQSG_ROOT/
    ./scripts/eval.sh -gpu 1 -image_set val -log_dir ./log/
  • We can monitor the training process using tensorboard.

    tensorboard --logdir=$SQSG_ROOT/log/

    Tensorboard displays information such as training loss, evaluation accuracy, visualization of detection results in the training process, which are helpful for debugging and tunning models

squeezesegv2's People

Contributors

xuanyuzhou98 avatar xyyue avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

squeezesegv2's Issues

Citing errors

Could you check your citing format again? I get errors when cite by latex in bib format. Thanks!

How to use the code for own dataset

I do have converted dataset from VLP16 lidar. but code says its currently it supports only KiTTI dataset.

how can i run the code for my own data set??

Please help me

how to freeze the pb for c++

if i use the typical freeze_graph.py method, it cannot produce the placeholders. I wonder if the fifoqueue causes this question. could you share the frozen script

No module named 'kitti_squeezeSeg_config'

there is a strange error that are shown in the code when running the demo.py since it says that

SqueezeSegV2\src\config_init_.py", line 1, in
import kitti_squeezeSeg_config
ModuleNotFoundError: No module named 'kitti_squeezeSeg_config'

even though the file are there

Learning rate changes abnormally

Hi! Thank you for sharing your work. When I look at the training effect in the tensorboard, the learning rate shows the following trend. The learning rate change is different from the exponential decay trend set in the code. Can you give me some suggestions?
3333

where is the domain adaptation part?

In your paper, you add a Geodesic Correlation Alignment and Progressive Domain Calibration to deal with domain adaptation. But I can not find it in your code. Could you provide that part of code?

How to train on GPU?

Training on GPU is not working for me by setting -gpu 0,1,2 command line options.

./scripts/train.sh -gpu 0 -image_set train -log_dir ./log/

I'm running SqueezeSegV2 on a conda virtual environment with tensorflow-gpu version 1.4.1

$ pip list | grep tensorflow
tensorflow-estimator 1.14.0
tensorflow-gpu 1.4.1
tensorflow-tensorboard 0.4.0

By invoking the training script the GPU remains mainly unused

$ nvidia-smi
Thu Aug 1 15:50:58 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.26 Driver Version: 430.26 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 2070 Off | 00000000:15:00.0 Off | N/A |
| 29% 30C P8 14W / 175W | 107MiB / 7982MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 Quadro P1000 Off | 00000000:21:00.0 On | N/A |
| 34% 40C P8 N/A / N/A | 507MiB / 4030MiB | 4% Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 26958 C python 93MiB |
| 1 1599 G /usr/bin/gnome-shell 92MiB |
| 1 2379 G /usr/bin/gnome-shell 392MiB |
+-----------------------------------------------------------------------------+

I expected GPU training to be working out of the box. What am I missing?

How much GPU memory is needed?

I try to trian the model with one GPU (TITAN XP with 12G memory) and get tensorflow error: Resource exhausted: OOM. Thus, I want to know how much GPU memory is needed for training and evaluating respectively?
Thanks!

Confused on 'We name the root directory as $SQSG_ROOT.'

Hey everybody, I am a newbie with Ubuntu but I tried searching Google for this, I'm confused on what I'm supposed to do after cloning the repository here.

How am I supposed to rename the root directory as $SQSG_ROOT? What does that even mean?

I'm researching online too obviously but could somebody link some documentation or something to explain this? Thanks!

GTAV dataset

Hi, thanks for sharing this very interesting approach !

Is it still possible to get the GTAV dataset ? I heard that there were some issues with TakeTwo...

Synthetic Dataset Access

Hi @xuanyuzhou98,

I submitted the data request several days ago and I still have not heard back. Is the dataset available somewhere to download or are there previous copies?

Thank you very much.

Best,

How to train on kitti dataset?

How to train on kitti?

To be specific, there 2 questions:

  1. What does network input which is inside samples directory, it is a array of [64, 512, 5], but normally point cloud is 4 dimensions, where does the 5th dimension from?

  2. How to generate lidar-2d data?

Question about the geodesic loss

Hi, Bichen Wu.
Firstly, thank you for your brilliant work! I looked up your code but didn't find the implement of geodesic loss. In which part is the implement of this loss? Please help.

A question about KITTI raw dataset

Thanks for sharing your work!
I have a problem about your lidar_2d data, which only has 10848 .npy files. But there are 12915 files raw data with tracklets in KITTI dataset.
Do you throw away some files? Could you verify this problem?
Thanks! Waiting for your reply.
The same issue is here: BichenWuUCB/SqueezeSeg#35

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.