当前位置: 首页 > news >正文

FAN-UNET:用于生物医学图像分割增强模型

 

目录

一、论文结构概述

二、创新点详解

三、创新点结构与原理

(1)Vision-FAN Block:全局与周期特征的融合引擎

(2)FANLayer2D:周期性建模的核心

四、代码复现思路

五、仿真结果分析

(1)SOTA模型对比

(2)消融实验

六、应用场景

总结


一、论文结构概述

本文采用经典学术论文框架:

  1. 摘要(ABSTRACT)​​:概述FAN-UNet的核心贡献——结合Vision-FAN Block与U-Net,解决长程依赖和周期性建模问题。
  2. 引言(Introduction)​​:阐述医疗图像分割的重要性,分析CNN和Transformer的局限性,并引出FAN在周期性建模的优势。
  3. 预备知识(Preliminaries)​​:介绍傅里叶分析基础,为方法部分奠定数学基础。
  4. 方法(Method)​​:详解FAN-UNet架构,包括Vision-FAN Block和FANLayer2D的设计。
  5. 实验(Experiment)​​:在ISIC2017/2018数据集上对比SOTA模型,并进行消融实验验证组件有效性。
  6. 结论(Conclusion)​​:总结模型优势,并展望未来方向。

该结构逻辑清晰,层层递进,从问题定义到解决方案再到实证验证。


二、创新点详解

FAN-UNet的三大核心创新:

  1. Vision-FAN Block​:首次将傅里叶分析层(FANLayer2D)与自注意力机制结合,同时捕捉长程依赖和周期性特征。
  2. 医疗分割首次应用​:这是FAN模型在医疗图像分割领域的首次探索,填补了周期性建模的空白。
  3. 高性能与轻量化​:实验显示,FAN-UNet在mIoU(78.99%)、DSC(88.25%)、Accuracy(96.30%)等指标上优于主流模型(如HC-Mamba、TransFuse),且模型复杂度可控。

这些创新解决了医疗图像中病变区域周期性模式(如皮肤纹理重复性)的建模难题,显著提升分割鲁棒性。


三、创新点结构与原理

(1)Vision-FAN Block:全局与周期特征的融合引擎

Vision-FAN Block是FAN-UNet的核心模块,其结构如图1(B)所示。它通过多阶段处理整合全局和局部信息:

  • 位置编码(Positional Embed)​​:为特征图添加位置信息,增强空间关系理解。
  • 窗口自注意力(Window-based Self-Attention)​​:计算特征图不同位置的交互,捕捉长程依赖。例如,在皮肤病变分割中,病变区域可能跨越多个空间位置,自注意力能有效关联这些区域。
  • FANLayer2D​:基于傅里叶分析,显式编码周期性特征(原理见下文)。
  • 残差连接与层归一化​:确保训练稳定性,避免梯度消失。

该模块的数学表达为:

# 伪代码示意  
def Vision_FAN_Block(input):  x = positional_embed(input)  # 位置编码  x = window_self_attention(x)  # 自注意力  x = FANLayer2D(x)           # 傅里叶分析层  x = layer_norm(x + input)    # 残差连接与归一化  return x  

(2)FANLayer2D:周期性建模的核心

FANLayer2D是Vision-FAN的关键组件,其结构如图2所示。原理基于傅里叶级数展开:

  • 数学基础​:将输入函数分解为正余弦分量(见公式5):
    fS​(x)=B+Wccos(Winx)+Wssin(Winx)
    其中 B,Win,Wc,Ws 为可学习参数,T 为周期。
  • 处理流程​:
    • 步骤1​:计算周期分量 P=Wp​∗X+bp​ 和非线性分量 G=Wg​∗X+bg​。
    • 步骤2​:对 G 应用非线性激活(如ReLU),生成 Gact​=ϕ(G)。
    • 步骤3​:对 P 应用傅里叶激活,得到 Pcos​=cos(P) 和 Psin​=sin(P)。
    • 步骤4​:沿通道维度拼接 Pcos​、Psin​ 和 Gact​,形成输出特征。
  • 优势​:显式学习周期性模式(如医学图像中组织的重复纹理),提升模型泛化能力。

 

四、代码复现思路

基于PyTorch实现FAN-UNet的关键步骤:

  1. 整体架构​:继承U-Net的编码器-解码器结构,在跳跃连接处插入Vision-FAN Block。
  2. FANLayer2D实现​:
