• Stars
    star
    378
  • Rank 113,272 (Top 3 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Learning Dynamic Routing for Semantic Segmentation

DynamicRouting

This project provides an implementation for "Learning Dynamic Routing for Semantic Segmentation" (CVPR2020 Oral) on PyTorch. For the reason that experiments in the paper were conducted using internal framework, this project reimplements them on dl_lib and reports detailed comparisons below. Some parts of code in dl_lib are based on detectron2.

introduce image

Requirement

  • Python >= 3.6
    • python3 --version
  • PyTorch >= 1.3
    • pip3 install torch torchvision
  • OpenCV
    • pip3 install opencv-python
  • GCC >= 4.9
    • gcc --version

Installation

Make sure that your get at least one gpu when compiling. Run:

  • git clone https://github.com/yanwei-li/DynamicRouting.git
  • cd DynamicRouting
  • sudo python3 setup.py build develop

Usage

Dataset

We use Cityscapes dataset for training and validation. Please refer to datasets/README.md or dataset structure in detectron2 for more details.

Pretrained Model

We give ImageNet pretained models:

Training

For example, if you want to train Dynamic Network with Layer16 backbone:

  • Train from scratch
    cd playground/Dynamic/Seg.Layer16
    dl_train --num-gpus 4
  • Use ImageNet pretrain
    cd playground/Dynamic/Seg.Layer16.ImageNet
    dl_train --num-gpus 4 MODEL.WEIGHTS /path/to/your/save_dir/ckpt.pth

NOTE: Please set FIX_SIZE_FOR_FLOPS to [768,768] and [1024,2048] for training and evaluation, respectively.

Evaluation

You can evaluate the trained or downloaded model:

  • Evaluate the trained model
    dl_test --num-gpus 8
  • Evaluate the downloaded model:
    dl_test --num-gpus 8 MODEL.WEIGHTS /path/to/your/save_dir/ckpt.pth 

NOTE: If your machine does not support such setting, please change settings in config.py to a suitable value.

Performance

Cityscapes val set

Without ImageNet Pretrain:

Methods Backbone Iter/K mIoU (paper) GFLOPs (paper) mIoU (ours) GFLOPs (ours) Model
Dynamic-A Layer16 186 72.8 44.9 73.9 52.5 GoogleDrive
Dynamic-B Layer16 186 73.8 58.7 74.3 58.9 GoogleDrive
Dynamic-C Layer16 186 74.6 66.6 74.8 59.8 GoogleDrive
Dynamic-Raw Layer16 186 76.1 119.5 76.7 114.9 GoogleDrive
Dynamic-Raw Layer16 558 78.3 113.3 78.1 114.2 GoogleDrive

With ImageNet Pretrain:

Methods Backbone Iter/K mIoU (paper) GFLOPs (paper) mIoU (ours) GFLOPs (ours) Model
Dynamic-Raw Layer16 186 78.6 119.4 78.8 117.8 GoogleDrive
Dynamic-Raw Layer33 186 79.2 242.3 79.4 243.1 GoogleDrive

To do

  • Faster inference speed
  • Support more vision tasks
    • Object detection
    • Instance segmentation
    • Panoptic segmentation

Acknowledgement

Citation

Consider cite the Dynamic Routing in your publications if it helps your research.

@inproceedings{li2020learning,
    title = {Learning Dynamic Routing for Semantic Segmentation},
    author = {Yanwei Li, Lin Song, Yukang Chen, Zeming Li, Xiangyu Zhang, Xingang Wang, Jian Sun},
    booktitle = {IEEE Conference on Computer Vision and Pattern Recognition},
    year = {2020}
}

Consider cite this project in your publications if it helps your research.

@misc{DynamicRouting,
    author = {Yanwei Li},
    title = {DynamicRouting},
    howpublished = {\url{https://github.com/yanwei-li/DynamicRouting}},
    year ={2020}
}

More Repositories

1

YOLOX

YOLOX is a high-performance anchor-free YOLO, exceeding yolov3~v5 with MegEngine, ONNX, TensorRT, ncnn, and OpenVINO supported. Documentation: https://yolox.readthedocs.io/
Python
9,231
star
2

BEVDepth

Official code for BEVDepth.
Python
709
star
3

cvpods

All-in-one Toolbox for Computer Vision Research.
Python
643
star
4

DeFCN

End-to-End Object Detection with Fully Convolutional Network
Python
494
star
5

BorderDet

BorderDet: Border Feature for Dense Object Detection(ECCV2020 Oral)
Python
431
star
6

BEVStereo

Official code for BEVStereo
Python
253
star
7

OTA

Official implementation of our CVPR2021 paper "OTA: Optimal Transport Assignment for Object Detection" in Pytorch.
Python
241
star
8

AutoAssign

Pytorch implementation of "AutoAssign: Differentiable Label Assignment for Dense Object Detection"
Python
140
star
9

TreeFilter-Torch

Learnable Tree Filter for Structure-preserving Feature Transform
Python
139
star
10

DenseTeacher

DenseTeacher: Dense Pseudo-Label for Semi-supervised Object Detection
Python
120
star
11

DisAlign

Implementation of "Distribution Alignment: A Unified Framework for Long-tail Visual Recognition"(CVPR 2021)
Python
117
star
12

Megvii-BaseDetection

You are welcomed to join us!
50
star
13

GFSD

This project provides an implementation for "Generalized Few-Shot Object Detection without Forgetting" (CVPR2021) on PyTorch.
Python
45
star
14

LLA

Official implementation of our paper "LLA: Loss-aware Label Assignment for Dense Pedestrian Detection" in Pytorch.
Python
35
star
15

4K-Face

4K-Face: A Dataset with Huge Scale-variance Faces
32
star
16

storage

provide Checkpoint for users.
1
star