All Projects → sacmehta → Espnetv2

sacmehta / Espnetv2

Licence: mit
A light-weight, power efficient, and general purpose convolutional neural network

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Espnetv2

Tf Mobilenet V2
Mobilenet V2(Inverted Residual) Implementation & Trained Weights Using Tensorflow
Stars: ✭ 85 (-77.45%)
Mutual labels:  convolutional-neural-networks, cnn, imagenet
Selecsls Pytorch
Reference ImageNet implementation of SelecSLS CNN architecture proposed in the SIGGRAPH 2020 paper "XNect: Real-time Multi-Person 3D Motion Capture with a Single RGB Camera". The repository also includes code for pruning the model based on implicit sparsity emerging from adaptive gradient descent methods, as detailed in the CVPR 2019 paper "On implicit filter level sparsity in Convolutional Neural Networks".
Stars: ✭ 251 (-33.42%)
Mutual labels:  cnn, imagenet, efficient
Iresnet
Improved Residual Networks (https://arxiv.org/pdf/2004.04989.pdf)
Stars: ✭ 163 (-56.76%)
Mutual labels:  convolutional-neural-networks, cnn, imagenet
Chainer Pspnet
PSPNet in Chainer
Stars: ✭ 76 (-79.84%)
Mutual labels:  convolutional-neural-networks, semantic-segmentation, imagenet
Pyconv
Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition (https://arxiv.org/pdf/2006.11538.pdf)
Stars: ✭ 231 (-38.73%)
Mutual labels:  convolutional-neural-networks, cnn, imagenet
Pytorch Image Classification
Tutorials on how to implement a few key architectures for image classification using PyTorch and TorchVision.
Stars: ✭ 272 (-27.85%)
Mutual labels:  convolutional-neural-networks, cnn
Bonnet
Bonnet: An Open-Source Training and Deployment Framework for Semantic Segmentation in Robotics.
Stars: ✭ 274 (-27.32%)
Mutual labels:  convolutional-neural-networks, semantic-segmentation
Pytorch Srgan
A modern PyTorch implementation of SRGAN
Stars: ✭ 289 (-23.34%)
Mutual labels:  convolutional-neural-networks, cnn
Segmentation models.pytorch
Segmentation models with pretrained backbones. PyTorch.
Stars: ✭ 4,584 (+1115.92%)
Mutual labels:  semantic-segmentation, imagenet
Swin-Transformer
This is an official implementation for "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows".
Stars: ✭ 8,046 (+2034.22%)
Mutual labels:  imagenet, semantic-segmentation
Pytorch Hardnet
35% faster than ResNet: Harmonic DenseNet, A low memory traffic network
Stars: ✭ 293 (-22.28%)
Mutual labels:  semantic-segmentation, imagenet
Rmdl
RMDL: Random Multimodel Deep Learning for Classification
Stars: ✭ 375 (-0.53%)
Mutual labels:  convolutional-neural-networks, cnn
Pytorch Saltnet
Kaggle | 9th place single model solution for TGS Salt Identification Challenge
Stars: ✭ 270 (-28.38%)
Mutual labels:  convolutional-neural-networks, cnn
Lightweight Segmentation
Lightweight models for real-time semantic segmentation(include mobilenetv1-v3, shufflenetv1-v2, igcv3, efficientnet).
Stars: ✭ 261 (-30.77%)
Mutual labels:  lightweight, semantic-segmentation
Geospatial Machine Learning
A curated list of resources focused on Machine Learning in Geospatial Data Science.
Stars: ✭ 289 (-23.34%)
Mutual labels:  convolutional-neural-networks, semantic-segmentation
sabotage
a radical and experimental distribution based on musl libc and busybox
Stars: ✭ 502 (+33.16%)
Mutual labels:  lightweight, efficient
Computer Vision Leaderboard
Comparison of famous convolutional neural network models
Stars: ✭ 299 (-20.69%)
Mutual labels:  cnn, imagenet
Pytorch Randaugment
Unofficial PyTorch Reimplementation of RandAugment.
Stars: ✭ 323 (-14.32%)
Mutual labels:  convolutional-neural-networks, imagenet
Assembled Cnn
Tensorflow implementation of "Compounding the Performance Improvements of Assembled Techniques in a Convolutional Neural Network"
Stars: ✭ 319 (-15.38%)
Mutual labels:  convolutional-neural-networks, imagenet
Edgenets
This repository contains the source code of our work on designing efficient CNNs for computer vision
Stars: ✭ 331 (-12.2%)
Mutual labels:  cnn, semantic-segmentation

ESPNetv2: A Light-weight, Power Efficient, and General Purpose Convolutional Neural Network

IMPORTANT NOTE 1 (7 June, 2019): We have released new code base that supports several datasets and models, including ESPNetv2. Please see here for more details.

IMPORTANT NOTE 2 (7 June, 2019): This repository is obsolete and we are not maintaining it anymore.

This repository contains the source code of our paper, ESPNetv2 which is accepted for publication at CVPR'19.

Note: New segmentation models for the PASCAL VOC and the Cityscapes are coming soon. Our new models achieves mIOU of 68.0 and 66.15 on the PASCAL VOC and the Cityscapes test sets, respectively.

Real-time semantic segmentation using ESPNetv2 on iPhone7 (see EdgeNets for details)
Seg demo on iPhone7 Seg demo on iPhone7

Comparison with SOTA methods

Compared to state-of-the-art efficient networks, our network delivers competitive performance while being much more power efficient. Sample results are shown in below figure. For more details, please read our paper.

FLOPs vs. accuracy on the ImageNet dataset

Power consumption on TX2 device

If you find our project useful in your research, please consider citing:

@inproceedings{mehta2019espnetv2,
  title={ESPNetv2: A Light-weight, Power Efficient, and General Purpose Convolutional Neural Network},
  author={Sachin Mehta and Mohammad Rastegari and Linda Shapiro and Hannaneh Hajishirzi},
  booktitle={CVPR},
  year={2019}
}

@inproceedings{mehta2018espnet,
  title={ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation},
  author={Sachin Mehta and Mohammad Rastegari and Anat Caspi and Linda Shapiro and Hannaneh Hajishirzi},
  booktitle={ECCV},
  year={2018}
}

Structure

This repository contains source code and pretrained for the following:

  • Object classification: We provide source code along with pre-trained models at different network complexities for the ImageNet dataset. Click here for more details.
  • Semantic segmentation: We provide source code along with pre-trained models on the Cityscapes dataset. Check here for more details.

Requirements

To run this repository, you should have following softwares installed:

  • PyTorch - We tested with v0.4.1
  • OpenCV - We tested with version 3.4.3
  • Python3 - Our code is written in Python3. We recommend to use Anaconda for the same.

Instructions to install Pytorch and OpenCV with Anaconda

Assuming that you have installed Anaconda successfully, you can follow the following instructions to install the packeges:

PyTorch

conda install pytorch torchvision -c pytorch

Once installed, run the following commands in your terminal to verify the version:

import torch
torch.__version__ 

This should print something like this 0.4.1.post2.

If your version is different, then follow PyTorch website here for more details.

OpenCV

conda install pip
pip install --upgrade pip
pip install opencv-python

Once installed, run the following commands in your terminal to verify the version:

import cv2
cv2.__version__ 

This should print something like this 3.4.3.

Implementation note

You will see that EESP unit, the core building block of the ESPNetv2 architecture, has a for loop to process the input at different dilation rates. You can parallelize it using Streams in PyTorch. It improves the inference speed.

A snippet to parallelize a for loop in pytorch is shown below:

# Sequential version
output = [] 
a = torch.randn(1, 3, 10, 10)
for i in range(4):
    output.append(a)
torch.cat(output, 1)
# Parallel version
num_branches = 4
streams = [(idx, torch.cuda.Stream()) for idx in range(num_branches)]
output = []
a = torch.randn(1, 3, 10, 10)
for idx, s in streams:
    with torch.cuda.stream(s):
        output.append(a)
torch.cuda.synchronize()
torch.cat(output, 1)

Note:

  • we have used above strategy to measure inference related statistics, including power consumption and run time on a single GPU.
  • We have not tested it (for training as well as inference) across multiple GPUs. If you want to use Streams and facing issues, please use PyTorch forums to resolve your queries.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].