Semantic segmentation models, datasets and losses implemented in PyTorch.

Overview

Semantic Segmentation in PyTorch

MIT License PRs Welcome

This repo contains a PyTorch an implementation of different semantic segmentation models for different datasets.

Requirements

PyTorch and Torchvision needs to be installed before running the scripts, together with PIL and opencv for data-preprocessing and tqdm for showing the training progress. PyTorch v1.1 is supported (using the new supported tensoboard); can work with ealier versions, but instead of using tensoboard, use tensoboardX.

pip install -r requirements.txt

or for a local installation

pip install --user -r requirements.txt

Main Features

  • A clear and easy to navigate structure,
  • A json config file with a lot of possibilities for parameter tuning,
  • Supports various models, losses, Lr schedulers, data augmentations and datasets,

So, what's available ?

Models

  • (Deeplab V3+) Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation [Paper]
  • (GCN) Large Kernel Matter, Improve Semantic Segmentation by Global Convolutional Network [Paper]
  • (UperNet) Unified Perceptual Parsing for Scene Understanding [Paper]
  • (DUC, HDC) Understanding Convolution for Semantic Segmentation [Paper]
  • (PSPNet) Pyramid Scene Parsing Network [Paper]
  • (ENet) A Deep Neural Network Architecture for Real-Time Semantic Segmentation [Paper]
  • (U-Net) Convolutional Networks for Biomedical Image Segmentation (2015): [Paper]
  • (SegNet) A Deep ConvolutionalEncoder-Decoder Architecture for ImageSegmentation (2016): [Paper]
  • (FCN) Fully Convolutional Networks for Semantic Segmentation (2015): [Paper]

Datasets

  • Pascal VOC: For pascal voc, first download the original dataset, after extracting the files we'll end up with VOCtrainval_11-May-2012/VOCdevkit/VOC2012 containing, the image sets, the XML annotation for both object detection and segmentation, and JPEG images.
    The second step is to augment the dataset using the additionnal annotations provided by Semantic Contours from Inverse Detectors. First download the image sets (train_aug, trainval_aug, val_aug and test_aug) from this link: Aug ImageSets, and add them the rest of the segmentation sets in /VOCtrainval_11-May-2012/VOCdevkit/VOC2012/ImageSets/Segmentation, and then download new annotations SegmentationClassAug and add them to the path VOCtrainval_11-May-2012/VOCdevkit/VOC2012, now we're set, for training use the path to VOCtrainval_11-May-2012

  • CityScapes: First download the images and the annotations (there is two types of annotations, Fine gtFine_trainvaltest.zip and Coarse gtCoarse.zip annotations, and the images leftImg8bit_trainvaltest.zip) from the official website cityscapes-dataset.com, extract all of them in the same folder, and use the location of this folder in config.json for training.

  • ADE20K: For ADE20K, simply download the images and their annotations for training and validation from sceneparsing.csail.mit.edu, and for the rest visit the website.

  • COCO Stuff: For COCO, there is two partitions, CocoStuff10k with only 10k that are used for training the evaluation, note that this dataset is outdated, can be used for small scale testing and training, and can be downloaded here. For the official dataset with all of the training 164k examples, it can be downloaded from the official website.
    Note that when using COCO dataset, 164k version is used per default, if 10k is prefered, this needs to be specified with an additionnal parameter partition = 'CocoStuff164k' in the config file with the corresponding path.

Losses

In addition to the Cross-Entorpy loss, there is also

  • Dice-Loss, which measures of overlap between two samples and can be more reflective of the training objective (maximizing the mIoU), but is highly non-convexe and can be hard to optimize.
  • CE Dice loss, the sum of the Dice loss and CE, CE gives smooth optimization while Dice loss is a good indicator of the quality of the segmentation results.
  • Focal Loss, an alternative version of the CE, used to avoid class imbalance where the confident predictions are scaled down.
  • Lovasz Softmax lends it self as a good alternative to the Dice loss, where we can directly optimization for the mean intersection-over-union based on the convex Lovász extension of submodular losses (for more details, check the paper: The Lovász-Softmax loss).

