AutoDeeplab / auto-deeplab / AutoML for semantic segmentation, implemented in Pytorch

Overview

AutoML for Image Semantic Segmentation

Currently this repo contains the only working open-source implementation of Auto-Deeplab which, by the way out-performs that of the original paper.

Following the popular trend of modern CNN architectures having a two level hierarchy. Auto-Deeplab forms a dual level search space, searching for optimal network and cell architecture. network and cell level search space

Auto-Deeplab acheives a better performance while minimizing the size of the final model. model results

Our results:79.8 miou with Autodeeplab-M, train for 4000epochs and batch_size=16, about 800K iters

Our Search implementation currently achieves BETTER results than that of the authors in the original AutoDeeplab paper. Awesome!

Search results from the auto-deeplab paper which achieve 35% after 40 epochs of searching:
paper mIOU
VS our search results which acheive 37% after 40 epochs of searching:
our mIOU:


Training Proceedure

All together there are 3 stages:

  1. Architecture Search - Here you will train one large relaxed architecture that is meant to represent many discreet smaller architectures woven together.

  2. Decode - Once you've finished the architecture search, load your large relaxed architecture and decode it to find your optimal architecture.

  3. Re-train - Once you have a decoded and poses a final description of your optimal model, use it to build and train your new optimal model



Hardware Requirement

  • For architecture search, you need at least an 15G GPU, or two 11G gpus(in this way, global pooling in aspp is banned, not recommended)

  • For retraining autodeeplab-M or autodeeplab-S, you need at least n more than 11G gpus to re-train with batch size 2n without distributed

  • For retraining autodeeplab-L, you need at least n more than 11G gpus to re-train with batch size 2n with distributed

Architecture Search

Begin Architecture Search

Start Training

CUDA_VISIBLE_DEVICES=0 python train_autodeeplab.py --dataset cityscapes

Resume Training

CUDA_VISIBLE_DEVICES=0 python train_autodeeplab.py --dataset cityscapes --resume /AutoDeeplabpath/checkpoint.pth.tar

Re-train

Now that you're done training the search algorithm, it's time to decode the search space and find your new optimal architecture. After that just build your new model and begin training it

Load and Decode

CUDA_VISIBLE_DEVICES=0 python decode_autodeeplab.py --dataset cityscapes --resume /AutoDeeplabpath/checkpoint.pth.tar

Retrain

Train without distributed

python train.py

Train with distributed

CUDA_VISIBLE_DEVICES=0,1,2,···,n python -m torch.distributed.launch --nproc_per_node=n train_distributed.py  

Result models

We provided models after search and retrain [baidu drive (passwd: xm9z)] [google drive]

Requirements

  • Pytorch version 1.1

  • Python 3

  • tensorboardX

  • torchvision

  • pycocotools

  • tqdm

  • numpy

  • pandas

  • apex

References

[1] : Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation

[2] : Thanks for jfzhang's deeplab v3+ implemention of pytorch

[3] : Thanks for MenghaoGuo's autodeeplab model implemention

[4] : Thanks for CoinCheung's deeplab v3+ implemention of pytorch

[5] : Thanks for chenxi's deeplab v3 implemention of pytorch

TODO

  • Retrain our search model

  • adding support for other datasets(e.g. VOC, ADE20K, COCO and so on.)

