RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation

Overview

Multipath RefineNet

A MATLAB based framework for semantic image segmentation and general dense prediction tasks on images.

This is the source code for the following paper and its extension:

  1. RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation; CVPR 2017
    https://arxiv.org/abs/1611.06612
  2. RefineNet extension in TPAMI 2019: DOI Link

Pytorch implementation

This codebase only provides MATLAB and MatConvNet based implementation.

Vladimir Nekrasov kindly provides a Pytorch implementation and a light-weight version of RefineNet at:
https://github.com/DrSleep/refinenet-pytorch

Update notes

  • 23 Dec 2016: We did a major update of our code.
  • (new!) 13 Feb 2018:
    1. Multi-scale prediction and evaluation code are added. We add demo files for multi-scale prediction, fusion and evaluation. Please refer to the Testing section below for more details.
    2. New models available: trained models using improved residual pooling. Available for these datasets: NYUDv2, Person_Parts, PASCAL_Context, SUNRGBD, ADE20k. These models will give better performance than the reported results in our CVPR paper.
    3. New models available: trained models using ResNet-152 for all 7 datasets. Apart from ResNet-101 based models, our ResNet-152 based models of all 7 datasets are now available for download.
    4. Updated trained model for VOC2012: this updated model is slightly better than the previous one. We previously uploaded a wrong model.
    5. All models are now available in Google Drive and Baidu Pan.
    6. More details are provided on testing, training and implementation. Please refer to Important notes in each section below.

Results

  • Results on the CityScapes Dataset (single scale prediction using ResNet-101 based RefineNet) RefineNet Results on the CityScapes Dataset

Trained models

  • (new!) Trained models for the following datasets are available for download.
  1. PASCAL VOC 2012
  2. Cityscapes
  3. NYUDv2
  4. Person_Parts
  5. PASCAL_Context
  6. SUNRGBD
  7. ADE20k
  • Downloads for the above datasets. Put the downloaded models in ./model_trained/
  • Important notes:
    • For the test set performance of our method on the dataset PASCAl VOC and Cityscapes, kindly note that we do not use any images in the validation set for training. Our models are trained only using the training set images.
    • The trained models of the the following datasets are using improved residual pooling: NYUDv2, Person_Parts, PASCAL_Context, SUNRGBD, ADE20k. These models will give better performance than the reported results in our CVPR paper. Please also refer to the Network architecture section below for more details about improved pooling.
    • The model for VOC2012 is updated. We previously uploaded a wrong model.

Network architecture and implementation

  • You can find the network graphs that illustrate our architecture in the folder net_graphs. Please refer to our paper for more details.
  • We include in this folder the details of improved residual pooling which improves the residual pooling block described in our CVPR paper.
  • Important notes:
    • In our up-sampling and fusion layer, we simply use down-sampling for gradient back-propagation. Please refer to the implementation of our fusion layer for details: My_sum_layer.m.
    • please refer to our training demo files for more details on implementation

Installation

  • Install MatConvNet and CuDNN. We have modified MatConvNet for our task. A modified copy of MatConvNet is provided in ./lib/. You need to compile the provided MatConvNet before running. Details of this modification and compiling can be found in main/my_matconvnet_resnet/README.md.

  • An example script for exporting lib paths is main/my_matlab.sh

  • Download the following ImageNet pre-trained models and place them in ./model_trained/:

    • imagenet-resnet-50-dag, imagenet-resnet-101-dag, imagenet-resnet-152-dag.

    They can be downloaded from: MatConvNet, we also have a copy in Google Drive, Baidu Pan.

Testing

