【论文笔记】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

2026年3月23日技术资讯洞察:AI Agent失控,Claude Code引领AI编程新趋势

兄弟们早上好!今天是2026年3月23日,我又准时给大家分享今天的技术资讯啦,就是这么准时!话不多说,开始上菜! 1. Meta内部AI Agent失控:首个Sev 1级生产事故敲响安全警钟 来源: InfoQ《Meta 内部 Agent 失控升级:首个 Sev 1 级事故曝光,系统数据裸奔了两小时》 发布时间: 2026年3月20日 事件回顾:权限失控两小时 上周,Meta内部发生了一起典型的"Agent失控"生产事故。一名Meta员工在内部论坛发帖求助技术问题,另一名工程师调用公司内部的AI Agent来分析问题。然而,这个Agent没有跟调用者私聊,而是直接在论坛上公开发布了建议回复。 更糟糕的是,Agent给出的建议是错误的。提问员工按照这个错误信息操作,导致权限配置出错,大量公司内部数据+用户相关数据短暂暴露给一批原本无权限的工程师。整个暴露过程持续近2小时,Meta内部将其定为Sev 1级,即公司安全事件体系中第二高的严重等级。 技术剖析:上下文压缩的安全隐患

作为一名市场运营,我的“养虾”初体验:上手JiuwenClaw,让AI智能体真的“越用越懂我”

作为一名市场运营,我的“养虾”初体验:上手JiuwenClaw,让AI智能体真的“越用越懂我”

一、前言 最近,AI Agent(智能体)的概念非常火,但很多产品要么部署复杂,要么用起来像个死板的“工具人”。作为一名市场运营,在看到openJiuwen社区发布了基于Python开发的“小龙虾” JiuwenClaw,并宣称它能“懂你所想,自主演进”后,我决定亲自试一试,看看这只“龙虾”到底有什么特别之处。 二、🚀 丝滑开局:一行命令,即刻“养虾” 第一个惊喜来自安装。正如项目介绍里说的,整个过程确实非常简单。我没有遇到任何依赖冲突或繁琐的配置,在终端敲下几行命令,就完成了从安装到启动的全过程: # 创建名为 JiuwenClaw 的虚拟环境python -m venv jiuwenclaw# 激活 JiuwenClaw 虚拟环境(选择对应系统)jiuwenclaw\Scripts\activate # Windowssource jiuwenclaw/bin/activate

Trae 高峰排队太难受?让 AI 编码从此告别等待!

手把手教你配置无问芯穹,享受丝滑 AI 编程体验 最近在使用 Trae 进行 AI 辅助编程时,遇到了一个让人抓狂的问题——高峰期模型排队。相信很多 Trae 用户都有同感,当灵感迸发想要快速实现一个功能时,却要面对“前方排队 X 人的提示,这感觉就像写代码写到一半突然断网一样难受。 今天,我就来教大家如何通过接入无问芯穹这个强大的 AI 聚合厂商,彻底解决这个痛点。文章最后还有专属福利,千万别错过! 痛点:Trae 高峰期的“模型春运” Trae 作为一款优秀的 AI 编程助手,用户量增长非常快。每天下午和晚上,尤其是工作日的 14:00-17:00可以说是模型调用的“高峰期”。 当你遇到以下场景时: * 调试一段怎么也找不到 bug 的代码 * 想要重构一个冗长的模块 却只能对着屏幕干等,那种感觉真的很影响开发效率。排队等待不仅打断了思路,

Claude AI注册避坑指南:5分钟搞定海外手机号验证(附最新解决方案)

Claude AI 注册实战:从验证难题到高效上手的完整路径 最近几个月,身边不少朋友和同事都在讨论一个现象:想体验一下那个以“安全”和“长上下文”著称的Claude AI,却在注册的第一步——手机号验证——就卡住了。这确实是个挺让人头疼的体验,明明技术产品就在眼前,却因为一个看似简单的步骤而无法触及。对于国内的开发者、产品经理或是AI爱好者来说,这种“看得见却用不上”的感觉尤其强烈。这篇文章,就是为你准备的。我们不谈空泛的理论,只聚焦于一个核心目标:如何绕过那些常见的障碍,顺利、安全地完成Claude账户的注册与初步设置,并为你梳理清楚后续高效使用的关键点。整个过程,力求在5分钟内给你一个清晰的行动路线。 1. 理解注册流程的核心关卡与常见误区 在动手操作之前,我们先花点时间拆解一下Claude的注册流程,特别是那个让很多人“折戟”的环节。这能帮你避开很多不必要的试错,直接找到有效的路径。 Claude的官方注册流程,本质上和大多数国际主流互联网服务类似:邮箱验证 -> 手机号验证 ->