学习记录——SegNetr、EGE-UNet、R2AU-Net、PHNet、CFNet

news2024/11/15 9:13:33

SegNetr: Rethinking the local-global interactions and skip connections in U-shaped networks

前导:

  • 集中于设计复杂的自注意力模块,以弥补基于卷积操作捕获长距离上下文依赖的不足,从而增加了网络的参数和计算复杂性;
  • 过于简单地融合编码器和解码器的特征,忽略了它们之间空间位置的关联性。
      论文引入了一种新颖的SegNetr块,可以在任意阶段动态地执行局部-全局交互,并且具有线性复杂度。同时,论文设计了一种通用的信息保留跳跃连接,用于保留编码器特征的空间位置信息,并与解码器特征进行准确融合。
    在这里插入图片描述
      SegNetr 是一个典型的分层 U 型网络,其中包括 SegNetr 块和 IRSC 两个重要组件。为了使网络更轻量化,作者基于 MBConv 作为基础卷积构建块。SegNetr 块在编码器和解码器阶段实现了动态的局部-全局交互。使用补丁合并将分辨率降低两倍,同时不丢失原始图像信息。此外,IRSC 则用于融合编码器和解码器的特征,减少随着深度增加而网络丢失的细节信息。

在这里插入图片描述

  SegNetr 块,这是 SegNetr 整个网络的核心组件,通过局部-全局交互实现特征的动态处理。它使用 MBConv 作为基础卷积模块,并引入局部和全局分支来实现交互。
在这里插入图片描述

  此处,局部分支时通过计算非重叠小补丁的注意力矩阵,实现局部交互。而全局分支通过对空间上非连续补丁的聚合和位移操作,实现全局交互。局部和全局分支最终通过加权求和进行融合。这种设计不仅减少了计算复杂度,还更好地捕捉了图像中的局部和全局信息。
在这里插入图片描述
  信息保留跳跃连接通过 Patch Merging 和 Patch Reverse ,实现了编码器和解码器特征的融合。其中,Patch Merging 的具体操作时将输入特征图的分辨率降低,同时扩展通道维度,以保留更多高分辨率的细节信息。而 Patch Reverse 用于恢复编码器的空间分辨率,并与解码器的上采样特征进行融合。这样可以更好地恢复特征图的细节和位置信息,提高分割的准确性。

EGE-UNet: an Efficient Group Enhanced UNet for skin lesion segmentation

上海交大 2023 MICCAI

  基于 U-Net 进行魔改,用于解决医学图像(尤其是皮肤病变)分割中面临的问题。由于它是针对移动健康应用开发的,解决了当前许多模型所面临的高参数和计算负载问题。
EGE-UNet融合了两个主要模块:

  • Group multi-axis Hadamard Product Attention module (GHPA)
  • Group Aggregation Bridge module (GAB)

  GHPA 利用哈达玛积注意力机制(HPA),通过将输入特征进行分组,对不同轴进行 HPA 操作,从多个视角提取病变信息。这种方法是受到多头自注意力机制(MHSA)的启发,而 HPA 则可以减少模型大小,因为它的复杂性被设计为线性的,而且不同于 MHSA 的二次复杂性。
什么是哈达玛积? 转
  GAB 通过分组聚合将不同规模的高级语义特征和低级细节特征以及解码器生成的掩码进行融合,从而有效提取多尺度信息,这对医学图像的分割至关重要。
在这里插入图片描述

GHPA 模块

  HPA采用可学习权值,并对输入进行标准乘积运算以获得输出。随后,受MHSA中的多头模式的启发,我们提出了GHPA,它将输入分成不同的组,并在每个组中执行HPA。然而,值得注意的是,我们在不同的组中对不同的轴进行HPA,这有助于进一步从不同的角度获得信息。另一方面,对于GAB,由于医学图像中分割目标的大小和形状不一致,需要获取多尺度信息[19]。因此,GAB基于分组聚合将大小不同的高层和低层特征集成在一起,并在此基础上引入掩码信息辅助特征融合。通过将上述两个模块与UNet相结合,我们提出了EGE-UNet,它以极低的参数和计算量获得了优异的分割性能。

