1 基本说明
本文对H-DenseUnet进行了解析,包括网络结构、数据处理、训练测试过程及结果分析。
2 网络结构
网络主要有4个模块组成:ResNet轮廓粗提取、2D DenseUnet提取切片内特征、3D DenseUnet提取切片间特征、HFF层2D和3D特征融合。网络结构图如图2.1。
2D和3D的DenseUnet首先经过由DenseNet Block构成的Unet结构提取切片内部和切片空间特征,然后将两者特征融合并经由HFF层预测最终结果。网络结构解析如表2.1,其中对每一层的网络操作和数据维度进行了计算。表2.2对Dense block进行了描述,以2D DenseUnet中dense block1为例。
表2.1 网络结构解析
ResNet粗轮廓提取部分 |
|||
描述 |
输入 |
输出 |
参数量 |
volumes数据 |
224*224*12 |
--- |
--- |
2D ResNet提取每张切片肝粗糙轮廓 |
224*224*12 |
224*224*12 |
--- |
transformation process(处理成12组三张连续的切片) |
224*224*12 |
224*224*3 |
--- |
2D DenseUnet部分 |
|||
描述 |
输入 |
输出 |
参数量 |
input |
224*224*3 |
--- |
--- |
conv1:7*7,#C 96,#S 2 |
224*224*3 |
112*112*96 |
14208 |
max pool: 3*3, #S 2 |
112*112*96 |
56*56*96 |
--- |
dense block1: |
56*56*96 |
56*56*384 |
747936 |
transition layer1: 1*1 conv,2*2 aver pool |
56*56*384 |
28*28*192 |
73920 |
dense block2: |
28*28*192 |
28*28*768 |
2048832 |
transition layer2:1*1 conv,2*2 aver pool |
28*28*768 |
14*14*384 |
295296 |
dense block3: |
14*14*384 |
14*14*2112 |
11454912 |
transition layer3:1*1 conv,2*2 aver pool |
14*14*2112 |
7*7*1056 |
2231328 |
dense block4: |
7*7*1056 |
7*7*2208 |
9401472 |
upsampling layer1:2*2 upsample |
7*7*2208 |
14*14*2208 |
--- |
sum with dense block3 |
--- |
14*14*2112 |
--- |
conv:3*3,#C 768 |
14*14*2112 |
14*14*768 |
14598912 |
upsampling layer2:2*2 upsample |
14*14*768 |
28*28*768 |
--- |
sum with dense block2 |
--- |
28*28*768 |
--- |
conv:3*3,#C 384 |
28*28*768 |
28*28*384 |
2654592 |
upsampling layer3:2*2 upsample |
28*28*384 |
56*56*384 |
--- |
sum with dense block1 |
--- |
56*56*384 |
--- |
conv:3*3,#C 96 |
56*56*384 |
56*56*96 |
331872 |
upsampling layer4:2*2 upsample |
56*56*96 |
112*112*96 |
--- |
sum with conv1 |
--- |
112*112*96 |
--- |
conv:3*3,#C 96 |
112*112*96 |
112*112*96 |
83040 |
upsampling layer5:2*2 upsample |
112*112*96 |
224*224*96 |
--- |
conv:3*3,#C 64,即文中的X2d |
224*224*96 |
224*224*64 |
55360 |
conv:1*1,#C 3 |
224*224*64 |
224*224*3 |
195 |
总计参数量 |
46978875 |
||
3D DenseUnet 部分 |
|||
描述 |
输入 |
输出 |
参数量 |
2D DenseUnet输出由连续3张切片转化为单张的volume形式(12组) |
12*224*224*3 |
224*224*12*1 |
--- |
与原始数据提取过粗轮廓volume通道连接 |
--- |
224*224*12*2 |
--- |
conv1:7*7*7,#C 96,#S 2 |
224*224*12*2 |
112*112*6*96 |
65952 |
max pool: 3*3*3, #S 2 |
112*112*6*96 |
56*56*3*96 |
--- |
dense block1: |
56*56*3*96 |
56*56*3*192 |
381408 |
transition layer1: 1*1*1 conv,2*2*1 aver pool |
56*56*3*192 |
28*28*3*96 |
18528 |
dense block2: |
28*28*3*96 |
28*28*3*224 |
516736 |
transition layer2: 1*1*1 conv,2*2*1 aver pool |
28*28*3*224 |
14*14*3*112 |
25200 |
dense block3: |
14*14*3*112 |
14*14*3*496 |
1746816 |
transition layer3: 1*1*1 conv,2*2*1 aver pool |
14*14*3*496 |
7*7*3*248 |
123256 |
dense block4: |
7*7*3*248 |
7*7*3*504 |
1099008 |
upsampling layer1:2*2*1 upsample, |
7*7*3*504 |
14*14*3*504 |
--- |
sum with dense block3 |
--- |
14*14*3*496 |
--- |
conv:3*3*3,#C 504 |
14*14*3*496 |
14*14*3*504 |
6750072 |
upsampling layer2:2*2*1 upsample, |
14*14*3*504 |
28*28*3*504 |
--- |
sum with dense block2 |
--- |
28*28*3*224 |
--- |
conv:3*3*3,#C 224 |
28*28*3*224 |
28*28*3*224 |
1354976 |
upsampling layer3:2*2*1 upsample, |
28*28*3*224 |
56*56*3*224 |
--- |
sum with dense block1 |
--- |
56*56*3*192 |
--- |
conv:3*3*3,#C 192 |
56*56*3*192 |
56*56*3*192 |
995520 |
upsampling layer4:2*2*2 upsample, |
56*56*3*192 |
112*112*6*192 |
--- |
sum with conv1 |
--- |
112*112*6*96 |
--- |
conv:3*3*3,#C 96 |
112*112*6*96 |
112*112*6*96 |
248928 |
upsampling layer5:2*2*2 upsample |
112*112*6*96 |
224*224*12*96 |
--- |
conv:3*3*3,#C 64,即文中的X3d |
224*224*12*96 |
224*224*12*64 |
165952 |
conv:1*1*1,#C 3 |
224*224*12*64 |
224*224*12*3 |
195 |
总计参数量 |
13492547 |
||
HFF layer部分 |
|||
描述 |
输入 |
输出 |
参数量 |
2D DenseUnet upsampling layer5 层后的X2d转为volumes结构X’2d |
--- |
224*224*12*64 |
--- |
3D DenseUnet upsampling layer5后X3d |
--- |
224*224*12*64 |
--- |
X’2d和X3d sum求和 |
--- |
224*224*12*64 |
--- |
通过1*1*1卷积或者其他same卷积 |
224*224*12*64 |
224*224*12*3 |
--- |
表2.2 Dense block网络结构
2D DenseUnet 中dense block结构 |
|||
描述 |
输入 |
输出 |
参数量 |
stage1输入 |
56*56*96 |
--- |
--- |
conv1:1*1,#C192,#S 2,same |
56*56*96 |
56*56*192 |
18624 |
conv2:3*3,#C48,#S 2,same |
56*56*192 |
56*56*48 |
82992 |
concat:将输出与stage1 conv2输出通道结合 |
--- |
56*56*(96+48) = 56*56*144 |
--- |
stage2输入 |
56*56*144 |
--- |
--- |
con1v:1*1,#C192,#S 2,same |
56*56*144 |
56*56*192 |
27840 |
conv2:3*3,#C48,#S 2,same |
56*56*192 |
56*56*48 |
82992 |
concat:将输出与stage1、stage2 conv2输出通道结合 |
--- |
56*56*(96+48*2) =56*56*192 |
--- |
stage3输入 |
56*56*192 |
--- |
--- |
conv1:1*1,#C192,#S 2,same |
56*56*192 |
56*56*192 |
37056 |
conv2:3*3,#C48,#S 2,same |
56*56*192 |
56*56*48 |
82992 |
concat:将输出与stage1、stage2、stage3 conv2输出通道结合 |
--- |
56*56*(96+48*3) =56*56*240 |
--- |
stage4输入 |
56*56*240 |
--- |
--- |
conv1:1*1,#C192,#S 2,same |
56*56*240 |
56*56*192 |
46272 |
conv2:3*3,#C48,#S 2,same |
56*56*192 |
56*56*48 |
82992 |
concat:将输出与stage1、stage2、stage3、stage4 conv2输出通道结合 |
--- |
56*56*(96+48*4) =56*56*288 |
--- |
stage5输入 |
56*56*288 |
--- |
--- |
conv1:1*1,#C192,#S 2,same |
56*56*288 |
56*56*192 |
55488 |
conv2:3*3,#C48,#S 2,same |
56*56*192 |
56*56*48 |
82992 |
concat:将输出与stage1、stage2、stage3、stage4、stage5输出通道结合 |
--- |
56*56*(96+48*5) =56*56*336 |
--- |
stage6输入 |
56*56*336 |
--- |
--- |
conv1:1*1,#C192,#S 2,same |
56*56*336 |
56*56*192 |
64704 |
conv2:3*3,#C48,#S 2,same |
56*56*192 |
56*56*48 |
82992 |
concat:将输出与stage1、stage2、stage3、stage4、stage5、stage6 conv2输出通道结合 |
--- |
56*56*(96+48*6) =56*56*384 |
--- |
总计参数量 |
747936 |
3 数据处理
肝切片数据使用LiTS的数据集,总共包含131例和70例病人的数据用于训练和测试,每张切片的分辨率从0.55到1.0毫米,切片厚度从0.45到6.0毫米。数据处理时,首先将数据的范围进行规定,去除无关的数据,文章中将范围设定为[-200,250]。然后根据任务的不同,数据的处理又有一些区别,粗轮廓的提取,将数据的分辨率调整为0.69*0.69*1.0;肝病变的分割时,考虑到病变较小,人工处理可能对切片造成影响,所以采用原始的切片分辨率。训练过程还增加了一些数据增强策略,数据尺度变换和镜像对称等。
4 训练测试过程
优化函数使用预测结果的加权交叉熵函数。
4.1 训练过程
1) 2D粗分割ResNet网络的训练,按照上述数据处理的结果,标签为肝真实分割数据,损失函数为上式;
2) 2D DenseUnet训练:encoder部分采用DenseNet预训练模型,decoder部分随机初始化,首先不增加Unet连接进行训练几代,然后增加Unet连接去优化模型,损失函数为上式;
3) 3D DenseUnet训练:所有参数随机初始化,采用上式约束进行训练;
4) 联合训练:采用下述的约束函数进行联合训练。
4.2 测试过程
首先通过ResNet得到肝部粗轮廓,然后通过H-DenseUnet得到肝和病变轮廓。肝轮廓后处理:通过后处理去除预测结果中的空洞;肝病变后处理:将肝轮廓外部的预测病变去除。
5 结果分析
1) 使用预训练模型与否对结果的影响,使用预训练模型可以得到比较优秀的模型。
2) 单独使用2D DenseUnet和3D DenseUnet对结果的影响,训练速度和效果上3D模型都较2D模型差,而且2D模型包含预训练模型。
3) 2D DenseNet和2D DenseUnet的比较,说明Unet在分割网络中是有效果的。
4) 结果2D和3D的H-DenseUnet不但训练过程还是测试结果,都是所有方法中最好的。