【论文笔记】MultiResUNet: Rethinking the U-Net Architecture for Multimodal Biomedical Image Segmentation

【论文笔记】MultiResUNet: Rethinking the U-Net Architecture for Multimodal Biomedical Image Segmentation

论文地址

目录

一、前言

近年来,深度学习在医学图像分割领域取得了很大的突破,其中基于全卷积网络的U-Net已经成为最流行、最引人瞩目的架构[1]。尽管如此,U-Net仍存在着一些不足之处,本文对经典U-Net做出了进一步改进,并经实验证明了其更好的性能。

U-Net架构

二、U-Net模型的分析

在医学图像分割任务中,我们感兴趣的点在于分割原始图像的细胞核、器官、肿瘤等等,这些图像可能来自各种模态。然而在大多数情况下,这些感兴趣的对象是不规则的,而且规模也不同。例如,我们已经证明皮肤病变的规模在皮肤镜图像中可以有很大的变化。这些情况也经常发生在不同类型的医学图像分割任务中。

医学图像中目标规模的变化

因此,对于分析这些不同规模的对象,所用的网络应该具有一定的鲁棒性。例如Inception block并行使用不同大小的卷积核来检测不同规模大小的目标。在U-Net架构中,每个池化层和反卷积层之后都使用了两个3×3的卷积,这两个3×3的卷积实际上近似于5×5的卷积。那么按照Inception block网络结构,增强U-Net的最简单的办法使其可以多分辨率的分析是将3×3、5×5、7×7卷积运算并行。如图

简单的类Inception block

这样类Inception block的替换了原来的卷积层似乎有助于U-Net架构从图像中学习不同尺度的特征。但尽管这样性能会有所提高,但引入的并行卷积层极大地增加了内存需要。因此本文借用Inception v3[2]的思想,使用一系列的更小、更轻量级的3×3的卷积核来分解更大、性能要求更高的5×5和7×7的卷积核。如图:

轻量级结构


图为使用一系列3×3的卷积核分解5×5和7×7的卷积核的轻量级结构

而实验证明这种轻量级结构近似于之前描述的简单的类Inception block,并且减少了内存需要。那这里就有两个问题:

1.为什么两次3×3的卷积近似于一次5×5的卷积呢?

如图,两次3×3的卷积得到的1×1大小的特征图,它的感受域大小是5,而一个5×5的卷积得到的1×1大小的特征图的感受域也是5,因此,两次3×3的卷积可以近似一个5×5的卷积,可以节省大量的计算资源。例如,对5×5的特征图做两次3×3的卷积需要9×9(第一次)+1×9(第二次)=90次乘法运算,而对5×5的特征图做一次5×5的卷积只需要1×25=25次乘法运算,因此计算量会大幅度减少。

两次3×3的卷积替换5×5的卷积

2.为什么后一种轻量级的结构可以近似于之前的结构?

轻量级结构


从input出来,经过第一个3×3卷积,保存得到的特征图,再经过一个3×3的卷积层,这时已经经过了两次3×3的卷积,相当于一次5×5的卷积,将两次卷积的结果保存,再经过第三个3×3的卷积层,这时相当于一个7×7的卷积,保存第三次卷积的特征图,将第一次、第二次的特征图和第三次的特征图做concat,得到最终的output。
尽管这种修改已经大大地降低了内存需求,但是消耗的内存仍然很高。因为第一个卷积层的卷积核的数量如果很高,第一个卷积的卷积核数量会对内存产生二次效应。举例来说,如果这两个卷积层的卷积核个数都是3,一个三通道的7×7特征图经过第一层需要做的乘法数量是3×25×9×3=2025,(加粗的3代表卷积核数量)得到一个3通道的5×5特征图,而其经过第二个卷积层需要的乘法数量是3×9×9×3=729(加粗的3是通道数由前一层卷积核数量决定),因此第一次卷积核数量越多,后面卷积层需要的计算量就越大,因此MultiResUNet并没有保持所有连续卷积层的卷积核数量相等,而是逐渐增加这些层中的卷积核(例如从1增加到3),来防止前面层的内存需求过度传播到网络的较深部分。同时在此结构中又增加了残差连接来获取一些额外的空间信息。该模块被称为MultiRes block。

MultiRes block

三、融合策略的分析

U-Net的一个巧妙之处在于对应层之间的跳跃连接,这使得网络能将在池化操作丢失语义信息之前将这些语义信息从编码器传递到解码器。尽管保留了这些损失掉的语义信息,但是U-Net的跳跃连接仍有一些缺陷:例如:第一个跳跃连接将第一次池化操作之前和最后一次反卷积操作之后的对应编码器层和解码器层连接起来,在这里来自编码器的特征其实是低级特征,因为它们是在网络的浅层计算的。相反,解码器的特征是更高级别的特征,因为它们是在网络的深层计算的。因此,合并的两组特征之间可能存在语义差异(semantic gap),这会在预测过程可能产生一些不利影响,所以在它们融合之前可能要经过某些加工。但随着网络深度的增加,差异可能会逐渐减少,这实际上是因为随着网络深度的增加,编码器和解码器对应层级之间越来越近,因此语义差异也越来越小。
为了缓解编码器和解码器之间的语义差异,本文提出在跳跃连接中加入一些卷积层,并且不是使用普通的卷积层,而是引入了残差连接,这样可以使学习变得更加容易,这个模块在文章中被称为Res Path。具体地说,Res Path使用了3×3的卷积并伴随着1×1卷积的残差连接。

