GithubHelp home page GithubHelp logo

allandproust / scnn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xingangpan/scnn

0.0 1.0 1.0 442 KB

Spatial CNN for traffic lane detection (AAAI2018)

License: MIT License

Lua 70.39% Shell 3.02% Makefile 1.22% MATLAB 3.18% C++ 22.19%

scnn's Introduction

Spatial CNN for Traffic Lane Detection

Paper

Xingang Pan, Jianping Shi, Ping Luo, Xiaogang Wang, Xiaoou Tang. "Spatial As Deep: Spatial CNN for Traffic Scene Understanding", AAAI2018

This code is modified from fb.resnet.torch.

Introduction

Demo video is available here.

  • Spatial CNN enables explicit and effective spatial information propagation between neurons in the same layer of a CNN.
  • It is extremly effective in cases where objects have strong shape priors like the long thin continuous property of lane lines.
    VGG16+SCNN outperforms ResNet101 on lane detection.

Requirements

  • Torch, please follow the installation instructions at fb.resnet.torch.
  • Matlab (for tools/prob2lines), version R2014a or later.
  • Opencv (for tools/lane_evaluation), version 2.4.8 (later 2.4.x should also work).
  • Hardware: For testing, GPU with 3G memory suffices. For training, we recommend 4xGPU with 12G memory.

Before Start

  1. Clone the SCNN repository

    git clone https://github.com/XingangPan/SCNN.git

    We'll call the directory that you cloned SCNN as $SCNN_ROOT

  2. Download CULane dataset

    mkdir -p data/CULane
    cd data/CULane

    Download CULane dataset and extract here. (Note: If you have downloaded the dataset before 16th April 2018, please update the raw annotations of train&val set as described in the dataset website.)
    You should have structure like this:

    $SCNN_ROOT/data/CULane/driver_xx_xxframe    # data folders x6
    $SCNN_ROOT/data/CULane/laneseg_label_w16    # lane segmentation labels
    $SCNN_ROOT/data/CULane/list                 # data lists

Testing

  1. Download our pre-trained models to ./experiments/pretrained

    cd $SCNN_ROOT/experiments/pretrained

    Download our best performed model here.

  2. Run test script

    cd $SCNN_ROOT
    sh ./experiments/test.sh

    Testing results (probability map of lane markings) are saved in experiments/predicts/ by default.

  3. Get curve line from probability map

    cd tools/prob2lines
    matlab -nodisplay -r "main;exit"  # or you may simply run main.m from matlab interface

    The generated line coordinates would be saved in tools/prob2lines/output/ by default.

  4. Calculate precision, recall, and F-measure

    cd $SCNN_ROOT/tools/lane_evaluation
    make
    sh Run.sh   # it may take over 30min to evaluate

    Note: Run.sh evaluate each scenario separately while run.sh evaluate the whole. You may use calTotal.m to calculate overall performance from all senarios.
    By now, you should be able to reproduce our result in the paper.

Training

  1. Download VGG16 pretrained on ImageNet
    cd $SCNN_ROOT/experiments/models
    Download VGG16 model here and move it to $SCNN_ROOT/experiments/models/vgg.
  2. Generate SCNN model
    th SCNN-gen.lua
    The generated model will be saved in ./vgg_SCNN_DULR9_w9 by default.
  3. Training SCNN
    cd $SCNN_ROOT
    sh ./experiments/train.sh
    The training process should start and trained models would be saved in $SCNN_ROOT/experiments/models/vgg_SCNN_DULR_w9 by default.
    Then you can test the trained model following the Testing steps above. If your model position or name is changed, remember to set them to yours accordingly.

Tensorflow Implementation

This project is based on lua torch. For tensorflow implementation, please refer to https://github.com/cardwing/Codes-for-Lane-Detection.

Citing SCNN or CULane

@inproceedings{pan2018SCNN,  
  author = {Xingang Pan, Jianping Shi, Ping Luo, Xiaogang Wang, and Xiaoou Tang},  
  title = {Spatial As Deep: Spatial CNN for Traffic Scene Understanding},  
  booktitle = {AAAI Conference on Artificial Intelligence (AAAI)},  
  month = {February},  
  year = {2018}  
}

Acknowledgment

Most work for building CULane dataset is done by Xiaohang Zhan, Jun Li, and Xudong Cao. We thank them for their helpful contribution.

scnn's People

Contributors

xingangpan avatar vernamcu avatar sanskar107 avatar

Watchers

James Cloos avatar

Forkers

all-and-proust

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.