Learning rate schedulers

  • Poly learning rate, where the learning rate is scaled down linearly from the starting value down to zero during training. Considered as the go to scheduler for semantic segmentaion (see Figure below).
  • One Cycle learning rate, for a learning rate LR, we start from LR / 10 up to LR for 30% of the training time, and we scale down to LR / 25 for remaining time, the scaling is done in a cos annealing fashion (see Figure bellow), the momentum is also modified but in the opposite manner starting from 0.95 down to 0.85 and up to 0.95, for more detail see the paper: Super-Convergence.

Data augmentation

All of the data augmentations are implemented using OpenCV in \base\base_dataset.py, which are: rotation (between -10 and 10 degrees), random croping between 0.5 and 2 of the selected crop_size, random h-flip and blurring

Training

To train a model, first download the dataset to be used to train the model, then choose the desired architecture, add the correct path to the dataset and set the desired hyperparameters (the config file is detailed below), then simply run:

python train.py --config config.json

The training will automatically be run on the GPUs (if more that one is detected and multipple GPUs were selected in the config file, torch.nn.DataParalled is used for multi-gpu training), if not the CPU is used. The log files will be saved in saved\runs and the .pth chekpoints in saved\, to monitor the training using tensorboard, please run:

tensorboard --logdir saved

Inference

For inference, we need a PyTorch trained model, the images we'd like to segment and the config used in training (to load the correct model and other parameters),

python inference.py --config config.json --model best_model.pth --images images_folder

The predictions will be saved as .png images using the default palette in the passed fodler name, if not, outputs\ is used, for Pacal VOC the default palette is:

Here are the parameters availble for inference:

--output       The folder where the results will be saved (default: outputs).
--extension    The extension of the images to segment (default: jpg).
--images       Folder containing the images to segment.
--model        Path to the trained model.
--mode         Mode to be used, choose either `multiscale` or `sliding` for inference (multiscale is the default behaviour).
--config       The config file used for training the model.

Trained Model:

Model Backbone PascalVoc val mIoU PascalVoc test mIoU Pretrained Model
PSPNet ResNet 50 82% 79% Dropbox

Code structure

The code structure is based on pytorch-template

pytorch-template/
│
├── train.py - main script to start training
├── inference.py - inference using a trained model
├── trainer.py - the main trained
├── config.json - holds configuration for training
│
├── base/ - abstract base classes
│   ├── base_data_loader.py
│   ├── base_model.py
│   ├── base_dataset.py - All the data augmentations are implemented here
│   └── base_trainer.py
│
├── dataloader/ - loading the data for different segmentation datasets
│
├── models/ - contains semantic segmentation models
│
├── saved/
│   ├── runs/ - trained models are saved here
│   └── log/ - default logdir for tensorboard and logging output
│  
└── utils/ - small utility functions
    ├── losses.py - losses used in training the model
    ├── metrics.py - evaluation metrics used
    └── lr_scheduler - learning rate schedulers 

Config file format

Config files are in .json format:

{
  "name": "PSPNet",         // training session name
  "n_gpu": 1,               // number of GPUs to use for training.
  "use_synch_bn": true,     // Using Synchronized batchnorm (for multi-GPU usage)

    "arch": {
        "type": "PSPNet", // name of model architecture to train
        "args": {
            "backbone": "resnet50",     // encoder type type
            "freeze_bn": false,         // When fine tuning the model this can be used
            "freeze_backbone": false    // In this case only the decoder is trained
        }
    },

    "train_loader": {
        "type": "VOC",          // Selecting data loader
        "args":{
            "data_dir": "data/",  // dataset path
            "batch_size": 32,     // batch size
            "augment": true,      // Use data augmentation
            "crop_size": 380,     // Size of the random crop after rescaling
            "shuffle": true,
            "base_size": 400,     // The image is resized to base_size, then randomly croped
            "scale": true,        // Random rescaling between 0.5 and 2 before croping
            "flip": true,         // Random H-FLip
            "rotate": true,       // Random rotation between 10 and -10 degrees
            "blur": true,         // Adding a slight amount of blut to the image
            "split": "train_aug", // Split to use, depend of the dataset
            "num_workers": 8
        }
    },

    "val_loader": {     // Same for val, but no data augmentation, only a center crop
        "type": "VOC",
        "args":{
            "data_dir": "data/",
            "batch_size": 32,
            "crop_size": 480,
            "val": true,
            "split": "val",
            "num_workers": 4
        }
    },

    "optimizer": {
        "type": "SGD",
        "differential_lr": true,      // Using lr/10 for the backbone, and lr for the rest
        "args":{
            "lr": 0.01,               // Learning rate
            "weight_decay": 1e-4,     // Weight decay
            "momentum": 0.9
        }
    },

    "loss": "CrossEntropyLoss2d",     // Loss (see utils/losses.py)
    "ignore_index": 255,              // Class to ignore (must be set to -1 for ADE20K) dataset
    "lr_scheduler": {   
        "type": "Poly",               // Learning rate scheduler (Poly or OneCycle)
        "args": {}
    },

    "trainer": {
        "epochs": 80,                 // Number of training epochs
        "save_dir": "saved/",         // Checkpoints are saved in save_dir/models/
        "save_period": 10,            // Saving chechpoint each 10 epochs
  
        "monitor": "max Mean_IoU",    // Mode and metric for model performance 
        "early_stop": 10,             // Number of epochs to wait before early stoping (0 to disable)
        
        "tensorboard": true,        // Enable tensorboard visualization
        "log_dir": "saved/runs",
        "log_per_iter": 20,         

        "val": true,
        "val_per_epochs": 5         // Run validation each 5 epochs
    }
}