Res Path

四、 整体架构

整体架构如图所示。其中随着网络深度增加,语义差异不断减小。因此也逐渐减少了沿着Res Path路径使用的卷积块的数量,实际上本文分别使用了4,3,2,1个卷积块。

整体架构

参考文献

[1] Ronneberger O, Fischer P, Brox T. U-net: Convolutional networks for biomedical image segmentation[C]//International Conference on Medical image computing and computer-assisted intervention. Springer, Cham, 2015: 234-241.
[2] Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking the inception architecture for computer vision[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 2818-2826.
[3] Ibtehaz N, Rahman M S. MultiResUNet: Rethinking the U-Net architecture for multimodal biomedical image segmentation[J]. Neural networks, 2020, 121: 74-87.

Read more

Kafka ISR与AR深度解析:副本同步机制核心概念

Kafka ISR与AR深度解析:副本同步机制核心概念

Kafka ISR与AR深度解析:副本同步机制核心概念 * 一、核心概念定义 * 1.1 AR:分区的所有副本 * 1.2 ISR:与Leader保持同步的副本 * 1.3 官方定义 * 二、ISR的判定标准 * 2.1 同步的判断条件 * 2.2 关键参数 * 2.3 ISR的动态变化 * 三、ISR的核心作用 * 3.1 作用一:Leader选举的选民池 * 3.2 作用二:消息确认的基准 * 3.3 作用三:保证数据一致性 * 四、AR与ISR的关系图解 * 4.1 集合关系图 * 4.2 公式表示 * 4.

带可二次开发的管理配置端 + 非低代码 + 原生支持标准化 Skill框架选择

「带可二次开发的管理配置端 + 非低代码 + 原生支持标准化 Skill」的开源 Agent 框架,筛选 3款完全匹配的框架(均为代码级可扩展、自带 Skill 管理后台、支持 SKILL.md/MCP 标准),附核心特性、二次开发要点和部署步骤,都是企业级/开发者友好的选型: 一、首选:LangGraph + LangServe(LangChain 官方生态,Python 栈,极致可扩展) 核心定位 LangChain 官方推出的「Agent 编排 + 服务化」框架,自带可二次开发的 Skill/Tool 管理后台(LangServe Dashboard),纯代码开发、无低代码封装,是 Python 生态的最佳选择。 关键特性

Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这

Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这

《Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这》 Spatial Joy 2025 Rokid乐奇 全球 AR&AI 开发大赛 值不值得参加?不少参加过连续两届 Rokid乐奇 赛事的老兵,纷纷表示非常值得参加。 先说最实在的——奖金。 AR赛道分为应用和游戏两个赛道,金奖各20万人民币,而且是现金!交完税全是你自己的!这还不够,AR赛道总共设了27个奖项,据我打听到的往年数据,能正常跑进初赛的作品大概就60-70个,这意味着获奖比例相当高。 20万就封顶了吗?远远没有!亚马孙科技给使用Kiro并获奖的开发者,在原奖金基础上再加20%现金奖励! AI赛道同样设置了27个奖项,奖金从1万到5万不等,主要以智能体开发为主,支持市面上所有智能体平台的适配。也就是说,你之前做的智能体微调一下就能参赛! 更重要的是,现在正是智能眼镜行业爆发前夜。据我观察,

Python中的PyArrow:Apache Arrow的Python绑定,用于高效内存中数据交换

Python中的PyArrow:Apache Arrow的Python绑定,用于高效内存中数据交换

一、什么是 Apache Arrow? Apache Arrow 是一个开源的跨语言开发平台,专注于在内存中处理列式数据。它定义了一种标准化的内存格式,使得不同系统和编程语言之间可以零拷贝地共享数据,从而极大提升数据交换的效率。 Arrow 的核心特点包括: * 列式内存布局:数据按列存储,适合向量化计算和分析型工作负载。 * 语言无关性:支持 C++, Java, Python, JavaScript, Rust 等多种语言。 * 零拷贝共享:多个进程或系统可以直接访问同一块内存中的数据,无需序列化/反序列化。 * 高性能:避免了传统数据交换中昂贵的 I/O 和转换开销。 二、什么是 PyArrow? PyArrow 是 Apache Arrow 在 Python 中的实现,提供了对 Arrow 内存模型的完整封装。它不仅是一个数据结构库,还是连接 Python 生态与外部系统(