nnUNet V2代码——构建网络
在运行预处理命令(nnUNetv2_plan_and_preprocess命令)时,我们已经设计好网络结构,例如卷积层数、各层卷积核大小。在训练开始时按照这些信息实例化网络。本文阅读nnU-Net完成这一实例化过程的代码
本文目录
- 一、回顾设计网络结构的关键过程
- 二、阅读网络结构代码
-
- 1. ConvDropoutNormReLU类
-
- 1.1 compute_conv_feature_map_size函数
- 1.2 forward函数
- 1.3 __init__函数
- 2. StackedConvBlocks类
-
- 2.1 compute_conv_feature_map_size函数
- 2.2 forward 函数
- 2.3 __init__函数
- 3. PlainConvEncoder类
-
- 3.1 compute_conv_feature_map_size函数
- 3.2 forward函数
- 3.3 __init__函数
- 4. UNetDecoder类
-
- 4.1 compute_conv_feature_map_size函数
- 4.2 forward函数
- 4.3 __init__函数
- 5. PlainConvUNet类
-
- 5.1 compute_conv_feature_map_size函数
- 5.2 forward函数
- 5.3 __init__函数
- 5.4 initialize函数
- 6. ResidualEncoderUNet类
- 三、阅读实例化网络结构代码
-
- get_network_from_plans函数
一、回顾设计网络结构的关键过程
在nnUNet V2代码——生成nnUNetPlans.json(二)中,阅读了get_pool_and_conv_props函数。这个函数的核心过程是逐步缩小特征图的尺寸,直到达到最小,并在此过程中收集每次缩小时使用的卷积核大小(kernel size)和步幅(stride)。基于这些信息,上层的get_plans_for_configuration函数会进一步确定U-Net的网络结构层数,并估算出所需的显存使用量。
为了确保显存使用量在当前设备的合理范围内,nnU-Net