# fhanet **Repository Path**: ouyueyang/fhanet ## Basic Information - **Project Name**: fhanet - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-27 - **Last Updated**: 2026-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 频域通道注意力中变换基选择的作用机制研究 > DCT vs Hadamard vs Random Orthogonal ## 摘要 频域通道注意力机制(如FcaNet)通过离散余弦变换(DCT)替代全局平均池化,在多项视觉任务中取得了显著的性能提升。然而,现有研究未充分验证这种提升是否源于DCT的频率物理意义,还是仅来自多正交基投影带来的表达增强。 本项目通过系统性消融实验,将DCT基替换为**哈达玛(Hadamard)变换基**和**随机正交基**,在CIFAR-100和Stanford Dogs两个数据集上进行对比分析。 ## 研究动机 FcaNet证明了全局平均池化(GAP)只是2D DCT的最低频分量(DC分量),并通过引入多个DCT频率分量来增强通道描述符的表达能力。然而,一个关键问题是: **FcaNet的性能提升是否真的来源于DCT的频率物理意义,还是仅仅来自"多正交基投影"带来的表达增强?** 为回答这一问题,本项目设计了系统性的消融实验,比较以下四种方法: | 方法 | 频域投影 | 基函数特点 | 物理意义 | |------|---------|-----------|---------| | SE (GAP) | 仅DC分量 | 全1向量 | 全局均值 | | FcaNet (DCT) | 多DCT频率 | 余弦基 | 频率/平滑度 | | FhaNet (Hadamard) | 多Hadamard频率 | ±1二值基 | Sequency | | Random-Orth | 随机正交向量 | 任意正交 | 无 | ## 实验结果 ### CIFAR-100 实验结果 | 方法 | Seed 22 | Seed 24 | Seed 42 | 平均 Top-1 | Top-5 | |------|---------|---------|---------|-----------|-------| | SENet | 69.90% | 69.58% | 69.47% | 69.65% | 91.60% | | FcaNet (DCT) | 70.22% | 69.89% | 69.83% | 69.98% | 91.82% | | FhaNet (Hadamard) | 70.08% | 70.05% | 70.07% | **70.07%** | 91.84% | | Random-Orth | 70.05% | 69.70% | 70.17% | 69.97% | 91.84% | ### Stanford Dogs 实验结果 | 方法 | Top-1 | Top-5 | Params | FLOPs | |------|-------|-------|--------|-------| | SENet | 65.11% | 89.20% | 11.32M | 1.709G | | FcaNet (DCT) | **65.51%** | 88.55% | 11.32M | 1.709G | | FhaNet (Hadamard) | 64.76% | 89.00% | 11.32M | 1.709G | | Random-Orth | 65.11% | 88.65% | 11.32M | 1.709G | ### 核心发现 1. **多频方法优于SE**:所有多频方法的平均性能均高于SE基线约0.3-0.4%,验证了多正交基投影的有效性。 2. **正交基选择的影响具有数据依赖性**: - 在**低分辨率**(CIFAR-100, 32×32)场景下,不同正交基之间的性能差异在随机波动范围内(<0.4%),正交性本身即可带来多投影增益 - 在**高分辨率细粒度**(Stanford Dogs, 112×112)场景下,DCT方法表现出更稳定的优势(65.51% vs 64.76%),DCT的低频结构先验在结构主导的任务中具有价值 3. **频域注意力的收益可分解**:收益来自两个可分离的机制——结构无关的多投影增益和结构相关的频率先验 ## 项目结构 ``` design/ ├── src/ # 源代码 │ ├── models/ # 模型定义 │ │ ├── fcanet.py # FcaNet (DCT) 模型 │ │ ├── fhanet.py # FhaNet (Hadamard) 模型 │ │ ├── hadamard_layer.py # 哈达玛注意力层 │ │ ├── random_orth.py # 随机正交基模型 │ │ ├── resnet.py # ResNet 骨干网络 (含SENet) │ │ └── dogs_models.py # Stanford Dogs 专用模型 │ ├── data/ # 数据加载 │ │ ├── cifar.py # CIFAR 数据集 │ │ └── stanford_dogs.py # Stanford Dogs 数据集 │ ├── engine/ # 训练引擎 │ │ └── trainer.py # 训练器 │ ├── utils/ # 工具函数 │ │ ├── evaluation.py # 评估工具 │ │ └── visualization.py # 可视化工具 │ └── configs/ # 配置文件 │ └── config.py # 实验配置 ├── data/ # 数据目录 │ ├── cifar-100-python/ # CIFAR-100 数据 │ ├── stanford-dogs/ # Stanford Dogs 数据 │ └── process_images.py # Stanford Dogs 数据集批处理 ├── checkpoints/ # 模型检查点 │ ├── cifar_seed{22,24,42}/ # CIFAR 多种子实验 │ └── dogs/ # Dogs 实验 ├── results/ # 实验结果 │ ├── cifar/ # CIFAR 结果与可视化 │ └── dogs/ # Dogs 结果与可视化 ├── report/ # 课程设计报告 (LaTeX) ├── train.py # 训练脚本 ├── evaluate.py # 评估脚本 ├── generate_cifar_visualizations.py # CIFAR 可视化生成 ├── generate_dogs_visualizations.py # Dogs 可视化生成 ├── visualize_results.py # 结果可视化 └── requirements.txt # 依赖列表 ``` ## 快速开始 ### 安装依赖 ```bash pip install -r requirements.txt ``` ### 准备数据集 如若缺失,CIFAR数据集将自动下载到./data/下。第二个数据集请参考 [Stanford Dogs Dataset](http://vision.stanford.edu/aditya86/ImageNetDogs/)。 对于 Stanford Dogs,需要在data下执行`process_images.py`处理图像,裁剪为正方形并降低分辨率至112x. ### 训练模型 ```bash # SENet (经典SE注意力) python train.py --config senet # FcaNet (DCT多光谱注意力) python train.py --config fcanet # FhaNet (哈达玛多光谱注意力) python train.py --config fhanet # Random-Orth(随机正交基) python train.py --config randorth # 使用 Stanford Dogs 数据集及相关模型 python train.py --config dogs_senet python train.py --config dogs_fcanet python train.py --config dogs_fhanet python train.py --config dogs_randorth # 使用二值化哈达玛变换 python train.py --config binary # 快速调试 python train.py --config debug # 自定义参数 python train.py --model fhanet18_cifar --dataset cifar100 --epochs 200 --lr 0.1 ``` ### 评估模型 ```bash # CIFAR 实验组示例 python evaluate.py --model senet18_cifar --checkpoint ./checkpoints/cifar/senet/best_model.pth --plot-curves --dataset cifar100 --output-dir ./results/cifar/senet python evaluate.py --model fcanet18_cifar --checkpoint ./checkpoints/cifar/fcanet/best_model.pth --plot-curves --dataset cifar100 --output-dir ./results/cifar/fcanet python evaluate.py --model fhanet18_cifar --checkpoint ./checkpoints/cifar/fhanet/best_model.pth --plot-curves --dataset cifar100 --output-dir ./results/cifar/fhanet python evaluate.py --model fca_random_orth18_cifar --checkpoint ./checkpoints/cifar/randorth/best_model.pth --plot-curves --dataset cifar100 --output-dir ./results/cifar_seed24/randorth # DOGS 实验组示例 python evaluate.py --model senet18_dogs --checkpoint ./checkpoints/dogs/senet/best_model.pth --plot-curves --dataset stanford_dogs --output-dir ./results/dogs/senet python evaluate.py --model fcanet18_dogs --checkpoint ./checkpoints/dogs/fcanet/best_model.pth --plot-curves --dataset stanford_dogs --output-dir ./results/dogs/fcanet python evaluate.py --model fhanet18_dogs --checkpoint ./checkpoints/dogs/fhanet/best_model.pth --plot-curves --dataset stanford_dogs --output-dir ./results/dogs/fhanet python evaluate.py --model randorth18_dogs --checkpoint ./checkpoints/dogs/randorth/best_model.pth --plot-curves --dataset stanford_dogs --output-dir ./results/dogs/randorth ``` ### 结果可视化 ```bash # 注意,这两个脚本硬编码了相对路径 python ./generate_cifar_visualizations.py python ./generate_dogs_visualizations.py ``` ## 实验配置 | 配置名称 | 数据集 | 模型 | 描述 | |---------|--------|------|------| | senet | CIFAR-100 | SENet18 | SE注意力基线 | | fcanet | CIFAR-100 | FcaNet18 | DCT多光谱注意力 | | fhanet | CIFAR-100 | FhaNet18 | Hadamard多光谱注意力 | | randorth | CIFAR-100 | Random-Orth18 | 随机正交基注意力 | | dogs_senet | Stanford Dogs | SENet18 | Dogs SE注意力 | | dogs_fcanet | Stanford Dogs | FcaNet18 | Dogs DCT注意力 | | dogs_fhanet | Stanford Dogs | FhaNet18 | Dogs Hadamard注意力 | | dogs_randorth | Stanford Dogs | Random-Orth18 | Dogs 随机正交基 | | debug | CIFAR-100 | FhaNet18 | 快速调试模式 | ## 评估指标 - **准确率**: Top-1/Top-5 Accuracy - **效率**: FLOPs、参数量、推理时间 - **可视化**: 基函数权重可视化、Grad-CAM 热力图 ## 参考文献 1. Hu, J., Shen, L., & Sun, G. (2018). **Squeeze-and-Excitation Networks**. *CVPR*. 2. Qin, Z., Zhang, P., Wu, F., & Li, X. (2021). **FcaNet: Frequency Channel Attention Networks**. *ICCV*. 3. Woo, S., Park, J., Lee, J. Y., & Kweon, I. S. (2018). **CBAM: Convolutional Block Attention Module**. *ECCV*. 4. Wang, Q., et al. (2020). **ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks**. *CVPR*. ## 许可证 本项目仅供学术研究使用。 项目地址:https://gitee.com/ouyueyang/fhanet.git