All Projects → jlcsilva → EfficientUNetPlusPlus

jlcsilva / EfficientUNetPlusPlus

Licence: MIT license
Decoder architecture based on the UNet++. Combining residual bottlenecks with depthwise convolutions and attention mechanisms, it outperforms the UNet++ in a coronary artery segmentation task, while being significantly more computationally efficient.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to EfficientUNetPlusPlus

ResUNetPlusPlus
Official code for ResUNetplusplus for medical image segmentation (TensorFlow implementation) (IEEE ISM)
Stars: ✭ 69 (+86.49%)
Mutual labels:  unet, medical-image-segmentation
food-detection-yolov5
🍔🍟🍗 Food analysis baseline with Theseus. Integrate object detection, image classification and multi-class semantic segmentation. 🍞🍖🍕
Stars: ✭ 68 (+83.78%)
Mutual labels:  efficientnet, unetplusplus
Segmentation models
Segmentation models with pretrained backbones. Keras and TensorFlow Keras.
Stars: ✭ 3,575 (+9562.16%)
Mutual labels:  unet, efficientnet
TensorMONK
A collection of deep learning models (PyTorch implemtation)
Stars: ✭ 21 (-43.24%)
Mutual labels:  unet, efficientnet
Segmentation models.pytorch
Segmentation models with pretrained backbones. PyTorch.
Stars: ✭ 4,584 (+12289.19%)
Mutual labels:  unet, unetplusplus
Eye In The Sky
Satellite Image Classification using semantic segmentation methods in deep learning
Stars: ✭ 185 (+400%)
Mutual labels:  unet
Ai papers
AI Papers
Stars: ✭ 253 (+583.78%)
Mutual labels:  unet
3dunet Tensorflow Brats18
3D Unet biomedical segmentation model powered by tensorpack with fast io speed
Stars: ✭ 173 (+367.57%)
Mutual labels:  unet
Keras unet plus plus
keras implementation of unet plus plus
Stars: ✭ 166 (+348.65%)
Mutual labels:  unet
unet
this is a simple demo for image segmentation.----unet网络进行语义分割的demo,用的数据集是KITTI
Stars: ✭ 89 (+140.54%)
Mutual labels:  unet
ResUNetPlusPlus-with-CRF-and-TTA
ResUNet++, CRF, and TTA for segmentation of medical images (IEEE JBIHI)
Stars: ✭ 98 (+164.86%)
Mutual labels:  unet
Deep Unet For Satellite Image Segmentation
Satellite Imagery Feature Detection with SpaceNet dataset using deep UNet
Stars: ✭ 227 (+513.51%)
Mutual labels:  unet
Zf unet 224 pretrained model
Modification of convolutional neural net "UNET" for image segmentation in Keras framework
Stars: ✭ 195 (+427.03%)
Mutual labels:  unet
DARTS
Code for DARTS: DenseUnet-based Automatic Rapid Tool for brain Segmentation
Stars: ✭ 61 (+64.86%)
Mutual labels:  unet
Keraspp
코딩셰프의 3분 딥러닝, 케라스맛
Stars: ✭ 178 (+381.08%)
Mutual labels:  unet
multiclass-semantic-segmentation
Experiments with UNET/FPN models and cityscapes/kitti datasets [Pytorch]
Stars: ✭ 96 (+159.46%)
Mutual labels:  unet
Unet Tensorflow Keras
A concise code for training and evaluating Unet using tensorflow+keras
Stars: ✭ 172 (+364.86%)
Mutual labels:  unet
Pytorch Unet
Tunable U-Net implementation in PyTorch
Stars: ✭ 224 (+505.41%)
Mutual labels:  unet
image-segmentation
Mask R-CNN, FPN, LinkNet, PSPNet and UNet with multiple backbone architectures support readily available
Stars: ✭ 62 (+67.57%)
Mutual labels:  unet
Speech Enhancement
Deep learning for audio denoising
Stars: ✭ 207 (+459.46%)
Mutual labels:  unet

EfficientUNet++

Paper Generic badge

1. About the EfficientUNet++ decoder architecture

The EfficientUNet++ is a decoder architecture inspired by the UNet++. Although it was designed and fine-tuned for a coronary artery segmentation task, we expect it to perform well across a wide variety of medical image segmentation tasks. We plan to test it on other tasks soon, and will upload test set performance when we do.

In our coronary artery segmentation task, using EfficientNet models as backbone, the EfficientUNet++ achieves higher performance that the UNet++, U-Net, ResUNet++ and other high-performing medical image segmentation architectures. Such improvement is achieved by two simple modifications, inspired by the EfficientNet building blocks:

  • To reduce computation, the 3x3 convolutional blocks of the UNet++ are replaced with residual bottleneck blocks with depthwise convolutions
  • To enhance performance, the feature maps outputted by 3x3 depthwise convolution are processed by an scSE, that applies both channel and spatial attention. The SE channel attention used in the EfficientNet was tested, but yielded worse results. For more details, refer to the paper.

Comparison of the EfficientUNet++ and UNet++ building blocks:

Performance of different decoder architectures as a function of the number of FLOPS and the number of parameters, when using the EfficientNet B0 to B7 models as encoders:

To help practicioners choose the most adequate model for their clinical needs and available hardware, the Pareto Frontier of the tested models was drawn, with the number of FLOPS as a function of model performance.

2. Installing the repository

When installing the repository, do not forget to update the submodule, by running the git submodule update --init --recursive command.

3. Using the EfficientUNet++ independently

The EfficientUNet++ was implemented as an extension of the Segmentation Models Pytorch repository, by Pavel Yakubovskiy. Currently, it is a pending pull request. For detailed information on library installation and model usage, visit the Read The Docs Project Page or the repository's README.

4. Training the EfficientUNet++

It was not possible to obtain the necessary clearances to release the full coronary artery segmentation dataset. Therefore, to enable other researchers and programmers to test our architecture, we provide a toy dataset with 6 coronary angiography images, and built a loader for the the retinal vessel segmentation DRIVE dataset. We still haven't had the time to test the EfficientUNet++ in the retinal vessel segmentation task, but we expect it to perform well when coupled with the right encoder.

To train the an EfficientUNet++ model on the coronary artery segmentation toy dataset using the EfficientNetB0 encoder, run:

  python train.py -d Coronary -enc timm-efficientnet-b0

To train the same model on the DRIVE dataset:

  python train.py -d DRIVE -enc timm-efficientnet-b0

For more details on program arguments, run:

  python train.py -h

To consult the available encoder architectures, visit the Read The Docs Project Page.

5. Inference

To perform inference, run the following command:

  python predict.py -d <dataset> -enc <encoder> -i <list of files> -m <path to model>

where the dataset can be either Coronary or DRIVE.

6. Citing 📝

If you find our work useful and use it or draw inspiration from it in your research, please consider citing it.

@misc{silva2021encoderdecoder,
      title={Encoder-Decoder Architectures for Clinically Relevant Coronary Artery Segmentation}, 
      author={João Lourenço Silva and Miguel Nobre Menezes and Tiago Rodrigues and Beatriz Silva and Fausto J. Pinto and Arlindo L. Oliveira},
      year={2021},
      eprint={2106.11447},
      archivePrefix={arXiv},
      primaryClass={eess.IV}
}

6. License 🛡️

Distributed under MIT License

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].