Git Product home page Git Product logo

power-line-corridor-lidar-point-cloud-segmentation's Introduction

Power Line Corridor LiDAR Point Cloud Segmentation Using Convolutional Neural Network

Created by Jisheng Yang, Zijun Huang, Maochun Huang, Xianxina Zeng, Dong Li, Yun Zhang

introduction

This repository is code release of out PRCV 2019 paper (here). In this work, we propose a deep learning based method to segment power line corridor LiDAR point cloud. We design an effective channel presentation for LiDAR point cloud and adapt a point cloud segmentation network (pointnet) as our basic network. To verify the generalization ability of our channel presentation, we also do experiments on Kitti dataset. Experiments show that our channel presentation not only works well on Power Line Corridor LiDAR Point Cloud dataset, but also generalizes well on Kitti dataset. Our training codes are mainly adapted from (pointnet)
Since Kitti doesn't provide point-wise semantic labels, we obtain semantic labels with methods discribed in squeezeseg, assigning same labels to points within a 3D bounding box.
For more details of our method, please refer to our paper.

Citation

If you find our work useful in your research, please consider citing:

@ARTICLE{power line segmentation,
author={Jisheng Yang, Zijun Huang, Maochun Huang, Xianxina Zeng, Dong Li, Yun Zhang},
title = {Power Line Corridor LiDAR Point Cloud Segmentation Using Convolutional Neural Network},
journal={PRCV 2019},
year={2019}
}

Installation

Codes of this release is implement with python3.6. Please install numpy==1.16, tensorflow==1.14.

Usage

Power Line Corridor LiDAR Point Cloud dataset is classified, so only experiments on Kitti dataset is discribed. But codes on Power Line Corridor LiDAR Point Cloud dataset is also release.

Prepare Training and Validation Data

Download Kitti 3D object(here), put them in /data, unzip them and organize the folders as follows:

data/kitti/
  data_object_velodyne/
  label2/

Run calculate_3d_bbox_corners.py to extract point clouds from kitti and label them, you can use CC to visulize in /data/labeled_point_cloud/. Run nine2four.py to delete some labels, since we only consider there class: Car, Pedestrian, Cyclist. You can also visulize in /data/input_point_cloud_dir.

train using pointnet

Run data_process_base_kitti.py and /sem_seg/seg_codes/train_base.py in sequence.

validate using pointnet

Run /sem_seg/seg_codes/batch_inference_base.py. You can visualize results in /log_base/dump/. And then open /sem_seg/seg_codes/statistics_mul.py and make sure results_dir = base_dir + '/../log_base/dump' and run it to see IoU, precision and recall.

train using our method(p3)

Run data_process_local_kitti.py and /sem_seg/seg_codes/train_local.py in sequence.

validate using our method(p3)

Run /sem_seg/seg_codes/batch_inference_local.py. You can visualize results in /log_local/dump/. And then open /sem_seg/seg_codes/statistics_mul.py and make sure results_dir = base_dir + '/../log_local/dump' and run it to see IoU, precision and recall.

extended experiments

We found channel presentation works better in Kitti dataset. I means the original intensity. You can try the following operation to see the results.

train using our method(p4)

Run data_process_local_kitti_v2.py and /sem_seg/seg_codes/train_local_v2.py in sequence.

validate using our method(p4)

Run /sem_seg/seg_codes/batch_inference_local_v2.py. You can visualize results in /log_local_v2/dump/. And then open /sem_seg/seg_codes/statistics_mul.py and make sure results_dir = base_dir + '/../log_local_v2/dump' and run it to see IoU, precision and recall.

result

The results are different from those in paper and they are better. Because we didn't have time to train enough epoches before submitting the paper. Table 1 shows the IOU result of 20 epoches.
Table 1

References

PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
SqueezeSeg

power-line-corridor-lidar-point-cloud-segmentation's People

Contributors

prominem 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.