Abstract: Image dehazing is a representative low-level vision task that estimates latent haze-free images from hazy images. In recent years, convolutional neural network-based methods have dominated image dehazing. However, vision Transformers, which has recently made a breakthrough in high-level vision tasks, has not brought new dimensions to image dehazing. We start with the popular Swin Transformer and find that several of its key designs are unsuitable for image dehazing. To this end, we propose DehazeFormer, which consists of various improvements, such as the modified normalization layer, activation function, and spatial information aggregation scheme. We train multiple variants of DehazeFormer on various datasets to demonstrate its effectiveness. Specifically, on the most frequently used SOTS indoor set, our small model outperforms FFA-Net with only 25\% #Param and 5\% computational cost. To the best of our knowledge, our large model is the first method with the PSNR over 40 dB on the SOTS indoor set, dramatically outperforming the previous state-of-the-art methods. We also collect a large-scale realistic remote sensing dehazing dataset for evaluating the method's capability to remove highly non-homogeneous haze.
We test the code on PyTorch 1.10.2 + CUDA 11.3 + cuDNN 8.2.0.
Create a new conda environment
conda create -n pt1102 python=3.7
conda activate pt1102
Install dependencies
conda install pytorch=1.10.2 torchvision torchaudio cudatoolkit=11.3 -c pytorch
pip install -r requirements.txt
You can download the pretrained models and datasets on GoogleDrive or BaiduPan (gtuw).
Currently, we only provide gamma-corrected RGB images of our RS-Haze dataset.
The final file path should be the same as the following:
┬─ save_models
│ ├─ indoor
│ │ ├─ dehazeformer-b.pth
│ │ └─ ... (model name)
│ └─ ... (exp name)
└─ data
├─ RESIDE-IN
│ ├─ train
│ │ ├─ GT
│ │ │ └─ ... (image filename)
│ │ └─ hazy
│ │ └─ ... (corresponds to the former)
│ └─ test
│ └─ ...
└─ ... (dataset name)
In order to align the folder structure of each dataset, we rearrange the original dataset.
You can modify the training settings for each experiment in the configs
folder.
Then run the following script to train the model:
python train.py --model (model name) --dataset (dataset name) --exp (exp name)
For example, we train the DehazeFormer-B on the ITS:
python train.py --model dehazeformer-b --dataset RESIDE-IN --exp indoor
TensorBoard will record the loss and evaluation performance during training.
Run the following script to test the trained model:
python test.py --model (model name) --dataset (dataset name) --exp (exp name)
For example, we test the DehazeFormer-B on the SOTS indoor set:
python test.py --model dehazeformer-b --dataset RESIDE-IN --exp indoor
Main test scripts can be found in run.sh
.
If you find this work useful for your research, please cite our paper:
@article{song2023vision,
title={Vision Transformers for Single Image Dehazing},
author={Song, Yuda and He, Zhuqing and Qian, Hui and Du, Xin},
journal={IEEE Transactions on Image Processing},
year={2023},
volume={32},
pages={1927-1941}
}