GAB

它接受三个输入:

  • 低级特征
  • 高级特征
  • 掩码
    在这里插入图片描述
      首先,使用深度可分卷积(DW)和双线性插值调整高级特征的大小,以匹配低级特征的大小。其次,我们将两个特征图沿着通道维度划分为四个组,并将低级特征的一组与高级特征的一组连接起来,得到四组融合特征。对于每组融合特征,掩码被连接。接下来,对不同的组应用带有3个核大小和不同扩张率的扩张卷积,以便提取不同尺度的信息。最后,沿着通道维度连接四个组,然后应用核大小为1的普通卷积以实现不同尺度特征之间的交互。

A FEW-SHOT ATTENTION RECURRENT RESIDUAL U-NET FOR CRACK SEGMENTATION

  本文主要探讨了一种关于小样本语义分割的道路裂缝自动分割算法,其基于具有循环残差和注意力模块的U-Net架构——Recurrent Residual and Attention U-Net。当一些新的校正样本被送入分类器时,采用再训练策略可以动态地微调U-Net的权重。

在这里插入图片描述
  如上图(a)所示,本文基于U-Net网络并结合循环残差和注意力模块提出了一种适用于道路裂缝分割的网络,称为R2AU-Net。与标准U-Net相比,R2AU-Net 结合了递归残差卷积层可确保更好地表示分割任务的特征和注意力区域,以突出显示通过跳跃连接传递的显着特征
  此外,本文针对以往方法仅能从以训练的标注数据中学习的限制,引入了一种基于 R2AU-Net 的半监督学习范式few-shot refinement方案,它能够根据用户的反馈灵活的调整模型的行为和权重,进一步提高分割性能,如上图(b)所示。

A Permutable Hybrid Network for Volumetric Medical Image Segmentation

2023
  本文将CNN和MLP相结合,提出了一种新的混合网络PHNet,以实现准确的3D医学图像分割。PHNet采用编码器-解码器结构,其中编码器利用2.5D CNN结构,可以利用医学图像固有的等向性,并通过捕获不同方向上体积医学图像的变化信息密度来避免浅层损失信息。论文进一步提出了MLPP,一种可以在计算效率高的情况下保持位置信息并集成全局相互依赖性的多层排列感知器模块。为了提高计算效率,引入了令牌token组操作,可以高效地在令牌级别上聚合特征映射,从而减少所需的计算量。本文首次提出将CNN和MLP进行结合,并应用于3D医学图像分割。
在这里插入图片描述

网络框架

  结构如上图:采用编码器-解码器架构,编码器由两个主要组件组成:2.5D卷积模块和多层置换感知器(MLPP)模块。2.5D卷积阶段提取局部特征,输出的特征图传递给MLPP模块以学习全局特征。解码器对分层特征进行处理以进行最终预测。

2.5D Convolution

  本文通过引入卷积层来提取局部特征,这是基于先前关于医学图像分析偏差的研究[1]和3D体积医学图像的各向异性本质而得出的结论。3D体积图像如CT和MRI扫描常常由于其厚切片扫描而受到各向异性问题的影响,导致高面内IP分辨率和低面外TP分辨率,这种差异在COVID-19-20中特别明显,其IP分辨率平均为0.74mm,而TP分辨率仅为5mm。为了解决这一问题,本文使用2D卷积块来捕获IP信息,直到特征在三个轴面(横断、冠状和矢状)上形成近似均匀的分辨率,然后使用3D卷积块来处理体素信息。每个编码器层由两个残差卷积块组成,每个块包括两个顺序的Conv-IN-ReLU操作。