Acknowledgement

Comments
  • Unable to reproduce PSPNet/FCN8 results

    Unable to reproduce PSPNet/FCN8 results

    Hi,

    Thanks for building this cool library. I've been trying to run some benchmarks and reproduce the results of existing papers from your code. So far I've tested FCN8s and PSPNet and here's what I've obtained:

    • FCN8s (VGG backbone): 59.7% mIoU
    • PSPNet (Resnet101, dilated convolutions): 71.6% mIoU.

    Here is a snapshot of final evaluation after 100 epochs: pspnet_100_val

    Here is the config file I've used to train the PSPNet:

    {
        "name": "PSPNet",
        "n_gpu": 4,
        "use_synch_bn": true,
    
        "arch": {
            "type": "PSPNet",
            "args": {
                "backbone": "resnet101",
                "freeze_bn": false,
                "freeze_backbone": false
            }
        },
    
        "train_loader": {
            "type": "VOC",
            "args":{
                "data_dir": "/path/to/VOC/",
                "batch_size": 8,
                "base_size": 400,
                "crop_size": 380,
                "augment": true,
                "shuffle": true,
                "scale": true,
                "flip": true,
                "rotate": true,
                "blur": false,
                "split": "train_aug",
                "num_workers": 8
            }
        },
    
        "val_loader": {
            "type": "VOC",
            "args":{
                "data_dir": "/path/to/VOC",
                "batch_size": 8,
                "crop_size": 480,
                "val": true,
                "split": "val",
                "num_workers": 4
            }
        },
    
        "optimizer": {
            "type": "SGD",
            "differential_lr": true,
            "args":{
                "lr": 0.001,
                "weight_decay": 1e-4,
                "momentum": 0.9
            }
        },
    
        "loss": "CrossEntropyLoss2d",
        "ignore_index": 255,
        "lr_scheduler": {
            "type": "Poly",
            "args": {}
        },
    
        "trainer": {
            "epochs": 100,
            "save_dir": "saved/",
            "save_period": 10,
            "monitor": "max Mean_IoU",
            "early_stop": 10,
            "tensorboard": true,
            "log_dir": "saved/runs",
            "log_per_iter": 20,
    
            "val": true,
            "val_per_epochs": 5
        }
    }
    

    Following #26, I kept the batch size to 8 and decreased the learning rate to 1e-3. I also checked that the loss correctly weights the auxiliary loss. I'm willing to help debug and reproduce the performance, if you can take a look into it.

    EDIT: I am using the augmented Pascal VOC dataset, following the instructions in your Readme and the DeepLabv1 readme. Best,

    opened by aicaffeinelife 23
  • Unable to run the configurations for SegNet on ADE20K

    Unable to run the configurations for SegNet on ADE20K

    Hi,

    Thank you for building this useful library. I've been trying to run the config file for SegNet on ADE20K as a first try because I would like to run the model on my own dataset. However, I've got the following error. I will appreciate your help.

    The error: Traceback (most recent call last): File "train.py", line 61, in <module> main(config, args.resume) File "train.py", line 22, in main train_loader = get_instance(dataloaders, 'train_loader', config) File "train.py", line 16, in get_instance return getattr(module, config[name]['type'])(*args, **config[name]['args']) TypeError: 'module' object is not callable

    Here is the modified config file:

    ` { "name": "SegNet", "n_gpu": 1, "use_synch_bn": true,

    "arch": {
        "type": "SegNet",
        "args": {
            "backbone": "resnet50",
            "freeze_bn": false,
            "freeze_backbone": false
        }
    },
    
    "train_loader": {
        "type": "ade20k",
        "args":{
            "data_dir": "ADEChallengeData2016/images/training/",
            "batch_size": 8,
            "base_size": 400,
            "crop_size": 380,
            "augment": true,
            "shuffle": true,
            "scale": true,
            "flip": true,
            "rotate": true,
            "blur": false,
            "split": "train_aug",
            "num_workers": 8
        }
    },
    
    "val_loader": {
        "type": "ade20k",
        "args":{
            "data_dir": "ADEChallengeData2016/images/validation/",
            "batch_size": 8,
            "crop_size": 480,
            "val": true,
            "split": "val",
            "num_workers": 4
        }
    },
    
    "optimizer": {
        "type": "SGD",
        "differential_lr": true,
        "args":{
            "lr": 0.01,
            "weight_decay": 1e-4,
            "momentum": 0.9
        }
    },
    
    "loss": "CrossEntropyLoss2d",
    "ignore_index": 255,
    "lr_scheduler": {
        "type": "Poly",
        "args": {}
    },
    
    "trainer": {
        "epochs": 80,
        "save_dir": "saved/",
        "save_period": 10,
    
        "monitor": "max Mean_IoU",
        "early_stop": 10,
        
        "tensorboard": true,
        "log_dir": "saved/runs",
        "log_per_iter": 20,
    
        "val": true,
        "val_per_epochs": 5
    }
    

    } `

    I'm not sure if I modified the file correctly. Thanks!

    opened by Njuod 21
  • Configurations for DeepLab on Cityscapes

    Configurations for DeepLab on Cityscapes

    Hello. Thank you for your pleasant implementation!

    I have been running multiple experiments with DeepLab v3 (Resnet101 backbone) on the Cityscapes dataset, and have been consistently getting at most 67-70 MIoU, while I believe it should be around 80. I am training on full resolution images with crop size 768, otherwise my settings is identical to your PSPNet setup. Do you have any suggestions for how to set my configuration in this setting?

    opened by WilhelmT 19
  • Custom numpy datasets support

    Custom numpy datasets support

    Hi, is it possible to make support for image and labels data stored in numpy arrays (like (n, imwidth, imheight, channels) and (n, imwidth, imheight, classes))? It will be good for smooth migration from tensorflow.

    opened by VladislavAD 17
  • Deeplab V3+ and Xception

    Deeplab V3+ and Xception

    Hi! Great repo. Could you recommend a configuration file for running an experiment using Deeplab V3+ and Xception to achieve at some level similar to the results presented in the paper https://arxiv.org/pdf/1802.02611.pdf?

    I'm constantly getting very low mIOUs with the following:

    {
        "name": "DeepLab",
        "n_gpu": 1,
        "use_synch_bn": true,
    
        "arch": {
            "type": "DeepLab",
            "args": {
                "backbone": "xception",
                "freeze_bn": false,
                "freeze_backbone": false
            }
        },
    
        "train_loader": {
            "type": "VOC",
            "args":{
                "data_dir": "data/VOCtrainval_11-May-2012",
                "batch_size": 8,
                "crop_size": 513,
                "augment": true,
                "shuffle": true,
                "scale": true,
                "flip": true,
                "rotate": false,
                "blur": false,
                "split": "train_aug",
                "num_workers": 4
            }
        },
    
        "val_loader": {
            "type": "VOC",
            "args":{
                "data_dir": "data/VOCtrainval_11-May-2012",
                "batch_size": 8,
                "crop_size": 513,
                "val": true,
                "split": "val",
                "num_workers": 4
            }
        },
    
        "optimizer": {
            "type": "SGD",
            "differential_lr": true,
            "args":{
                "lr": 0.01,
                "weight_decay": 1e-4,
                "momentum": 0.9
            }
        },
    
        "loss": "CrossEntropyLoss2d",
        "ignore_index": 255,
        "lr_scheduler": {
            "type": "Poly",
            "args": {}
        },
    
        "trainer": {
            "epochs": 80,
            "save_dir": "saved/",
            "save_period": 10,
      
            "monitor": "max Mean_IoU",
            "early_stop": 10,
            
            "tensorboard": true,
            "log_dir": "saved/runs",
            "log_per_iter": 20,
    
            "val": true,
            "val_per_epochs": 5
        }
    }
    
    

    PSPNet has an initial mIOU which quickly scales up. In my case, I observe a very low increase (after an epoch is around 0.06). Any ideas/suggestions? It seems to be a problem of the xception model. With resnet I don't see the issue.

    opened by lromor 11
  • Selection of the best hyper parameters for the UNET Model for semantic segmentation.

    Selection of the best hyper parameters for the UNET Model for semantic segmentation.

    I would like to know what is the best optimizer to use on a ( UNET Model, PASCAL VOC Dataset for segmentation, Focal loss ) or is it preferable to use an lr scheduler method. Can you please give the optimizer to work with and it's parameters?

    I have tried using Adam ( lr = 0.0002 , beta1 =0.5, beta2 = 0.999 ) but the mean_iou is not increasing rather, it is increasing and decreasing but it's almost same after every epoch on my validation set of Pascal VOC for image segmentation.

    opened by saiphanish7 10
  • How to start training with PSPnet.pth on my dataset?

    How to start training with PSPnet.pth on my dataset?

    Hi. I want to train from the checkpoint of PSPnet.pth on my dataset. However, it is a matter that the size of output is 21 and that of my data is 4. Can I load the model and change the output size?

    opened by TerauchiTonnnura 8
  • ValueError: Invalid split name train_aug

    ValueError: Invalid split name train_aug

    I want to train my own data.But it often meet some problem. "split": "train_aug", // Split to use, depend of the dataset and "split": "val", i dont know how to set it.that make me meet a lot questions.Hope you will me some suggestions!my data just like ade20k.

    opened by starkcn 8
  • What factor make the metric of mIOU higher than paper write?

    What factor make the metric of mIOU higher than paper write?

    Thank for you excellent work I notice that the mIOU can up to 82%, but the author of PSPNet only acheive 76% - 77% ues resnet50 as backbone, what make the difference ? Can you descirbe it ? Thank you so much.

    opened by zhijiejia 7
  • UNet with Pascal VOC gives 5% mIOU

    UNet with Pascal VOC gives 5% mIOU

    Hi, I have been trying to run UNet with Pascal VOC dataset and I am getting really bad results. The same dataset is doing great with PSPNet but UNet results are really bad.

    Here is my config:

    {
        "name": "UNET",
        "n_gpu": 1,
        "use_synch_bn": true,
    
        "arch": {
            "type": "UNet",
            "args": {
                "backbone": "resnet50",
                "freeze_bn": false,
                "freeze_backbone": false
            }
        },
    
        "train_loader": {
            "type": "VOC",
            "args":{
                "data_dir": "/mnt/batch/tasks/shared/LS_root/mounts/clusters/objloc/code/datasets/VOC/",
                "batch_size": 8,
                "base_size": 400,
                "crop_size": 380,
                "augment": true,
                "shuffle": true,
                "scale": true,
                "flip": true,
                "rotate": true,
                "blur": false,
                "split": "train",
                "num_workers": 8
            }
        },
    
        "val_loader": {
            "type": "VOC",
            "args":{
                "data_dir": "/mnt/batch/tasks/shared/LS_root/mounts/clusters/objloc/code/datasets/VOC/",
                "batch_size": 8,
                "crop_size": 480,
                "val": true,
                "split": "val",
                "num_workers": 4
            }
        },
    
        "optimizer": {
            "type": "SGD",
            "differential_lr": true,
            "args":{
                "lr": 0.001,
                "weight_decay": 0.0001,
                "momentum": 0.9
            }
        },
    
        "loss": "CrossEntropyLoss2d",
        "ignore_index": 255,
        "lr_scheduler": {
            "type": "Poly",
            "args": {}
        },
    
        "trainer": {
            "epochs": 80,
            "save_dir": "/mnt/batch/tasks/shared/LS_root/mounts/clusters/objloc/code/pytorch_segmentation/saved/",
            "save_period": 10,
      
            "monitor": "max Mean_IoU",
            "early_stop": 10,
            
            "tensorboard": true,
            "log_dir": "saved/runs",
            "log_per_iter": 20,
    
            "val": true,
            "val_per_epochs": 5
        }
    }
    

    am I doing something wrong?

    opened by RishiTejaMadduri 7
  • Class labeling

    Class labeling

    I have few questions, Please answer me I'm stuck

    1. I have only one class + background(not required to get trained), So if it's only one class what would be the num_classes? Note: I tried to set it 1 then 2, After an epoch loss goes to 0.00 and blank images visualized at tensorboard

    2. I set the configuration like below, is that correct? ignore_label = 255 ID_TO_TRAINID = {-1: ignore_label, 0: ignore_label, 1: 0}

    In my case, pixel value 0 is background and need not to be trained so I have flagged it as ignore_label and pixel value 1 need to be trained so I set it as 0. But nothing worked eventually..

    Please advice/suggest configuration to train one class. I am using cityscapes loader and labeled appropriately Here is my segmented image sample(1024x1024) imgur

    opened by sarathsrk 7
  • Bump pillow from 6.2.0 to 9.3.0

    Bump pillow from 6.2.0 to 9.3.0

    Bumps pillow from 6.2.0 to 9.3.0.

    Release notes

    Sourced from pillow's releases.

    9.3.0

    https://pillow.readthedocs.io/en/stable/releasenotes/9.3.0.html

    Changes

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    9.3.0 (2022-10-29)

    • Limit SAMPLESPERPIXEL to avoid runtime DOS #6700 [wiredfool]

    • Initialize libtiff buffer when saving #6699 [radarhere]

    • Inline fname2char to fix memory leak #6329 [nulano]

    • Fix memory leaks related to text features #6330 [nulano]

    • Use double quotes for version check on old CPython on Windows #6695 [hugovk]

    • Remove backup implementation of Round for Windows platforms #6693 [cgohlke]

    • Fixed set_variation_by_name offset #6445 [radarhere]

    • Fix malloc in _imagingft.c:font_setvaraxes #6690 [cgohlke]

    • Release Python GIL when converting images using matrix operations #6418 [hmaarrfk]

    • Added ExifTags enums #6630 [radarhere]

    • Do not modify previous frame when calculating delta in PNG #6683 [radarhere]

    • Added support for reading BMP images with RLE4 compression #6674 [npjg, radarhere]

    • Decode JPEG compressed BLP1 data in original mode #6678 [radarhere]

    • Added GPS TIFF tag info #6661 [radarhere]

    • Added conversion between RGB/RGBA/RGBX and LAB #6647 [radarhere]

    • Do not attempt normalization if mode is already normal #6644 [radarhere]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • The parameter on cityscapes  and  the best result on cityscapes

    The parameter on cityscapes and the best result on cityscapes

    How to make sure the best parameter of the network on cityscapes. And the the best result we can achieve with this network on cityscapes. Is there someone can tell me ,thank u so much!

    opened by cm0561 2
