nnUNet V2代码——数据预处理(一)

前文请看nnUNetv2_plan_and_preprocess命令

阅读nnUNet\nnunetv2\utilities\plans_handling\plans_handler.py文件

文件包含ConfigurationManager类和PlansManager类。

数据预处理共两篇:

nnUNet V2代码——数据预处理(一)

nnUNet V2代码——数据预处理(二)

ConfigurationManager类

1. __init__函数

参数

  • configuration_dict:字典类型,内容是之前生成的nnUNetPlans.json文件

过程

定义类内变量self.configuration;接下来判断architecture键值是否在configuration_dict中。

如果不在nnUNet作者提示“检测到旧的 nnU-Net 计划格式。正在尝试重建网络架构参数。如果失败,请重新运行 nnUNetv2_plan_experiment 为您的数据集。如果您使用的是自定义架构,请将 nnU-Net 降级到您实现该架构的版本,或者更新您的实现和计划。”(机翻的)。

过程是将V1版本的nnUNetPlans.json转换为V2版本。代码不再粘贴

2. 其余函数

参数

过程

按照configuration_dict存储的相应数据函数名称函数参数返回对应的值,过程是查询。代码里可能会有一两个函数比较陌生,没关系,它服务于查询,知道这点就足够了。结构较为清晰,不再粘贴代码。


PlansManager类

本类的作用nnUNet作者在__init__函数里说明了,机翻如下:

我们为什么需要这个?

  1. 解决配置中的继承问题
  2. 暴露那些从字符串中获取标签管理器或 IO 类等烦人的事情
  3. 清晰地暴露计划中的事物,而不是将它们隐藏在字典中
  4. 缓存这些内容

这个类不会阻止你随意使用。如果你愿意,你仍然可以直接使用计划 (PlansHandler.plans[‘key’])

1. __init__函数

参数

  • plans_file_or_dict:例如nnUNetPlan.json

过程

将之前生成的nnUNetPlan.json存入类变量self.plans,用于后续查询

2. __repr__函数

参数

过程

返回self.plans的字符串形式,方便打印

3. _internal_resolve_configuration_inheritance函数

参数

  • configuration_name:配置名称,例如2d

过程

首先检查configuration_name是否存在于self.plans[‘configurations’]中,如果不存在则抛出ValueError。

接下来根据configuration_name获取对应配置(在self.plans[‘configurations’]查询里获取),因为接下来可能会修改获取的配置,为了不改变原有文件(nnUNetPlans.json),要copy一份配置,存入configuration变量。

依照给定的配置类型获取配置后,需要判断是否有inherits_from字段,该字段是3D级联使用的,详见这篇文章的3D级联内容

有inherits_from字段,说明当前配置继承自其他配置,本函数会递归解析父配置,父配置会覆盖当前配置。返回最终更新后的configuration。

4. get_configuration函数

参数

  • configuration_name:配置名称,例如2d

过程

根据configuration_name调用self._internal_resolve_configuration_inheritance函数获取正确的配置,根据此配置实例化ConfigurationManager对象并返回它。

另外,本函数使用了装饰器lru_cache,该装饰器缓存最多10个配置结果,提高性能。

5. 其他函数

参数

过程

按照self.plans存储的相应数据函数名称函数参数返回对应的值,过程是查询代码里可能会有一两个函数比较陌生,没关系,它服务于查询,知道这点就足够了。结构较为清晰,不再粘贴代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值