Multi-Layer Permute Perceptron (MLPP)

  尽管卷积神经网络(CNN)通过深层堆叠卷积层能够建模长距离依赖关系,但研究表明:基于多层感知器MLP的网络在学习全局上下文方面更有效。 因此本文设计了MLPP模块(如上图2b所示)用以提取深层的全局信息。MLPP模块按顺序分解平面内IP特征和垂直方向TP特征的训练。作者分别将这两个块称为IP-MLP和TP-MLP。为了实现跨轴令牌之间的通信,作者还在IP-MLP中提出了一个辅助注意力分支,称为AA-MLP。具体细节如下:
在这里插入图片描述
在这里插入图片描述

Decoder

  本文的解码器采用纯CNN架构,使用转置卷积逐渐上采样特征映射以匹配输入图像分辨率。在上采样过程之后,使用残差卷积块来细化特征映射。为了进一步提高分割准确性,作者在编码器和解码器之间包括跳跃连接,允许保留low-level的细节信息。

  本文提出了一种新的可置换混合网络PHNet,用于3D体积医学图像分割任务。PHNet集成了2D CNN、3D CNN和MLP,以实现局部和全局特征的提取和集成。此外,本文还引入了一个可置换的MLP块,以解决空间信息丢失问题并最小化计算负担。通过在两个公共数据集上进行的广泛实验证明,所提出的方法优于现有的SOTA方法。结合不同任务的特点,考虑精度与计算负载问题,系统地研究CNN、Transformer和MLP之间的效率、有效性和交互作用,会是一个不错的idea。

CFNet: Cascade Fusion Network for Dense Prediction

一种新颖的多尺度融合方法
CVPR 2023

  现有的SOTA方法通常先通过主干网络提取多尺度特征,然后通过轻量级模块(如 FPN)融合这些特征。然而,我们认为通过这样的范例来融合多尺度特征可能是不够充分,因为与重量级主干网络相比,分配给特征融合的参数是有限的。
  为此,我们提出了一种名为级联融合网络(CFNet)的新架构用于提升密集预测性能。除了用于提取初始高分辨率特征的主干和几个模块外,我们还引入了几个级联stage,使得CFNet能够生成更丰富的多尺度特征。每个stage都包括一个用于特征提取的子主干和一个用于特征集成的轻量级的转换模块。这种设计使得可以更深入有效地融合特征与整个主干的大部分参数。 最后,我们在目标检测、实例分割和语义分割等任务中验证了CFNet 的有效性。