Owner
Yassine
CS PhD student in ML
Yassine
This repository contains Prior-RObust Bayesian Optimization (PROBO) as introduced in our paper "Accounting for Gaussian Process Imprecision in Bayesian Optimization"

Prior-RObust Bayesian Optimization (PROBO) Introduction, TOC This repository contains Prior-RObust Bayesian Optimization (PROBO) as introduced in our

Julian Rodemann 2 Mar 19, 2022
PyTorch implementation of SampleRNN: An Unconditional End-to-End Neural Audio Generation Model

samplernn-pytorch A PyTorch implementation of SampleRNN: An Unconditional End-to-End Neural Audio Generation Model. It's based on the reference implem

DeepSound 261 Dec 14, 2022
A Machine Teaching Framework for Scalable Recognition

MEMORABLE This repository contains the source code accompanying our ICCV 2021 paper. A Machine Teaching Framework for Scalable Recognition Pei Wang, N

2 Dec 08, 2021
A Python package for generating concise, high-quality summaries of a probability distribution

GoodPoints A Python package for generating concise, high-quality summaries of a probability distribution GoodPoints is a collection of tools for compr

Microsoft 28 Oct 10, 2022
Neural Module Network for VQA in Pytorch

Neural Module Network (NMN) for VQA in Pytorch Note: This is NOT an official repository for Neural Module Networks. NMN is a network that is assembled

