珊瑚语义分割(Coral Segmentation)
水下珊瑚遥感图像语义分割项目,采用 Mask2Former-Swin-B + ConvNeXt-L-FPN 双模型融合方案,将 256×256 RGB 水下图像分割为四类:
| 类别编号 | 类别名称 | 说明 |
|---|---|---|
| 0 | 背景 | 非珊瑚区域 |
| 1 | 活珊瑚 | 健康存活的珊瑚 |
| 2 | 死珊瑚 | 已死亡的珊瑚 |
| 3 | 白化珊瑚 | 白化状态的珊瑚 |
项目结构
coral-segmentation/
├── coral_seg/ # 核心代码与模型
│ ├── coral_seg/ # Python 包(数据集、模型、损失函数)
│ ├── configs/ # 训练配置(final_dual.yaml)
│ ├── tools/ # 训练、推理、评测、可视化脚本
│ ├── pretrained/ # 预训练权重
│ ├── work_dirs/ # 训练好的模型 checkpoint
│ ├── splits/ # 训练/验证集划分
│ ├── vis_results/ # 可视化结果示例
│ ├── submissions/ # 推理输出(results.zip)
│ ├── docs/ # 技术报告与操作指南
│ └── logs/ # 训练日志
├── data_fresh/ # 原始数据
│ ├── train_bsdtar/ # 训练数据
│ └── test_raw/ # 测试数据
└── README.md
模型方案
ConvNeXt-L-FPN
- 骨干网络:ConvNeXt-Large(ImageNet-1K 预训练)
- 解码器:FPN(Feature Pyramid Network),四尺度特征融合
- 输入尺寸:512×512
- 训练:120 epochs,AdamW,lr=6e-5,混合精度
Mask2Former-Swin-B
- 骨干网络:Swin Transformer Base(ADE20K 预训练)
- 解码器:Mask2Former mask classification
- 输入尺寸:384×384
- 训练:80 epochs,AdamW,lr=3e-5,梯度检查点
融合推理
prob = 0.55 × prob_mask2former + 0.45 × prob_convnext
pred = argmax(prob)
支持 TTA(原图 + 水平翻转)。
环境安装
pip install -r coral_seg/requirements.txt
主要依赖:
- PyTorch 2.3.0
- Transformers 4.46.3
- timm 1.0.27
- albumentations 2.0.8
快速开始
1. 检查数据
python coral_seg/tools/check_data.py --config coral_seg/configs/final_dual.yaml
2. 训练 ConvNeXt-L-FPN
python coral_seg/tools/train_convnext.py --config coral_seg/configs/final_dual.yaml
3. 训练 Mask2Former-Swin-B
python coral_seg/tools/train_mask2former.py --config coral_seg/configs/final_dual.yaml
4. 融合推理
python coral_seg/tools/infer_ensemble.py \
--config coral_seg/configs/final_dual.yaml \
--convnext-checkpoint coral_seg/work_dirs/convnext_l_fpn/best.pth \
--mask2former-checkpoint coral_seg/work_dirs/mask2former_swin_b/best_hf
5. 验证集评测
python coral_seg/tools/eval_ensemble_val.py --config coral_seg/configs/final_dual.yaml
训练策略
- 损失函数:CE + Dice + 0.5×Lovasz(ConvNeXt);Mask2Former 内置组合损失
- Label Smoothing:0.05
- 学习率调度:warmup + cosine decay
- 骨干网络低学习率:ConvNeXt backbone 使用 0.25× 基础学习率
- 数据增强:翻转、旋转、仿射变换、亮度/对比度/饱和度扰动、CLAHE、高斯模糊、运动模糊
复现条件
- GPU:A30 24GB(或同等显存)
- 训练+推理总时间 < 24 小时
- 固定随机种子(seed: 2026)
- 固定 train/val split