Skip to content

1. 任务简介

本案例旨在使用深度学习技术对脑部MRI图像进行病变区域分割。任务要求从处理好的MRI图像中分割出病变区域,使用Dice相似系数(DSC)作为主要评价指标。

2. 改进方法

2.1 网络结构改进

原始U-Net vs 改进U-Netunet.py中实现了改进的U-Net网络,主要改进点:

  • 注意力机制:在解码器部分添加了注意力门控模块,使网络能够关注重要特征区域
  • 残差连接:使用残差块替代普通卷积块,缓解梯度消失问题
  • 深度监督:通过多尺度特征融合提升分割精度
  • python
    class ImprovedUNet(nn.Module):
      def __init__(self, in_channels=3, out_channels=1, init_features=32, 
                   use_attention=True, use_residual=True):
          # 包含注意力机制和残差连接的改进U-Net

2.2 损失函数优化

loss.py中实现了多种损失函数组合:

  • Dice Loss:专门处理类别不平衡问题
  • Dice-BCE组合损失:结合Dice系数和二元交叉熵
  • Focal Loss:解决难易样本不平衡问题
  • 组合损失:综合多种损失函数的优点
  • python
    class ComboLoss(nn.Module):
      def __init__(self, dice_weight=0.5, bce_weight=0.3, focal_weight=0.2):
          # 组合多种损失函数

2.3 训练策略优化

train.ipynb中实施了多项训练优化:

  • 学习率调度:使用ReduceLROnPlateau自动调整学习率
  • 优化器选择:使用AdamW优化器,具有更好的泛化能力
  • 数据增强:增强的缩放、旋转和翻转增强
  • 梯度裁剪:防止梯度爆炸

3. 实验结果

3.1 整体性能

指标数值
最佳验证集DSC0.9163
训练轮数150

3.2 病例分析

选择病例:最佳、中等、最差各选2个 其中:

  • 最佳分割病例
    • 病例ID: kaggle_3m\TCGA_DU_6404_19850629
    • DSC值: 0.9528
    • 特点: 病变区域边界清晰,形状规则
  • 最差分病例
    • 病例ID: kaggle_3m\TCGA_HT_7616_19940813
    • DSC值: 0.8124
    • 特点: 可能存在图像质量不佳或病变边界模糊 ![[Pasted image 20251113121730.png]]

3.3 训练过程分析

从训练日志可以看出:

  • 模型在早期训练阶段快速收敛(前10个epoch DSC从0.3751提升到0.8148)
  • 学习率调度器有效工作,在epoch 28、47、58等时刻自动降低学习率
  • 验证集DSC在训练后期稳定在0.91-0.92之间

4. 可视化结果

4.1 DSC分布统计

生成的dsc.png图像显示:

  • 大部分病例的DSC值集中在0.85-0.95之间
  • 平均DSC线(红色)和中间值线(绿色)位置接近,说明分布相对对称
  • 存在少量离群病例,DSC值低于0.85
  • ![[dsc.png]]

4.2 病例示例对比

通过visualize_case_examples函数生成的对比图显示: 高质量分割特征

  • 预测边界与真实边界高度吻合
  • 病变区域完整性好
  • 误分割区域少 低质量分割问题
  • 病变区域边界模糊
  • 存在欠分割或过分割现象
  • 小病变区域检测困难

5. 改进效果分析

5.1 成功改进点

  1. 网络结构改进有效
    • 注意力机制帮助网络聚焦重要区域
    • 残差连接改善了梯度流动
    • 最终DSC达到0.9163,相比原始实现有明显提升
  2. 损失函数组合优势
    • 组合损失平衡了不同损失函数的特性
    • 在处理类别不平衡问题上表现更好
  3. 训练策略优化
    • 学习率调度避免了过拟合
    • 数据增强提高了模型泛化能力

5.2 存在的挑战

  1. 病例间差异性
    • 不同病例的图像质量和病变特征差异较大
    • 部分病例的DSC值明显低于平均水平
  2. 小病变检测
    • 对于小面积病变区域的分割精度仍有提升空间
    • 边界模糊区域的划分存在困难

知识如风,常伴吾身