扫码关注下方公众号:"Python编程与深度学习",领取配套学习资源,并有不定时深度学习相关文章及代码分享。
今天分享一篇发表在MICCAI 2020上的论文:Deep Volumetric Universal Lesion Detection Using Light-Weight Pseudo 3D Convolution and Surface Point Regression (原文链接:[1])。
1 研究背景
在病人的CT扫描中准确、全面地识别、测量和报告病变,对医生来说是重要但却费时的过程,计算机辅助检测可以提高这一个过程的效率。但是在三维成像中,病变区域的外观、位置和大小分布存在巨大的差异,因此仍然具有很大的挑战。
这篇文章提出了一种新型的anchor-free单阶段病灶定位网络 (volumetric lesion detector, VLD),可以在更少的模型参数量的前提下达到更好的效果。网络主要由如下几部分组成:
- 伪3D卷积操作,以利用现成的2D网络架构和其预训练权重
- 一种新的表面关键点 (surface point)回归方法,通过精确定位到病灶表面具有代表性的关键点,有效地表示病灶的三维空间范围
2 方法
如上图(Fig.1)所示,3D的CT扫描图作为网络的输入,通过P3DC骨干网络提取深度特征,这些特征被送入VLD的3D中心点回归网络和SPR表面关键点回归网络分别预测中心点坐标和表面关键点坐标。
2.1 P3DC骨干网络
P3DC骨干网络是基于DenseNet-121进行搭建的,但移除了其第四个dense模块。VLD的核心策略是在前半部分特征提取的时候保持2D网络,而仅使用P3DCs模块将DenseNet-121的第三个dense模块转换成3D网络。这个策略与[2]一致,他们发现了在高层次引入3D信息比低层次更加有效。
2D部分:采用$N$表示卷积核的尺寸,对于前两个dense模块,其卷积核权重$(c_o,c_i,N,N)$被重构成$(c_o,c_i,1,N,N)$,以用来逐层处理3D数据。
3D部分:第三个dense模块以及输出网络部分均采用3D的卷积网络,文中研究了P3DCs的几种不同构造,如下图(Fig.2)所示:inflated 3D (I3D), spatio-temporal 3D (ST-3D), axaial-coronal-sagittal 3D (ACS-3D)。最后选取了ACS-3D作为基本模块,并把3个分支的通道数比例设置为8:1:1。
2.2 输出网络
VLD有两个输出网络,一个用来定位病灶中心点,另一个用来回归表面关键点。首先将不同层次的特征通过一个由三层$(c_o,c_i,1,1,1)$卷积层构成的特征金字塔网络 (FPN)进行特征融合,以使得VLD能够检测不同尺度的病灶。而后将融合特征(对应Fig.1中deep feature)送入中心点回归网络和表面关键点回归网络。
中心点回归网络: 由一个ACS-3D模块后接一个$(1,c_i,1,1,1)$卷积层组成,使用随机初始化。跟CenterNet类似,输出一个3D heat map $hat{Y}$,来预测病灶中心点,假设目标heat map为$Y$,使用focal loss来训练这一个网络:
$$mathcal L_{ctr}=frac{-1}{m}sum_{xyz}left{egin{matrix}(1-hat{Y}_{xyz})^{alpha}log(hat{Y}_{xyz}) if Y_{xyz}=1\ (1-Y_{xyz})^{eta}(hat{Y}_{xyz})^{alpha}log(1-hat{Y}_{xyz}) otherwiseend{matrix}
ight.$$
其中$m$是病灶数目,$alpha=2$和$eta=4$是focal-loss中的两个超参数。heat map中除了中心点位置,其余位置的值都<1。
表面关键点回归网络: 首先基于病灶中心点坐标预测表面关键点集:
$$mathcal P={(x_k,y_k,z_k)}_{k=1}^n,$$
其中$n$是关键点数目,实验表明当$n=16$时效果最好。由于$mathcal P$是基于中心点回归的,因此精度不够(长距离回归),还需要进一步修正表面关键点。因此采用具有$3n$输出的$1 imes 1 imes 1$网络,预测修正表面关键点坐标为:
$$mathcal P_r={(x_k+ riangle x_k,y_k+ riangle y_k, z_k+ riangle z_k)}_{k=1}^n$$
其中${( riangle x_k, riangle y_k, riangle z_k)}$就是修正网络预测的修正量。为了实际监督$mathcal P$和$mathcal P_r$的回归,通过计算它们的最小和最大坐标,并确保它们能够与bounding box的边界匹配,这部分的损失计算如下:
$$mathcal L_{pts}=sum_{iin(x,y,z)}left |i_{blr}-min_{1leq kleq n}(i_k)
ight |+left | i_{trf} - max_{1leq kleq n}(i_k)
ight | + left | i_{blr}-min_{1leq kleq n}(i_k+ riangle i_k)
ight | + left | i_{trf} - max_{1leq kleq n} (i_k+ riangle i_k)
ight |,$$
其中$i_{blr}$和$i_{trf}$分别标志bounding box的bottom-left-rear位置和top-right-front位置。但只有上面这个损失的监督会使得网络预测的表面关键点落在bounding box的边缘上,而实际上bounding box的很多边缘并没有病灶,因此需要再加一个triple-loss的约束,使得表面关键点的特征与病灶中心点的特征尽可能近,而与bounding box边缘特征尽可能远:
$$mathcal L_{tri}=frac{1}{m}sum_{k=1}^nsum_{j=1}^8 maxleft (0, egin{Vmatrix}a^p-a_kend{Vmatrix}_2-egin{Vmatrix}a^p-a^n_jend{Vmatrix}_2+1
ight ),$$
其中${a_j^n}_{j=1}^8$表示3D bounding box的8个顶点特征向量,$a^p$为表面关键点特征向量。
综上,总的损失函数表示为:
$$mathcal L=mathcal L_{ctr}+0.1(mathcal L_{pts}+mathcal L_{tri})$$
3 实验结果
这里我只给出论文中的部分实验结果,具体的实验结果分析以及实验和参数的设置请看原文。
4 参考资料
[1] https://link.springer.com/chapter/10.1007/978-3-030-59719-1_1
[2] MULAN: multitask universal lesion analysis network for joint lesion detection, tagging, and segmentation