1. Multi-scale prediction and evaluation (new!)

  • First download the trained models and put them in ./model_trained/. Please refer to the above section Trained Models.

  • Then refer to the below example scripts for prediction on your images:

    • demo_predict_mscale_[dataset name].m
    • e.g., demo_predict_mscale_voc.m, demo_predict_mscale_nyud, demo_predict_mscale_person_parts
  • You may need to carefully read through the comments in these demo scripts before using.

  • Important notes:

    • In the default setting, the example scripts will perform multi-scale prediction and fuse multi-scale results to generate final prediction.
    • The generated masks and scores maps will be saved in your disk. Note that the score maps are saved in the format of uint8 with values in [0 255]. You need to cast them into double and normalize into [0 1] if you want to use them.
    • The above demo files are able to perform multi-scale prediction and evaluation (e.g., in terms of IoU scores) in a single run. However, in the default setting, the performance evaluation part is disabled. Please refer to the comments in the demo files to turn on the performance evaluation.
    • Trained models using improved residual pooling will give better performance than the reported results in our CVPR paper. Please refer to the above section Trained models for more details.
    • For the images from NYUDv2 dataset, you may need to remove the white borders of the images before applying our models. More details and crop tools can be found in the NYUDv2 dataset webpage.

2. Single scale prediction and evaluation

  • Single scale prediction and evaluation can be done by changing the scale setting in the multi-scale prediction demo files. Please refer the the above section for multi-scale prediction.

  • We also provide simplified demo files for prediction with much less configurations. They are only for single scale prediction. Examples can be found at: demo_test_simple_voc.m and demo_test_simple_city.m.

3. Evaluation and fusion on saved results (score map files and mask files) (new!)

  • We provide an example script to perform multi-scale fusion on a number of predictions (score maps) saved in your disk:
    • demo_fuse_saved_prediction_voc.m : fuse multiple cached predictions to generate the final prediction
  • We provide an example script to evaluate the prediction masks saved in your disk:
    • demo_evaluate_saved_prediction_voc.m : evaluate the segmentation performance, e.g., in terms of IoU scores.

Training

  • The following demo files are provided for training a RefineNet on your own dataset. Please carefully read through the comments in the demo files before using this training code.
    • demo_refinenet_train.m
    • demo_refinenet_train_reduce_learning_rate.m
  • Important notes:
    • We use step-wise policy to reduce learning rate, and more importantly, you need to manually reduce the learning rate during the training stage. The setting of maximum training iteration just serves as a simple example and it should be adapted to your datasets. More details can be found in the comments of the training demo files.
    • We use the improved version of chained pooling in this training code, which may achieve better result than using the above provided models.

Citation

If you find the code useful, please cite our work as

@inproceedings{Lin:2017:RefineNet,
  title = {Refine{N}et: {M}ulti-Path Refinement Networks for High-Resolution Semantic Segmentation},
  shorttitle = {RefineNet: Multi-Path Refinement Networks},
  booktitle = {CVPR},
  author = {Lin, G. and Milan, A. and Shen, C. and Reid, I.},
  month = jul,
  year = {2017}
}

and

@article{lin2019refinenet,
  title={RefineNet: Multi-Path Refinement Networks for Dense Prediction},
  author={Lin, Guosheng and Liu, Fayao and Milan, Anton and Shen, Chunhua and Reid, Ian},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence}, 
  year={2019},
  publisher={IEEE},
  doi={10.1109/TPAMI.2019.2893630}, 
}

License

For academic usage, the code is released under the permissive BSD license. For any commercial purpose, please contact the authors.

Owner
Guosheng Lin
Guosheng Lin
[CIKM 2021] Enhancing Aspect-Based Sentiment Analysis with Supervised Contrastive Learning

Enhancing Aspect-Based Sentiment Analysis with Supervised Contrastive Learning. This repo contains the PyTorch code and implementation for the paper E

Akuchi 18 Dec 22, 2022
UFT - Universal File Transfer With Python

UFT 2.0.0 UFT (Universal File Transfer) is a CLI tool , which can be used to upl

Merwin 1 Feb 18, 2022
Predict halo masses from simulations via graph neural networks

HaloGraphNet Predict halo masses from simulations via Graph Neural Networks. Given a dark matter halo and its galaxies, creates a graph with informati

Pablo Villanueva Domingo 20 Nov 15, 2022
Python code to generate art with Generative Adversarial Network

GAN_Canvas_Maker Generating Art using Generative Adversarial Network (GAN) Python code to generate art with Generative Adversarial Network: https://to

Jonny Banana 10 Aug 22, 2022
An Efficient Training Approach for Very Large Scale Face Recognition or F²C for simplicity.

Fast Face Classification (F²C) This is the code of our paper An Efficient Training Approach for Very Large Scale Face Recognition or F²C for simplicit

