# CIFAR-10图像分类模型横向测评 - 演讲稿

**演讲者**: 李博睿 (55230422)
**时长**: 约15-20分钟
**场合**: 计算智能课程技术报告

---

## 【第1页 - 封面】

大家好！我是李博睿，学号55230422。

今天我要向大家汇报的题目是《CIFAR-10图像分类模型横向测评》。

在这次研究中，我对比了四种不同的深度学习模型在图像分类任务上的表现，包括经典的CNN、现代的ResNet-18，以及两种加入了注意力机制的ResNet变体。

那么，让我们开始今天的汇报。

---

## 【第2页 - 目录】

今天的汇报主要分为五个部分：

首先，我会介绍**研究背景与动机**，说明为什么要做这个对比实验；

第二部分，我会详细讲解**四个模型的架构**，包括它们的设计原理和关键特点；

第三部分，我会**展示实验结果**，这是我们最关心的部分；

第四部分，我会**深入分析这些结果**，解释为什么会出现这样的现象；

最后，我会进行**反思**，指出实验中存在的问题，并提出改进方向。

---

## 【第3页 - 研究背景】

### CIFAR-10数据集

首先来看研究背景。

我选择的数据集是**CIFAR-10**，这是计算机视觉领域一个非常经典的基准数据集。

它包含**6万张32×32的彩色图像**，分为10个类别：飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车。

其中5万张用于训练，1万张用于测试。

虽然图像分辨率不高，只有32×32像素，但正是因为这个"小"，CIFAR-10成为了快速验证和对比不同模型架构的理想选择。

### 研究意义

那么，做这个对比研究有什么意义呢？

**第一**，我想系统地评估不同深度学习架构的性能差异；

**第二**，我特别关注注意力机制在图像分类中的作用——理论上它应该能提升性能，但实际效果如何？

**第三**，这个研究可以为实际应用中的模型选择提供参考依据。

---

## 【第4页 - 研究动机与目标】

### 核心研究问题

具体来说，我想回答四个核心问题：

**第一个问题**：经典的CNN和现代的ResNet，它们的性能差异到底有多大？这个差距值得我们花10倍的参数量吗？

**第二个问题**：ResNet的核心创新——残差连接，它对训练深度网络的帮助是否真的如论文所说那么显著？

**第三个问题**：注意力机制近年来非常火热，CBAM和SE这两种注意力模块能否真正提升ResNet的性能？

**第四个问题**：性能提升和参数增加之间的权衡如何把握？我们是否应该一味追求更复杂的模型？

### 实验模型

为了回答这些问题，我选择了四个模型：

**CNN**：一个3层的卷积神经网络，参数量约1.2M，代表经典的浅层架构；

**ResNet-18**：18层的残差网络，参数量约11M，代表现代深度架构；

**ResNet-18+CBAM**：在ResNet-18基础上加入了通道和空间双重注意力机制；

**ResNet-18+SE**：在ResNet-18基础上加入了轻量级的通道注意力机制。

---

## 【第5页 - 模型1: CNN架构】

现在进入第二部分，模型架构讲解。

### CNN架构

首先看最简单的CNN模型。

它的结构非常直观：输入是3×32×32的RGB图像，经过三个卷积块，最后接两个全连接层，输出10个类别的概率。

**卷积层设计**：三层卷积分别将通道数从3增加到64、128、256。每层后面都接BatchNorm做归一化、ReLU做激活、MaxPool做降维。

**全连接层**：最后将特征图展平成4096维向量，通过一个512维的隐藏层，加了50%的Dropout防止过拟合，最终输出10维。

**特点**：这个模型的优点是**结构简单、参数少、训练快**。但缺点也很明显：**深度受限，表达能力有限**。如果我们简单地增加卷积层的数量，不仅难以训练，性能反而会下降，这就是所谓的"退化问题"。

---

## 【第6页 - 模型2: ResNet-18架构】

### 残差连接原理

ResNet正是为了解决这个"退化问题"而提出的。

它的核心思想是**残差学习**。看这个公式：y = F(x) + x

传统网络学习的是从输入x到输出y的直接映射，而ResNet学习的是**残差**——也就是输入和输出的差值F(x)。

为什么这样设计？因为学习一个**"微小的变化"**，比学习一个**"完整的映射"**要容易得多。

### BasicBlock结构

ResNet-18由多个这样的BasicBlock堆叠而成。每个Block包含两个3×3卷积，关键是这条**红色的shortcut连接**——它直接把输入加到输出上。

