nnUNet 详细解读(一)论文技术要点归纳

简介: nnUNet 详细解读(一)论文技术要点归纳


nnUNet


摘要


提出了一种基于2D和3D UNet的自适应框架nnUNet,无需手动调参,平均DICE最高。


介绍


总共10个数据集,7个用于训练阶段,3个用于评估阶段,且不能手动调参


作者提出的nnUNet,基本没改变UNet的结构,主要工作中心在于:


预处理:resampling和normalization


训练:loss,optimizer设置、数据增广


推理:patch-based策略、test-time-augmentations集成和模型集成等


后处理:增强单连通域等


方法


网络结构


  • 2D UNet

  • 3D UNet

  • UNet级联:第一阶段对低分辨率图像进行粗分割,第二阶段进行微调,两个阶段用的都是
  • UNet


修改点


  • 激活函数采用leaky Relu

  • 归一化采用 instance normalization

网络拓扑动态适应


输入图像大小 不是固定的,为了节省资源,因此需要动态权衡批次大小和网络容量。例如:


3D UNet:


crop-size<=128x128x128(中值尺寸小于128时,采用中值尺寸


batch-size>=2


base_channel=30


pooling to size>=8


poolingnum<6


2D UNet:


crop-size<=256x256(中值尺寸小于256时,采用中值尺寸)


batch-size<=42


base-channel=30


pooling to size>=8


pooling_num<6


预处理


整体数据Crop:只在非零区域内裁剪,目的是为了减少计算消耗


Resample:数据集中存在不同spacing的数据,默认自动归一化到数据集所有数据spacing的中值spacing。原始数据使用三阶spline插值;Mask使用最邻近插值。


UNet 级联采用特殊的Resample策略:中值尺寸大于显存限制下可处理尺寸的4倍时(batch-size=2),采用级联策略,对数据进行下采样(采样2的倍数,直到满足前面的要求);如果数据分辨率三个轴方向不相等,先降采样高分辨率轴使得三轴相等,再三轴同时降采样直到满足上述要求。


Normalization:


CT:通过统计整个数据集中mask内像素的HU值范围,clip出[0.05,99.5]百分比范围的HU值范围,然后使用z-score方法进行归一化;


MR:对每个患者数据单独执行z-score归一化。


如果crop导致数据集的平均尺寸减小到1/4甚至更小,则只在mask内执行标准化,mask设置为0.


训练


所有模型采用5折交叉验证,重头开始训练,损失函数采用DICE损失和交叉熵损失函数。


对于3D UNet和UNet级联的第一阶段,每个样本单独计算DICE loss,然后在一个batch上做平均。


对于其他网络,计算整个batch的DICE loss


Adam优化器,学习率3e-4


250个batch/epoch


学习率调整策略:计算训练集和验证集的指数移动平均loss,如果训练集的指数移动平均loss在30个epoch内减少不够5e-3,则学习率衰减5倍;


训练停止条件:当验证集指数移动平均loss在60个epoch内减少不够5e-3,或者学习率小于1e-6,则停止训练。


数据增广


随机旋转、随机缩放、随机弹性变换、伽马校正、镜像


patch采样:


为了增加网络的稳定性,patch采样的时候会保证一个batch的样本中有超过1/3的像素是前景类的像素。这个很关键,否则你的前景dice会收敛的很慢。


推理


所有的推理都是基于patch的。


patch的边界上精度会有损,因此在对patch重叠处的像素进行fuse时,边界的像素权重低,中心的像素权重高;patch重叠的stride为size/2;使用test-data-augmentation(增广方式:绕各个轴的镜像增广);使用了5个训练的模型集成进行推理(5个模型是通过5折交叉验证产生的5个模型)


后处理


主要就是使用连通域分析


目录
相关文章
|
机器学习/深度学习 编解码 计算机视觉
Transformer又一城 | Swin-Unet:首个纯Transformer的医学图像分割模型解读
Transformer又一城 | Swin-Unet:首个纯Transformer的医学图像分割模型解读
2835 0
|
7月前
|
Python Windows
Miniconda 安装与环境配置全流程图解(2025 最新版)
Miniconda 可以看作是 Anaconda 的“轻装版”,只自带 conda 包管理器与基础的 Python 运行时。它体积小、部署速度快,特别适合按需创建与管理虚拟环境的用户。与 Anaconda 相比,Miniconda 不会预先安装一大堆科学计算库,你可以根据项目需求再单独选择、安装需要的包,因此整体更轻巧、更灵活。 本文将手把手演示在 Windows 下安装 Miniconda 的全过程:从下载安装器、完成向导配置、设置环境变量,到最后的基础验证与简单示例,帮助你迅速把 Miniconda 用起来。
8805 12
|
存储 数据采集 机器学习/深度学习
LIDC-IDRI肺结节数据集分割策略
本文介绍了使用LIDC-IDRI开源数据集进行肺癌检测项目的完整流程,包括数据预处理、训练分割模型和分类模型三个主要步骤。首先,下载包含患者DICOM文件的数据集;其次,克隆预处理代码并配置Pylidc库以生成肺部遮罩图像;最后,通过脚本准备数据集并创建元数据文件。文章还提供了相关GitHub资源链接,帮助读者更好地理解和实现项目。
2002 11
LIDC-IDRI肺结节数据集分割策略
|
8月前
|
数据采集 缓存 机器人
《API网关在智能制造产线协同中的定制化实践与可靠性重构》
本文聚焦API网关在汽车焊装车间的定制化实践,针对工业协议多样、车间环境抗干扰差、脉冲式流量等痛点,选型APISIX构建“设备接入层+指令转发层”双层架构。通过自研工业协议适配插件、智能数据清洗单元解决协议适配与抗干扰问题;设计生产场景动态优先级调度与分布式削峰池应对流量波动;以“本地缓存+断点续传+指令确认”保障数据可靠,植入生产场景标签实现故障精准溯源。改造后设备数据延迟缩至200ms内,指令成功率达99.7%,产线效率提升15%,为智能制造场景下API网关实践提供可靠路径。
303 8
|
12月前
|
人工智能 API 开发者
智能体(AI Agent)开发实战之【LangChain】(一)接入大模型输出结果
LangChain 是一个开源框架,专为构建与大语言模型(LLMs)相关的应用设计。通过集成多个 API、数据源和工具,助力开发者高效构建智能应用。本文介绍了 LangChain 的环境准备(如安装 LangChain、OpenAI 及国内 DeepSeek 等库)、代码实现(以国内开源大模型 Qwen 为例,展示接入及输出结果的全流程),以及核心参数配置说明。LangChain 的灵活性和强大功能使其成为开发对话式智能应用的理想选择。
|
搜索推荐 物联网 PyTorch
Qwen2.5-7B-Instruct Lora 微调
本教程介绍如何基于Transformers和PEFT框架对Qwen2.5-7B-Instruct模型进行LoRA微调。
14355 34
Qwen2.5-7B-Instruct Lora 微调
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
27662 59
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
计算机视觉
限制对比度自适应直方图均衡化
【6月更文挑战第12天】限制对比度自适应直方图均衡化。
504 1
|
算法 定位技术 C++
A* 算法详解(超级详细讲解,附有大图)
A* 算法详解(超级详细讲解,附有大图)
10223 0