Harsh Trivedi 111 Nov 24, 2022
Like ThreeJS but for Python and based on wgpu

pygfx A render engine, inspired by ThreeJS, but for Python and targeting Vulkan/Metal/DX12 (via wgpu). Introduction This is a Python render engine bui

139 Jan 07, 2023
A different spin on dataclasses.

dataklasses Dataklasses is a library that allows you to quickly define data classes using Python type hints. Here's an example of how you use it: from

David Beazley 752 Nov 18, 2022
Introducing neural networks to predict stock prices

IntroNeuralNetworks in Python: A Template Project IntroNeuralNetworks is a project that introduces neural networks and illustrates an example of how o

Vivek Palaniappan 637 Jan 04, 2023
PiCIE: Unsupervised Semantic Segmentation using Invariance and Equivariance in clustering (CVPR2021)

PiCIE: Unsupervised Semantic Segmentation using Invariance and Equivariance in Clustering Jang Hyun Cho1, Utkarsh Mall2, Kavita Bala2, Bharath Harihar

Jang Hyun Cho 164 Dec 30, 2022
Mmdet benchmark with python

mmdet_benchmark 本项目是为了研究 mmdet 推断性能瓶颈,并且对其进行优化。 配置与环境 机器配置 CPU:Intel(R) Core(TM) i9-10900K CPU @ 3.70GHz GPU:NVIDIA GeForce RTX 3080 10GB 内存:64G 硬盘:1T

