欢迎光临
我们一直在努力

第29章:AttU‑Net与U‑Net腹部CT多器官分割完整工程实践

摘要:腹部CT多器官分割一直是医学影像分割中极具挑战性的任务。腹腔内部器官种类多、软组织对比度低、不同器官边界模糊,器官形态、大小个体差异巨大。传统U‑Net依靠跳跃连接融合多尺度特征,但跳跃连接会无差别传递背景噪声;Attention‑U‑Net引入注意力门控模块,在几乎不增加大量参数量前提下,让网络“重点关注”目标脏器区域。本文结合完整开源工程代码,从数据集设计、网络原理、模块拆解、训练策略、评估指标、推理可视化、实验对比、工程坑点全方位解析2D腹部CT多类别器官分割方案,并给出可直接渲染的Mermaid网络结构图。 在这里插入图片描述

1 研究背景与任务难点

在临床放射治疗、计算机辅助诊断流程中,腹部各个脏器的轮廓分割是基础环节。放疗靶区规划需要精准识别肝、肾、胃、胰腺等危及器官,避免射线对正常组织造成损伤。完全依靠医生手动逐切片勾画,一千多张CT切片需要耗费数小时人力,重复性差,不同医生标注结果存在差异。因此基于深度学习实现腹部多脏器自动分割具备很高临床应用价值。

腹部CT分割主要难点:

  • 多类别共存:一张CT切片同时包含背景、肝脏、双肾、胰腺、胃、胆囊、脾脏、主动脉等多个目标器官,属于多分类像素分割任务,各类器官像素占比不均衡;
  • 软组织对比度低:CT软组织灰度接近,器官交界边缘模糊,极易出现边界分割模糊、漏分割;
  • 器官形态多变:不同患者脏器大小、位置、形变差异大;
  • 噪声干扰:CT成像噪声、切片伪影会引入干扰信息;
  • 数据集标注灰度非连续:mask图像保存为灰度图,不同器官对应任意灰度值,不是0‑1‑2连续索引,需要做标签映射处理,这也是本项目工程上的一个重点。
  • 本项目数据集包含1000+腹部CT二维切片,分割目标:背景、主动脉、胆囊、脾、左肾、右肾、肝、胰腺、胃。项目实现两套基线模型:原生U‑Net,以及加入注意力门控的AttU‑Net,完整覆盖dataset、model、train、predict、utils工具模块,实现训练、验证、评估、推理可视化闭环。 在这里插入图片描述

    2 网络架构原理与Mermaid结构图

    2.1 U‑Net网络结构

    U‑Net由编码器(下采样路径)和解码器(上采样路径)组成。编码器使用重复卷积块+最大池化,不断降低特征图尺寸、提升通道数,捕获全局上下文语义;解码器通过上采样逐步恢复分辨率,通过跳跃连接把编码器同尺度特征直接拼接,弥补下采样丢失的细节信息,最后1×1卷积输出分类通道数,得到每个像素的类别得分图。

    2.2 Attention‑U‑Net(AttU‑Net)改进点

    AttU‑Net核心创新是Attention Gate注意力门控模块,插入到U‑Net每一个跳跃连接的拼接之前。

    • 输入两个特征:g来自解码器上采样后的粗粒度门控特征;x来自编码器浅层高分辨率特征;
    • 分别对g、x做1×1卷积降维,相加后经过ReLU、1×1卷积、Sigmoid生成0‑1之间注意力权重图;
    • 将权重图与编码器特征x逐像素相乘,抑制背景无关区域,增强器官目标区域;
    • 加权之后的编码器特征再和解码器上采样特征进行concat拼接。

    优势:不需要额外预训练定位网络;前向传播抑制背景特征,反向传播时背景区域梯度被抑制,参数更新主要聚焦目标器官;计算开销可控,适合医学影像任务。

    Mermaid:AttU‑Net整体网络结构图

    请添加图片描述

    Mermaid:注意力门控Attention Block内部子结构

    请添加图片描述

    3 数据集工程实现细节(MyDataset)

    CT医学分割数据集存在一个特殊工程问题:mask保存为灰度图片,不同器官对应任意离散灰度,不是0,1,2…连续标签。如果直接送入CrossEntropyLoss会报错。

    项目解决方案:

  • compute_gray()遍历全部训练集mask,收集所有出现的灰度值,排序后写入grayList.txt;
  • Dataset读取mask时,遍历mask所有灰度值,使用self.txt.index(str(gray))将原始灰度映射成从0开始连续类别索引;
  • 推理预测阶段,模型输出类别索引,再根据grayList映射回原始灰度保存mask图像。
  • 数据预处理流水线:

  • 读取图像转为RGB三通道,mask读取单通道灰度图;
  • resize至固定尺寸224×224;CT模式开启时执行窗宽窗位截断;
  • (image-min)/(max‑min)归一化至0‑1;
  • HWC转为CHW符合PyTorch输入格式;
  • 数据增强:随机水平翻转、随机垂直翻转;mask同步翻转保证标签对齐。
  • 注意坑点:mask缩放必须使用INTER_NEAREST最近邻插值,不能用双三次插值,避免产生无效中间灰度值。

    4 训练配置、损失函数与全套评估指标

    • 损失函数:CrossEntropyLoss多分类交叉熵;
    • 优化器:AdamW,weight‑decay=0.01;
    • 学习率策略:余弦退火LambdaLR;
    • 输入大小224×224;batch_size可调;
    • 评价指标基于混淆矩阵ConfusionMatrix:Pixel‑Accuracy、Precision、Recall、F1‑Score、Dice、IoU,统计除背景外各个器官类别,同时计算mDice、mIoU均值,作为保存最优模型依据。

    训练循环逻辑:

  • 每个epoch执行train_one_epoch训练,evaluate验证;
  • 记录loss、mIoU、mDice;当验证集mIoU高于历史最优,保存best.pth;每个epoch结束保存完整JSON日志;
  • 训练结束自动绘制loss‑iou‑dice曲线、学习率变化曲线。
  • 5 推理模块predict.py功能

    推理流程:读取CT图像 → resize、窗处理、归一化、维度变换送入模型;model.eval()+torch.no_grad推理;argmax获取类别索引;依据grayList映射回原始mask灰度;resize还原原始图像分辨率;保存预测mask灰度图;绘制原图、轮廓叠加掩膜可视化三拼接对比图,输出至inference文件夹。

    6 U‑Net与AttU‑Net对比分析

  • U‑Net基线:参数量更小,推理速度快;但是跳跃连接直接传递全部特征,背景噪声、无关组织特征也被拼接进来,容易出现假阳性,小器官(胰腺、胆囊)分割效果一般;
  • AttU‑Net:增加注意力门控模块,少量额外参数量;依靠门控信号过滤跳跃连接特征,抑制背景干扰;腹腔小器官边界分割质量得到改善;但训练对超参更敏感,训练时间略微增加。
  • 在本腹部CT数据集场景,AttU‑Net预期mDice、mIoU整体优于原生U‑Net,尤其对形态较小的胆囊、胰腺提升更明显。

    基于 U‑Net 与 Attention‑U‑Net 的腹部 CT 多脏器自动分割实现

    赞(0)
    未经允许不得转载:171主机测评 » 第29章:AttU‑Net与U‑Net腹部CT多器官分割完整工程实践
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址