AirwayNet: A Voxel-Connectivity Aware Approach for Accurate Airway Segmentation
MICCAI https://doi.org/10.1007/978-3-030-32226-7_24
考虑到体素的连接性,传统的二分类掩膜变成了26个连接预测
为什么是26,因为3*3*3 - 1 = 26,也就是考虑27邻域
1 Introduction
考虑到气道很复杂,选择的方法可能会出现不连续性,因此使用连接的方法
问题从二分类的掩膜变成了预测26领域的是否连接二分类
大致的流程是
- 体素的连接性通过真实值经过CNN学习得到,学习中心像素是否为气道和邻域是否为气道
- 体素的坐标和其距肺边界的距离也作为了输入的信息
2 Method

2.1 Connectivity Modeling
中心像素\(P(x,y,z)\)与其26邻域\(Q(u,v,w)\),其中\(q_i\in Q,i=1,...,26\),使用一个26列向量对\((P,q_i),i=1,...,26\)进行描述,当\(P,q_i\)都是气道体素时,将这个分量记为1,否则为0
相当于一个特殊的卷积,3*3*3的卷积核在CT模型上滑动,需要用0填充以保证图像大小不变
这样就得到体素之间的连接性的ground truth,那么原先的掩膜学习就变成了输出为26列向量组的学习,目标变成分类和连接
将单个目标分解为多个任务的优势是能够学习更全面的特征,并且保留了联通的气道体素之间的位置关系
2.2 CT Image Pre-processing
先高斯低通,手动阈值二值化,然后联通量分析,移除了不确定的组织,最大的两个认为是左肺和右肺
为了防止阈值割坏了,用形态学凸壳处理,如果凸壳有50%以上的多的面积,就用凸壳替代
用欧氏距离计算每个体素到边界的最小距离,因为解剖上这个距离有意义
然后将像素值scale到\([0,255]\),然后对整个肺进行分割,分为4块
2.3 Connectivity Prediction
沿用了3D U-net的框架,在扩展路径的1*1连接之前串联了坐标和距离信息,最后每个体素得到的26列向量各自走Sigmoid函数,得到概率
对于每一个体素\(x\in X\),令预测到的概率为\(p_i(x)\),实际的标签为\(y_i(x)\),其中\(i=1,...,26\),使用Dice定义损失函数
\[
\mathcal{L} = 1- \frac{1}{26}\sum_{i=1}^{26}\frac{2\sum_{x\in X}p_i(x) y_i(x)}{\sum_{x\in X}(p_i(x)+y_i(x))+\varepsilon}
\]
其中\(\varepsilon\)是一个防止除以0的小量
流程见下图

2.4 Airway Candidates Generation
使用0.5作为概率的阈值进行掩膜,并仅保留双向选择的,毕竟一定要成对才能说都是
然后将每个体素的26通道按通道投影到一个空的但是与CT图像等大的数组中,相当于一个累加器,最后过滤0元素就得到了气道的candidate
然后这个模型与肺部的掩膜进行相乘(按位与),过滤假阳性(噪声)
最后使用 fuzzy connectedness segmentation 将candidate的远端合并
3 训练
每次训练时有50%的概率将模型水平翻转,来学习更多情况
稠密采样了气道边的方块(3*3*3),并随机丢弃了肺边界上的方块
每个epoch大约有5000个样本
权重更新时用了Adam Optimizer,设置\(\beta_1=0.5,\beta_2=0.999\),学习率为\(10^{-4}\)
训练时还有更高维的一个步长,将大图像分割为小图像,预测的结果取滑动窗口的重叠部分的均值