nnU-Net介绍

部署运行你感兴趣的模型镜像

        nnU-Net的文章:《nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation》。

nnU-Net介绍

        nnU-Net 是德国癌症研究中心推出的“自调参”医学分割框架:它沿用经典 U-Net 结构,却能根据任意 CT/MR 数据自动算出网络形态、预处理、训练与后处理超参,零代码即可复现甚至超越论文 SOTA,被业内视为“无脑出 baseline 的神器”。

        nnU-Net 的“网络骨架”仍然是 U-Net(encoder-decoder + skip-connection),但它并不是原样复制经典 U-Net,而是在结构、训练、推理全流程做了大量自动化微调。

        关于U-Net的讲解请看博主的这篇文章:

https://blog.youkuaiyun.com/qq_73038863/article/details/151991801?fromshare=blogdetail&sharetype=blogdetail&sharerId=151991801&sharerefer=PC&sharesource=qq_73038863&sharefrom=from_link

nnU-Net改进点

        首先,nnU-Net会根据输入图像的维度(2D或3D)自动选择合适的网络架构。对于3D医学图像,nnU-Net会优先选择3D U-Net,以充分利用图像的三维信息。然而,当3D图像的某一维度分辨率较低(例如CT图像的z轴分辨率较低)时,3D卷积可能会引入过多的插值误差,此时nnU-Net会自动切换到2D U-Net或基于3D U-Net的级联架构(U-Net Cascade)。级联架构首先在低分辨率图像上进行初步分割,然后将分割结果上采样到原始分辨率,并作为额外的输入通道与原始图像一起输入到高分辨率的3D U-Net中进行精细分割。下图展示了nn-Unet针对不同数据集自动配置的三种基础网络结构的参数:

(1)将原始的ReLU激活函数替换为Leaky ReLU,以缓解梯度消失问题,Leaky ReLU公式为:

(2)将批量归一化(Batch Normalization)替换为实例归一化(Instance Normalization),以减少不同批次数据之间的统计差异对模型训练的影响。

        实例归一化公式为:

(3)nnU-Net统一采用了Dice损失与交叉熵损失相结合的混合损失函数,以平衡分割的准确性和平滑性。

(4)Strided Conv代替max pooling:
        通过可学习的卷积核对局部区域进行加权组合;
        能自适应地提取下采样特征(比如边缘、纹理);
        保留更多语义信息,且梯度可回传,训练更充分。

(5)自适应超参

        nnU-Net的自适应超参贯穿“预处理-训练-后处理”三阶段且全程无需人工:

①预处理阶段,读取数据集指纹后立即用硬编码规则自动更新网络拓扑(降采样次数、初始通道、级联/2D/3D分支)、patch与batch大小;

②训练阶段,固定学习率等大部头,仅对“深层监督权重+损失Dice/CE比例”这6组配置做5折交叉验证后自动更新最优组合,并依指纹开关弹性形变等数据增强;

注:5折交叉验证把训练集平均分成5份,轮流取1份当验证折、其余4份训练,循环5次,确保每个样本都做过1次验证,既用来挑超参又给出稳定性能估计。

③训练一结束,nnU-Net立即在验证折上跑一次推理,接着跑两条固定规则的后处理:

A. remove_small_connected_components——把小于某个体素阈值的孤岛直接删掉;

B. apply_classes_postprocessing——对每个类别单独找一个最优概率阈值(0.2~0.8 步长 0.1),把低于阈值的体素置 0。

        接着分别算一次 Dice,只要比“原图”高就保留,不高就退回原图。

        如果这次任务同时训练了 2D、3D、级联三个模型,框架再把验证折上 Dice 最高的单个模型(或最优两模型平均)选为“最终集成方案”,至此所有超参锁定,推理时不再变动。

补充

        下面的表格是unet与nnunet的区别:

模块 / 操作原始 U-NetnnU-Net(默认 3D)说明
下采样方式MaxPool3d(kernel=2)Conv3d(..., stride=2, padding=1)nnU-Net 用带步长的卷积代替池化,可学习、保留更多信息
上采样方式ConvTranspose3d(kernel=2, stride=2)Interpolate(如 trilinear) + Conv3d(kernel=3, padding=1)nnU-Net 不用转置卷积,避免棋盘伪影
归一化层无 或 BatchNorm3dInstanceNorm3d医学图像 batch size 小,BN 不稳定,IN 更鲁棒
激活函数ReLULeakyReLU(negative_slope=1e-2)缓解 ReLU 神经元死亡问题
初始通道数6432nnU-Net 起始通道更少,节省显存(尤其对 3D)
卷积块内部顺序Conv → ReLU → Conv → ReLUConv → InstanceNorm → LeakyReLU → Conv → InstanceNorm → LeakyReLUnnU-Net 在每个卷积后都加 Norm + leaky relu
网络深度固定(通常 4 层下采样)数据自适应(4–6 层)nnU-Net 根据图像大小自动决定下采样次数

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

03-26
### NNU-Net 深度学习框架的使用教程与实现细节 #### 1. 背景介绍 NNU-Net 是一种基于 U-Net 的改进架构,广泛应用于医学影像分割领域。它通过优化预处理、模型训练和后处理流程,在多种任务上表现出卓越性能[^3]。其核心理念在于自动化的参数调整和灵活适应不同的数据集。 #### 2. 安装环境 要运行 NNU-Net,需先配置 Python 环境及相关依赖库。以下是推荐的安装步骤: ```bash pip install nnunet ``` 如果需要从源码编译,则可以克隆官方仓库并按照说明进行构建: ```bash git clone https://github.com/MIC-DKFZ/nnUNet.git cd nnUNet pip install -e . ``` 此外,还需确保 GPU 驱动程序已正确安装,并验证 PyTorch 是否能正常调用 CUDA 设备。 #### 3. 数据准备 NNU-Net 对输入数据有严格的要求,通常需要遵循特定目录结构来组织文件。假设目标任务编号为 `TaskXXX`,则应创建如下路径: ``` ./nnUNet_raw_data_base/ ├── TaskXXX_YourDatasetName ├── imagesTr # 存放训练图像 (命名格式:case_id.nii.gz) ├── labelsTr # 存放标注掩膜 (命名格式同上) ├── imagesTs # 可选测试集图像 ``` 完成上述操作后,执行脚本以生成标准化的数据分区: ```bash nnUNet_plan_and_preprocess -t XXX --verify_dataset_integrity ``` 此命令会自动生成适合后续实验的基础设置文件。 #### 4. 模型训练 启动训练过程之前,选择合适的网络维度(2D, 3D lowres, 3D fullres 或者 3D cascade fullres)。例如,针对三维全分辨率模式下的某项任务,可运行以下指令: ```bash nnUNet_train 3d_fullres nnUNetTrainerV2 TaskXXX_name fold_number ``` 其中 `fold_number` 表示交叉验证中的分组索引[^2]。默认情况下支持五折划分策略。 #### 5. 测试评估 当训练完成后,可通过预测阶段检验模型表现。指定待测样本所在位置以及期望保存结果的位置即可: ```bash nnUNet_predict -i input_folder -o output_folder -t TaskXXX_name -m 3d_fullres ``` 以上命令将加载最优权重并对给定图片实施推理运算。 #### 6. 自定义扩展 对于特殊需求场景,可能希望进一步定制化 I2U-Net 中提到的功能特性[^1]。比如引入额外损失函数或者修改骨干网络组件等动作均属可行范围之内。此时建议深入研究原始代码逻辑,定位至对应部分后再做相应改动尝试。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值