在这里插入图片描述
  近几年,CNN和Transformer在许多计算机视觉任务中取得了令人满意的成果,包括图像分类、目标检测、语义分割等任务。对于图像分类任务,CNN和transformer网络在架构设计中均遵循逐渐减小特征图的空间大小的方式,来获取最高级语义特征进行预测。然而,对于许多密集预测任务,例如检测和分割,则需要多尺度特征来处理不同尺度的目标。
  众所周知,特征金字塔网络 (FPN) 被广泛用于多尺度特征提取和融合,如上图(a)所示。然而,我们认为使用这样的范例可能不足以融合多尺度特征,因为与重量级主干网络相比,分配给特征融合的参数是有限的。例如,考虑基于主干 ConvNeXt-S 构建的 FPN,融合模块与主干的参数比例小于 10%。
  那么,在计算资源不变的情况下,如果我们想为特征融合分配更多的参数,一个直观的方法是使用更小的主干并扩大融合模块。然而,使用较小的主干意味着整个模型从大规模预训练(例如 ImageNet 分类预训练)中获益较少,这对于训练数据有限的下游任务至关重要。那么我们如何分配更多的参数来实现特征融合,同时保持一个简单的模型架构,使得模型仍然可以最大程度地受益于大规模的预训练权重呢?
  先回顾一下FPN的融合模块。为了融合多尺度特征,来自相邻层的特征首先通过逐元素相加进行整合,然后使用单个 3×3 卷积对求和特征进行变换。我们将这两个步骤命名为特征集成和特征转换。很明显,我们可以堆叠更多的卷积来转换集成特征,但它同时也引入了更多的参数,为主干留下的参数更少。从另一个角度思考,我们是否可以将特征整合操作插入主干,以便利用它之后的所有参数来转换整合后的特征。

  CFNet主要思想是将特征集成操作插入至骨干网络中,使得更多参数能够用于特征融合,极大地增加了特征融合的丰富度。 本文提出的CFNet方法的主要贡献如下:

  • 本文提出的CFNet能够有效改善密集任务(检测、分割)性能;
  • 由于CFNet架构的简易性,能够轻松从大规模预训练权重中获益;
  • 在目标检测和实例分割任务上超越ConvNeXt以及Swin Transformer 1~2%精度。
    在这里插入图片描述

  上图展示了CFNet网络架构。输入一张尺寸大小为 的 RGB 图像,经过一个 stem 和 N 个连续的块(block)处理,提取到的高分辨率特征。stem 由两个步幅(stride)为 2 的 卷积层组成,每个卷积层后面跟着一个 LayerNorm 层和一个 GELU 单元。CFNet 中的块(block)可以是之前的一些研究中提出的任何设计,例如 ResNet 瓶颈块、ConvNeXt 块、Swin Transformer 块等。

  在CFNet 的多级结构中,高分辨率的特征经过一个步幅(stride)为 2 的 卷积层降采样后,被送入 个级联的stage中。所有的stage都共享相同的结构,但是它们可能具有不同数量的块(block)。在每个stage的最后一个块组中,应用了关注块(focal block)。值得注意的是,每个阶段输出带有步幅为 8、16、32 的特征 P3、P4、P5,但只有 P3 特征被送入后续stage。最后,由最后一个阶段输出的融合特征 P3、P4 和 P5 用于密集预测任务。

在这里插入图片描述
  转换块用于整合每个stage中不同尺度的特征。如上图所示,我们提出了三种简单的转换块。

  • Add: 首先使用1×1卷积将C4和C5的通道数量降低以与C3对齐。在执行逐元素相加之前,使用双线性插值操作对齐特征的空间大小。

  • Concat: 直接上采样C4和C5的特征以与C3的空间大小对齐,然后拼接这些特征,接着使用1×1卷积来减少通道数。

  • Sequentially Add: 将不同尺度的特征逐步上采样和组合。这个设计类似于FPN中的融合模块,不同之处在于没有额外的卷积来转换相加的特征。

在这里插入图片描述

  在密集预测任务中,处理各种尺度的目标一直是一个巨大的挑战。通常采用的解决方案是生成不同分辨率的特征。例如,使用步幅为8、16、32、64、128的特征来检测相应尺度的目标。用于生成步幅较大的特征的神经元通常具有较大的感受野。在CFNet的每个stage中,有三个块组用于提取步幅为8、16、32的特征。理想情况下,我们可以提取另外两个分辨率的特征以整合更多的特征尺度,就像和FPN一样。然而,这会引入更多的参数,因为随着特征的空间尺寸缩小,后面的组的通道数量逐渐增加。因此,我们提出了聚焦块,用于扩大每个stage的最后一个块组中神经元的感受野。
  如上图所示,本文提出了两种聚焦块的设计,分别在ConvNeXt块和Swin Transformer块中引入了膨胀深度卷积和两个跳跃连接。聚焦块可以同时合并细粒度的局部特征和粗粒度的全局特征进行交互。最近,使用全局注意力或大卷积核来扩大感受野已经得到广泛研究。虽然取得了有竞争力的结果,但将这些操作应用于密集预测任务时,由于输入图像的尺寸过大,通常会引入大量的计算成本和内存开销。相比之下,本文提出的聚焦块仅引入了极少量的额外成本。

End

以上仅作个人学习记录使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/832659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git Bash 教程!【不是所有人都会用Git】