整个网络分为4个Layer，每个Layer包含2个BasicBlock，总共18层。

### 核心优势

ResNet的核心优势就是**解决了梯度消失问题**。

因为有shortcut的存在，梯度可以直接从输出反向传播到输入，不会在深层网络中"消失"。这使得训练几百层的深度网络成为可能。

---

## 【第7页 - 模型3: ResNet-18+CBAM】

### CBAM注意力机制

第三个模型在ResNet-18基础上加入了CBAM——Convolutional Block Attention Module。

CBAM的核心理念是让模型学会两件事：**"关注什么"**和**"关注哪里"**。

### 通道注意力

**通道注意力**回答"关注什么"。

它通过全局平均池化和最大池化，把每个通道压缩成一个数值，然后用一个共享的MLP学习每个通道的重要性权重。

比如，对于识别"猫"这个任务，纹理特征的通道可能更重要，而对于识别"飞机"，形状特征的通道更重要。

### 空间注意力

**空间注意力**回答"关注哪里"。

它在特征图的每个空间位置生成一个权重，告诉模型应该关注图像的哪个区域。

比如识别猫的时候，应该更关注脸部和耳朵，而不是背景。

### 参数代价

CBAM的一个优点是**非常轻量**。它只增加了约0.2M参数，相对于ResNet-18的11M，仅增加了1.8%。

理论上，这么小的代价应该能带来可观的性能提升。但实际效果如何呢？我们等会看结果。

---

## 【第8页 - 模型4: ResNet-18+SE】

### SE注意力机制

第四个模型加入的是SE模块——Squeeze-and-Excitation。

SE比CBAM更简单，它只做通道注意力，不做空间注意力。

### 三步操作

SE的工作流程分为三步：

**第一步，Squeeze（压缩）**：用全局平均池化把每个通道压缩成一个标量。这个操作捕获了整个通道的全局信息。

**第二步，Excitation（激励）**：通过两层全连接网络学习通道间的依赖关系。第一层降维，第二层升维，最后用Sigmoid激活得到0到1之间的权重。

**第三步，Scale（缩放）**：把学到的权重乘回原来的特征图，实现通道级的重标定。

### 效率优势

SE的参数更少，只增加约0.1M，相对ResNet-18仅增加0.9%。

所以，从参数效率角度看，SE比CBAM更轻量。

---

## 【第9页 - 实验结果展示】

好，现在我们进入最关键的部分——实验结果。

### 图表说明

大家看这张图，它包含三个子图：

**左图**是**训练准确率曲线**。横轴是训练轮数（epoch），纵轴是准确率。我们可以看到四条不同颜色的曲线代表四个模型。

橙色的ResNet-18上升最快，最终达到约85%；绿色和红色的CBAM和SE在75-78%左右；蓝色的CNN最慢，只有约68%。

**中图**是**训练损失曲线**。同样是四条曲线，但这次是越低越好。ResNet-18（橙色）下降到约0.5，表现最好；其他模型在0.7-0.95之间。

**右图**是**测试准确率的柱状图**。这是最终的性能指标，也是我们最关心的。

ResNet-18最高，达到80.68%；ResNet-18+SE是74.06%；ResNet-18+CBAM是73.56%；CNN最低，71.95%。

红色虚线是平均值75.06%。

### 初步观察

从这张图，我们可以得出几个初步观察：

**第一**，ResNet-18在所有指标上都表现最好；

**第二**，令人意外的是，加了注意力机制的模型反而不如基础的ResNet-18；

**第三**，所有模型的准确率都不算太高，最好的也只有80%多一点。

为什么会这样？我们接下来详细分析。

---

## 【第10页 - 测试准确率对比分析】

### 数据对比

首先看这个详细的对比表格。

**CNN**：1.2M参数，测试准确率71.95%，作为基线；

**ResNet-18**：11M参数，80.68%，相比CNN提升了8.73个百分点；

**ResNet-18+CBAM**：11.2M参数，73.56%，只比CNN高1.61个百分点；

**ResNet-18+SE**：11.1M参数，74.06%，提升2.11个百分点。

平均准确率是75.06%。

### 关键发现

这里有三个关键发现：

**第一个发现**：ResNet-18显著优于CNN。8.73个百分点的提升非常可观，证明了残差连接和深度网络的价值。

**第二个发现**，也是最意外的：**注意力机制的提升远不如预期**。

