Skip to content

Latest commit

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

IceSegNet: A Stage-Aware Dynamic Kernel Network for River Ice Segmentation in Remote Sensing Imagery

PaperGitHubMMSegmentationLicense

English | 中文

IceSegNet: A stage-aware dynamic kernel network for river ice segmentation in remote sensing imagery

Kaijun Wu, Dingju Zhou*, Juanjuan Du, Yuelian Wu, Lidong Zhang

Applied Soft Computing, Vol. 186, 2026 | 📄 Paper


🏔️ Highlights

  • 🎯 Stage-Aware Kernel Update Module — Three structurally distinct stages (detail preservation → transition stabilization → semantic purification) with progressively reduced feedforward widths (2048 → 1024 → 512), cutting FFN parameters by 41.7% while improving mIoU by 0.96%.
  • 🧠 UPerSCA-MTL Decode Head — Unified Perceptual Parsing enhanced with Spatial Cross-Attention (SCA) and Multi-Task Learning (MTL) for joint semantic segmentation and edge detection.
  • 🏆 State-of-the-Art Results93.81% mIoU on NWPU_YRCC2 (+1.19% over K-Net, +1.31% over Mask2Former); 93.56% mIoU on NWPU_YRCC_EX (+0.43% over K-Net).

📋 Abstract

Accurate segmentation of river ice in remote sensing imagery is critical for quantifying ice coverage—a key variable in early warning and risk assessment of ice-jam disasters. IceSegNet addresses the challenges of large-scale variation, spectral similarity between ice and water, and ambiguous boundaries through two core innovations:

  1. A stage-aware kernel update module that refines features through three structurally distinct stages with progressively reduced hidden widths.
  2. UPerSCA-MTL, a multi-task decoding head that fuses spatial cross-attention and edge detection to enhance boundary accuracy.

Evaluated on two Yellow River ice datasets — NWPU_YRCC2 (1525 images, 4 classes) and NWPU_YRCC_EX (887 images, 3 classes) — IceSegNet achieves state-of-the-art performance among 18 competing segmentation models.


🏗️ Architecture

Model Architecture

Stage-Aware Kernel Update

StageRoleFFN Hidden Width
IDetail Preservation — retains fine texture and edge cues2048
IITransition Stabilization — bridges low-level detail to semantics1024
IIISemantic Purification — compact class-discriminative embeddings512

UPerSCA-MTL Head

  • PPM: Multi-scale context aggregation via pyramid pooling
  • SCA (Spatial Cross-Attention): Horizontal + vertical global pooling to capture axis-specific directional dependencies, enhancing ambiguous ice–water boundary delineation
  • Depthwise Separable Convolutions: Reduce computational complexity without sacrificing feature quality
  • Multi-Task Head: Parallel segmentation + edge detection branches; edge supervision derived automatically from GT mask gradients (no extra annotation needed)

📊 Main Results

NWPU_YRCC2 (4 classes: Land / Water / Shore Ice / Drift Ice)

MethodVenuemIoU (%)PA (%)mFscore (%)FPSParams (M)
U-NetMICCAI 201561.6280.5975.553.0529
PSPNetCVPR 201790.7094.2895.079.4147
DeepLabv3+ECCV 201890.3794.7494.925.4260
SegFormerNeurIPS 202186.9992.6192.984.1882
Mask2FormerCVPR 202292.5096.1296.093.75216
DINOv2+ReinCVPR 202589.8694.0194.632.21317
K-Net (baseline)NeurIPS 202192.6295.7896.153.58245
IceSegNet (Ours)ASOC 202593.8196.3196.793.43247

NWPU_YRCC_EX (3 classes: Ice / Water / Other)

MethodmIoU (%)PA (%)mFscore (%)
PSPNet85.4292.5492.13
DeepLabv3+88.0493.9393.63
Mask2Former93.2696.5696.50
K-Net (baseline)93.1396.4996.43
IceSegNet (Ours)93.5696.7396.67

⚙️ Installation

Requirements

  • Python ≥ 3.8
  • PyTorch ≥ 1.12 with CUDA
  • MMEngine, MMCV ≥ 2.0, MMSegmentation

Step-by-Step Setup

1. Create and activate conda environment

conda create -n icesegnet python=3.8 -y
conda activate icesegnet

2. Install PyTorch (example: CUDA 11.6)

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 \
--extra-index-url https://download.pytorch.org/whl/cu116

3. Install MMEngine and MMCV

pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"

4. Install MMSegmentation

git clone https://github.com/open-mmlab/mmsegmentation.git
cd mmsegmentation
pip install -v -e .cd ..

5. Clone this repository

git clone https://github.com/fox-4869/IceSegNet.git
cd IceSegNet
pip install -r requirements.txt

📁 Data Preparation

Download the datasets:

Organize the directory as follows:

data/
├── NWPU_YRCC2_JPG1/
│ ├── train/ # Training images (.jpg)
│ ├── train_labels/ # Training annotations (.png)
│ ├── val/ # Validation images
│ └── val_labels/ # Validation annotations
└── NWPU_YRCC_EX/
├── train/
├── train_labels/
├── val/
└── val_labels/

Register Custom Modules

1. Copy dataset definitions

cp datasets/NWPU_YRCC2_JPG1.py mmsegmentation/mmseg/datasets/
cp datasets/NWPU_YRCC.py mmsegmentation/mmseg/datasets/

Add to mmseg/datasets/__init__.py:

from .NWPU_YRCC2_JPG1importNWPU_YRCC2_JPG1from .NWPU_YRCCimportNWPU_YRCC

2. Copy model components

cp models/sefpn.py mmsegmentation/mmseg/models/necks/
cp models/uper_att_plus_head.py mmsegmentation/mmseg/models/decode_heads/

Register in the corresponding __init__.py files under mmseg/models/necks/ and mmseg/models/decode_heads/.


🚀 Training

Single GPU

python tools/train.py configs/icesegnet-config.py

Multi-GPU (recommended — paper uses 2× RTX 3090)

bash tools/dist_train.sh configs/icesegnet-config.py 2

Key training settings:

HyperparameterValue
OptimizerAdamW (β₁=0.9, β₂=0.999)
Learning Rate6×10⁻⁵
Weight Decay5×10⁻⁴
Batch Size4/GPU × 2 GPUs = 8 total
Max Iterations60,000
LR ScheduleLinear warmup (500 iters) + CosineAnnealing
Crop Size512 × 512
Backbone InitImageNet-22K pretrained Swin-L

🧪 Evaluation

Standard evaluation

python tools/test.py configs/icesegnet-config.py /path/to/checkpoint.pth

With Test-Time Augmentation (multi-scale + flip)

python tools/test.py configs/icesegnet-config.py /path/to/checkpoint.pth --tta

Reported metrics: mIoU, mDice, mFscore, PA, BFscore


📂 Repository Structure

IceSegNet/
├── configs/
│ └── icesegnet-config.py # Full training & evaluation config
├── datasets/
│ ├── NWPU_YRCC2_JPG1.py # 4-class dataset (Land/Water/Shore Ice/Drift Ice)
│ └── NWPU_YRCC.py # 3-class dataset (Others/Water/Shore Ice)
├── models/
│ ├── sefpn.py # SEFPN neck with BN+ReLU normalization
│ └── uper_att_plus_head.py # UPerSCA-MTL decode head
├── tools/ # Training & testing scripts (MMSeg)
├── README.md # English README
└── README_CN.md # Chinese README

📖 Citation

If IceSegNet is helpful for your research, please cite:

@article{wu2026icesegnet,
title = {IceSegNet: A stage-aware dynamic kernel network for river ice segmentation in remote sensing imagery},
author = {Wu, Kaijun and Zhou, Dingju and Du, Juanjuan and Wu, Yuelian and Zhang, Lidong},
journal = {Applied Soft Computing},
volume = {186},
pages = {114120},
year = {2026},
publisher = {Elsevier},
doi = {10.1016/j.asoc.2025.114120}
}

🙏 Acknowledgements

This work was supported by the Natural Science Foundation Key Project of Gansu Province (23JRRA860), the Inner Mongolia Key R&D and Achievement Transformation Project (2023YFSH0043, 2023YFDZ0043, 2023YFDZ0054), the Key Research and Development Project of Lanzhou Jiaotong University (ZDYF2304), and the Excellent Graduate Student "Innovation Star" Project of Gansu Province (2025CXZX-682).

This codebase is built on MMSegmentation. We also thank the authors of K-Net for the foundational dynamic kernel framework.


📬 Contact

Corresponding Author: Dingju Zhou — dingjuzhou@163.com

Lanzhou Jiaotong University, Lanzhou 730070, China

About

IceSegNet: A stage-aware dynamic kernel network for river ice segmentation in remote sensing imagery.

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages