文章目录
FFCNet: Fourier Transform-Based Frequency Learning and Complex Convolutional Network for Colon Disease Classification
摘要
提出了一种基于傅立叶的频率复杂网络(FFCNet)用于结肠疾病分类:
- 将复杂卷积网络与频率学习相结合,以克服实际卷积操作造成的相位信息损失
- 傅立叶变换将图像的平均亮度转移到光谱中的一个点(DC分量),通过解耦图像内容和亮度来减轻亮度不均匀的影响。
- 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
实验结果