3D U2-Net

探索了一种有前途的通用体系结构,该体系结构可以处理多种医学分割任务,并且可以扩展用于新任务,而无需考虑不同的器官和成像方式。我们的3D通用U-Net(3D U2-Net)建立在可分离的卷积基础上,假设来自不同域的图像具有特定于域的空间相关性,可以使用逐通道卷积进行探测,同时还可以使用逐点卷积来建模跨通道相关性卷积。

介绍

先前的多项工作探索了多任务分割,其中所有感兴趣的器官都出现在同一图像中,作者考虑了一个更现实和更具挑战性的场景:对于给定的数据集,仅扫描人体的局部区域被扫描,并且图像中仅一个或几个解剖结构被标注。

Bilen等认为可能存在跨不同视觉域的通用数据表示。 他们推出了一项名为 “ Visual Decathlon Challenge ”(https://www.robots.ox.ac.uk/∼vgg/decathlon/.)的新竞赛,旨在同时建模十个不同样式和内容的视觉域,例如,互联网图像,手写字符,草图,浮游生物等。他们将这种新主题称为 “multi-domain learning”,其工作仅专注于图像分类。作者由此想到建立一个可以处理来自不同领域的医学细分任务的单一神经网络。

方法

  • 深度可分离卷积(Depthwise Separable Convolutions):
    深度可分离卷积

从 Inception module 到 depthwise separable convolutions

Xception 的论文中提到,对于卷积来说,卷积核可以看做一个三维的滤波器:通道维+空间维(Feature Map 的宽和高),常规的卷积操作其实就是实现通道相关性和空间相关性的联合映射。Inception 模块的背后存在这样的一种假设:卷积层通道间的相关性和空间相关性是可以退耦合的,将它们分开映射,能达到更好的效果(the fundamental hypothesis behind Inception is that cross-channel correlations and spatial correlations are sufficiently decoupled that it is preferable not to map them jointly.)。

以上的图中,Figure 1 是一个典型的 Inception 模块,它先在通道相关性上利用 1×1 卷积将输入的 Feature Map 映射到几个维度比原来更小的空间上,相当于每个通道图乘上不同的因子做线性组合,再用 3×3 卷积这些小空间,对它的空间和通道相关性同时做映射。以第二个分支为例,假设 Input 是 28×28×192 的 Feature Maps,在通道相关性上利用 32 个 1×1×192 的卷积核做线性组合,得到 28×28×32 大小的 Feature Maps,再对这些 Feature Maps 做 256 个 3×3×32 的卷积,即联合映射所有维度的相关性,就得到 28×28×256 的 Feature Maps 结果。可以发现,这个结果其实跟直接卷积 256 个3×3×192 大小的卷积核是一样。也就是说,Inception 的假设认为用 32 个 1×1×192 和 256 个 3×3×32 的卷积核退耦级联的效果,与直接用 256个 3×3×192 卷积核等效。而两种方式的参数量则分别为32×1×1×192 + 256×3×3×32 = 79872 和 256×3×3×192 = 442368。

Figure 2 是简化后的 Inception 模块(仅使用3×3卷积并去除 Avg pooling),基于 Figure 2 的简化模块可以将所有的 1×1 卷积核整合成一个大的 1×1 卷积,如将 3 组 32 个 1×1×192 的卷积核重组为 96个 1×1×192 的卷积核,后续再接3组 3×3卷积,3×3卷积的输入为前序输出的1/3(Figure 3)。Xception 论文进而提出在 Figure 3 的基础上,是否可以做出进一步的假设:通道相关性和空间相关性是完全可分的,由此得到 Figure 4 中的 “extreme” Inception。如 Figure 4 所示,先进行 1×1 的通道相关性卷积,后续接的 3×3 卷积的个数与 1×1 卷积的输出通道数相同。

Figure 4 中的 Inception 模块与本文的主角-深度可分离卷积就近乎相似了,但仍然存在两点区别:

1、深度可分离卷积先进行 channel-wise 的空间卷积,再进行1×1 的通道卷积,Inception则相反;
2、Inception中,每个操作后会有一个ReLU的非线性激活,而深度可分离卷积则没有。

回过头来看一下从常规卷积 -> 典型的Inception -> 简化的Inception -> “极限”Inception,实际上是输入通道分组的一个变化过程。常规卷积可看做将输入通道当做整体,不做任何分割;Inception则将通道分割成3至4份,进行1×1的卷积操作;“极限”Inception则每一个通道都对应一个1×1的卷积。

引入深度可分离卷积的 Inception,称之为 Xception(Extreme Inception),其结构图如下,图中的SeparableConv即是深度可分离卷积,另外可以看出每个模块均采用残差连接(开头和结尾的几个除外):

Xception architecture

Xception 作为 Inception v3 的改进版,在 ImageNet 和 JFT 数据集上有一定的性能提升,但是参数量和速度并没有太大的变化,因为Xception 的目的不在于模型的压缩。下图是 ImageNet 上 1000 类分类网络的训练参数和训练速度对比:

MobileNet 中的 depthwise separable convolutions

MobileNet 是Google推出的一款高效的移动端轻量化网络,其核心即是深度可分离卷积。

按照前文所述,深度可分离卷积将传统的卷积分解为一个深度卷积(depthwise convolution)+ 一个 1×1的卷积(pointwise convolution)。如下图所示,(a)是传统卷积,(b)、(c)分别对应深度可分离卷积的深度卷积和 1×1的卷积:

假设输入特征图大小为 D_F×D_F×M,输出特征图大小为 D_F×D_F×N,卷积核大小为 D_K×D_K,则传统卷积的计算量为:

D_K×D_K×M×N×D_F×D_F

深度可分离卷积的计算量为深度卷积和 1×1 卷积的计算量之和:

D_K×D_K×M×D_F×D_F+M×N×D_F×D_F

深度可分离卷积与传统卷积的计算量之比为:

{D_K×D_K×M×D_F×D_F+M×N×D_F×D_F}/{D_K×D_K×M×N×D_F×D_F} = 1/N + 1/{D_K^2}

以上文中 28×28×192 的输入,28×28×256 的输出为例,卷积核大小为 3×3,两者的计算量之比为:

39889920/346816512 = 0.1150

深度可分离卷积的计算量缩减为传统卷积的 1/9 左右。

下图是传统卷积(左)与MobileNet中深度可分离卷积(右)的结构对比。Depth-wise卷积和1×1卷积后都增加了BN层和ReLU的激活层。

Deep-wise结合1×1的卷积方式代替传统卷积不仅在理论上会更高效,而且由于大量使用1×1的卷积,可以直接使用高度优化的矩阵相乘(如GEMM)来完成,并且1×1的卷积不需要im2col的预处理操作,大大提升运算效率。MobileNet 中有约95%的乘加运算来自1×1卷积(同时也占总参数量的75%):

MobileNet的整体结构如下图所示,共含有28个网络层:

为了满足模型更小、速度更快的应用需求,MobileNet 提出了宽度因子 \alpha 和分辨率因子 \rho两个超参数。前者用于控制输入输出的通道数,后者则用于控制输入输出的分辨率。加入超参数后的深度可分离卷积的计算量为:

D_K×D_K× {\alpha}M× {\rho}D_F× {\rho}D_F+ {\alpha}M× {\alpha}N× {\rho}D_F× {\rho}D_F

理论上,加入超参数后的计算量约为加入前的 \frac{1}{{\alpha}^2*{\rho}^2}:

 

  • 域适配器(Domain Adapter ):由特定于域的参数和共享参数组成,并且由可分离卷积来代替标准卷积。
    域适配器

模型架构如下所示:
模型架构

实验结果

实验结果

总结

在 UNet 中每一层插入一个小模块,用可分离卷积代替普通卷积操作,为每个域设置一组专有的卷积参数,达到共享网络的目的。

code: https://github.com/huangmozhilv/u2net_torch

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章