This repository aims at mirroring popular semantic segmentation architectures in PyTorch.
- Segnet - With Unpooling using Maxpool indices
- FCN - All 1( FCN8s), 2 (FCN16s) and 3 (FCN8s) stream variants
- U-Net - With optional deconvolution and batchnorm
- Link-Net
- FRRN - Model A and B
- pytorch >=0.3.0
- torchvision ==0.2.0
- visdom >=1.0.1 (for loss and results visualization)
- scipy
- tqdm
pip install -r requirements.txt
- Download data for desired dataset(s) from list of URLs here.
- Extract the zip / tar and modify the path appropriately in
config.json
Launch visdom by running (in a separate terminal window)
python -m visdom.server
To train the model :
python train.py [-h] [--arch [ARCH]] [--dataset [DATASET]]
[--img_rows [IMG_ROWS]] [--img_cols [IMG_COLS]]
[--n_epoch [N_EPOCH]] [--batch_size [BATCH_SIZE]]
[--l_rate [L_RATE]] [--feature_scale [FEATURE_SCALE]]
[--visdom [VISDOM]]
--arch Architecture to use ['fcn8s, unet, segnet etc']
--dataset Dataset to use ['pascal, camvid, ade20k etc']
--img_rows Height of the input image
--img_cols Width of the input image
--n_epoch # of the epochs
--batch_size Batch Size
--l_rate Learning Rate
--feature_scale Divider for # of features to use
--visdom Show visualization(s) on visdom | False by default
To validate the model :
python validate.py [-h] [--model_path [MODEL_PATH]] [--dataset [DATASET]]
[--img_rows [IMG_ROWS]] [--img_cols [IMG_COLS]]
[--batch_size [BATCH_SIZE]] [--split [SPLIT]]
--model_path Path to the saved model
--dataset Dataset to use ['pascal, camvid, ade20k etc']
--img_rows Height of the input image
--img_cols Width of the input image
--batch_size Batch Size
--split Split of dataset to validate on
To test the model w.r.t. a dataset on custom images(s):
python test.py [-h] [--model_path [MODEL_PATH]] [--dataset [DATASET]]
[--dcrf [DCRF]] [--img_path [IMG_PATH]] [--out_path [OUT_PATH]]
--model_path Path to the saved model
--dataset Dataset to use ['pascal, camvid, ade20k etc']
--dcrf Enable DenseCRF based post-processing
--img_path Path of the input image
--out_path Path of the output segmap