Accurate Lung Segmentation via Network-Wise Training of Convolutional Networks
作者:Sangheum Hwang and Sunggyun Park Lunit Inc., Seoul, Korea
网络特点:
1、基于atrous convolutional layers
2、训练网络迭代(某阶段训练的输出&输入同时作为下一阶段训练的输入)
3、训练参数大幅减少
目的:
获得肺部的平滑边缘信息
数据集:
Japanese Society of Radiological Technology (JSRT) 训练测试
Montgomery County (MC) 泛化性测试
背景:
典型的语义分割通常是编码-解码结构。编码即典型的下采样CNN,解码即上采样部分。损失函数采用像素级的交叉熵损失pixel-wise cross entropy loss。例如,U-Net。
还有一种方法是,用atrous convolutional layers 替代传统的卷积层,起到扩大感受野的作用。
本文设计了一个又深又窄的网络结构,大大减少了参数数量。采用了多阶段网络迭代机制,大大减少了小的错误局部,使得肺部分割边缘更加平滑。
网络详述:
整体网络结构如下:
1) 使用Atrous Convolutions 进行肺部分割
使用ResNet设计窄而深的网络,使用Atrous Convolutions扩大感受野从而获得更多的上下文信息。
Atrous Convolutions计算方式如下:
简单说就是卷积核捕鱼相邻的区域进行卷积,而是抽取原图中跳跃的像素合并成一个与卷积核一样大的矩阵再进行卷积。
每个阶段的网络由3个正常卷积层和6个残差模块构成(共15个卷积层)。Atrous Convolutions应用在残差模块的最后一层卷积层。每个卷积层后面均接BN层(Batch Normalization)。卷积层stride=2. 损失函数使用像素级交叉熵损失。上采样输出使用双线性内插。
此网络大大减少了参数:120,672 weights (26 times fewer parameters)while the encoder-decoder network like U-Net has 3,140,771 weights。
2)网络迭代训练 Network-wise Training of CNN
上述网络存在一定的缺陷。
1、会产生小的错误区域(由像素级交叉熵导致,像素间独立运算)
2、肺部监测边缘不够平滑(双线性内插导致)
解决上述问题,通常会采用条件随机场(conditional random fields)。
本文采用网络迭代的方法,即将第一阶段的网络输出与输入级联同时作为第二阶段的网络输入(在channel的维度上级联)。有了粗糙的边缘划分,下一阶段的训练会更加关注细节上的边缘平滑,直至验证集饱和。
实验
1) 数据集
JSRT数据集共247个胸片样本,其中154个含有肺结节,93个不含有肺结节。JSRT数据集本身是不含有边缘标注的。标注可由Segmentation in Chest Radiographs (SCR) database获得。
JSRT数据集会被分成两个文件夹,124个奇数编号的数据构成一个文件夹,剩余偶数编号数据构成另一个文件夹。一个作为训练集,一个作为测试集。所有训练数据尺寸重置为256*256。采用随机梯度下降SGD,动量0.9,初始学习率0.1(70个epoch之后下降为0.01)。
使用Montgomery County (MC) dataset作为泛化性测试集(我没找到数据集,不赘述了)。
2) 评估标准
Jaccard similarity
coefficient(JSC)
Dice’s coefficient (DC)
average contour distance (ACD)
average surface distance (ASD)
3) 结果
本文的数据增强并没有使用平移旋转裁剪等处理(JSRT数据集并没有这方面的数据变化,这种变化对结果没有直接影响)。本文的数据增强采用了亮度和对比度的变换(表格最后一行)。
阶段2明显比阶段1少了很“噪点”。
阶段4和阶段5已经趋于饱和,因为进行到阶段3即可。
MC数据集表现没有JSRT好,这是由于训练数据和测试数据的分布有差异。