(一:2020.07.06)nnUNet论文主体解析(8.02更新认识)

讲在前面

  • 一.更新于2020.07.10,读完整篇nnUNet的20年4月份发表的论文,在更深的理解之后,做一些修正;
  • 二.我设计了几种字体颜色用于更加醒目地表现关键的思想和主题:
    • 红色表示尚未理解透彻的一些概念
    • 蓝色表示对原来的理解做的一些修改或补充
    • 绿色表示此处需要参考的论文其他部分
    • 橙色表示本文的重要关键字
    • 我会用删除线将自己曾经不到位的理解进行删除
  • 三.一些关键字总结(对于理解整篇论文都相当有必要,按照文中意思进行的理解):
    • 1.实验者( end-users):医学图像分割的实践者和研究人员
    • 2.病例(cases):在本文包括之后的文章,我都会把case翻译成病例,一个病例指的就是一套CT。
    • 3.数据指纹(data fingerprint):数据属性的集合
    • 4.管道指纹(pipeline fingerprint):从数据到模型这个过程中所经历的参数和设计方法;
    • 5.启发性规则( heuristic rules):一些医学图像处理的专业知识的集成和经验的总结,当你想通过数据指纹计算出所需要的管道指纹时,正是依靠的这些算法和方法;

摘要

        医学图像作为科学研究的重要驱动和医疗界的核心元素,最近被深度学习深深的刺激。而语义分割使得很多领域的3D图像分析和应用成为可能,而且针对不同的任务的不同的方法都是不简单的,而且相当依赖数据集的质量和硬件条件。我们提出nnUNet,一种浓缩了该领域的大部分知识,并且具备自动为不同任务设计不同训练方案的框架(源自一个最基本框架的衍生)。不需要人工进行调参,nnUNet在19个国际竞赛中取得最优结果,而且在49个任务的大多数中,都达到了SOTA级别。结果证明了这种深度学习的自适应机制具有巨大的潜力。我们将该框架开源,使得它变得开箱即用,只是为了使得这种SOTA级别的方法更加平民化,从而来促进自动化框架设计的发展。


论文内容

1.介绍

        语义分割将医学图像转化成有意义的空间结构信息,因此对医学的发展有相当必要的作用,尤其对于很多临床应用来说是十分必要的元素,比如一些与人工智能相关的诊断系统、治疗计划、术中协助以及肿瘤的生长监视。自动的医学图像分割是如此的火热,以至于国际上的图像分析赛事有将近70%是有关于医学图像的。
        尽管最近基于深度学习的图像分割方法取得了重大的进展,但是对于终端用户实验者 来说,这些方法都有特定问题上的局限性。某个特定的分割任务的设计往往需要大量的实验时间和很高的训练水平,往往一个很小的错误就会导致一个巨大的效果落差。尤其是在3D医学图像领域,遇到图片质量、图片模态、图片大小、体素大小、类别比率都有差别的这种挑战,这时整个方法的设计可能就会非常笨重和繁琐,因此适应于其他数据或任务的好的优化方法(参数)可能对你手头的任务和数据并没有太大作用。大部分专业的人士做的事情,都是从网络结构的优化设计,到数据增强和后处理。每一个子组件都由一些基础的超参数所决定,例如learn rate、batch size、或者class sample
        还有另一个问题就是训练和推理对于硬件的需求。算法的优化往往依赖于对高纬度的超参数的需求,由于训练范例 病例(cases):的增多也会使得计算资源几何式增长。导致的结果就是,实验者通常都会经过千百次的实验之后得到一个不好的结果,其实这是和他们自己的任务和数据集特性相关的,而且这种错误很难说明也不好复制,他们便不可避免的得到了并不是最佳的方法或者并不适用于其他数据集的研究成果。
        有篇论文对这些情况做了一些解释反而使情况变得更加复杂,这个研究的很大一部分对于非专业人士来说是难以理解的,甚至对于专业人士来说也很难评估。2015年共有将近12000片论文引用了UNet用来作为医学图像分割的工具,并且很多对UNet做了拓展和改进。我们假设最原始的UNet仍然是足够强大的,只要它具备足够合适的设计。
        最后,我们提出了nnUNet,最终这个网络使得医学研究的实际应用成为了可能,至于这个框架为什么可以适应任意的数据集并且能够开箱即用,主要缘于以下两点:

  • 1.我们用公式来明确表示与数据的关键属性有关的“管道”(方法)优化问题和分割算法的一些关键的设计选择;
    • 数据指纹(data fingerprint):(表示数据集的关键属性)
    • 管道指纹(pipeline fingerprint):(表示‘管道’关键的优化设计)
  • 2.我们通过将大多数的理论知识集成为一种启发性规则,来使得上面两者的关系更加的准确,这个规则可以从原有的data fingerprint中生成出pipeline fingerprint(即我可以通过数据的性质来推出它可能需要进行什么样子的训练),同时将硬件的局限条件考虑进去。

        与专门为不同的训练任务调节不同的参数设置不同的算法不一样的是,nnUNet很容易就能执行系统性的规则,并依据看不见的数据集来生成相关的深度学习的方法,而且还不需要进一步的优化。
        接下来,我们会证实我们概念的先进性,看看各项挑战究竟是如何在我们的算法之下实现最优的效果的。这些强有力的结果更加证明了,对于那些想要做语义分割的使用者来说,nnUNet的巨大意义:nnUNet作为一款开源工具,可以被轻松的下载和使用,并且轻而易举就可以训练出SOTA级别的模型,甚至不需要专业的知识储备。我们进一步证实了最近的很多医学图像分割方法的缺点。我们尤其深入的的了解了2019年的KiTS挑战,同时证明了与选择一些相当顶尖的先进的Unet网络架构相比,针对不同任务而进行的不同的设计和参数的调整方法似乎更加重要。nnUNet让所有的研究人员对此更加充满热情,这样也就有了更多的实验结论可供参考,无形中为医学图像领域的方法论发展也起到了促进作用。


