原文地址: DenseVoxelNet
1. 方法的advantage
- 通过一种紧密连接的机制最大限度地保留了各层之间的信息流动,从而简化了网络训练。
- 通过鼓励特征重用来避免学习冗余的特征映射,因此需要更少的参数来实现高性能,这对于训练数据有限的医疗应用是至关重要的。
- 增加了辅助的边路径来加强梯度的传播,使学习过程更加稳定。
2. 网络结构
其他的方法要么非常慢,要么没有用到3D信息。用到了3D信息的网络,例如: 3 D F r a c t a l N e t , 3 D U n e t , V o x e l R e s N e t 3D FractalNet, 3D Unet, VoxelResNet 3DFractalNet,3DUnet,VoxelResNet产生的channel非常多,有非常多的参数需要调整。因此采用有限数量的MR来训练是很有挑战性的。
该网络受限具备DenseNet的所有优势。另外进一步提高了网络内部的梯度流动,并通过辅助侧路径稳定了学习过程。
大致结构如下:
详细结构如下:
其中的每个conv和deconv操作都是3D。
其中有2个dense block, 每个dense block有12个dense connections.
最开始的conv结构为: kernel_size=3, stride=2, padding=1
每个dense block中的conv结构为: kernel_size=3, stride=1, padding=1,
中间用
B
N
,
R
e
l
u
,
C
o
n
v
(
1
×
1
×
1
)
M
a
x
P
o
o
l
i
n
g
(
2
×
2
×
2
)
BN, Relu, Conv(1\times 1\times 1) MaxPooling(2\times 2\times 2)
BN,Relu,Conv(1×1×1)MaxPooling(2×2×2)连接两个dense block.
其中Deconv结构均为: kernel_size=4, stride=2,
在辅助路线上Deconv的初始化方法(weight filter)为bilinear_3D, 最后面的2个Deconv的初始化方法(weight filter)为gaussian.
为避免过拟合,中间使用了dropout_rate=0.2.
3. 训练方法
使用caffe训练,权重使用gaussian初始化(
μ
=
0
,
σ
=
0.01
\mu=0, \sigma=0.01
μ=0,σ=0.01),使用SGD优化器(batchsize=3, weight_decay=0.0005, momentum=0.9)。初始学习率learning_rate=0.05,L2正则化系数(weight_decay)为0.0005. 学习过程中使用了多项式学习率衰减策略,即:
L
e
a
r
n
i
n
g
R
a
t
e
=
I
n
i
t
i
a
l
_
L
e
a
r
n
i
n
g
R
a
t
e
×
(
1
−
i
t
e
r
m
a
x
_
i
t
e
r
)
p
o
w
e
r
LearningRate = Initial\_LearningRate\times(1 - \frac{iter}{max\_iter}) ^ {power}
LearningRate=Initial_LearningRate×(1−max_iteriter)power
学习速率衰变曲线为:
刚开始时learning_rate为初始值,当最终训练结束, iter=max_iter,此时learning_rate=0.
文中 m a x _ i t e r = 15000 , p o w e r = 0.9 max\_iter=15000, power=0.9 max_iter=15000,power=0.9.
训练中无法将整幅3D输入网络,因此采用随机cropping的方式,每次crop出一个 64 × 64 × 64 64\times 64\times 64 64×64×64的sub_volume,最终的预测结果通过有重叠的sub_volume经过major voting strategy来产生,即少数服从多数的投票策略。
数据增广策略为:
- 旋转: 90, 180, 270度
- 翻转: 绕xy, yz, xz平面
文中通过比较,证明DenseVoxelNet比3D Unet, VoxelResNet效率好。