Skip to content

ICIG/FSDENet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FSDENet

Fu jiahao

This is the code for our paper: FSDENet: A Frequency and Spatial Domains-Based Detail Enhancement Network for Remote Sensing Semantic Segmentation https://ieeexplore.ieee.org/document/11051242

Install

conda create -n airs python=3.8
conda activate airs
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
需要先将pip版本降低到24.1以下:
pip install pip==24.0 -i https://mirrors.aliyun.com/pypi/simple/
再安装:
pip install -r GeoSeg/requirements.txt
pip install pytorch_wavelets

Data Preprocessing

Download the datasets from the official website and split them yourself.

Prepare the following folders to organize this repo:

FGHFN
├── GeoSeg (代码)
├── fig_results (save the masks predicted by models)
├── test_log (测试日志)
├── weights (权重目录)
├── data (数据目录)
│   ├── loveDA
│   │   ├── Train
│   │   │   ├── Urban
│   │   │   │   ├── images_png (original images)
│   │   │   │   ├── masks_png (original masks)
│   │   │   │   ├── masks_png_convert (converted masks used for training)
│   │   │   │   ├── masks_png_convert_rgb (original rgb format masks)
│   │   │   ├── Rural
│   │   │   │   ├── images_png 
│   │   │   │   ├── masks_png 
│   │   │   │   ├── masks_png_convert
│   │   │   │   ├── masks_png_convert_rgb
│   │   ├── Val (the same with Train)
│   │   ├── Test
│   ├── vaihingen
│   │   ├── train_images (original)
│   │   ├── train_masks (original)
│   │   ├── test_images (original)
│   │   ├── test_masks (original)
│   │   ├── test_masks_eroded (original)
│   │   ├── train (processed)
│   │   ├── test (processed)
│   ├── potsdam 
│   │   ├── train_images (original)
│   │   ├── train_masks (original)
│   │   ├── test_images (original)
│   │   ├── test_masks (original)
│   │   ├── test_masks_eroded (original)
│   │   ├── train (processed)
│   │   ├── test (processed)
cd FSDENet

Vaihingen

Only the TOP image tiles were used without the DSM and NDSM. And we utilized ID: 2, 4, 6, 8, 10, 12, 14, 16, 20, 22, 24, 27, 29, 31, 33, 35, 38 for testing, ID: 30 for validation, and the remaining 15 images for training.

python GeoSeg/tools/vaihingen_patch_split.py \
--img-dir "data/vaihingen/train_images" \
--mask-dir "data/vaihingen/train_masks" \
--output-img-dir "data/vaihingen/train/images_1024" \
--output-mask-dir "data/vaihingen/train/masks_1024" \
--mode "train" --split-size 1024 --stride 512 

Generate the testing set.

python GeoSeg/tools/vaihingen_patch_split.py \
--img-dir "data/vaihingen/test_images" \
--mask-dir "data/vaihingen/test_masks_eroded" \
--output-img-dir "data/vaihingen/test/images_1024" \
--output-mask-dir "data/vaihingen/test/masks_1024" \
--mode "val" --split-size 1024 --stride 1024 \
--eroded

Generate the masks_1024_rgb (RGB format ground truth labels) for visualization.

python GeoSeg/tools/vaihingen_patch_split.py \
--img-dir "data/vaihingen/test_images" \
--mask-dir "data/vaihingen/test_masks" \
--output-img-dir "data/vaihingen/test/images_1024" \
--output-mask-dir "data/vaihingen/test/masks_1024_rgb" \
--mode "val" --split-size 1024 --stride 1024 \
--gt

Potsdam We utilized ID: 2_13, 2_14,3_13, 3_14, 4_13, 4_14, 4_15, 5_13, 5_14, 5_15, 6_13, 6_14, 6_15, 7_13 for testing, ID: 2_10 for validation, and the remaining 22 images (except image 7_10 with error annotations) for training.

python GeoSeg/tools/potsdam_patch_split.py \
--img-dir "data/potsdam/train_images" \
--mask-dir "data/potsdam/train_masks" \
--output-img-dir "data/potsdam/train/images_1024" \
--output-mask-dir "data/potsdam/train/masks_1024" \
--mode "train" --split-size 1024 --stride 1024 --rgb-image 
python GeoSeg/tools/potsdam_patch_split.py \
--img-dir "data/potsdam/test_images" \
--mask-dir "data/potsdam/test_masks_eroded" \
--output-img-dir "data/potsdam/test/images_1024" \
--output-mask-dir "data/potsdam/test/masks_1024" \
--mode "val" --split-size 1024 --stride 1024 \
--eroded --rgb-image
python GeoSeg/tools/potsdam_patch_split.py \
--img-dir "data/potsdam/test_images" \
--mask-dir "data/potsdam/test_masks" \
--output-img-dir "data/potsdam/test/images_1024" \
--output-mask-dir "data/potsdam/test/masks_1024_rgb" \
--mode "val" --split-size 1024 --stride 1024 \
--gt --rgb-image

LoveDA

python GeoSeg/tools/loveda_mask_convert.py --mask-dir data/loveDA/Train/Rural/masks_png --output-mask-dir data/loveDA/Train/Rural/masks_png_convert
python GeoSeg/tools/loveda_mask_convert.py --mask-dir data/loveDA/Train/Urban/masks_png --output-mask-dir data/loveDA/Train/Urban/masks_png_convert
python GeoSeg/tools/loveda_mask_convert.py --mask-dir data/loveDA/Val/Rural/masks_png --output-mask-dir data/loveDA/Val/Rural/masks_png_convert
python GeoSeg/tools/loveda_mask_convert.py --mask-dir data/loveDA/Val/Urban/masks_png --output-mask-dir data/loveDA/Val/Urban/masks_png_convert

Training

"-c" means the path of the config, use different config to train different models.

cd FSDENet

Potsdam

python GeoSeg/train_supervision.py -c GeoSeg/config/potsdam/FSDENet_potsdam.py 

Vaihingen

python GeoSeg/train_supervision_dp.py -c GeoSeg/config/vaihingen/FSDENet_vaihingen.py

LoveDA

python GeoSeg/train_supervision_dp.py -c GeoSeg/config/loveda/FSDENet_loveda.py

iSAID

python train_supervision.py -c GeoSeg/config/loveda/FSDENet_isaid.py

Testing

cd FSDENet

Potsdam

python GeoSeg/test_potsdam.py -c GeoSeg/config/potsdam/FSDENet_potsdam.py -o ~/fig_results/potsdam/FGHFN_potsdam --rgb -t 'd4'

Vaihingen

python GeoSeg/test_vaihingen.py -c GeoSeg/config/vaihingen/FSDENet_vaihingen.py -o ~/fig_results/FGHFN_vaihingen/ --rgb -t "d4"

LoveDA

python GeoSeg/test_loveda.py -c GeoSeg/config/loveda/FSDENet_loveda.py -o ~/fig_results/loveda/FGHFN_loveda --rgb --val -t "d4"

iSAID

python GeoSeg/test_isaid.py -c GeoSeg/config/isaid/FSDENet_isaid.py -o ~/fig_results/isaid/convlsrnet_isaid/  -t "d4"

Acknowledgement

Our training scripts comes from GeoSeg. Thanks for the author's open-sourcing code.

About

Fu jiahao

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors