封面《AMBITIOUS MISSION》

前言

最近读了《Automated head and neck tumor segmentation from 3D PET/CT HECKTOR 2022 challenge report》这篇论文,里面提到使用的 autosegresnet 是使用的 segresnet 作为 backbone。因此来读一下 SegResNet 的论文。这里的 SegResNet 是 monai 项目中的叫法,monai 是一个用于医疗影像的库,该网络的 api 文档在源码在。比较简单易懂的源码在这 github

网络结构

网络结构
SegResNet 的网络结构如上图所示,采用 CNN 的 encoder-decoder 结构,encoder 来提取图像特征,decoder 来重构分割结果,此外还引入了 VAE 结构来恢复原始图像,VAE 部分只在训练期间训练 encoder。其中绿色的部分是一个类似于 ResNet 的部分,其中由 GN-RELU-CONV3x3x3-GN-RELU-CONV3x3x3 组成。

encoder

encoder 部分中,每个 res block 由 2 组 conv、norm 和 relu 组成,norm 部分采用 Group Norm,在 Batch 较小的时候效果比 Batch Norm 效果好,encoder 部分中和 CNN 类似,每次下采样的时候通道数翻一倍。卷积的初始通道数为 32,总共下采样 8 倍。

decoder

decoder 部分与 encoder 部分类似,但是每层只有一个 block。上采样采用 1x1x1 大小的卷积输出通道数减半,和 3D 双线性上采样再加上同层的 encoder 的输出。最后一层的卷积采用 1x1x1 的卷积,输出通道数为分割的类别,激活函数使用 sigmoid。

VAE

SegResNet 的输入大小为 4x160x192x128,其中 encoder 部分的输出为 256x20x24x16,这里 SegResNet 采用了 VAE 结构。VAE 的结构和内容下次再讲,这里需要知道的是 VAE 需要通过训练获取均值向量 mean 和方差向量 std,然后通过重参化进行采样,避免直接采样使得网络不可导。

Z=mean+ε×stdεN(0,1)Z = mean + \varepsilon \times std \qquad \varepsilon \sim \mathcal{N}(0, 1)

SegResNet 中将输出的 256 通道拆分为 2 个 128 通道分别作为均值和方差。结构类似于 decoder 部分,但是不使用 encoder 部分的输出。

loss

SegResNet 的 Loss 包含 3 部分,公式如下

L=Ldice+0.1LL2+0.1LKLL = L_{dice} + 0.1 * L_{L_2} + 0.1 * L_{KL}

dice loss

dice loss 用于 decoder 部分输出和 gt 之间的比较,原始是分割 3 个类,这里每个分割类别都算了一个 dice loss

l2 loss

l2 loss 用于计算 VAE 部分重构输出和原始图像之间的 loss

kl loss

这是来自于 VAE 部分的 loss,在这计算公式如下

LKL=11μ2+σ2logσ21L_{KL} = 1 \frac{1}{\sum \mu^2 + \sigma^2 - log\sigma^2 - 1 }

后记

个人看来在 SegResNet 中采用 VAE 作为其中是很有创新意义,采用原始数据来协调训练 encoder 部分,提高了网络性能。

参考文献

Automated head and neck tumor segmentation from 3D PET/CT HECKTOR 2022 challenge report

3D MRI brain tumor segmentation using autoencoder regularization

monai

SegResNet

3D MRI Brain Tumor Segmentation Using Autoencoder Regularization (Github)