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

GitHub Copilot AI 编程超全使用教程,从入门到精通

GitHub Copilot AI 编程超全使用教程,从入门到精通

前言 作为 GitHub 推出的 AI 编程助手,GitHub Copilot 凭借强大的代码补全、自然语言交互、自动化开发等能力,成为了开发者提升编码效率的 “神器”。它能支持主流 IDE(VS Code、IntelliJ IDEA、Eclipse 等)、终端等多环境,还可自定义配置、切换 AI 模型,适配个人和团队的不同开发需求。本文结合 GitHub 官方文档和实际使用经验,用通俗易懂的方式讲解 Copilot 的完整使用方法,从环境搭建到高级技巧,再到故障排除,一站式搞定 Copilot AI 编程! 一、GitHub Copilot 核心能力一览 在开始使用前,先快速了解 Copilot 的核心功能,清楚它能帮我们解决哪些开发问题: 1. 智能代码补全:

【实践】操作系统智能助手OS Copilot新功能测评

【实践】操作系统智能助手OS Copilot新功能测评

一、引言         数字化加速发展,尤其人工智能的发展速度越来越快。操作系统智能助手成为提升用户体验与操作效率的关键因素。OS Copilot借助语言模型,人工智能等,对操作系统的自然语言交互操作 推出很多功能,值得开发,尤其运维,系统操作等比较适用,优化用户与操作系统的交互模式。本次测评,按照测评指南进行相关测评,得出下面的测评报告。 二、OS Copilot简介         OS Copilot 是一款致力于深度融合于操作系统的智能助手,它旨在成为用户与操作系统交互的得力伙伴 。通过先进的自然语言处理技术和机器学习算法,OS Copilot 能够理解用户多样化的指令,将复杂的操作系统操作简单化。         在日常使用场景中,无论是文件管理、应用程序的操作,还是系统设置的调整,OS Copilot 都能提供高效的支持。例如,在文件管理方面,用户无需手动在层层文件夹中查找文件,只需通过描述文件的大致信息,如创建时间、文件内容关键词等,就能快速定位到目标文件。         对于应用程序,它不仅能根据用户的使用习惯智能启动,还能在应用程序运行时进行优化,确保

PyTorch实战——基于文本引导的图像生成技术与Stable Diffusion实践

PyTorch实战——基于文本引导的图像生成技术与Stable Diffusion实践

PyTorch实战——基于文本引导的图像生成技术与Stable Diffusion实践 * 0. 前言 * 1. 基于扩散模型的文本生成图像 * 2. 将文本输入编码为嵌入向量 * 3. 条件 UNet 模型中的文本数据融合机制 * 4. 使用 Stable Diffusion 模型生成图像 * 相关链接 0. 前言 在本节中,我们将为扩散模型添加文本控制能力。学习如何通过文字描述来引导图像生成过程,实现从"纯噪声+文本"生成图像,而不仅是从纯噪声生成。 1. 基于扩散模型的文本生成图像 在扩散模型的 UNet 模型训练流程中,我们仅训练模型从含噪图像中预测噪声。为实现文生图功能,需使用以下架构,将文本作为额外输入注入 UNet 模型: 这样的 UNet 模型称为条件 UNet 模型 ,或者更精确地说,是文本条件 UNet

百考通AIGC检测:精准识别AI生成内容,守护学术与创作诚信

在人工智能技术迅猛发展的今天,AI写作工具已成为学术研究、内容创作的常用辅助手段。然而,当高校明确要求"论文不得使用AI生成内容",当期刊对投稿稿件进行严格的AIGC(AI生成内容)检测,当企业招聘中"原创能力"成为核心评估指标,如何确保内容的原创性,避免因AI痕迹引发的学术不端或职业风险,已成为无数研究者与创作者的共同焦虑。百考通AIGC检测服务,以"精准识别AI生成内容,守护学术与创作诚信"为使命,为用户提供专业、可靠的AI内容识别解决方案,让每一份产出都经得起权威检测的考验。 精准检测:技术赋能学术诚信 百考通AIGC检测系统采用多维度分析模型,能够深度识别文本中的AI生成特征。不同于简单的关键词匹配,系统通过语义结构分析、语言模式识别、逻辑连贯性评估等技术手段,精准区分人类写作与AI生成内容。例如,当系统检测到文本中存在"过度流畅的句式结构"、"缺乏个性化表达"、"逻辑跳跃但表面连贯"等典型AI特征时,