1. 项目背景与核心价值
在计算机视觉领域,图像分类一直是基础且关键的任务。随着深度学习技术的发展,从早期的AlexNet到ResNet,再到Vision Transformer,模型的性能不断提升。然而,一个长期存在的矛盾是:如何在增加网络深度的同时,避免梯度消失/爆炸问题,并让模型能够有效关注图像的关键区域?
这正是我们毕设项目要解决的核心问题。通过设计可堆叠的残差注意力模块,我们实现了两个重要目标:
- 允许网络深度大幅增加而不出现梯度问题
- 让模型能够自适应地聚焦于图像的关键特征区域
这种设计在ImageNet等基准数据集上表现出色,特别是在细粒度分类任务(如鸟类子类识别、医学影像分类)中,相比传统ResNet有显著提升。更重要的是,模块化的设计使其可以灵活嵌入到各种现有架构中。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 残差连接的本质与改进
2.1 传统残差块的局限性
经典的ResNet残差块采用简单的恒等映射:
python复制def forward(self, x):
identity = x
out = self.conv1(x)
out = self.bn1(out)
out = self.relu(out)
out = self.conv2(out)
out = self.bn2(out)
out += identity
return self.relu(out)
这种设计虽然缓解了梯度消失,但存在三个明显问题:
- 所有通道被同等对待,缺乏特征选择机制
- 随着深度增加,特征复用效率下降
- 空间注意力能力有限
2.2 改进的残差注意力模块
我们的解决方案是在残差路径中引入双重注意力机制:
python复制class ResidualAttention(nn.Module):
def __init__(self, in_channels, reduction=16):
super().__init__()
# 通道注意力
self.channel_att = nn.Sequential(
nn.AdaptiveAvgPool2d(1),
nn.C
