Giter Site home page Giter Site logo

youquanl / gfnet Goto Github PK

View Code? Open in Web Editor NEW

This project forked from haibo-qiu/gfnet

0.0 1.0 0.0 11.07 MB

[TMLR 2022] Geometric Flow Network for 3D Point Cloud Semantic Segmentation

Home Page: https://haibo-qiu.github.io/GFNet/

Shell 1.09% Python 98.68% Dockerfile 0.22%

gfnet's Introduction

GFNet arXiv TMLR Project

This is the Pytorch implementation of our following paper:

GFNet: Geometric Flow Network for 3D Point Cloud Semantic Segmentation
Accepted by TMLR, 2022
Haibo Qiu, Baosheng Yu and Dacheng Tao

Abstract

Point cloud semantic segmentation from projected views, such as range-view (RV) and bird's-eye-view (BEV), has been intensively investigated. Different views capture different information of point clouds and thus are complementary to each other. However, recent projection-based methods for point cloud semantic segmentation usually utilize a vanilla late fusion strategy for the predictions of different views, failing to explore the complementary information from a geometric perspective during the representation learning. In this paper, we introduce a geometric flow network (GFNet) to explore the geometric correspondence between different views in an align-before-fuse manner. Specifically, we devise a novel geometric flow module (GFM) to bidirectionally align and propagate the complementary information across different views according to geometric relationships under the end-to-end learning scheme. We perform extensive experiments on two widely used benchmark datasets, SemanticKITTI and nuScenes, to demonstrate the effectiveness of our GFNet for project-based point cloud semantic segmentation. Concretely, GFNet not only significantly boosts the performance of each individual view but also achieves state-of-the-art results over all existing projection-based models.

Segmentation GIF

vis
(A gif of segmentation results on SemanticKITTI by GFNet)

Framework

framework gfm

Table of Contents

Installation

  1. Clone this repo:
    git clone https://github.com/haibo-qiu/GFNet.git
  2. Create a conda env with
    conda env create -f environment.yml
    Note that we also provide the Dockerfile for an alternative setup method.

Data preparation

  1. Download point clouds data from SemanticKITTI and nuScenes.
  2. For SemanticKITTI, directly unzip all data into dataset/SemanticKITTI.
  3. For nuScenes, first unzip data to dataset/nuScenes/full and then use the following cmd to generate pkl files for both training and testing:
    python dataset/utils_nuscenes/preprocess_nuScenes.py
  4. Final data folder structure will look like:
       dataset
       └── SemanticKITTI
           └── sequences
               ├── 00
               ├── ...
               └── 21
       └── nuScenes
           └── full
               ├── lidarseg
               ├── smaples
               ├── v1.0-{mini, test, trainval}
               └── ...
           └── nuscenes_train.pkl
           └── nuscenes_val.pkl
           └── nuscenes_trainval.pkl
           └── nuscenes_test.pkl
    
    

Training

  • Please refer to configs/semantic-kitti.yaml and configs/nuscenes.yaml for dataset specific properties.
  • Download the pretrained resnet model to pretrained/resnet34-333f7ec4.pth.
  • The hyperparams for training are included in configs/resnet_semantickitti.yaml and configs/resnet_nuscenes.yaml. After modifying corresponding settings to satisfy your purpose, the network can be trained in an end-to-end manner by:
    1. ./scripts/start.sh on SemanticKITTI.
    2. ./scripts/start_nuscenes.sh on nuScenes.

Inference

SemanticKITTI

  1. Download gfnet_63.0_semantickitti.pth.tar into pretrained/.
  2. Evaluate on SemanticKITTI valid set by:
    ./scripts/infer.sh
    Alternatively, you can use the official semantic-kitti api for evaluation.
  3. To reproduce the results we submitted to the test server:
    1. download gfnet_submit_semantickitti.pth.tar into pretrained/,
    2. uncomment and run the second cmd in ./scripts/infer.sh.
    3. zip path_to_results_folder/sequences for submission.

nuScenes

  1. Download gfnet_76.8_nuscenes.pth.tar into pretrained/.
  2. Evaluate on nuScenes valid set by:
    ./scripts/infer_nuscenes.sh
  3. To reproduce the results we submitted to the test server:
    1. download gfnet_submit_nuscenes.pth.tar into pretrained/.
    2. uncomment and run the second cmd in ./scripts/infer_nuscenes.sh.
    3. check the valid format of predictions by:
      ./dataset/utils_nuscenes/check.sh
      where result_path needs to be modified correspondingly.
    4. submit the dataset/nuScenes/preds.zip to the test server.

Acknowledgment

This repo is built based on lidar-bonnetal, PolarSeg and kprnet. Thanks the contributors of these repos!

Citation

If you use our code or results in your research, please consider citing with:

@article{qiu2022gfnet,
  title={{GFN}et: Geometric Flow Network for 3D Point Cloud Semantic Segmentation},
  author={Haibo Qiu and Baosheng Yu and Dacheng Tao},
  journal={Transactions on Machine Learning Research},
  year={2022},
  url={https://openreview.net/forum?id=LSAAlS7Yts},
}

gfnet's People

Contributors

haibo-qiu avatar

Watchers

 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.