论文阅读Rolling-Unet,卷积结合MLP的图像分割模型

2024-06-13 07:28

本文主要是介绍论文阅读Rolling-Unet,卷积结合MLP的图像分割模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这篇论文提出了一种新的医学图像分割网络Rolling-Unet,目的是在不用Transformer的前提下,能同时有效提取局部特征和长距离依赖性,从而在性能和计算成本之间找到良好的平衡点。

论文地址:https://ojs.aaai.org/index.php/AAAI/article/view/28173

1,动机(Motivation)

现阶段主流医学图像分割模型大多基于CNN和Transformer,作者认为CNN和Transformer都有缺陷。CNN难以捕捉长距离依赖性,而Transformer计算复杂度高,局部特征学习能力差。

作者认为现有的结合CNN和Transformer的方法尚未能在性能和计算成本之间找到良好的平衡点。

而MLP拥有代替Transformer提取全局特征的潜力。

下面,我们按照惯例从粗到细来拆解这个模型。

2,模型整体结构:

模型整体结构如下,是一个经典的U型编码器-解码器结构,只不过编码器分支最后一个模块,解码器分支第一个模块以及瓶颈层被替换成了全新的Lo2块(Long-Local Block)。

3,Lo2块(Long-Local Block)

Lo2模块的整体结构如下所示

该模块以并行的DOR-MLP(Double Orthogonal Rolling MLP)模块和深度可分离卷积(DSC)模块组成,以同时捕获局部上下文信息和长距离依赖性。两个子模块的特征拼接后,通过Channel-mixing进一步融合,这一步骤有助于不同通道间的特征交互,增强特征表达能力。

补充:Channel-mixing是MLP-Mixer架构中提出的一种技术,用于实现不同通道之间的特征融合。它是一种替代传统卷积操作的手段,特别是在全连接或混合维度特征的场景中。Channel-mixing首先将特征张量在高度和宽度上进行展平,使得每个通道的特征成为一维向量。然后,对每个通道的特征向量应用一个线性变换,通常是一个全连接层,并可能跟随一个非线性激活函数,如GELU。Channel-mixing的作用类似于1x1卷积,它允许网络在不增加太多计算负担的情况下,学习特征的跨通道交互。)

4,DOR-MLP模块

结构如下:

DOR-MLP模块通过并行化两个互补的OR-MLP(Orthogonal Rolling MLP)模块来捕获四个方向(水平、垂直、对角正向和对角负向)的长距离依赖性。

过程具体如下:

1)每个OR-MLP都有两个方向正交的R-MLP模块也就是一个在垂直方向做Rolling操作,一个在水平方向做。从而可以捕获两个长距离依赖。

2)两个并行的OR-MLP中的R-MLP顺序不同,第一个OR-MLP模块先在水平方向上应用R-MLP,然后在垂直方向上应用R-MLP;第二个OR-MLP模块先在垂直方向上应用R-MLP,然后在水平方向上应用R-MLP。这样,每个OR-MLP模块都能捕获两个正交方向上的依赖性,形成对角线方向的感知能力。

3)在每个OR-MLP中还有残差连接,以增强模型的学习能力和避免梯度消失问题。

4)并行处理后,两个OR-MLP模块的输出沿着通道维度进行拼接,以获得不同方向的特征表示。

5)之后,特征会经过LayerNorm和Channel-mixing,Channel-mixing是一种特征融合技术,具体原理和细节我在文章第三段已经介绍了,这里就不讲了。

5,R-MLP模块

1)R-MLP模块对每个通道层的特征图沿相同方向执行Rolling操作。Rolling操作包括以下两个步骤:移位和裁剪。

在移位步骤中,特征图会根据移位步长 k在水平方向上进行移动。移位可以是向左或向右,具体取决于 k的正负值。移位后的每个通道的特征图可能会超出原始特征图的边界。裁剪步骤会去除这些多余的部分,并将缺失的部分补充回到另外一边,确保所有通道的特征图在宽度上对齐。

如果这里没看懂rolling的原理和如何发挥作用的,请移步文章最后一个段落,看看我的解释。

2)接着,在Rolling操作之后,R-MLP在每个空间位置索引 (hi,wj) 上执行带有权重共享的通道投影,以编码长距离依赖性。

通道投影是指在特征矩阵的每个空间位置(即图像的每个像素位置)上,对所有通道的特征进行线性变换,以生成新的特征表示。通道投影的目的是将Rolling操作后的多通道特征进行整合和编码,以捕获长距离依赖性。

在Rolling操作之后,每个空间位置的特征图可能会有不同的宽度或高度特征。通道投影通过在每个空间位置应用一个线性变换(通常是一个全连接层或线性层),将这些特征投影到一个新的特征空间中。这个线性变换可以是参数化的,允许网络在训练过程中学习到最优的投影方式。在R-MLP中,所有空间位置的通道投影共享相同的权重,这意味着无论特征图的大小如何,参数的数量保持不变。这有助于减少模型的参数量并提高计算效率。

3)在通道投影之后,通常会应用一个非线性激活函数(如GELU),以引入非线性特性。

6,我对rolling的理解

首先,我们要明确,这个模型并没有用自注意力或者协方差这类的矩阵乘法,而是用的取一个坐标的所有channel维特征做线性变换。

那么,如果不用rolling,它就不能计算到特征图上每个点跟其他所有点的相关性。而最多只能计算到处在水平或垂直线上的点之间的相关性。

理解的关键还是下面这个图,不同颜色深浅其实代表的是原始的位置。

rolling之后,我们取一个坐标点(h,w)的所有channel,其实取的已经不完全是原始的(h,w)对应的值了。我们可以看到颜色已经混了。这代表同一索引在不同channel已经混合了其他位置坐标的值。因此,通过线性变换,可以计算出不同坐标像素之间的相关性。

这篇关于论文阅读Rolling-Unet,卷积结合MLP的图像分割模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056655

相关文章

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O