理论上，CBAM和SE应该进一步提升ResNet的性能，但实际上它们不仅没有提升，反而表现更差。CBAM甚至比基础的CNN都低！

**第三个发现**：所有模型的绝对准确率都不高。即使是最好的ResNet-18，也只有80.68%，离CIFAR-10的sota（95%+）还有很大差距。

### 原因分析

为什么会这样？我分析有几个可能的原因：

**第一**，训练不充分。我只训练了50个epoch，从曲线看，准确率还在上升，损失还在下降，说明没有收敛。

**第二**，学习率可能设置不当。注意力机制可能需要不同的学习率策略。

**第三**，数据增强不足。标准的RandomCrop和RandomFlip可能不够。

**第四**，对于CIFAR-10这种32×32的小图像，空间注意力可能难以发挥作用。

---

## 【第11页 - 训练过程分析】

让我们更细致地分析训练过程。

### 训练准确率特征

左边这个block看训练准确率的特征：

**CNN**收敛最慢，50个epoch后才到68%左右；

**ResNet-18**收敛最快，而且最稳定，达到了85%；

**加了注意力的两个模型**介于两者之间，75-78%。

但这里有个**异常现象**需要注意：ResNet-18的训练准确率是85%，但测试准确率只有80.68%，差了4个多百分点。这个gap比其他模型都大，说明**ResNet-18可能存在过拟合**。

### 训练损失特征

右边看训练损失：

所有模型在初期都快速下降，这是正常的；

ResNet-18下降到约0.5就稳定了；

其他模型在0.7-0.95之间波动。

损失曲线都比较平滑，说明训练过程是稳定的。

### 收敛性分析

总体来说，**ResNet架构的梯度流动确实更好**，这从它更快的收敛速度就能看出来。

但是，快速收敛不等于最终性能一定最好，还要看是否过拟合。

---

## 【第12页 - 性能-复杂度权衡】

接下来我们从另一个角度看问题：性能和复杂度的权衡。

### 参数效率

我定义了一个简单的指标：**参数效率 = 准确率 / 参数量**。

这个指标越高，说明每个参数的"性价比"越高。

### 数据对比

看这个表格：

CNN的效率是59.96，最高，因为它参数最少；

ResNet-18是7.33；

加了注意力的两个模型是6.57和6.67。

虽然CNN的效率最高，但它的绝对准确率太低了，只有72%，实用价值有限。

### 权衡建议

如果让我给出建议：

**如果资源充足，追求最高准确率**，选ResNet-18。虽然它有11M参数，但80.68%的准确率在这四个模型中是最高的。

**如果资源非常受限**，比如要部署到嵌入式设备，那可能不得不选CNN，虽然准确率低一些。

**如果想要平衡**，ResNet-18+SE可能是个折中选择——它比基础ResNet只多了0.1M参数，准确率虽然低了一些，但参数效率还不错。

但说实话，在当前的训练设置下，这些结论都是初步的，需要更充分的训练来验证。

---

## 【第13页 - 实验中的问题】

现在进入第五部分：反思与改进。

作为一个严谨的研究，我必须承认，这次实验存在一些问题。

### 训练不充分

**最大的问题就是训练不充分**。

我只训练了50个epoch，这对于CIFAR-10来说远远不够。标准做法是训练200个epoch甚至更多。

从曲线可以看出，准确率还在稳步上升，损失还在下降，说明模型还有学习空间。

如果继续训练，我相信准确率还能进一步提升，可能会达到90%甚至更高。

### 注意力机制未发挥作用

**第二个问题是注意力机制没有发挥预期作用**。

CBAM和SE不仅没有提升性能，反而比基础ResNet表现更差。这绝对不正常。

我分析有几个可能的原因：

**原因一**：训练不充分。注意力模块的参数需要更多的迭代才能学到有效的权重；

**原因二**：学习率设置可能不合适。注意力模块可能需要不同的学习率或者warmup策略；

**原因三**：初始化方法可能有问题。注意力权重的初始化很关键；

**原因四**：CIFAR-10的图像太小了，只有32×32像素。对于这么小的图像，空间注意力可能没有太多发挥空间。如果换成ImageNet那种224×224的图像，效果可能会好很多。

### 测试准确率偏低

**第三个问题是整体准确率偏低**。

即使是最好的ResNet-18，80.68%的准确率也远低于文献中报告的95%+。

这再次说明我的训练策略需要大幅优化。

