Welcome to paddle-nnUNet’s documentation!¶
认识 nnUNet¶
为什么是 nnUNet¶
毫无疑问,UNet1 几乎是卷积神经网络在医学图像分割领域的基线模型,也出现了许多 UNet 的改进版本, 比如有:V-Net2,UNet++3,nnU-Net4 等。 但在所有改进版本中,nnUNet 作为是一种自适应框架,使用者只需要输入数据,nnUNet 自动根据图像信息在网络架构、预训练、训练、推理方向上调整自身结构, 实现全自动分割流程,取得许多分割任务的 SOTA,成为许多创新方法对比的一个代表性的基准。
nnUNet 框架下包含了数据预处理、网络框架设计、预测结果后处理、参数自动推理,这是一个深度学习医学图像分割, 甚至是医学图像处理的一个非常好的学习示例,如果你也想来入坑,那就让我们开始吧!
nnUNet 工作流程¶
不同于自然图像,医学图像含有着许多特有的属性信息,如:模态(X-ray、CT、MRI)、体素大小(SpacingSize)、窗宽窗位(Window Width and Widow Level), nnUnet 基于图像的这些“指纹”来自动推理预处理和网络参数,而这恰恰就是 nnUNet 最迷人的一个重要点,其工作流程:
给定一个新的分割任务,nnUNet 会提取“数据集指纹”(粉红色);进而,根据“数据指纹”启发式推断的数据相关“基于规则的参数”(绿色); 最后,根据预定义的“固定参数”(蓝色)来确定训练和测试策略,并确定是否需要后处理的“经验参数”(黄色),自动完成全流程操作!
看了上面一段话,是不是一头雾水,一脸迷茫(换我我也会)?不要着急,这个文档里会尽可能详细地给大家介绍清楚所有的操作流程, 以及每个命令背后做了什么操作,请继续往下看!
参考文献
[2] V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation.
[3] UNet++: A Nested U-Net Architecturefor Medical Image Segmentation.
[4] nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation.
你好,paddle-nnUNet!¶
这是我第一次接触百度飞浆(paddlepadddle)平台,之前有接触过TensorFlow、Keras和Pytorch, 由于 nnUNet 是动态更改网络配置,因此本项目是基于 Python 3.0+ 和 paddle ≥ 2.0 支持动态图的版本来进行开发, 如果你想来尝试 paddle-nnUNet,请检查 paddle 版本是否符合要求。
paddle-nnUNet 是将原来基于 pytorch 版本的 nnUnet 全部代码重写移植到 paddle 平台上,含有全部功能以及更多的解释和建议。
安装¶
我们有两种方法按照paddle-nnUNet:
1、使用 PyPi 安装 paddle-nnUNet(推荐)
pip install paddle-nnUNet
2、使用 paddle-nnUNet 源码安装
首先,使用 git
来克隆 paddle-nnUNet
git clone https://github.com/szuboy/paddle-nnUNet.git
然后,cd
到 paddle-nnUNet 的文件夹
cd paddle-nnUNet
最后,运行安装命令
python setup.py install
技术支持¶
你可以在 Github issues 里中提问,在提问之前请确保你阅读过本文档, 作者是一个拥抱开源的开发者,他一定会一一回复的。
如果你觉得本文档对你的研究和使用有所帮助,欢迎为本文档的 Github 加颗星哦,以鼓励作者进一步完善文档内容,提高文档质量。
使用教程¶
通过本教程,你将快速学会 paddle-nnUNet 的使用,轻松进行医学图像分割模型的训练、评估和预测。 我们将以 LiTS 2017 肝脏数据集为例一步一步的教导你如何调用 paddle-nnUNet 模型的构建。
Note:若想更详细地了解 paddle-nnUNet 命令背后的原理操作,请阅读 原理文档
ffff¶
fdasdfa
ddd¶
待补充
错误信息¶
由于考虑到兼容各种编码方式,paddle-nnUNet 的警告/错误信息均是采用英语表达, 为了让飞桨社区的开发者学习掌握 paddle-nnUNet,这里解释常见的错误、可能的原因以及解决方案。
error_1¶
xxxxxx
命令背后的调用¶
在这里,将进一步分析解释每个命令后面 paddle-nnUNet 究竟做了啥操作;如果你同样感兴趣,那我们就一起去探索吧!
待补充中¶
待补充中
开发日志¶
这部分是用来记录开发日志,使用者可不用关心,仅仅用来督促作者抓紧填坑!
2021年05月10日¶
缘起:实验室的一个小师弟报名参加了中国大学生计算机大赛联合百度举办“医学影像挑战赛”, 一项关于喉癌和下咽癌病灶区域分割的任务,我立即回复表示:使用 nnUnet 试试,观察一下基本性能有多少。 然而,paddle 飞浆平台并没有人开发兼容 nnUNet,那就让我来试试吧!
当然啦,我也想来体验一下国产的深度学习框架 paddle 飞浆到底怎么样,随便看看能不能薅薅羊毛,就是这样,很单纯简单的想法!
2021年10月17日¶
忙完一堆事情后,重新在 todolist 中翻出了 paddle-nnUNet 开发日程,并发布占坑了 PyPi 的第一个版本 paddle-nnUNet 1.0.0,只有一行代码:
print('Hello from the paddle-nnUNet. https://paddle-nnunet.readthedocs.io')
2022年4月29日¶
今天突然觉得版本1.0.0
太过正式了,修改为0.0.1
,然后修改了一些错误,把它给删除了,但由于PyPi
的机制不能复原了,所以之后的版本管理中会缺少这两个版本了,从0.0.2
开始,我实在是太难了,很难理解为什么要这么设置,哪怕是我删除了整个package
都不行😭