大致框架
主要内容
- 数据预处理与扩充
- 网络基本架构
1)基于卷积神经网络(CNN)的编码器 - 解码器架构
包括较大的编码器与较小的解码器,其中编码器用于提取输入图像的深度特征,解码器用于重建密集的分割掩码。
2)额外分支—— 变分自动编码器
在编码器的结束节点使用,用于重建原始输入图像与特征聚类结果的优化,为编码器输出结果增加额外的导向与正规化。 - 损失函数
- 优化与规范化
数据预处理与扩充
(这里我觉得很奇怪,不知道为什么原文作者要把预处理模块放到Method的最后一部分来说,甚至后于优化与规范化,笔记里我先移到前面)
数据预处理与扩充包括三个主要内容:
- 标准化输入图像,使其具有零均值与单位标准差。(仅针对非零体素)
- 针对输入图像的每个通道进行随机强度偏移,并进行缩放。
- 对输入图像的三轴数据都进行随机轴镜像翻转。
编码器
- 基本架构:
一系列ResNet块的组合。
其中,每个块包括两个带有组规范化(Group Normalization)与ReLU函数的卷积组成,并伴随着附加的身份跳过连接(identity skip connection)。 - 流程:
以步长为2的传统CNN方法,
1)逐步缩小图像维度;
2)同时增加特征大小。
CNN网络大小:3x3x3,32个初始过滤器。 - 输出:
数据大小:256x20x24x16(在空间上比原始输入图像小8倍)
解码器
- 基本架构:
与编码器类似,但是每个空间级别具有单个块。 - 流程:
1)以步长为2,大小为1x1x1的CNN网络来减少特征数量;
2)利用3D双线性上采样实现空间维度加倍;
3)添加等效空间级别的编码器输出。 - 输出:
数据大小与特征数量与原始输入图像相同。
随后,是1x1x1大小的卷积为3个通道和sigmoid函数。(followed by 1x1x1 convolution into 3 channels and a sigmoid function.)(没看明白,作者太爱用followed by了,分不清这里具体主体是啥…)
变分自动编码器 (VAE)
- 基本架构:
与解码器类似,除了没有附加的身份跳过连接(identity skip connection)。
- 始于:
编码器的结束节点。 - 流程:
1)利用大小为1x1x1的卷积,将输入(即编码器结束节点的输出)减少到大小为256的低维空间(128代表均值,128代表标准差);
2)从具有给定均值和标准差的高斯分布中进行样本抽取;
3)按照与解码器相同的架构将数据重建至大小与输入图像相同。
损失函数
其中,
-
Ldice表示软块损失,求解公式如下:
ppred为解码器输出, ptrue为分割掩码。
由于解码器的分割输出结果为三通道(三个肿瘤子区域预测结果),此处简单将三个软块损失函数相加。 -
LL2为 L2损失,求解公式如下:
Ipred为变分自动编码器分支输出, Iinput为输入图像。 -
LKL为标准变分自动编码器惩罚项(penalty term),是估计正态分布 N(μ,σ2)与先前分布 N(0,1)之间的 KL差异,其具有封闭形式表示:
N为图像像素数量。
凭经验发现超参数权重为 0:1 时可在整体损失函数中为软块损失与变分自动编码器损失项之间提供良好的平衡。
优化与规范化
-
优化
利用Adam Optimizer实现,初始学习率为 α0=1e−4 并根据如下表达式进行逐步增加:
其中, e 是迭代周期计数器, Ne 是迭代周期总数。 文章将batch大小设定为1,并以随机顺序绘制输入图像(确保每个训练图像每个周期绘制一次)。 -
规范化
针对权重为 1e−5 的卷积核参数使用L2范数正则化,并对于初始编码器卷积后结果进行比率为 0.2 的空间丢失(spatial dropout)。