Comments
  • Do you have a trained model (checkpoint) for this?

    Do you have a trained model (checkpoint) for this?

    hi ! this is an amazing work ! I just wanna use this project to do some researches but my PC too slow. Can you support a trained model for this ? thanks.

    opened by LiuTingWed 18
  • no attribute 'betas8'

    no attribute 'betas8'

    When i try to run CUDA_VISIBLE_DEVICES=0 python decode_autodeeplab.py --dataset cityscapes --resume /AutoDeeplabpath/checkpoint.pth.tar There is an error: image I can't find betas8, betas16.... Could you help me? Thanks a lot~ @NoamRosenberg @zhizhangxian

    opened by YOKE 9
  • tensor size not match

    tensor size not match

    Before saying the problems, I show my running environment: pytorch version 1.0.1.post2 cuda version 8.0.61 cudnn version: 7102 python version: 3.7

    I run the latest code, two problems bother me: 1.Traceback (most recent call last): File "train_autodeeplab.py", line 20, in import apex File "/home/zhangjw/anaconda3/lib/python3.7/site-packages/apex/init.py", line 18, in from apex.interfaces import (ApexImplementation, File "/home/zhangjw/anaconda3/lib/python3.7/site-packages/apex/interfaces.py", line 10, in class ApexImplementation(object): File "/home/zhangjw/anaconda3/lib/python3.7/site-packages/apex/interfaces.py", line 14, in ApexImplementation implements(IApex) File "/home/zhangjw/anaconda3/lib/python3.7/site-packages/zope/interface/declarations.py", line 483, in implements raise TypeError(_ADVICE_ERROR % 'implementer') TypeError: Class advice impossible in Python3. Use the @implementer class decorator instead.

    Then I comment related code and set the APEX_AVAILABLE=False. The code continues to run, but the problems 2 occurs

    1. Traceback (most recent call last): File "train_autodeeplab.py", line 421, in main() File "train_autodeeplab.py", line 414, in main trainer.training(epoch) File "train_autodeeplab.py", line 176, in training output = self.model(image) File "/home/zhangjw/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", line 489, in call result = self.forward(*input, **kwargs) File "/home/zhangjw/AutoML/auto_deeplab.py", line 282, in forward normalized_alphas) File "/home/zhangjw/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", line 489, in call result = self.forward(*input, **kwargs) File "/home/zhangjw/AutoML/cell_level_search.py", line 138, in forward s = sum(new_states) RuntimeError: The size of tensor a (13) must match the size of tensor b (14) at non-singleton dimension 3 It's so weird, so I print the new_states[0].shape, as following: torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 16, 14, 14]) torch.Size([2, 32, 7, 7]) torch.Size([2, 32, 7, 7]) torch.Size([2, 32, 7, 7]) torch.Size([2, 32, 7, 7]) torch.Size([2, 32, 7, 7]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 4, 56, 56]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 8, 28, 28]) torch.Size([2, 16, 13, 13])

    when the last line torch.Size([2, 16, 13, 13]) comes, RuntimeError occurs.It's so weird. Have you encountered this situation? I would appreciate it if you tell me how to solve it.

    opened by JingweiZhang12 4
  • RuntimeError: Given groups=1, weight of size 4 125 1 1, expected input[1, 128, 56, 56] to have 125 channels, but got 128 channels instead

    RuntimeError: Given groups=1, weight of size 4 125 1 1, expected input[1, 128, 56, 56] to have 125 channels, but got 128 channels instead

    Hi I'm running with the following command line: CUDA_VISIBLE_DEVICES=0,1 python train_autodeeplab.py --dataset coco --filter_multiplier 4 --resize 358 --crop_size 224 --batch-size 2 This gives me: RuntimeError: Given groups=1, weight of size 4 125 1 1, expected input[1, 128, 56, 56] to have 125 channels, but got 128 channels instead

    I understand what the error about, but I can't really fix it, why I'm getting this error?

    Thanks.

    opened by albert-ba 4
  • confusion in implementation of decoded network

    confusion in implementation of decoded network

    Hi, Thanks for your implementation! I have some confusion in the implementation of the decoded network. I knew that each cell has two inputs from prev_prev_cell and prev_cell. But what the case in the decoded network. I mean that: If layer_i has downsampling rate 16, but layer_{i-1} has downsampling rate 4. In this case, prev_prev_c is None and only has prev_c's output as input, right? (from the paper, I saw that prev_prev_c's output should have the same scale as the current layer). Could you give me some hints? Thanks in advance.

    opened by mrluin 3
  • "Expected more than 1 value per channel when training.."

    I'm tyring to run using this command line: CUDA_VISIBLE_DEVICES=0 python3 train_autodeeplab.py --dataset coco --filter_multiplier 4 --resize 358 --crop_size 224 --batch-size 2 This is after your post on how to solve memory issues, I'm still getting memory error, apparently, it's not enough for me.

    After adding another GPU means running this command line: CUDA_VISIBLE_DEVICES=0,1 python3 train_autodeeplab.py --dataset coco --filter_multiplier 4 --resize 358 --crop_size 224 --batch-size 2 I'm getting this error: File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 547, in call result = self.forward(*input, **kwargs) File "/workdisk/AutoML/auto_deeplab.py", line 348, in forward aspp_result_4 = self.aspp_4 (self.level_4[-1]) File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 547, in call result = self.forward(*input, **kwargs) File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/container.py", line 92, in forward input = module(input) File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 547, in call result = self.forward(*input, **kwargs) File "/workdisk/AutoML/operations.py", line 164, in forward conv_image_pool = self.conv_p(image_pool) File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 547, in call result = self.forward(*input, **kwargs) File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/container.py", line 92, in forward input = module(input) File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 547, in call result = self.forward(*input, **kwargs) File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/batchnorm.py", line 81, in forward exponential_average_factor, self.eps) File "/usr/local/lib/python3.6/dist-packages/torch/nn/functional.py", line 1652, in batch_norm raise ValueError('Expected more than 1 value per channel when training, got input size {}'.format(size)) ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 20, 1, 1])

    Any Idea? Thanks!

    opened by Esaada 3
  • Problem in viterbi_decode

    Problem in viterbi_decode

    viterbi 实现有问题吧

    if (sample == 0 and rate == 2) or (sample == 3 and rate == 0):
          continue
    

    第layer层,第0个细胞,不能进行的是0(上采样) 第layer层,第3个细胞,不能进行的是2(下采样) 应该是修改成这样的 if (sample == 0 and rate == 0) or (sample == 3 and rate == 2): continue

    但是我修改成这样后,直接报错了。

    https://github.com/NoamRosenberg/AutoML/issues/71 这里提到的sample == 3 rate == 0 denotes the information flow will come from the sample==4 in previous layer 第layer层,第3个细胞,不能由 第4层的细胞进行上采样 得到;

    这里数据流向 和我不一样,到底哪个是对的呢

    opened by HeathHose 2
  • Problem in Viterbi algorithm

    Problem in Viterbi algorithm

    Hi,

    Thanks for your works! But I have some question about Viterbi Algorithm in decoding_formulas.py

    I think the shape of self.network_space is [layers, scales, choices], that is layers, samples, and rates in the for loops, right? If so, should be code in line 50 is

    if (sample == 0 and  rate == 0) or (sample == 3 and rate == 2):
        continue
    

    because the corresponding choices of rate 0, 1, 2 are ↗, →, and ↘. If I am wrong, could you give me some hints and further explanations? Thanks in advance.

    Best regards, TTB

    opened by mrluin 2
  • Can't load data parallel model

    Can't load data parallel model

    When trying to load data parallel model I get an error which I can't see because the command line gets flooded with model layers like such. I thought this might have something to do with data parallel because of the "module", but even removing the "module" from the state_dict names or trying to load with model.module.load_state_dict doesn't work.

    . . . . 6.0.conv_p.1.running_var", "module.aspp_16.0.conv_p.1.num_batches_tracked", "module.aspp_16.0.concate_conv.0.weight", "module.aspp_16.0.concate_conv.1.weight", "module.aspp_16.0.concate_conv.1.bias", "module.aspp_16.0.concate_conv.1.running_mean", "module.aspp_16.0.concate_conv.1.running_var", "module.aspp_16.0.concate_conv.1.num_batches_tracked", "module.aspp_32.0.conv11.0.weight", "module.aspp_32.0.conv11.1.weight", "module.aspp_32.0.conv11.1.bias", "module.aspp_32.0.conv11.1.running_mean", "module.aspp_32.0.conv11.1.running_var", "module.aspp_32.0.conv11.1.num_batches_tracked", "module.aspp_32.0.conv33.0.weight", "module.aspp_32.0.conv33.1.weight", "module.aspp_32.0.conv33.1.bias", "module.aspp_32.0.conv33.1.running_mean", "module.aspp_32.0.conv33.1.running_var", "module.aspp_32.0.conv33.1.num_batches_tracked", "module.aspp_32.0.conv_p.0.weight", "module.aspp_32.0.conv_p.1.weight", "module.aspp_32.0.conv_p.1.bias", "module.aspp_32.0.conv_p.1.running_mean", "module.aspp_32.0.conv_p.1.running_var", "module.aspp_32.0.conv_p.1.num_batches_tracked", "module.aspp_32.0.concate_conv.0.weight", "module.aspp_32.0.concate_conv.1.weight", "module.aspp_32.0.concate_conv.1.bias", "module.aspp_32.0.concate_conv.1.running_mean", "module.aspp_32.0.concate_conv.1.running_var", "module.aspp_32.0.concate_conv.1.num_batches_tracked", "module.final_conv.weight", "module.final_conv.bias".

    opened by NoamRosenberg 2
  • A mistake about the network level parameters!

    A mistake about the network level parameters!

    In the origin paper, the network level update is Screen Shot 2019-10-18 at 3 35 25 PM

    But in your code:

               # normalized_betas[layer][ith node][0 : ➚, 1: ➙, 2 : ➘]
                for layer in range (len(self.betas)):
                    if layer == 0:
                        normalized_betas[layer][0][1:] = F.softmax (self.betas[layer][0][1:].to(device=img_device), dim=-1)
    
                    elif layer == 1:
                        normalized_betas[layer][0][1:] = F.softmax (self.betas[layer][0][1:].to(device=img_device), dim=-1)
                        normalized_betas[layer][1] = F.softmax (self.betas[layer][1].to(device=img_device), dim=-1)
    
                    elif layer == 2:
                        normalized_betas[layer][0][1:] = F.softmax (self.betas[layer][0][1:].to(device=img_device), dim=-1)
                        normalized_betas[layer][1] = F.softmax (self.betas[layer][1].to(device=img_device), dim=-1)
                        normalized_betas[layer][2] = F.softmax (self.betas[layer][2].to(device=img_device), dim=-1)
                    else :
                        `normalized_betas[layer][0][1:]` = F.softmax (self.betas[layer][0][1:].to(device=img_device), dim=-1)
                        normalized_betas[layer][1] = F.softmax (self.betas[layer][1].to(device=img_device), dim=-1)
                        normalized_betas[layer][2] = F.softmax (self.betas[layer][2].to(device=img_device), dim=-1)
                        normalized_betas[layer][3][:1] = F.softmax (self.betas[layer][3][:1].to(device=img_device), dim=-1)
    
    opened by huizhang0110 1
  • fix

    fix

    in search You can use ABN and affine and by setting args

    in re_train Now I get 0.74 miou by training 2000epochs(about0.4M iters) and 0.798 miou by training 5000epochs(about 1M iter) You can get the similar result by use 'python train.py' and set batch_size=2 on each gpu

    opened by zhizhangxian 1
  • How can I visualize the best inner cell and outer network after search for my custom dataset?

    How can I visualize the best inner cell and outer network after search for my custom dataset?

    I am wondering how can I visualise the best inner cell and outer network after search for my custom dataset. Something similar to the original paper in Figure 3.

    I really appreciate any comment or help in advance.

    opened by NdaAzr 1
  • mIoU: 0.0871 for pascal dataset after 50 epochs

    mIoU: 0.0871 for pascal dataset after 50 epochs

    Hey! Thank you for your implementation of Autodeeplab. It looks very promising.

    I'm trying to use it out of the box (with default params) for Pascal dataset. But after 50 epochs I got Acc:0.6794524843482059, Acc_class:0.13206915050001747, mIoU:0.08714873731068112, fwIoU: 0.526273923425172

    Is it normal?

    opened by meule 1
  • why training loss increase after alpha_epoch?

    why training loss increase after alpha_epoch?

    I am wondering why training loss is increasing after alpha_epoch which in my case is the epoch 30, and accuracy is decreasing sharply? any suggestion would be appreciated. I have tried different arch-lr such as 1e-1, or 3e-3. I am doing segmentation on medical images.

    Here are plots of loss and acc:

    image

    opened by NdaAzr 0
  • the mask color definition in training file must be corresponding to the mask picture?

    the mask color definition in training file must be corresponding to the mask picture?

    hello, i'm new to the autodeeplab, i want to ask, if the mask color definition in training file must be corresponding to the mask picture? because i don't exactly know the segmentation color in my segmentation image as ground truth, which i have automatically collected in simulation. Thank you in advance

    opened by lucafei 0
