CNN+Transformer+Mamba 16 模型全景对比|DeepGlobe 遥感土地覆盖分割最全开源工程

基于 DeepGlobe 土地覆盖数据集,用一套统一协议 训练并对比 16 个分割模型(15 个主线模型:CNN、Transformer、Mamba、混合架构;外加 4090 实验线 wangbq-net)。文后提供gitee代码地址,也算是这段时间的学习告一段落了

一、简介

本项目开展**遥感影像语义分割(土地覆盖分类)**研究与实践:

  • 以 DeepGlobe Land Cover 数据集为基准,将 512×512 遥感影像按像素划分为 7 类土地覆盖(城市、农田、草地、森林、水体、荒地、未知);

  • 用同一套协议(相同数据划分、损失函数、调度器、早停策略、评估口径)训练 16 个模型------其中 U-Net、UNet++、DeepLabV3+、SegFormer-B0、SegFormer-B1 五个模型直接基于 segmentation_models_pytorch 库实现,其余为自研或论文复现;

  • 验证集 mIoU 采用全局混淆矩阵计算(整个验证集汇总后求 IoU),而非批次平均;

  • 支持 CPU 训练全部模型,GPU(RTX 4090)环境下提供大分辨率/大骨干实验线 wangbq-net;

  • 附带大影像推理链:切片 → 推理 → 拼接 → 矢量化,可直接处理任意尺寸卫星影像。

模型口径 :全项目共 16 个模型------第 1~15 个为主线模型(含 UNet++/DeepLabV3+ 的两个换骨干变体),第 16 个为 wangbq-net(4090 实验线)。

二、数据集

使用 DeepGlobe Land Cover Classification Challenge(CVPR 2018 Workshop)官方数据集:

项 说明
官方渠道 deepglobe.org 挑战赛页面(需注册)
Kaggle 镜像 DeepGlobe Land Cover Classification Dataset(推荐,可直接下载)
训练影像 1146 张 2448×2448 RGB 卫星影像(带像素级彩色标注)
测试影像 154 张(官方未公开标注)
类别 7 类:urban land / agriculture land / rangeland / forest land / water / barren land / unknown
标注格式 RGB 颜色编码 mask,类别定义见数据集内 class_dict.csv

本项目实际使用 :按 metadata.csv 中 mask 文件实际存在性过滤后得到 803 张 ,在训练集内部按 seed=42 划分出 训练 683 张 / 验证 120 张(官方验证集标注缺失,故内部划分)。

目录结构(解压后保持 Kaggle 原始结构即可):

复制代码
DeepGlobeLandCoverClassification/   # 数据集根目录(--data_dir 指向这里)
├── metadata.csv                    # 影像索引(sat_image_path / mask_path / split)
├── class_dict.csv                  # 类别颜色定义表
├── train/
│   ├── xxx_sat.jpg                 # 卫星影像
│   └── xxx_mask.png                # 彩色标注
└── test/
    └── xxx_sat.jpg

三、模块一览表

训练与评估核心

文件 作用
run_training.py 统一入口:训练 / 评估(--evaluate)/ 可视化,全部参数可由 yaml 配置或命令行覆盖
train.py 训练循环:Dice+CE 组合损失、warmup+cosine 调度、梯度裁剪、早停、EMA、全局混淆矩阵 mIoU
dataset.py DeepGlobe 数据集加载(metadata.csv 驱动)、512×512 裁切、none/light/medium/strong 四级数据增强
models.py 16 模型统一工厂:模型名 + 编码器 → 网络;内置编码器白名单校验
test_module.py 评估模块:TTA(4 变换)预测、逐类 IoU、混淆矩阵计算、预测可视化
inference.py 单图推理库函数(供大影像链与其他脚本调用)

模型实现(16 个模型 = 9 个自研模型 + 7 个 SMP 库模型)

