Coder Social home page Coder Social logo

rsrscoder / road-extraction Goto Github PK

View Code? Open in Web Editor NEW

This project forked from astro-ck/road-extraction

0.0 1.0 0.0 1.9 MB

A multi-stage road extraction method for surface and centerline detection

License: MIT License

Python 94.33% Go 5.67%

road-extraction's Introduction

Road-Extraction

A novel CNN-based multistage framework is proposed for simultaneous road surface and centerline tracing from remote sensing images instead of treating them separately as most current road extraction methods do.

This repository is the official implementation of Simultaneous Road Surface and Centerline Extraction From Large-Scale Remote Sensing Images Using CNN-Based Segmentation and Tracing.

Overview

Our framework consists of three steps: boosting segmentation, multiple starting points tracing, and fusion.

  • The initial road surface segmentation is achieved with a fully convolutional network (FCN), after which another lighter FCN is applied several times to boost the accuracy and connectivity of the initial segmentation.
  • In the multiple starting points tracing step, the starting points are automatically generated by extracting the road intersections of the segmentation results, which then are utilized to track consecutive and complete road networks through an iterative search strategy embedded in a convolutional neural network (CNN).
  • The fusion step aggregates the semantic and topological information of road networks by combining the segmentation and tracing results to produce the final and refined road segmentation and centerline maps.

Pipeline

image-20200728161909360

Results

image-20200728163332711

image-20210427155815430

image-20200728163239118

image-20210427161701545

Dependencies

Python == 3.6.7
PyTorch == 1.1.0
OpenCV == 4.1.0
Tensorflow-gpu == 1.8.0
Rtree == 0.8.3
Numpy == 1.16.3

Usage

1. Download dataset and prepare for the code

If your road ground-truth is only in segmentation format, then you may have to first convert it to graph format (through mapextract.py) for centerline tracing process.

2. Boosting segmentation

The initial road surface segmentation is achieved with D-LinkNet (CVPR_2018), you can refer to the original implementation or our reimplementation (in the folder initial_seg and run road.py).

Regarding the designed Boosting Segmentation Network (BSNet), run BSNet/cmd.py to train and test multiple BSNets.

The corresponding voting weight and training set for each BSNet are listed in the folder BSNet/boost_train.

3. MSP-Tracer

First, run corner_detect.py to generate the starting points from the segmentation results.

Then, train CNN by using Tracer/train.py, or you can refer to the original implementation of RoadTracer (CVPR_2018). For inference, run Tracer/infer_MSPTracer.py and Tracer/infer_MSPTracer_postprocess.py.

4. Fusion

Run fusion.py to produce the final and refined road segmentation and centerline maps.

5. Evaluation road connectivity (Conn)

Run evaluate_connectivity.py

Modify the parameters before running.

Pretrain Model

  • baseline segmentation model, pretrained in massachusetts dataset. Google drive

Contributing

Citation

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

@ARTICLE{9094008,
  author={Wei, Yao and Zhang, Kai and Ji, Shunping},
  journal={IEEE Transactions on Geoscience and Remote Sensing}, 
  title={Simultaneous Road Surface and Centerline Extraction From Large-Scale Remote Sensing Images Using CNN-Based Segmentation and Tracing}, 
  year={2020},
  volume={58},
  number={12},
  pages={8919-8931},
  doi={10.1109/TGRS.2020.2991733}}

road-extraction's People

Contributors

weiyao1996 avatar kai-zhang-er avatar astro-ck 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.