具有动态类扩展的 Mixture-of-Experts 框架

A Mixture-of-Experts Framework with Dynamic Class Expansion

GitHUb

在这里插入图片描述

简介

本研究提出了一种基于空间感知门控机制的动态专家混合模型 (Dynamic Mixture of Experts with Spatial-aware Gating),旨在解决传统变化检测模型在面对类别持续扩展需求时结构僵化、训练成本高、泛化能力受限 的问题。现有方法通常采用固定输出层和多分类 Softmax 激活函数,导致新增变化类型时必须重新设计网络结构并重新训练整个模型,难以适应实际应用中不断演化的监测目标(如新增道路、水体、植被等变化类别)。为此,我们引入 MoE 架构,将每类变化建模为一个独立的“专家”子网络,并通过一个轻量级的空间感知门控模块,为输入图像中的每个像素动态分配最合适的专家组合。该架构具有高度模块化与可扩展性:当新增变化类别时,只需添加对应的新专家模块,并微调门控网络,无需修改已有专家和编码器参数,从而实现零重构扩展增量式高效训练 。此外,专家之间的解耦训练机制有效缓解了多任务学习中的特征干扰问题,提升了模型对复杂变化模式的建模能力。实验表明,该方法不仅在已有类别上保持稳定性能,还能快速适配新类别,展现出良好的实用性与部署潜力。

安装步骤

1. 创建虚拟环境

conda create -n moe python=3.10 -y
conda activate moe

2. 安装依赖包

pip install -r requirements.txt

数据集介绍

多掩码二值图(Multi-Mask Binary Labeling),其中每个变化类别都有一个独立的二值掩码图

✅ 优点:

  • 每个专家只关注自己类别的掩码(与 MoE 架构匹配)
  • 新增类别只需添加新的掩码文件,无需修改已有标注
  • 支持任意数量的变化类别,适合持续扩展
  • 可以同时标注多个类别发生变化的区域(比互斥更合理)

我们提供两种数据集结构格式:

1. 默认结构:

数据集的结构如下:

dataset/
  ├── train/
  │   ├── A/                  # 第一时相训练图像
  │   ├── B/                  # 第二时相训练图像
  │   └── masks/              # 训练标签(变化掩码)
  │         ├── building/     # 建筑变化掩码(0/1)
  │         ├── vegetation/   # 植被变化掩码(0/1)
  │         ├── road/         # 道路变化掩码(0/1)
  │         └── ...           # 后续新增类别可继续添加
  ├── val/
  │   ├── A/                  # 第一时相验证图像
  │   ├── B/                  # 第二时相验证图像
  │   └── masks/              # 验证标签(变化掩码)
  │         ├── building/     # 建筑变化掩码(0/1)
  │         ├── vegetation/   # 植被变化掩码(0/1)
  │         ├── road/         # 道路变化掩码(0/1)
  │         └── ...           # 后续新增类别可继续添加
  └── test/
      ├── A/                  # 第一时相测试图像
      ├── B/                  # 第二时相测试图像
      └── masks/              # 测试标签(变化掩码)
            ├── building/     # 建筑变化掩码(0/1)
            ├── vegetation/   # 植被变化掩码(0/1)
            ├── road/         # 道路变化掩码(0/1)
            └── ...           # 后续新增类别可继续添加

修改参数文件configs中的data_formatdefault

2. 自定义结构:

数据集的结构如下:

data/
  ├── A/                      # 第一时相训练图像
  │── B/                      # 第二时相训练图像
  │── masks/                  # 训练标签(变化掩码)
  │   ├── building/     # 建筑变化掩码(0/1)
  │   ├── vegetation/   # 植被变化掩码(0/1)
  │   ├── road/         # 道路变化掩码(0/1)
  │   └── ...           # 后续新增类别可继续添加
  └── list                    # 列表文件
      ├── train.txt           # 训练集列表
      ├── val.txt             # 训练集列表
      └── test.txt            # 验证集列表

修改参数文件configs中的data_formatcustom

训练

命令行训练

python train.py -c ./configs/config.yaml

分布式训练

CUDA_VISIBLE_DEVICES=1,2 python train.py -c configs/config.yaml

测试

python test.py -c ./configs/config.yaml

推理TIF

python infer.py -c ./configs/config.yaml

贡献

欢迎提交问题和代码改进。请确保遵循项目的代码风格和贡献指南。

许可证

本项目使用 Apache License 2.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伪_装

您的支持,是我持续创作的光

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值