FFCNet:基于傅立叶变换的频率学习和复杂卷积网络用于结肠疾病分类

本文主要是介绍FFCNet:基于傅立叶变换的频率学习和复杂卷积网络用于结肠疾病分类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • FFCNet: Fourier Transform-Based Frequency Learning and Complex Convolutional Network for Colon Disease Classification
    • 摘要
    • 方法
      • Patch Shuffling Module (PSM)
      • Frequency-Domain Complex Network
        • Complex Convolution
        • Complex ReLU
        • Complex BN
    • 实验结果

FFCNet: Fourier Transform-Based Frequency Learning and Complex Convolutional Network for Colon Disease Classification

摘要

提出了一种基于傅立叶的频率复杂网络(FFCNet)用于结肠疾病分类:

  1. 将复杂卷积网络与频率学习相结合,以克服实际卷积操作造成的相位信息损失
  2. 傅立叶变换将图像的平均亮度转移到光谱中的一个点(DC分量),通过解耦图像内容和亮度来减轻亮度不均匀的影响。
  3. FFCNet中的图像补丁加扰模块生成随机局部频谱块,使网络能够学习长期和局部疾病特异性特征,并提高硬样本的判别能力
    代码链接
    在这里插入图片描述
    频域学习在结肠疾病分类任务中具有潜力和局限性。
    a) 潜力:光谱对亮度不敏感,并且具有位移变化性
    b) 限制:缺乏图像局部信息和相位信息

方法

在这里插入图片描述

Patch Shuffling Module (PSM)

所提出的PSM将时域图像转换为频域表示,包括图像切片、DFT和随机混洗。与没有划片的图像光谱相比,由于频域中的一个点可以影响整个图像的光谱特性,该网络将只学习全局信息,这忽略了结肠分类所需的局部特征

Frequency-Domain Complex Network

所提出的频率学习网络可以在训练过程中通过复杂的操作直接学习复值谱图。复杂网络的骨干架构采用ResNet,内部运算由复杂的子组件(复杂卷积、ReLU、批量归一化)代替。每个残差块由两个3*3卷积层和一个连接路径组成。因此,所提出的网络考虑了频率信息特征的优势和复杂操作的丰富表达能力。

Complex Convolution

为了在复域中执行与传统实值2D卷积等效的运算,将谱图中的复矩阵P=a+bi的实部a和虚部b分别输入到网络中。同时,插入两组卷积核c和d来模拟复数卷积核Q=c+di的实部和虚部。复数卷积可以表示为
在这里插入图片描述

Complex ReLU

在这里插入图片描述

Complex BN

在这里插入图片描述
在这里插入图片描述
这篇文章看代码就差不多了

def forward(self, x, target = None):xr = x[:,[0,1,2],:,:]xi = x[:,[3,4,5],:,:]xr, xi = self.conv1(xr, xi)xr, xi = self.bn1(xr, xi)xr, xi = self.relu(xr, xi)xr, xi = self.maxpool(xr, xi)xr, xi = self.conv2_x(xr, xi)xr, xi = self.conv3_x(xr, xi)xr, xi = self.conv4_x(xr, xi)xr, xi = self.conv5_x(xr, xi)xr, xi = self.avg_pool(xr, xi)xr = xr.view(xr.size(0), -1)xi = xi.view(xi.size(0), -1)xr, xi = self.fc(xr, xi)x = torch.sqrt(torch.pow(xr,2)+torch.pow(xi,2))return x

实验结果

在这里插入图片描述
在这里插入图片描述

这篇关于FFCNet:基于傅立叶变换的频率学习和复杂卷积网络用于结肠疾病分类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/232925

相关文章

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Android如何获取当前CPU频率和占用率

《Android如何获取当前CPU频率和占用率》最近在优化App的性能,需要获取当前CPU视频频率和占用率,所以本文小编就来和大家总结一下如何在Android中获取当前CPU频率和占用率吧... 最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下:目前没有标准的

SpringBoot实现导出复杂对象到Excel文件

《SpringBoot实现导出复杂对象到Excel文件》这篇文章主要为大家详细介绍了如何使用Hutool和EasyExcel两种方式来实现在SpringBoot项目中导出复杂对象到Excel文件,需要... 在Spring Boot项目中导出复杂对象到Excel文件,可以利用Hutool或EasyExcel

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为