2.结果

        nnUNet是一个不需要任何实验设计和参数调节就可以为你训练3D医学图像的深度学习语义分割框架。一些对于比较典型的数据集的分割效果在图一中展示。

  • (图一):nnUNet掌握了数据集的多样性和标签的属性: 以上所有的测试集都来自nnUNet对国际上各项挑战赛事的数据集的应用,左边是原数据的标签,右边是nnUNet模型的推理结果。所有这些可视化操作是在MITK上进行的。
    图一

  • (图二):人为调节的参数和本文提出的自动参数调节对比:

    • a) 最近普遍的深度学习的步骤:进行迭代式的训练和调参,训练之后评估结果,效果不好则进行调参,调参之后继续训练,最终进行侦测,反复如此;
    • b) nnUNet:
      • 1.数据【无论是训练数据还是测试数据,都具有相对应的属性,即指纹】的属性会被总结成一种“数据指纹”;
      • 2.一系列的启发式的规则会推理出适合这种指纹的“管道”(由蓝图参数(计划参数)推理得出):
      • 3.上一步推理出的参数,例如image resample、batch_size等,联合起来成为“管道指纹”:
      • 4.2D、3D和3D_Cascaded三个网络分别训练,得出各自的模型(三个网络结构共享一个“管道指纹”,五折交叉验证)
      • 5.选择出最优的模型进行推理(可以单个进行推理,也可以三个模型一起进行推理)
        在这里插入图片描述

1.nnUNet可以自动适应任何新的数据

        图二(a)展示了近来的多数医学图像分割是如何进行一个新的数据集的训练的。这个过程是“专家驱动”的,而且需要长时间的人为的试错的过程,显然,这样的训练方式对于手头上要处理的数据可能极少有先兆的参考。图二(b)中nnUNet却将这个自适应的过程系统化。
        因此,我们在此定义了一个类似于“图片大小”这样的标准数据集的属性——dataset fingerprint(数据指纹),和一个pipeline fingerprint(管道指纹)[一个训练计划中各个配置的合体]。对于一个给定的“数据指纹”,nnUNet负责生成一个指定的“管道指纹”。

  • 在nnUNet中,这些“管道指纹”被分为蓝图参数推理参数经验参数
    • 1.蓝图参数
      • ① 基础的网络架构选择:比如一个朴素的nnUNet网络;
      • ② 易于选择的一些表现较好的常用超参数:比如损失函数、训练进度表、数据增强方式;
    • 2.推理参数
      • ① 对一个新数据集进行适应性的编码,包括新的网络拓扑结构、patch_size、batch_size和图像预处理;
      • ② ‘数据指纹’和‘管道指纹’两者之间的关系可以通过执行一系列启发式的规则来进行建立,而且遇到未知的数据集时也不需要昂贵的反复训练的代价;
      • ③ 注意许多的设计选择都是相互依赖的:举个栗子
  • 73
    点赞
  • 222
    收藏
    觉得还不错? 一键收藏
  • 31
    评论
在CentOS 7上源码安装MySQL 8.0.2需要遵循以下步骤: 1. 确保你的系统已经安装了必要的软件包,包括开发工具和编译工具。你可以使用以下命令来检查是否已经安装了这些软件包: ```sql yum install -y gcc gcc-c++ make openssl-devel ``` 如果还没有安装,可以使用以下命令进行安装: ```sql yum install -y gcc gcc-c++ make perl openssl-devel ``` 2. 下载MySQL 8.0.2的源代码包。你可以从MySQL的官方网站上找到下载链接。 3. 解压源代码包: ```bash tar -zxvf mysql-8.0.2-linux-glibc2.3-x86_64.tar.gz ``` 4. 进入解压后的目录: ```bash cd mysql-8.0.2-linux-glibc2.3-x86_64/ ``` 5. 配置MySQL: 运行以下命令来配置MySQL: ```bash ./configure --prefix=/usr/local/mysql --with-server-suffix="-7" --with-mysqld-user=mysql --with-innodb --with-zlib --with-readline --with-openssl --enable-thread-safe-client ``` 确保将`--prefix`参数设置为你要安装MySQL的目录,`--with-server-suffix`参数设置为适当的后缀,以匹配你的CentOS版本(在CentOS 7上为"-7")。其他的参数可以根据你的需要进行适当的调整。 6. 编译MySQL: 运行以下命令来编译MySQL: ```go make all test -j4 ``` `-j4`参数表示使用多线程进行编译和测试。你可以根据你的系统性能调整这个参数。 7. 安装MySQL: 运行以下命令来安装MySQL: ```bash make install ``` 8. 创建MySQL的数据目录和配置文件: 运行以下命令来创建MySQL的数据目录和配置文件: ```bash mkdir -p /var/lib/mysql/ /etc/my.cnf /var/log/mysql/error.log ``

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值