Official PyTorch Implementation of "Encoder-Decoder Contrast for Unsupervised Anomaly Detection in Medical Images".
IEEE Transactions on Medical Imaging 2023. paper
Create a new conda environment and install required packages.
conda create -n my_env python=3.8.12
conda activate my_env
pip install -r requirements.txt
Experiments are conducted on NVIDIA GeForce RTX 3090 (24GB). Same GPU and package version are recommended.
Noted that ../ is the upper directory of this folder (EDC). It is where we keep all the datasets by default.
Creat a new directory ../OCT2017. Download ZhangLabData from URL.
Unzip the file, and move everything in ZhangLabData/CellData/OCT to ../OCT2017/. The directory should be like:
|-- OCT2017
|-- test
|-- CNV
|-- DME
|-- DRUSEN
|-- NORMAL
|-- train
|-- CNV
|-- DME
|-- DRUSEN
|-- NORMAL
Creat a new directory ../APTOS.
Download APTOS 2019 from URL.
Unzip the file to ../APTOS/original/. Now, the directory would be like:
|-- APTOS
|-- original
|-- test_images
|-- train_images
|-- test.csv
|-- train.csv
Run the following command to preprocess the data to ../APTOS/.
python ./prepare_dataset/prepare_aptos.py --data-folder ../APTOS/original --save-folder ../APTOS
The directory would be like:
|-- APTOS
|-- test
|-- NORMAL
|-- ABNORMAL
|-- train
|-- NORMAL
|-- original
You can delete original if you want.
Creat a new directory ../ISIC2018.
Go to the ISIC 2018 official website.
Download "Training Data","Training Ground Truth", "Validation Data", and "Validation Ground Truth" of Task 3.
Unzip them to ../ISIC2018/original/. Now, the directory would be like:
|-- ISIC2018
|-- original
|-- ISIC2018_Task3_Training_GroundTruth
|-- ISIC2018_Task3_Training_Input
|-- ISIC2018_Task3_Validation_GroundTruth
|-- ISIC2018_Task3_Validation_Input
Run the following command to preprocess the data to ../ISIC2018/.
python ./prepare_dataset/prepare_isic2018.py --data-folder ../ISIC2018/original --save-folder ../ISIC2018
The directory would be like:
|-- ISIC2018
|-- test
|-- NORMAL
|-- ABNORMAL
|-- train
|-- NORMAL
|-- original
You can delete original if you want.
Creat a new directory ../Br35H.
Go to the kaggle website.
Download "yes" and "no".
Unzip them to ../Br35H/original/. Now, the directory would be like:
|-- Br35H
|-- original
|-- yes
|-- no
Run the following command to preprocess the data to ../ISIC2018/.
python ./prepare_dataset/prepare_br35h.py --data-folder ../Br35H/original --save-folder ../Br35H
The directory would be like:
|-- Br35H
|-- test
|-- NORMAL
|-- ABNORMAL
|-- train
|-- NORMAL
|-- original
You can delete original if you want.
Run experiments with default arguments.
APTOS
python edc_aptos.py
OCT2017
python edc_oct.py
Br35H
python edc_br35h.py
ISIC2018
python edc_isic.py
See our new paper "ReContrast: Domain-Specific Anomaly Detection via Contrastive Reconstruction" NeurIPS 2023. It introduces three key elements of contrastive learning into feature reconstruction, i.e., two-view contrastive pair, global similarity, and stop gradient, building a fully 2-D contrastive paradigm. ReContrast also yields SOTA performances on industrial UAD datasets (MVTecAD and VisA).