Owner
AI Necromancer
WeChat: BuffaloNoam; Line: buffalonoam; WhatsApp: +972524226459
AI Necromancer
DeepLab resnet v2 model in pytorch

pytorch-deeplab-resnet DeepLab resnet v2 model implementation in pytorch. The architecture of deepLab-ResNet has been replicated exactly as it is from

Isht Dwivedi 601 Dec 22, 2022
Recall Loss for Semantic Segmentation (This repo implements the paper: Recall Loss for Semantic Segmentation)

Recall Loss for Semantic Segmentation (This repo implements the paper: Recall Loss for Semantic Segmentation) Download Synthia dataset The model uses

null 32 Sep 21, 2022
An AutoML Library made with Optuna and PyTorch Lightning

An AutoML Library made with Optuna and PyTorch Lightning Installation Recommended pip install -U gradsflow From source pip install git+https://github.

GradsFlow 294 Dec 17, 2022
Auto Seg-Loss: Searching Metric Surrogates for Semantic Segmentation

Auto-Seg-Loss By Hao Li, Chenxin Tao, Xizhou Zhu, Xiaogang Wang, Gao Huang, Jifeng Dai This is the official implementation of the ICLR 2021 paper Auto

null 61 Dec 21, 2022
TorchDistiller - a collection of the open source pytorch code for knowledge distillation, especially for the perception tasks, including semantic segmentation, depth estimation, object detection and instance segmentation.