9 个自研/复现模型 (下表 #1~#9,一一对应 9 个模型文件)+ 1 个共用骨干文件,均由 models.py 导入:

# 文件 模型 架构要点
1 lite_deeplabv3.py Lite-DeepLabV3+ 自研轻量 ASPP 解码器
2 cfformer_l.py CFFormer-L 交叉飞跃注意力,CPU 友好的 Transformer 分割
3 terrasegnet.py TerraSegNet EfficientNetV2-S 骨干 + 自研解码器
4 cm_unet.py CM-UNet Mamba 思想 + 轻量 UNet 解码器(2024)
5 segnext.py SegNeXt-S ConvNeXt 式编码 + Hamburger 解码器(需固定 torch.manual_seed(42) 保证确定性)
6 offseg.py OffSeg-B 正交注意力高效分割(ICCV 2025)
7 cgrseg.py CGRSeg-T 内容引导实时分割(ECCV 2024)
8 umixformer.py U-MixFormer-B1 MiT 编码 + 混合解码器(WACV 2025;编码器可参数化)
9 wangbq_net.py wangbq-net 4090 实验线:MiT-B2/B3/B4/B5 + U-MixFormer 解码器(复用 umixformer.py),支持 768×768
--- efficientformer_v2_backbone.py 不是模型 公共骨干文件:#6 OffSeg-B 与 #7 CGRSeg-T 共用

7 个 SMP 库模型 (下表 #1~#7)没有独立模型文件,由 models.py 直接调用 segmentation_models_pytorch 库创建(5 种库结构,UNet++ 与 DeepLabV3+ 各多训一个换骨干变体,故 5 种结构对应 7 个模型):

# 模型 库调用 编码器
1 U-Net smp.Unet MobileNetV2(基线)
2 UNet++(主线) smp.UnetPlusPlus MobileNetV2
3 UNet++ Eff-B0(换骨干变体) smp.UnetPlusPlus EfficientNet-B0
4 DeepLabV3+(主线) smp.DeepLabV3Plus MobileNetV2
5 DeepLabV3+ Eff-B1(换骨干变体) smp.DeepLabV3Plus EfficientNet-B1
6 SegFormer-B0 smp.Segformer MiT-B0
7 SegFormer-B1 smp.Segformer MiT-B1(当前精度冠军 0.7438)

9 + 7 = 16 个模型。

大影像推理链

文件 作用
tile_large_image.py 大尺寸影像切片(含重叠度控制)
process_large_image.py 逐片批量推理
merge_tiles.py 预测结果拼接还原为整幅图
raster_to_vector.py 分类结果栅格转矢量(GeoJSON/Shapefile)

预测可视化

文件 作用
predict_single_samples.py 单样本四联图(原图 | 真值 | 预测 | 误差图)与 mIoU 汇总 CSV

配置文件

文件 作用
config_<model>_cpu.yaml × 15 各模型 CPU 训练配置(batch、lr、epochs、增广等级等)
config.yaml 通用配置模板
config_wangbq_net_4090.yaml wangbq-net 4090 GPU 配置(768²、MiT-B2、EMA)
requirements.txt 全量依赖(已锁版本)

四、安装使用

1. 环境安装

复制代码
git clone https://gitee.com/baoqiangwang/DeepGlobeLandCoverClassification

# 建议 Python 3.10+,先创建虚拟环境
pip install -r requirements.txt

2. 数据准备

按上文「二、数据集」所述,从 Kaggle 下载 DeepGlobe 数据集并解压,记下根目录路径(下文以 D:\datasets\DeepGlobeLandCoverClassification 为例)。

3. 训练

完整 16 个模型训练命令 (--data_dir 按你的数据集实际路径修改):

复制代码
# ---- 主线 15 个模型(CPU/GPU 通用)----

# 01 U-Net(MobileNetV2 编码器,基线)
python run_training.py --config config_unet_mobilenet_v2_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 02 UNet++(MobileNetV2 编码器)
python run_training.py --config config_unetplusplus_mobilenet_v2_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 03 DeepLabV3+(MobileNetV2 编码器)
python run_training.py --config config_deeplabv3plus_mobilenet_v2_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 04 Lite-DeepLabV3+(自研轻量 ASPP)
python run_training.py --config config_lite_deeplabv3plus_mobilenet_v2_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 05 CFFormer-L(交叉飞跃注意力)
python run_training.py --config config_cfformer_l_mobilenet_v2_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 06 SegFormer-B0
python run_training.py --config config_segformer_b0_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 07 SegFormer-B1(当前精度冠军 0.7438)
python run_training.py --config config_segformer_b1_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 08 TerraSegNet(EfficientNetV2-S)
python run_training.py --config config_terrasegnet_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 09 CM-UNet(Mamba 轻量 UNet)
python run_training.py --config config_cm_unet_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 10 SegNeXt-S(Hamburger 解码器)
python run_training.py --config config_segnext_s_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 11 OffSeg-B(正交注意力,EfficientFormerV2-S2)
python run_training.py --config config_offseg_b_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 12 CGRSeg-T(内容引导实时分割,EfficientFormerV2-S1)
python run_training.py --config config_cgrseg_t_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 13 U-MixFormer-B1(混合解码器,收敛最快)
python run_training.py --config config_umixformer_b1_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 14 换骨干加赛一:UNet++ Eff-B0
python run_training.py --config config_unetplusplus_efficientnet_b0_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification
# 15 换骨干加赛二:DeepLabV3+ Eff-B1
python run_training.py --config config_deeplabv3plus_efficientnet_b1_cpu.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification

# ---- 第 16 个:wangbq-net(RTX 4090 专用,768 分辨率 + MiT-B2)----
python run_training.py --config config_wangbq_net_4090.yaml --data_dir D:\datasets\DeepGlobeLandCoverClassification

命令行参数可覆盖 yaml 中的任意配置:

复制代码
python run_training.py --config config_segformer_b1_cpu.yaml --batch_size16--lr0.0001 --data_dir ...

训练产物:

复制代码
checkpoints/<模型名>_<编码器>_<时间戳>/   # 权重 + training.log(权威训练日志)

4. 评估与预测

复制代码
# 测试集评估(含 TTA 与逐类 IoU)
python run_training.py --evaluate--checkpoint checkpoints/<模型目录>/<best权重>.pth --split test

# 单样本预测可视化(原图|真值|预测|误差 四联图)
python predict_single_samples.py --help

五、Best IoU 对比

15 个模型在同一协议(seed=42 内部划分、120 张验证图、全局混淆矩阵 mIoU、logs 权威口径)下的精度总榜:

  • U-MixFormer-B1(0.7385):收敛最快(40 轮内),单样本预测表现最佳;

  • U-Net(0.6067):最经典基线,全部模型的成绩都应与它对账;

  • 两次"换骨干加赛"(UNet++ Eff-B0 0.5964、DeepLabV3+ Eff-B1 0.6822)证明:盲目替换更强 ImageNet 骨干可能是负收益,编码器-解码器匹配度才是主账。

第 16 个模型 wangbq-net(MiT-B2 + 768 分辨率)成绩待 4090 训练完成后更新至此。

六、License

Apache License 2.0 --- 详见 LICENSE。

gitee获取方式:

本项目为目前全网覆盖架构最全、实验最严谨的 DeepGlobe 遥感分割对比工程。

包含 CNN、Transformer、Mamba 全系模型复现、统一训练协议、精度榜单、可视化评估、大尺寸影像推理与栅格转矢量全流程代码。

整套工程已完整调试、归档收官,后续将长期维护迭代、持续优化模型精度与工程落地性。

免费获取完整 Gitee 开源仓库地址

本项目长期无偿开源,持续优化遥感分割精度、轻量化模型与工程落地能力。

如果对你的科研毕设、论文实验、项目学习有帮助,

欢迎 Star、收藏、转发,支持作者持续开源更新!!

相关推荐
万物智能信息科技1 小时前
人体感应芯片PIR模块驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
驱动开发·嵌入式硬件·华为·开源·harmonyos
死磕音视频2 小时前
自己搭一个“私人版 ChatGPT“:Open WebUI 一条命令部署 + 接入本地/云端模型保姆级教程
docker·开源·open webui·大模型部署
miofly2 小时前
Codex CLI 0.157.0 自动启动守护进程引发用户争议
开源·github
miofly2 小时前
Cursor 用 S3 上的 WAL 替代副本协调,Push 吞吐量超过每秒 300 次
开源·github
寻林写彡2 小时前
从技术报告到面试入口:安全岗位简历如何用问题、关键技术与量化结果重写项目经历
面试·开源
朝朝辞暮i3 小时前
VLA 系统学习第 20 课——Diffusion Policy 为什么要先给动作加噪,再学习把噪声去掉?
人工智能·python·深度学习·transformer·vla
朝朝辞暮i3 小时前
第一部分:ACT 阶段总结——从 Behavior Cloning 到完整的 Transformer Action Policy
人工智能·pytorch·深度学习·transformer·vla
鶴哥只手遮天3 小时前
Octop 源码深潜-第 00 篇:导读与全景地图
人工智能·开源
杀生丸学AI3 小时前
【三维重建】GaussianGPT:迈向自回归三维高斯场景生成
深度学习·3d·transformer·三维重建·自回归·高斯泼贱