杨培文 (Yang Peiwen) 24 May 21, 2022
Plaything for Autistic Children (demo for PaddlePaddle/Wechaty/Mixlab project)

星星的孩子 - 一款为孤独症孩子设计的聊天机器人游戏 孤独症儿童是目前常常被忽视的一类群体。他们有着类似性格内向的特征,实际却受着广泛性发育障碍的折磨。 项目背景 这类儿童在与人交往时存在着沟通障碍,其特点表现在: 社交交流差,互动障碍明显 认知能力有限,被动认知 兴趣狭窄,重复刻板,缺乏变化和想象

Tianyi Pan 35 Nov 24, 2022
Resources related to EMNLP 2021 paper "FAME: Feature-Based Adversarial Meta-Embeddings for Robust Input Representations"

FAME: Feature-based Adversarial Meta-Embeddings This is the companion code for the experiments reported in the paper "FAME: Feature-Based Adversarial

Bosch Research 11 Nov 27, 2022
Hands-On Machine Learning for Algorithmic Trading, published by Packt

Hands-On Machine Learning for Algorithmic Trading Hands-On Machine Learning for Algorithmic Trading, published by Packt This is the code repository fo

Packt 981 Dec 29, 2022
Sign Language is detected in realtime using video sequences. Our approach involves MediaPipe Holistic for keypoints extraction and LSTM Model for prediction.

