SimpleUNet:简单即高效的医学图像分割框架
论文来源
Simple is what you need for efficient and accurate medical image segmentation
Xiang Yu 等(深圳妇幼保健院、南开大学等机构)
Expert Systems with Applications 304 (2026) 130687
DOI: https://doi.org/10.1016/j.eswa.2025.130687
GitHub 开源地址:https://github.com/Frankyu5666666/SimpleUNet
文章信息
关键词:
医学图像分割、轻量级模型、特征选择、模型宽度控制、通道注意力
接收日期: 2025年5月29日
在线发布日期: 2025年12月9日
摘要
在医学图像分割领域,U-Net 虽经典却因参数爆炸与信息冗余难以在资源受限设备上部署。本文作者提出 SimpleUNet——一个极简、高效、准确的分割框架,仅通过三个“简单却被忽视”的策略,就实现了参数极致压缩(最小仅 16 KB)且性能超越多数 SOTA 模型。
核心创新包括:
- 高效部分特征选择:缓解跳连接冗余
- 直观模型宽度控制:固定宽度,参数线性增长
- 极简通道注意力 EECA:几乎零参数开销
在多中心乳腺病灶数据集(MBD)上,16 KB 模型 mDSC 达 82.93%;0.67 MB 增强版 SimpleESKNet 达到 85.76%,参数仅为 TransUNet 的 1/140。代码已开源,支持任意卷积块替换,兼容未来算子升级。
1. 引言
U-Net 自 2015 年提出以来,已成为医学图像分割的“黄金标准”。然而,其编码器阶段性宽度翻倍与跳连接全通道拼接,导致参数指数增长和特征冗余,在边缘设备上难以部署。
作者反思:是否能在不引入复杂模块的前提下,仅靠简单重构就让 U-Net 又轻又强?
答案是肯定的。SimpleUNet 正是这一理念的完美实践——“简单即高效”(Simple is what you need)。

2. 相关工作
- 轻量级模型:LF-UNet、LB-UNet、MALUNet、VM-UNet 等,虽参数少但性能仍有提升空间。
- 重型模型:TransUNet、ESKNet、U-Net++ 等,精度高但参数动辄数十 MB。
- 本文定位:在 U-Net 框架内,用最朴素的技巧实现“轻量+高性能”,并天然兼容 ESKNet 等先进卷积块。
3. 方法论(核心模块详解 + 代码实现)
SimpleUNet 整体架构与 U-Net 一致,但通过三个模块实现革命性优化。以下结合官方 GitHub 代码(SimpleUNet.py)逐一讲解。
3.1 直观模型宽度控制(Intuitive Model Width Control)
论文思想:传统 U-Net 每阶段宽度翻倍(C → 2C → 4C...),参数爆炸。SimpleUNet 全阶段固定同一宽度(如 64),参数线性增长。
代码实现(__init__):
self.stage_channels = stage_channels # e.g. [64, 64, 64, 64, 64] ← 关键!固定宽度
# Encoder
self.en_layer0 = SingleConv(in_channels, stage_channels[0], ks, dilation)
for i in range(1, self.depth):
self.down = nn.MaxPool2d(2)
self.en_layeri = SingleConv(stage_channels[i-1], stage_channels[i], ...) # 输入输出通道相同!
讲解:只需把 stage_channels 设为常量列表,即实现宽度固定。与特征选择结合后,参数较原 U-Net 减少 60+ 倍(论文 Table 5、7)。

3.2 高效部分特征选择(Efficient Feature Selection)
论文思想:跳连接不再拼接全部通道(冗余严重)。用 1×1 卷积将 shortcut 压缩至 R×C(默认 R=0.5),深层特征同步匹配。
代码实现(Encoder + Shortcut):
# 1. 保存原始 shortcut
shortcut = []
x = self.en_layer0(x)
shortcut.append(x)
for i in range(1, self.depth-1):
x = self.down(x)
x = getattr(self, f'en_layer{i}')(x)
shortcut.append(x)
# 2. 特征选择(1×1 压缩)
for i in range(len(shortcut)):
short_layer = SingleConv(stage_channels[i], int(self.short_rate * stage_channels[i]), kernel_size=1, pad=0)
refined_shortcut.append(short_layer(shortcut[i]))
re_shortcut = refined_shortcut[::-1] # 反转供 decoder 使用
Decoder 融合:
y = torch.cat([
re_shortcut[j] * alpha, # 压缩后的 shortcut
self.up(x * beta) # 上采样后的 deep feature
], dim=1)
x = de_layer(y) # de_layer 输入通道为 short_rate*2C
讲解:short_rate=0.5 时解码器参数大幅减少,同时实验证明冗余率(余弦相似度)显著下降,性能反而提升(Table 4)。

3.3 极简通道注意力 EECA(Extremely Efficient Channel Attention)
论文思想:几乎零参数的通道加权。仅用两组可学习标量 α(shortcut)、β(deep)进行 Hadamard 乘法。
代码实现(初始化):
if self.adw: # adw=True 开启 EECA
for i in range(self.depth-1):
setattr(self, f'alpha{i}', nn.Parameter(torch.ones(C, 1, 1), requires_grad=True))
setattr(self, f'beta{i}', nn.Parameter(torch.ones(C, 1, 1), requires_grad=True))
前向传播中使用:
y = torch.cat([
re_shortcut[j] * getattr(self, f'alpha{j}'), # α 作用于 shortcut
self.up(x * getattr(self, f'beta{j}')) # β 作用于 deep
], dim=1)
讲解:每个通道仅一个标量,总参数远低于 CBAM(论文 Table 12、18)。宽模型下 mDSC 可提升 0.44%,几乎无额外 FLOPs。

3.4 整体架构与增强版 SimpleESKNet
- 默认使用
SingleConv(Conv+BN+ReLU) - 替换为 ESKNet 的
SKConvnblockplus即得 SimpleESKNet(论文 4.4.3) - 总参数公式(R=0.5, N=1):≈ 6 C² k²(较 U-Net 减少 65 倍)

4. 实验结果(精选)
| 模型 | 参数 | MBD mDSC | KVASIR-SEG mDSC | ISIC2018 mDSC |
|---|---|---|---|---|
| LBUNet | 38 KB | 81.59% | 67.26% | 87.85% |
| SimpleUNet 16KB(Ours) | 16 KB | 82.93% | 73.11% | 87.57% |
| TransUNet | 93 MB | 85.32% | 84.21% | 89.02% |
| SimpleESKNet 0.67MB(Ours) | 0.67 MB | 85.76% | 86.46% | 88.77% |
推理延迟:最轻模型仅 1.25 ms,远优于多数轻量模型。
5. 代码快速上手
git clone https://github.com/Frankyu5666666/SimpleUNet.git
cd SimpleUNet
pip install -r requirements.txt
推荐配置(高性能版):
model = SimpleUNet(
in_channels=3,
num_cls=2,
stage_channels=[48]*5, # 固定宽度
num_blocks=[4]*5, # 每阶段 4 个卷积块
short_rate=0.5,
adw=True, # 开启 EECA
dilation=2,
ks=3
).cuda()
参数统计(thop):
from thop import profile
flops, params = profile(model, inputs=(torch.randn(1,3,256,256).cuda(),))
print(f"Params: {params/1e6:.3f} M") # ≈0.47 MB
6. 结论与展望
SimpleUNet 用最朴素的技巧(固定宽度 + 部分特征选择 + EECA)证明了“简单即高效”的强大生命力。它不仅参数极致轻量、性能领先,还具备极强的可扩展性——想换 Mamba、Depthwise、DCN?只需替换 SingleConv 即可。
局限:当前仅支持二分类 2D 分割。未来可扩展至多类别、3D、去噪等领域。
推荐使用场景:
- 边缘设备/移动端 → 16 KB 版本
- 追求极致精度 → 0.67 MB SimpleESKNet
开源代码已上线,欢迎 Star & Fork!
GitHub: https://github.com/Frankyu5666666/SimpleUNet
参考文献
[1] Xiang Yu et al. Simple is what you need... Expert Systems with Applications, 2026.
[2] Gongping Chen et al. ESKNet, 2024.(本文 SimpleESKNet 所用卷积块来源)