import torch  
import torch.nn as nn  class FANLayer2D(nn.Module):  def __init__(self, in_channels, out_channels):  super().__init__()  self.conv_p = nn.Conv2d(in_channels, out_channels // 2, kernel_size=3, padding=1)  # 周期分量卷积  self.conv_g = nn.Conv2d(in_channels, out_channels // 2, kernel_size=3, padding=1)  # 非线性分量卷积  self.act = nn.ReLU()  # 非线性激活  def forward(self, x):  P = self.conv_p(x)  # 周期分量  G = self.conv_g(x)  # 非线性分量  G_act = self.act(G)  # 激活  P_cos = torch.cos(P)  # 余弦激活  P_sin = torch.sin(P)  # 正弦激活  return torch.cat([P_cos, P_sin, G_act], dim=1)  # 通道拼接  
  1. 损失函数​:组合Dice Loss和交叉熵:
    def combined_loss(input, target, alpha=0.5):  ce_loss = nn.CrossEntropyLoss()(input, target)  dice_loss = 1 - (2 * (input * target).sum() / (input.sum() + target.sum() + 1e-5))  return (1 - alpha) * ce_loss + alpha * dice_loss  

    五、仿真结果分析

    实验基于ISIC2017/2018皮肤病变数据集,关键结果如下:

    (1)SOTA模型对比
    数据集模型mIoU(%)DSC(%)Accuracy(%)
    ISIC17FAN-UNet78.9988.2596.30
    HC-Mamba77.8887.3895.17
    ISIC18FAN-UNet78.7488.1194.31
    Med-TTT78.5988.0194.30
  2. 结论​:FAN-UNet在mIoU和DSC上全面领先,尤其在ISIC17上Accuracy达96.30%,证明其在复杂病变分割中的鲁棒性。
  3. 结论​:Vision-FAN Block贡献最大(mIoU提升0.88%),位置编码次之,验证了周期性建模和空间关系的关键性。
  4. (2)消融实验
    配置mIoU(%)DSC(%)
    完整FAN-UNet(Proposed)78.7488.11
    移除Vision-FAN Block77.8687.55
    移除位置编码78.4287.89

 

六、应用场景

FAN-UNet在以下医疗场景潜力突出:

  1. 皮肤病变分割​:如ISIC数据集中的黑色素瘤,其边界纹理常呈周期性,FANLayer2D能精准捕捉此类模式。
  2. 肿瘤分析​:脑瘤(论文提及MRI数据)的形状变异大,但内部纹理有重复性,Vision-FAN Block可联合建模全局结构和局部周期特征。
  3. 多模态医疗图像​:未来可扩展至CT、MRI等多模态数据,傅里叶分析对噪声鲁棒性强,适合低质量临床图像。

实际部署时,需针对特定数据集微调周期参数 T,以适配不同器官的纹理尺度。

总结

FAN-UNet通过傅里叶分析 + 自注意力机制的创新融合,解决了医疗图像分割中的长程依赖和周期性建模难题。实验证明其在精度和泛化性上的显著优势,代码复现也较为直观。未来可探索其在3D分割或实时诊断中的应用。

 论文地址:https://arxiv.org/pdf/2410.02675

http://www.dtcms.com/a/289167.html

相关文章:

  • Python 中的闭包:原理、应用与实践
  • 2025.7.20总结-实战演讲
  • 单细胞空间多组学揭示肿瘤相关成纤维细胞的保守空间亚型和细胞邻域-空间细胞亚群细分代码实现
  • 常用的三种加密算法
  • 金融工程、金融与经济学知识点
  • ICT模拟零件测试方法--电容测试
  • 算法讲解--复写零
  • 【OpenGL 渲染器开发笔记】5 顶点数据
  • LeetCode第337题_打家劫舍III
  • Spring Boot 配置文件解析
  • 《深入C++多态机制:从虚函数表到运行时类型识别》​
  • 牛客NC14661 简单的数据结构(deque双端队列)
  • python学智能算法(二十六)|SVM-拉格朗日函数构造
  • 非广告!! 【实用工具推荐】自用多功能视频播放器-РotРlayer详细图文安装使用教程
  • 【安卓笔记】RecyclerView之ItemDecoration实现吸顶效果
  • codepen使用
  • FFmpeg 图片处理
  • 数据结构 | 栈:构建高效数据处理的基石
  • 【高等数学】第四章 不定积分——第三节 分部积分法
  • 【深度学习新浪潮】什么是robotaxi?
  • 【设计模式C#】享元模式(用于解决多次创建对象而导致的性能问题)
  • MPLS转发
  • windows C#-本地函数
  • Docker Compose 配置
  • docker compose 编排容器 mysql Springboot应用
  • 使用pytorch创建模型时,nn.BatchNorm1d(128)的作用是什么?
  • gradle关于dependency-management的使用
  • SpringBoot 整合 Langchain4j 实现会话记忆存储深度解析
  • OpenCV 入门知识:图片展示、摄像头捕获、控制鼠标及其 Trackbar(滑动条)生成!
  • 【LeetCode刷题指南】--反转链表,链表的中间结点,合并两个有序链表