This project is a collection of the open source pytorch code for knowledge distillation, especially for the perception tasks, including semantic segmentation, depth estimation, object detection and instance segmentation.

yifan liu 147 Dec 3, 2022
Model search is a framework that implements AutoML algorithms for model architecture search at scale

Model search (MS) is a framework that implements AutoML algorithms for model architecture search at scale. It aims to help researchers speed up their exploration process for finding the right model architecture for their classification problems (i.e., DNNs with different types of layers).

Google 3.2k Dec 31, 2022
Clairvoyance: a Unified, End-to-End AutoML Pipeline for Medical Time Series

Clairvoyance: A Pipeline Toolkit for Medical Time Series Authors: van der Schaar Lab This repository contains implementations of Clairvoyance: A Pipel

van_der_Schaar \LAB 89 Dec 7, 2022
Neural networks applied in recognizing guitar chords using python, AutoML.NET with C# and .NET Core

Chord Recognition Demo application The demo application is written in C# with .NETCore. As of July 9, 2020, the only version available is for windows

Andres Mauricio Rondon Patiño 24 Oct 22, 2022
MMRazor: a model compression toolkit for model slimming and AutoML

Documentation: https://mmrazor.readthedocs.io/ English | 简体中文 Introduction MMRazor is a model compression toolkit for model slimming and AutoML, which