---

## 【第14页 - 改进方向】

既然发现了这些问题，那么改进方向就很明确了。

### 1. 训练策略优化

**第一组改进是关于训练策略的**：

最重要的是**把epochs增加到200**，这是标准做法；

使用**学习率调度**，比如MultiStepLR，在第60、120、160个epoch降低学习率；

添加**学习率预热**，在前5个epoch让学习率逐步增加到设定值；

使用**更强的数据增强**，比如RandomCrop、CutMix、MixUp等。这些技术已经被证明能显著提升性能。

### 2. 超参数调整

**第二组改进是超参数调整**：

当前的初始学习率是0.1，可能偏大了，我会尝试降低到0.05；

Batch Size 128是合理的，可以保持；

但我会增加Weight Decay来加强正则化，防止过拟合。

### 3. 模型架构改进

**第三组改进是模型架构方面**：

可以尝试更深的ResNet，比如ResNet-34或ResNet-50；

调整CBAM的位置——也许不应该在每个Block后都加，而是只在关键位置加；

尝试其他注意力机制，比如最近很火的ECA-Net；

增加Dropout或者DropBlock来防止过拟合。

---

## 【第15页 - 未来工作展望】

### 短期改进

在**1-2周内**，我计划：

**首先**，重新训练所有模型，把epochs增加到200；

**其次**，优化学习率调度和数据增强策略；

**第三**，详细记录训练过程中的每一个指标，包括训练loss、验证loss、学习率变化等；

**最后**，绘制更完整的可视化，包括训练曲线、混淆矩阵、每个类别的准确率等。

### 中期探索

在**1个月的时间范围内**，我会：

**第一**，实现更多注意力机制的变体，做更系统的对比；

**第二**，尝试Transformer架构，比如Vision Transformer，看看它在CIFAR-10上的表现；

**第三**，做详细的消融实验，分析每个组件的贡献；

**第四**，把实验扩展到CIFAR-100或者其他数据集，验证结论的普适性。

### 长期目标

从长期来看，我对一些前沿方向很感兴趣：

比如**神经架构搜索**，让算法自动找最优的网络结构；

比如**知识蒸馏**，把大模型的知识迁移到小模型；

比如**半监督学习**，利用未标注的数据提升性能。

---

## 【第16页 - 核心结论】

现在让我总结一下本次研究的核心结论。

### 主要发现

**第一个发现**：ResNet-18在测试集上表现最优，达到80.68%，显著优于CNN的71.95%。这验证了残差连接和深度网络的价值。

**第二个发现**：残差连接确实至关重要。它不仅让深层网络能够训练，而且收敛速度更快，性能更好。

**第三个发现**：在当前的训练设置下，注意力机制没有充分发挥作用。CBAM和SE的表现甚至不如基础ResNet。但这不代表注意力机制无效，更可能是训练策略需要优化。

**第四个发现**：50个epoch的训练远远不够。从曲线可以看出，模型还有很大的提升空间。

### 经验总结

从这次实验中，我总结了几条重要经验：

**第一**，深度学习需要**充分的训练时间**。50个epoch可能在某些任务上够了，但对于从零开始训练的CIFAR-10，200个epoch才是起点。

**第二**，**超参数调优和数据增强至关重要**。同样的模型，不同的训练策略可能差距很大。

**第三**，注意力机制不是万能的，它需要**合适的训练策略**才能发挥作用。盲目加上去不一定有效。

**第四**，**实验设计要系统化、可重复**。要详细记录每个细节，这样才能从失败中学到东西。

### 下一步

基于这些发现，我的下一步计划是：**增加训练轮数到200，优化超参数，然后重新评估各模型的性能**。

我相信，经过这些改进，注意力机制应该能展现出它应有的价值。

---

## 【第17页 - 致谢页】

好，我的汇报到这里就结束了。

最后这一页列出了我的项目代码和相关文档：

所有代码都在**run_all.py**这个脚本里，可以一键运行所有实验；

实验结果就是刚才展示的**100.png**；

详细的分析和讨论写在了**REPORT.md**这个报告文件里。

现在，

# 谢谢大家的聆听！

# 欢迎提问！

---

## 【Q&A环节 - 可能的问题及回答】

### Q1: 为什么只训练50个epoch？

