Abstract
脑部病变分割(Brain Lesion Segmentation)为临床诊断提供了宝贵的工具,卷积神经网络(CNN)在该任务中取得了空前的成功。数据增强是一种广泛使用的策略,可以提高CNN的训练效果,而用于脑部病变分割的增强方法的设计仍然是一个开放的问题。在这项工作中,我们提出了一种简单的数据增强方法,被称为CarveMix,用于基于CNN的脑部病变分割。与其他基于"混合"的方法一样,如Mixup和CutMix,CarveMix随机地结合两个现有的标记图像来生成新的标记样本。然而,与这些基于图像组合的增强策略不同,CarveMix是病变感知的,在进行组合时要注意病变,并为生成的图像创建适当的标注。具体来说,我们根据病变的位置和几何形状,从一个标记的图像中刻出一个感兴趣的区域(ROI),ROI的大小从一个概率分布中取样。然后,雕刻好的ROI取代了第二张标记图像中的相应体素,第二张图像的注释也相应被取代。通过这种方式,我们为网络训练生成新的标记图像,并且保留了病变信息。为了评估所提出的方法,我们在两个大脑病变数据集上进行了实验。结果表明,与其他简单的数据增强方法相比,我们的方法提高了分割的准确性。
Method
本文是一种专门为脑部病变分割提出的数据增强方法——CarveMix。该方法也是一种基于标签融合的方法,比如MixUp(ICLR 18)就是将两个标签给线性融合起来,而CarveMix(ICCV 19)则是一种非线性的融合。需要注意的是,这些经典的方法都是用于图像分类任务的,因此目前是比较缺乏用于分割任务的标签融合方法的。CarveMix的融合流程如下:
先直接看公式:融合得到的图像
X
\mathbf{X}
X与融合得到的标签
Y
\mathbf{Y}
Y的最终计算过程如下:
X
=
X
i
⊙
M
i
+
X
j
⊙
(
1
−
M
i
)
\mathbf{X}=\mathbf{X}_{i} \odot \mathbf{M}_{i}+\mathbf{X}_{j} \odot\left(1-\mathbf{M}_{i}\right)
X=Xi⊙Mi+Xj⊙(1−Mi)
Y
=
Y
i
⊙
M
i
+
Y
j
⊙
(
1
−
M
i
)
\mathbf{Y}=\mathbf{Y}_{i} \odot \mathbf{M}_{i}+\mathbf{Y}_{j} \odot\left(1-\mathbf{M}_{i}\right)
Y=Yi⊙Mi+Yj⊙(1−Mi) 为了直观起见,我们以标签融合为例展示具体的融合过程,图像本身的融合与标签的融合在过程上是一致的。从图中看,标签的融合基本上就约等于直接把两张原始图像的mask
Y
i
\mathbf{Y}_i
Yi和
Y
j
\mathbf{Y}_j
Yj直接给加起来:
而实际上也是
Y
i
\mathbf{Y}_i
Yi乘了一个系数
a
a
a后与
Y
j
\mathbf{Y}_j
Yj乘了一个系数
b
b
b后再相加,有
a
+
b
=
1
a+b=1
a+b=1。图中"⊙"符号表示逐像素乘,因此甚至也可以将
M
i
\mathbf{M}_i
Mi视为一种空间注意力图。
现在的问题其实就是怎么计算 M i \mathbf{M}_i Mi了。从图中可以看到, M i \mathbf{M}_i Mi与 Y i \mathbf{Y}_i Yi其实是非常像的,有点类似于在 M i \mathbf{M}_i Mi的基础上进行了一个膨胀操作。具体来说, M i \mathbf{M}_i Mi中第 j j j个像素的值 M i v \mathbf{M}_i^v Miv计算方法如下: M i v = { 1 , D v ( Y i ) ≤ λ 0 , otherwise \mathbf{M}_{i}^{v}=\left\{\begin{array}{l} 1, D^{v}\left(\mathbf{Y}_{i}\right) \leq \lambda \\ 0, \text { otherwise } \end{array}\right. Miv={1,Dv(Yi)≤λ0, otherwise D v ( Y i ) = { − d ( v , ∂ Y i ) , if Y i v = 1 d ( v , ∂ Y i ) , if Y i v = 0 D^{v}\left(\mathbf{Y}_{i}\right)=\left\{\begin{aligned} -d\left(v, \partial \mathbf{Y}_{i}\right), & \text { if } \mathbf{Y}_{i}^{v}=1 \\ d\left(v, \partial \mathbf{Y}_{i}\right), & \text { if } \mathbf{Y}_{i}^{v}=0 \end{aligned}\right. Dv(Yi)={−d(v,∂Yi),d(v,∂Yi), if Yiv=1 if Yiv=0 这个 d ( v , ∂ Y i ) d(v, \partial \mathbf{Y}_{i}) d(v,∂Yi)指的是当前像素 v v v与"病变边界" ∂ Y i \partial \mathbf{Y}_{i} ∂Yi的距离。可以看到,如果 v v v本身就在病变区域里面,那么 D v ( Y i ) D^{v}\left(\mathbf{Y}_{i}\right) Dv(Yi)就直接给了个负数,从而保证其有更大的概率被选中(即小于 λ \lambda λ);而如果在病变区域外,我们就认为越近越应该被选中。值得注意的是,这个 λ \lambda λ是可正可负的,从而保证对病变区域进行"膨胀"或者"收缩"。 λ \lambda λ的具体计算过程较为复杂,感兴趣的读者可以阅读原文。