OpenMMLab 899 Jan 2, 2023
Learning Pixel-level Semantic Affinity with Image-level Supervision for Weakly Supervised Semantic Segmentation, CVPR 2018

Learning Pixel-level Semantic Affinity with Image-level Supervision This code is deprecated. Please see https://github.com/jiwoon-ahn/irn instead. Int

Jiwoon Ahn 337 Dec 15, 2022
An integration of several popular automatic augmentation methods, including OHL (Online Hyper-Parameter Learning for Auto-Augmentation Strategy) and AWS (Improving Auto Augment via Augmentation Wise Weight Sharing) by Sensetime Research.

An integration of several popular automatic augmentation methods, including OHL (Online Hyper-Parameter Learning for Auto-Augmentation Strategy) and AWS (Improving Auto Augment via Augmentation Wise Weight Sharing) by Sensetime Research.

null 45 Dec 8, 2022
Segmentation in Style: Unsupervised Semantic Image Segmentation with Stylegan and CLIP

Segmentation in Style: Unsupervised Semantic Image Segmentation with Stylegan and CLIP Abstract: We introduce a method that allows to automatically se

Daniil Pakhomov 134 Dec 19, 2022
Mae segmentation - Reproduction of semantic segmentation using masked autoencoder (mae)

ADE20k Semantic segmentation with MAE Getting started Install the mmsegmentation

null 97 Dec 17, 2022
ChatBot-Pytorch - A GPT-2 ChatBot implemented using Pytorch and Huggingface-transformers

ChatBot-Pytorch A GPT-2 ChatBot implemented using Pytorch and Huggingface-transf

ParZival 42 Dec 9, 2022
PyTorch for Semantic Segmentation

PyTorch for Semantic Segmentation This repository contains some models for semantic segmentation and the pipeline of training and testing models, impl

Zijun Deng 1.7k Jan 6, 2023
A semantic segmentation toolbox based on PyTorch

Introduction vedaseg is an open source semantic segmentation toolbox based on PyTorch. Features Modular Design We decompose the semantic segmentation

null 407 Dec 15, 2022
HyperSeg: Patch-wise Hypernetwork for Real-time Semantic Segmentation Official PyTorch Implementation

: We present a novel, real-time, semantic segmentation network in which the encoder both encodes and generates the parameters (weights) of the decoder. Furthermore, to allow maximal adaptivity, the weights at each decoder block vary spatially. For this purpose, we design a new type of hypernetwork, composed of a nested U-Net for drawing higher level context features

Yuval Nirkin 182 Dec 14, 2022