Semantic Segmentation on Tensorflow && Keras
Project description
Amazing-Semantic-Segmentation
Amazing Semantic Segmentation on Tensorflow && keras (include FCN, UNet, SegNet, PSPNet, PAN, RefineNet, DeepLabV3, DeepLabV3+, DenseASPP, BiSegNet ...)
Models
The project supports these semantic segmentation models as follows:
- FCN-8s/16s/32s - Fully Convolutional Networks for Semantic Segmentation
- UNet - U-Net: Convolutional Networks for Biomedical Image Segmentation
- SegNet - SegNet:A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
- Bayesian-SegNet - Bayesian SegNet: Model Uncertainty in Deep Convolutional Encoder-Decoder Architectures for Scene Understanding
- PSPNet - Pyramid Scene Parsing Network
- RefineNet - RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation
- PAN - Pyramid Attention Network for Semantic Segmentation
- DeepLabV3 - Rethinking Atrous Convolution for Semantic Image Segmentation
- DeepLabV3Plus - Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
- DenseASPP - DenseASPP for Semantic Segmentation in Street Scenes
- BiSegNet - BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation
Base Models
The project supports these backbone models as follows, and your can choose suitable base model according to your needs.
- VGG16/19 - Very Deep Convolutional Networks for Large-Scale Image Recognition
- ResNet50/101/152 - Deep Residual Learning for Image Recognition
- DenseNet121/169/201/264 - Densely Connected Convolutional Networks
- MobileNetV1 - MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- MobileNetV2 - MobileNetV2: Inverted Residuals and Linear Bottlenecks
- Xception - Xception: Deep Learning with Depthwise Separable Convolutions
- Xception-DeepLab - Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
Dataset Setting
The folds of your dataset must satisfy the following structures:
- dataset
- train
- images
- labels
- valid
- images
- labels
- test
- images
- labels
Installation
- Numpy
pip install numpy
- Pillow
pip install pillow
- OpenCV
pip install opencv-python
- Tensorflow
pip install tensorflow-gpu
version >= 1.14
Usage
Training: The project contains complete codes for training, testing and predicting. And you can perform a simple command as this to build a model on your dataset:
python train.py --model FCN-8s --base_model ResNet50 --dataset "dataset_path" --num_classes "num_classes"
The detailed command line parameters are as follows:
usage: train.py [-h] --model MODEL [--base_model BASE_MODEL] --dataset DATASET
--num_classes NUM_CLASSES [--random_crop RANDOM_CROP]
[--crop_height CROP_HEIGHT] [--crop_width CROP_WIDTH]
[--batch_size BATCH_SIZE]
[--valid_batch_size VALID_BATCH_SIZE]
[--num_epochs NUM_EPOCHS] [--initial_epoch INITIAL_EPOCH]
[--h_flip H_FLIP] [--v_flip V_FLIP]
[--brightness BRIGHTNESS [BRIGHTNESS ...]]
[--rotation ROTATION]
[--zoom_range ZOOM_RANGE [ZOOM_RANGE ...]]
[--channel_shift CHANNEL_SHIFT]
[--data_aug_rate DATA_AUG_RATE]
[--checkpoint_freq CHECKPOINT_FREQ]
[--validation_freq VALIDATION_FREQ]
[--num_valid_images NUM_VALID_IMAGES]
[--data_shuffle DATA_SHUFFLE] [--random_seed RANDOM_SEED]
[--weights WEIGHTS]
optional arguments:
-h, --help show this help message and exit
--model MODEL Choose the semantic segmentation methods.
--base_model BASE_MODEL
Choose the backbone model.
--dataset DATASET The path of the dataset.
--num_classes NUM_CLASSES
The number of classes to be segmented.
--random_crop RANDOM_CROP
Whether to randomly crop the image.
--crop_height CROP_HEIGHT
The height to crop the image.
--crop_width CROP_WIDTH
The width to crop the image.
--batch_size BATCH_SIZE
The training batch size.
--valid_batch_size VALID_BATCH_SIZE
The validation batch size.
--num_epochs NUM_EPOCHS
The number of epochs to train for.
--initial_epoch INITIAL_EPOCH
The initial epoch of training.
--h_flip H_FLIP Whether to randomly flip the image horizontally.
--v_flip V_FLIP Whether to randomly flip the image vertically.
--brightness BRIGHTNESS [BRIGHTNESS ...]
Randomly change the brightness (list).
--rotation ROTATION The angle to randomly rotate the image.
--zoom_range ZOOM_RANGE [ZOOM_RANGE ...]
The times for zooming the image.
--channel_shift CHANNEL_SHIFT
The channel shift range.
--data_aug_rate DATA_AUG_RATE
The rate of data augmentation.
--checkpoint_freq CHECKPOINT_FREQ
How often to save a checkpoint.
--validation_freq VALIDATION_FREQ
How often to perform validation.
--num_valid_images NUM_VALID_IMAGES
The number of images used for validation.
--data_shuffle DATA_SHUFFLE
Whether to shuffle the data.
--random_seed RANDOM_SEED
The random shuffle seed.
--weights WEIGHTS The path of weights to be loaded.
If you only want to use the model in your own training code, you can do as this:
from builders.model_builder import builder
model, base_model = builder(num_classes, input_size, model='SegNet', base_model=None)
Note: If you don't give the parameter "base_model", the default backbone will be used.
Testing: Similarly, you can evaluate the model on your own dataset:
python test.py --model FCN-8s --base_model ResNet50 --dataset "dataset_path" --num_classes "num_classes" --weights "weights_path"
Note: If the parameter "weights" is None, the weigths saved in default path will be loaded.
Predicting: You can get the prediction of a single RGB image as this:
python predict.py --model FCN-8s --base_model ResNet50 --num_classes "num_classes" --weights "weights_path" --image_path "image_path"
PyPI
The installation of this project from PyPI will be supported later.
Feedback
If you like this work, please give me a star! And if you find any errors or have any suggestions, please contact me.
GitHub: luyanger1799
Email: luyanger1799@outlook.com
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for semantic_segmentation-0.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03eafff6a9d4b84b1d9b3661ce3b1e6b6916f6dc7180871559da9a18f4370b7c |
|
MD5 | a450a384dc1a3a0d3c02ace2ca57b9d3 |
|
BLAKE2b-256 | 8dbb64c75581ed5be1fdc844ccb6d5e5e24d579b5f51a2537dcf464d456798db |
Hashes for semantic_segmentation-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77760a65577a7c0ffbeb271e06a7d71d04b5a749fe6ddeb12d8254491d5f77b1 |
|
MD5 | acd564bc1e2d9d819cbfd38ce67b7238 |
|
BLAKE2b-256 | ca43ebfc16eb1c6c5628ee53cb095cb3517da3987750228474fbbadfaa5e7cd9 |