RealTime Sign Language Detection using Action Recognition Approach Real-Time Sign Language is commonly predicted using models whose architecture consi

Rishikesh S 15 Aug 20, 2022
Survival analysis in Python

What is survival analysis and why should I learn it? Survival analysis was originally developed and applied heavily by the actuarial and medical commu

Cameron Davidson-Pilon 2k Jan 08, 2023
The Unreasonable Effectiveness of Random Pruning: Return of the Most Naive Baseline for Sparse Training

[ICLR 2022] The Unreasonable Effectiveness of Random Pruning: Return of the Most Naive Baseline for Sparse Training The Unreasonable Effectiveness of

VITA 44 Dec 23, 2022
Python3 Implementation of (Subspace Constrained) Mean Shift Algorithm in Euclidean and Directional Product Spaces

(Subspace Constrained) Mean Shift Algorithms in Euclidean and/or Directional Product Spaces This repository contains Python3 code for the mean shift a

Yikun Zhang 0 Oct 19, 2021
Create images and texts with the First Order Generative Adversarial Networks

First Order Divergence for training GANs This repository contains code accompanying the paper First Order Generative Advesarial Netoworks The majority

Zalando Research 35 Dec 11, 2021
Official implementation of Deep Reparametrization of Multi-Frame Super-Resolution and Denoising

Deep-Rep-MFIR Official implementation of Deep Reparametrization of Multi-Frame Super-Resolution and Denoising Publication: Deep Reparametrization of M

Goutam Bhat 39 Jan 04, 2023
Introduction to CPM

CPM CPM is an open-source program on large-scale pre-trained models, which is conducted by Beijing Academy of Artificial Intelligence and Tsinghua Uni

Tsinghua AI 136 Dec 23, 2022