我不太会用github...... 写这篇文章希望能顺利...... 【写在前面】介绍一下git bash的复制粘贴的快捷键,以防后续不会: 开始: 首先下一个windows:git for windows(地址:Git - Downloading Package (git-scm.com)) &a…

递归 shell指令

递归实现&#xff0c;输入一个数&#xff0c;输出这个数的每一位 #include <myhead.h>int fun(int n) {if(n>0){printf("%d ",n%10);return 1fun(n/10); } }int main(int argc, const char *argv[]) {int n0;printf("请输入一个数&#xff1a;\n"…

JavaScript场景应用:Canvas实战开发一个二维折线图插件

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f3c6;本文已…

MySQL概述与体系结构

文章目录 一、MySQL概述1.1 MySQL与redis的区别1.2 数据处理分类1.3 SQL1.4 数据类型 二、数据库设计三范式2.1 范式一2.2 范式二2.3 范式三2.4 反范式 三、MySQL体系结构3.1 结构组成3.2 连接池 四、sql语句执行过程4.1 select语句4.2 CRUD执行过程 一、MySQL概述 1.1 MySQL与…

复现沙箱逃逸漏洞

什么是沙箱(sandbox) 在计算机安全性方面&#xff0c;沙箱&#xff08;沙盒、sanbox&#xff09;是分离运行程序的安全机制&#xff0c;提供一个隔离环境以运行程序。通常情况下&#xff0c;在沙箱环境下运行的程序访问计算机资源会受到限制或者禁止&#xff0c;资源包括内存、…

小白到运维工程师自学之路 第六十四集 (dockerfile构建tomcat、mysql、lnmp、redis镜像)

一、tomcat&#xff08;更换jdk&#xff09; mkdir tomcat cd tomcat/ tar xf jdk-8u191-linux-x64.tar.gz tar xf apache-tomcat-8.5.40.tar.gzvim Dockerfile FROM centos:7 MAINTAINER Crushlinux <syh163.com> ADD jdk1.8.0_191 /usr/local/java ENV JAVA_HOME /us…

使用Canvas裁剪图片

使用Canvas裁剪图片 概述 在Web开发中&#xff0c;我们经常需要对图片进行裁剪&#xff0c;以满足不同尺寸需求或者实现图片的局部展示。本篇博客将带您深入了解如何使用Canvas技术来实现图片的裁剪功能。我们将通过一个实例来演示如何利用Canvas绘制图片&#xff0c;并通过蒙…

二叉树的相关题目

目录 1、根据二叉树创建字符串 2、二叉树的层序遍历 3、二叉树的最近公共祖先 4、搜索二叉树与双向链表 5、从前序与中序遍历序列构造二叉树 6、 从中序与后序遍历序列构造二叉树 7、二叉树的前序遍历&#xff08;非递归实现&#xff09; 8、二叉树的中序遍历&#xff08…

宋浩高等数学笔记(十)重积分

本章更新第10章重积分&#xff0c;关于三重积分的应用部分暂时略过&#xff0c;本部分在考察的时候不会很难&#xff0c;困难在于对重积分本质的理解&#xff0c;以及极坐标下相关公式的计算。类比普通的定积分&#xff0c;如果对一个宽度不均匀的函数&#xff0c;求积分分后相…

工厂模式详解与应用场景

摘要&#xff1a; 工厂模式是一种常见的设计模式&#xff0c;它可以帮助我们在面向对象的程序设计中更好地组织和管理对象的创建过程。本文将详细介绍工厂模式的概念、三种常见的工厂模式应用场景&#xff0c;并提供高质量的C代码示例&#xff0c;旨在帮助初学者更好地理解和应…

【Spring Boot系列】-Spring Boot过滤器Filter