**A**: 这其实是我这次实验的一个失误。一开始我以为50个epoch足够了，但实际运行后发现，曲线还在上升，显然没有收敛。正常的CIFAR-10实验应该训练200个epoch以上。这也是为什么我在"反思与改进"部分专门指出了这个问题。下一步我会重新训练更多轮次。

### Q2: 为什么ResNet-18比加了注意力的模型还要好？

**A**: 这确实是个意外的结果。我分析有几个原因：首先，训练不充分，注意力模块的参数还没有学到有效的权重；其次，可能学习率或初始化设置不适合注意力机制；第三，CIFAR-10图像太小（32×32），空间注意力可能没有足够的发挥空间。在更大的图像上，比如ImageNet，CBAM通常能带来1-2%的提升。

### Q3: 你觉得哪个模型最实用？

**A**: 这要看应用场景。如果是在服务器端，GPU资源充足，我会选ResNet-18，因为它准确率最高。如果是在移动端或嵌入式设备上，资源受限，可能不得不选CNN或者更轻量的MobileNet。ResNet-18+SE是个折中选择——只增加0.1M参数，在优化训练后应该能有不错的性能。

### Q4: 下一步打算做什么改进？

**A**: 最紧迫的是重新训练，把epochs增加到200，并优化学习率调度和数据增强。我还想尝试更多的注意力机制变体，比如ECA-Net、Coordinate Attention等。长远来看，我对Transformer架构很感兴趣，想看看ViT在CIFAR-10上能达到什么水平。

### Q5: 为什么用SGD而不是Adam？

**A**: 这是个很好的问题。在图像分类任务中，SGD+Momentum通常比Adam有更好的泛化性能。虽然Adam收敛更快，但往往会陷入"尖锐的局部最优"，导致测试集表现不如训练集。SGD虽然慢，但能找到"平坦的局部最优"，泛化性更好。很多SOTA的图像分类工作都用SGD。当然，也有人尝试用AdamW（Adam的改进版），效果介于两者之间。

### Q6: 数据增强用了哪些方法？

**A**: 目前只用了最基础的RandomCrop和RandomHorizontalFlip。这显然不够。下一步我打算加入更强的增强方法，比如：
- CutMix: 把两张图像裁剪后混合
- MixUp: 把两张图像按比例混合
- AutoAugment: 自动搜索最优的增强策略
- RandomErasing: 随机遮挡一部分区域

这些方法已经被证明能显著提升CIFAR-10的性能。

### Q7: 能达到95%以上的准确率吗？

**A**: 理论上可以。CIFAR-10的SOTA（State-of-the-art）准确率已经超过99%了。但要达到95%，需要：
1. 充分的训练（200+ epochs）
2. 更深的网络（ResNet-50/101）或更先进的架构（EfficientNet, Transformer）
3. 强大的数据增强
4. 精心调优的超参数
5. 可能还需要一些技巧，比如模型集成、知识蒸馏等

我目前的设置比较基础，所以80%是合理的。通过系统优化，90-95%是可以达到的目标。

### Q8: 这个项目花了多长时间？

**A**: 从代码实现到实验运行，大概花了一周时间。其中：
- 模型实现：2天
- 训练脚本和可视化：2天
- 运行实验：1天（50 epochs还是很快的）
- 分析结果和准备汇报：2天

如果重新训练200 epochs，可能还需要2-3天。

### Q9: 有遇到什么技术难点吗？

**A**: 主要有两个：
1. **CBAM的实现**：通道注意力和空间注意力怎么正确地集成到ResNet的BasicBlock中，我参考了原论文和一些开源实现才搞清楚。
2. **可视化**：怎么把训练过程中的数据保存下来，然后生成漂亮的对比图，这花了不少时间调matplotlib的参数。

整体来说，得益于PyTorch强大的生态，大部分实现都比较顺利。

### Q10: 有什么想对后来者说的？

**A**: 几点建议：
1. **从小实验开始**：先在小数据集（如CIFAR-10）上验证想法，不要一上来就跑ImageNet。
2. **重视基础**：把经典模型（CNN、ResNet）吃透，再去追新方法。
3. **做好记录**：每次实验都要详细记录超参数、结果、遇到的问题。
4. **勇于试错**：我的注意力机制实验"失败"了，但这本身就是一个重要发现。
5. **多看论文**：理解为什么这样设计，而不只是调参。

最重要的是：**享受学习的过程**！深度学习既是科学也是艺术。

---

**【演讲结束】**

再次感谢大家的聆听！如果还有问题，欢迎随时交流。

**谢谢！**
