V-Net论文笔记

原文:《V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation》
一、这篇文章的核心思想
1、提出了可以应用在三维图像(volume)上的编码器-解码器(Encoder-Deconder architecture)结构的网络。基本结构和U-Net是很类似的。
2、改进了损失函数(loss function),以解决图像分割任务中,前景(foreground)与后景(background)比例不平衡带来的问题。
二、V-Net
V-Net论文笔记_第1张图片
从上图中可以清楚的看到这个网络的结构,这里对一些细节做出说明:
1、在该网络的左半部分(在原文中称compression path)共有5个阶段(stage)。在每个阶段内进行的卷积使用恰当大小的零填充(appropriate padding)来保证输出与输入大小一致。
2、左半部分前4个阶段末有降采样,这些降采样使用的是2* 2* 2的卷积核,而没有用池化的方法。下图给出了降采样和上采样的细节。
V-Net论文笔记_第2张图片
3、最右侧在经过最后一层卷积层(111的卷积核)之后,得到两个与输入等大的三维特征图,其中的值分别代表对应位置体素(voxel)在前景和后景这两类上的得分(s前与s后)。而这两个三维特征图经过softmax层后的输出还是一个与起始输入等大小的三维特征图,数组中每个值是对应位置体素分类到前景的概率。即p=es前/(es前+es后)。
4、使用了残差网络的结构来加速收敛。
5、注意三维图像与二维图像的不同:三维图像的每一个通道(channel)都是一个三维数组(在图中是一个立方体);三维的卷积卷积核不但在x,y方向有移动,还会在z方向移动。
三、Dice loss层
1、使用softmax损失函数进行权值优化(optimization)的问题:在医学图像里,如果是二值化处理,前景是需要标识出来组织、病灶等结构(anatomy of interest)。但因为前景所占比重较小,如果采用softmax损失函数,在训练过程中,权重调整很容易陷入局部最优,即对后景的预测多于实际(因为后景占比大,错误预测成后景也能使loss值比较小)。这样就出现了前景预测不全的现象。
2、已有的解决办法是使用sample re-weighting的方法,增大对前景预测错误的惩罚力度。
3、在这篇文章中使用的方法是:先对softmax输出的三位特征图做处理,其中的每个元素若大于0.5则赋值为1,否则赋值为0,这样就得到了二值预测分割图(binary segmentation volume)。结合另一个二值三维图ground truth,就可以用下面的公式计算损失值D了。 V-Net论文笔记_第3张图片
需要注意的是,这里权值优化的目的是使D的值最大。D的值的取值范围在0到1之间。
四、有关训练的其他细节
1、Mini-bach
Mini-batch size:2(真够小的)
在每次迭代前会动态(”on-the-fly”)地进行数据增强(augmentation),这些作数据增强而产生的图片为节约内存开销而不做保存。
主要做两种数据增强:
一是密集形变场(dense deformation field):
使用222的控制点网格(grid of control-points)和B样条插值(B-spline interpolation),这些控制点会随机改变位置,位置改变量服从均值为0,标准差为15体素的正态分布。
二是直方图匹配:每个三维图都可以都可以以灰度值为横坐标,以满足某个灰度值的体素个数为纵坐标绘出一个直方图。如果对三维图中的一些灰度值通过某个函数做出修改,是灰度值直方图的分布满足特定的分布,这个过程就是直方图匹配。这篇文章中是这样操作的:确定一张待输入的三维图之后,再从剩余训练集中再选出一张三维图。对这两张三位图分别做像素直方图,然后把待输入一张匹配到另一张上。
2、动量:0.99
3、学习率:初始为0.0001,每25k迭代降低一个数量级。

你可能感兴趣的:(医学图像识别)