【Spring Boot系列】-Spring Boot过滤器Filter 文章目录 【Spring Boot系列】-Spring Boot过滤器Filter一、概述二、Filter&#xff08;过滤器&#xff09;数据流程三、Spring Boot 过滤器生命周期四、使用注解方式实现过滤器(WebFilter)4.1. 在springboot 启动类添加该注解Ser…

JAVA大神必备,IDEA自带的JVM监控神器

前言 开发阶段实时监测&#xff0c;自己的JVM信息&#xff0c;实时可视化 Hotspot JVM 垃圾回收监控工具, 支持查看本地和远程JVM进程, 支持G1 and ZGC算法。 插件安装 在线安装 IntelliJ IDEA 可通过在线安装的方式&#xff0c;安装插件 JDK VisualGC&#xff0c;安装步骤: …

过程:从虚拟机上添加 git 并成功提交到 GitLab 的全过程

Ⅰ、准备工作&#xff1a; 1、Git 查看&#xff1a; 其一、命令&#xff1a;git --version // 此时就能在虚拟机环境下看到 git 的版本为: git version 2.41.0 其二、如何在虚拟机上安装 git &#xff1a; A、命令 &#xff1a; sudo apt-get install git B、然后再输入虚…

JavaScript |(三)内建对象 | 数组 | string对象 | 尚硅谷JavaScript基础实战

学习来源&#xff1a;尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 文章目录 &#x1f4da;数组&#x1f407;数组介绍⭐️数组&#xff08;Array&#xff09;⭐️基本操作⭐️数组的字面量 &#x1f407;数组中的常用方法⭐️push()⭐️pop()⭐️unshift()⭐️shif…

微信小程序wx.getlocation接口权限申请总结

先附上申请通过截图 插播内容&#xff1a;可代开通&#xff0c;保证通过。wx.getLocation接口&#xff08;获取当前的地址位置&#xff09; qq&#xff1a; 308205428 如何申请 当申请微信小程序的wx.getLocation接口权限时&#xff0c;你可以…

yolov8-制作数据集,数据集格式转换(yolo格式-voc格式)附完整代码

yolo训练时可使用的数据集格式为yolo格式以及voc格式&#xff0c; voc格式的数据集在训练时需要先转换为yolo格式&#xff0c;然后根据自己的数据集的位置更改yaml配置文件的文件路径即可。基于目前对Yolo系列训练模型的讲解已经很全面&#xff0c;所以本文主要讲解yolo数据集与…

记录 FreeRTOS 信号量 的简单用法

FreeRTOS 信号量 最简单的应用场景是 两个任务间的同步 &#xff0c;这里以 二值信号量 Binary Semaphore为例 用法 &#xff1a; 1&#xff0c;定义与 创建 /* Definitions for myBinarySem01 */ osSemaphoreId_t myBinarySem01Handle; const osSemaphoreAttr_t myBinarySe…

c++类与对象详解

c类与对象详解 对象类方法自定义类型类的特性this类的六个默认成员函数static成员友元内部类 对象 在C中&#xff0c;对象是类的实例。定义对象的语法为&#xff1a; <class_name> object_name;其中&#xff0c;class_name 是定义类时指定的类名&#xff0c;object_nam…

二分查找【Java算法】

文章目录 1. 概念2. 思路3. 代码实现 1. 概念 二分查找又叫折半查找&#xff0c;要求待查找的序列有序&#xff0c;每次取中间位置的值与待查关键字比较&#xff0c;如果待查关键字比中间位置的值小&#xff0c;则在前半部分循环这个查找的过程&#xff0c;反之&#xff0c;在后…

7_分类算法—逻辑回归

文章目录 逻辑回归&#xff1a;1 Logistic回归&#xff08;二分类问题&#xff09;1.1 sigmoid函数1.2 Logistic回归及似然函数&#xff08;求解&#xff09;1.3 θ参数求解1.4 Logistic回归损失函数1.5 LogisticRegression总结 2 Softmax回归&#xff08;多分类问题&#xff0…