33 Jun 27, 2021
Turning SymPy expressions into JAX functions

sympy2jax Turn SymPy expressions into parametrized, differentiable, vectorizable, JAX functions. All SymPy floats become trainable input parameters. S

Miles Cranmer 38 Dec 11, 2022
Joint-task Self-supervised Learning for Temporal Correspondence (NeurIPS 2019)

Joint-task Self-supervised Learning for Temporal Correspondence Project | Paper Overview Joint-task Self-supervised Learning for Temporal Corresponden

Sifei Liu 167 Dec 14, 2022
(CVPR 2022) A minimalistic mapless end-to-end stack for joint perception, prediction, planning and control for self driving.

LAV Learning from All Vehicles Dian Chen, Philipp Krähenbühl CVPR 2022 (also arXiV 2203.11934) This repo contains code for paper Learning from all veh

Dian Chen 300 Dec 15, 2022
An easier way to build neural search on the cloud

An easier way to build neural search on the cloud Jina is a deep learning-powered search framework for building cross-/multi-modal search systems (e.g

Jina AI 17k Jan 02, 2023
This repo generates the training data and the model for Morpheus-Deblend

Morpheus-Deblend This repo generates the training data and the model for Morpheus-Deblend. This is the active development repo for the project and as

Ryan Hausen 2 Apr 18, 2022
TuckER: Tensor Factorization for Knowledge Graph Completion

TuckER: Tensor Factorization for Knowledge Graph Completion This codebase contains PyTorch implementation of the paper: TuckER: Tensor Factorization f

Ivana Balazevic 296 Dec 06, 2022
Learning Skeletal Articulations with Neural Blend Shapes

This repository provides an end-to-end library for automatic character rigging and blend shapes generation as well as a visualization tool. It is based on our work Learning Skeletal Articulations wit

Peizhuo 504 Dec 30, 2022
Code repository for the paper Computer Vision User Entity Behavior Analytics

Computer Vision User Entity Behavior Analytics Code repository for "Computer Vision User Entity Behavior Analytics" Code Description dataset.csv As di

Sameer Khanna 2 Aug 20, 2022
CRF-RNN for Semantic Image Segmentation - PyTorch version

This repository contains the official PyTorch implementation of the "CRF-RNN" semantic image segmentation method, published in the ICCV 2015

Sadeep Jayasumana 170 Dec 13, 2022
NU-Wave: A Diffusion Probabilistic Model for Neural Audio Upsampling @ INTERSPEECH 2021 Accepted

NU-Wave — Official PyTorch Implementation NU-Wave: A Diffusion Probabilistic Model for Neural Audio Upsampling Junhyeok Lee, Seungu Han @ MINDsLab Inc

MINDs Lab 242 Dec 23, 2022
Pytorch implementation of few-shot semantic image synthesis

Few-shot Semantic Image Synthesis Using StyleGAN Prior Our method can synthesize photorealistic images from dense or sparse semantic annotations using

40 Sep 26, 2022
Semi Supervised Learning for Medical Image Segmentation, a collection of literature reviews and code implementations.

Semi-supervised-learning-for-medical-image-segmentation. Recently, semi-supervised image segmentation has become a hot topic in medical image computin

Healthcare Intelligence Laboratory 1.3k Jan 03, 2023
The dataset of tweets pulling from Twitters with keyword: Hydroxychloroquine, location: US, Time: 2020

HCQ_Tweet_Dataset: FREE to Download. Keywords: HCQ, hydroxychloroquine, tweet, twitter, COVID-19 This dataset is associated with the paper "Understand

2 Mar 16, 2022
PlenOctree Extraction algorithm

PlenOctrees_NeRF-SH This is an implementation of the Paper PlenOctrees for Real-time Rendering of Neural Radiance Fields. Not only the code provides t

49 Nov 05, 2022
[CVPR 2022 Oral] EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Points for Monocular Object Pose Estimation

EPro-PnP EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Points for Monocular Object Pose Estimation In CVPR 2022 (Oral). [paper] Hanshen

同济大学智能汽车研究所综合感知研究组 ( Comprehensive Perception Research Group under Institute of Intelligent Vehicles, School of Automotive Studies, Tongji University) 842 Jan 04, 2023