Coder Social home page Coder Social logo

curve-gcn's Introduction

Curve-GCN

This is the official PyTorch implementation of Curve-GCN (CVPR 2019). This repository allows you to train new Curve-GCN models. For technical details, please refer to:


Fast Interactive Object Annotation with Curve-GCN
Huan Ling* 1,2, Jun Gao* 1,2, Amlan Kar1,2, Wenzheng Chen1,2, Sanja Fidler1,2,3
1 University of Toronto 2 Vector Institute 3 NVIDIA
[Paper] [Video] [Demo Coming Soon] [Supplementary]

CVPR 2019

Manually labeling objects by tracing their boundaries is a laborious process. In Polyrnn, the authors proposed Polygon- RNN that produces polygonal annotations in a recurrent manner using a CNN-RNN architecture, allowing interactive correction via humans-in-the-loop. We propose a new framework that alleviates the sequential nature of Polygon-RNN, by predicting all vertices simultaneously using a Graph Convolutional Network (GCN). Our model is trained end-to-end, and runs in real time. It supports object annotation by either polygons or splines, facilitating labeling efficiency for both line-based and curved objects. We show that Curve-GCN outperforms all existing approaches in automatic mode, including the powerful PSP-DeepLab and is significantly more efficient in interactive mode than Polygon-RNN++. Our model runs at 29.3ms in automatic, and 2.6ms in interactive mode, making it 10x and 100x faster than Polygon- RNN++.
(* denotes equal contribution)


Where is the code?

To get the code, please signup here. We will be using GitHub to keep track of issues with the code and to update on availability of newer versions (also available on website and through e-mail to signed up users).

If you use this code, please cite:

@inproceedings{CurveGCN2019,
title={Fast Interactive Object Annotation with Curve-GCN},
author={Huan Ling and Jun Gao and Amlan Kar and Wenzheng Chen and Sanja Fidler},
booktitle={CVPR},
year={2019}
}

License

This work is licensed under a GNU GENERAL PUBLIC LICENSE Version 3 License.

Environment Setup

All the code has been run and tested on Ubuntu 16.04, Python 2.7.12, Pytorch 0.4.1, CUDA 9.0, TITAN X/Xp and GTX 1080Ti GPUs

  • Go into the downloaded code directory
cd <path_to_downloaded_directory>
  • Setup python environment
virtualenv env
source env/bin/activate
pip install -r requirements.txt
  • Add the project to PYTHONPATH
export PYTHONPATH=$PWD

Data

Cityscapes

  • Download the Cityscapes dataset (leftImg8bit_trainvaltest.zip) from the official website [11 GB]
  • Our processed annotation files are included in the download file you get after signing up
  • From the root directory, run the following command with appropriate paths to get the annotation files ready for your machine
python Scripts/data/change_paths.py --city_dir <path_to_downloaded_leftImg8bit_folder> --json_dir <path_to_downloaded_annotation_file> --out_dir <output_dir>

Training

  • Download the pre-trained Pytorch Resnet-50 from here

Train Spline GCN

  • Modify "exp_dir", "encoder_reload", "data_dir" attributes at Experiments/gnn-active-spline.json
  • Run script:
python Scripts/train/train_gnn_active_spline.py --exp Experiments/gnn-active-spline.json

Checkpoint to reproduce numbers from the paper is available at "checkpoints/Spline_GCN_epoch8_step21000.pth"

Finetune Spline GCN with Differentiable Rendering

  • Modify "exp_dir", "encoder_reload", "data_dir" attributes at Experiments/gnn-active-spline.json
  • Modify "xe_initializer" to be the best checkpoint from the last step.
  • Run script:
python Scripts/train/train_gnn_active_spline_diffrender.py --exp Experiments/gnn-active-spline-diff-render.json

Checkpoint to reproduce numbers from the paper is available at "checkpoints/Spline_GCN_diffrender_epoch6_step18000.pth"

Prediction

Generate prediction masks:

python Scripts/train/train_gnn_active_spline_diffrender.py --exp <path to exp file> --output_dir <path to output dir> --reload <path to checkpoint> 

Calculate IOU:

python Scripts/get_scores.py --pred <path to output dir> --output  <path to output txt file>

curve-gcn's People

Contributors

amlankar avatar arieling avatar

Watchers

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