Skip to content

测试时 FFT 处理与训练时不一致可能导致性能偏差 #24

@flynn17625

Description

@flynn17625

问题描述
在代码中发现训练阶段和测试阶段对 FFT 的处理存在差异,可能影响模型性能一致性:
训练阶段(ACIU.py):
python
运行
masked_x = torch.real(torch.fft.ifft2(masked_x_in_k_space)) # 取实部
测试阶段(test_function.py):
python
运行
masked_x = torch.abs(torch.fft.ifft2(masked_x_in_k_space)) # 取绝对值
这种差异会导致输入到模型的PhiTb在训练和测试时存在计算方式不同,可能造成测试结果不能准确反映模型真实性能,尤其在相位信息对重建结果有影响的场景下。
建议解决方案
统一训练和测试阶段的 FFT 逆变换处理方式,建议保持与训练阶段一致(取实部),修改test_function.py中的 FFT_Mask_ForBack 类:
python
运行
def forward(self, x, full_mask, flag=True):
full_mask = full_mask[..., 0]
x_in_k_space = torch.fft.fft2(x)
masked_x_in_k_space = x_in_k_space * full_mask.view(1, 1, *(full_mask.shape))
masked_x = torch.real(torch.fft.ifft2(masked_x_in_k_space)) # 改为取实部
return masked_x
补充说明
需要确认数据集中的图像是否为实数信号(通常 MRI 图像为实数),如果是则取实部更合理;若存在复数信号场景,可能需要重新评估合适的处理方式。建议在修改后重新测试模型性能,观察指标变化。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions