将当前 XNet2d 的 2D 卷积主路径从 BatchNorm2d 切换到更适合 2D 图像分割、且对 batch size 更稳健的 GroupNorm,目标是:
batch_size=1 或极小空间尺寸下因 BatchNorm2d 统计约束报错。当前主线采用:
CNN / 卷积块 -> GroupNorm
不修改 lib/modules/lib_mamba/vmamba.py 内部的 LayerNorm / BatchNorm 逻辑,本轮只覆盖 XNet2d 主路径直接使用的 2D 卷积归一化层。
主要修改:
lib/modules/layers_2d.py受影响调用者:
lib/modules/xnet_2d.pyConv2dBN / DWConv2dBNReLU 的模块Conv2dBN 兼容名,直接引入 Conv2dGN。Conv2dBN 的调用点统一替换为 Conv2dGN。DWConv2dBNReLU 重命名为 DWConv2dGNReLU,并将内部两个 BatchNorm2d 改为 GroupNorm。bn_weight_init 参数语义,但内部作用到 GroupNorm.weight;如有必要,后续可再统一改名为更中性的参数名。默认采用自动组数选择:
8 组。8 整除,则递减选择能整除的组数。1 组。这样可以兼顾:
8, 16, 24, 32, 64, 128, 192本轮不做以下改动:
lib/modules/lib_mamba/vmamba.py 中的 norm。原因是本次目标是优先得到“2D 分割主线稳定、主流、可训练”的默认行为,而不是构建归一化实验框架。
需要验证三类证据:
pytest -q tests/test_xnet_2d.py 通过。batch_size=1、64x64 条件下至少跑通 1 个 epoch。layers_2d.py 中主线 2D 卷积归一化已不再使用 BatchNorm2d。风险:
预期收益:
1x1 + BN 统计限制影响。