Official PyTorch implementation of UACANet: Uncertainty Augmented Context Attention for Polyp Segmentation (ACMMM 2021)
Official pytorch implementation of UACANet: Uncertainty Augmented Context Attention for Polyp Segmentation
To appear in the Proceedings of the 29th ACM International Conference on Multimedia (ACMMM 2021)
We propose Uncertainty Augmented Context Attention network (UACANet) for polyp segmentation which consider a uncertain area of the saliency map. We construct a modified version of U-Net shape network with additional encoder and decoder and compute a saliency map in each bottom-up stream prediction module and propagate to the next prediction module. In each prediction module, previously predicted saliency map is utilized to compute foreground, background and uncertain area map and we aggregate the feature map with three area maps for each representation. Then we compute the relation between each representation and each pixel in the feature map. We conduct experiments on five popular polyp segmentation benchmarks, Kvasir, CVC-ClinicDB, ETIS, CVC-ColonDB and CVC-300, and achieve state-of-the-art performance. Especially, we achieve 76.6% mean Dice on ETIS dataset which is 13.8% improvement compared to the previous state-of-the-art method.
Our new work on high-resolution salient object detection, Revisiting Image Pyramid Structure for High Resolution Salient Object Detection has been accepted to ACCV2022. Come and see the results!
install.sh
, you can download and locate train/test datasets, backbone checkpoints, pretrained checkpoints and pre-computed results, and automatically create conda environment named uacanet
. If you find error using our script, please create environment and prepare datasets manually.conda create -n uacanet python=3.7
conda activate uacanet
pip install -r requirements.txt
data
to the repository.|-- configs
|-- data
| |-- TestDataset
| | |-- CVC-300
| | | |-- images
| | | `-- masks
| | |-- CVC-ClinicDB
| | | |-- images
| | | `-- masks
| | |-- CVC-ColonDB
| | | |-- images
| | | `-- masks
| | |-- ETIS-LaribPolypDB
| | | |-- images
| | | `-- masks
| | `-- Kvasir
| | |-- images
| | `-- masks
| `-- TrainDataset
| |-- images
| `-- masks
|-- lib
| |-- backbones
| |-- losses
| `-- modules
├── LICENSE
├── README.md
├── requirements.txt
├── results
│ ├── result_CVC-300.csv
│ ├── result_CVC-ClinicDB.csv
│ ├── result_CVC-ColonDB.csv
│ ├── result_ETIS-LaribPolypDB.csv
│ └── result_Kvasir.csv
├── run
│ ├── __init__.py
│ ├── Eval.py
│ ├── Inference.py
│ ├── Test.py
│ └── Train.py
├── snapshots
│ ├── UACANet-L
│ │ ├── CVC-300
│ │ ├── CVC-ClinicDB
│ │ ├── CVC-ColonDB
│ │ ├── ETIS-LaribPolypDB
│ │ ├── Kvasir
│ │ └── latest.pth
│ └── UACANet-S
│ ├── CVC-300
│ ├── CVC-ClinicDB
│ ├── CVC-ColonDB
│ ├── ETIS-LaribPolypDB
│ ├── Kvasir
│ └── latest.pth
└── utils
├── custom_transforms.py
├── dataloader.py
├── eval_functions.py
├── __pycache__
└── utils.py
# Single GPU
CUDA_VISIBLE_DEVICES=0 python run/Train.py --config configs/UACANet-L.yaml --verbose --debug
# Multi GPU (e.g., 0 and 1)
CUDA_VISIBLE_DEVICES=0,1 python -m torchrun --nproc_per_node 2 run/Train.py --config configs/UACANet-L.yaml --verbose --debug
# Generate prediction for benchmarks
python run/Test.py --config configs/UACANet-L.yaml --verbose
# Evaluate on various metrics (e.g., S-measure, E-measure, etc.)
python run/Eval.py --config configs/UACANet-L.yaml --verbose
# Train, Test, and Evaluate with single command
# Single GPU
CUDA_VISIBLE_DEVICES=0 python Expr.py --config configs/UACANet-L.yaml --verbose --debug
# Multi GPU
CUDA_VISIBLE_DEVICES=0,1 python -m torchrun --nproc_per_node 2 Expr.py --config configs/UACANet-L.yaml --verbose --debug
Download our best result checkpoint and pre-computed maps from following URL for UACANet-L and UACANet-S.
dataset meanDic meanIoU wFm Sm meanEm mae maxEm maxDic maxIoU meanSen maxSen meanSpe maxSpe
----------------- --------- --------- ----- ----- -------- ----- ------- -------- -------- --------- -------- --------- --------
CVC-300 0.902 0.837 0.886 0.934 0.974 0.006 0.976 0.906 0.840 0.959 1.000 0.992 0.995
CVC-ClinicDB 0.916 0.870 0.917 0.940 0.965 0.008 0.968 0.919 0.873 0.942 1.000 0.991 0.995
Kvasir 0.905 0.852 0.897 0.914 0.948 0.026 0.951 0.908 0.855 0.911 1.000 0.976 0.979
CVC-ColonDB 0.783 0.704 0.772 0.848 0.894 0.034 0.897 0.786 0.706 0.801 1.000 0.958 0.962
ETIS-LaribPolypDB 0.694 0.615 0.650 0.815 0.848 0.023 0.851 0.696 0.618 0.833 1.000 0.887 0.891
dataset meanDic meanIoU wFm Sm meanEm mae maxEm maxDic maxIoU meanSen maxSen meanSpe maxSpe
----------------- --------- --------- ----- ----- -------- ----- ------- -------- -------- --------- -------- --------- --------
CVC-300 0.910 0.849 0.901 0.937 0.977 0.005 0.980 0.913 0.853 0.940 1.000 0.993 0.997
CVC-ClinicDB 0.926 0.880 0.928 0.943 0.974 0.006 0.976 0.929 0.883 0.943 1.000 0.992 0.996
Kvasir 0.912 0.859 0.902 0.917 0.955 0.025 0.958 0.915 0.862 0.923 1.000 0.983 0.987
CVC-ColonDB 0.751 0.678 0.746 0.835 0.875 0.039 0.878 0.753 0.680 0.754 1.000 0.953 0.957
ETIS-LaribPolypDB 0.766 0.689 0.740 0.859 0.903 0.012 0.905 0.769 0.691 0.813 1.000 0.932 0.936
@inproceedings{kim2021uacanet,
title={UACANet: Uncertainty Augmented Context Attention for Polyp Segmentation},
author={Kim, Taehun and Lee, Hyemin and Kim, Daijin},
booktitle={Proceedings of the 29th ACM International Conference on Multimedia},
pages={2167--2175},
year={2021}
}