Skip to content

基于卷积神经网络的CIFAR-10图像分类实验报告

字数
4128 字
阅读时间
16 分钟

摘要

本项目旨在解决A1实验中全连接网络(FCN)无法有效利用图像空间信息的根本局限。为此,我们设计并实现了一个基于残差连接的深度卷积神经网络(CNN)。为了提升实验的可复现性与代码的可维护性,整个项目采用了 PyTorch Lightning 进行训练流程的抽象,并利用 Hydra 进行配置管理与超参数调优。我们系统性地探究了不同网络深度、归一化方法(Batch Normalization vs. Group Normalization)、预激活(Pre-activation)结构以及高级数据增强策略(MixUpCutMix)对模型性能的影响。通过全面的实验与分析,我们的最佳模型在CIFAR-10测试集上达到了 [填写你的最终准确率] 的准确率,相较于A1的FCN模型实现了质的飞跃。实验结果表明,残差结构是构建高性能深度模型的关键,而MixUp/CutMix等正则化技术在抑制过拟合并提升模型泛化能力方面扮演了至关重要的角色。


1. 引言

1.1 任务背景

在A1作业中,我们使用全连接神经网络(FCN)在CIFAR-10数据集上取得了初步的分类成果。然而,其实验结论也暴露了FCN的本质缺陷:通过将图像展平(Flatten)为一维向量,模型完全丢失了像素点之间宝贵的空间邻接关系。这导致模型难以学习到如纹理、边缘、形状等对图像理解至关重要的局部特征,从而在区分视觉相似的类别(如“猫”与“狗”)时表现不佳。

卷积神经网络(CNN)通过其核心的卷积核(Kernel)池化(Pooling) 操作,专门为处理网格状数据(如图像)而设计。它能够逐层、分级地从原始像素中提取从简单到复杂的空间特征,更符合人类视觉的感知机理。本次实验的核心任务便是利用CNN的这一结构优势,以期在CIFAR-10分类任务上取得性能的显著突破。

1.2 实验目标

本实验的主要目标包括:

  • 设计并实现一个模块化的、基于残差连接的卷积神经网络,验证其相较于FCN的性能优势。
  • 应用Dropout和多种归一化方法(Normalization),深入理解它们在CNN中对模型训练稳定性和泛化能力的影响。
  • 通过交叉验证,为复杂的CNN模型系统性地寻找最优的超参数组合。
  • (附加题) 探究更深层次的网络架构、预激活(Pre-activation),以及MixUpCutMix等高级正则化方法对模型性能的极限提升作用。

1.3 技术栈:PyTorch Lightning + Hydra

为了提升开发效率、学习现代框架,本次实验重构了代码架构:

  • PyTorch Lightning: 将原始PyTorch代码中的工程样板(如训练循环、验证循环、优化器步骤、设备管理等)进行抽象和自动化,使我们能更专注于模型结构和实验逻辑本身。
  • Hydra: 提供了一种强大而灵活的配置管理方案。所有的超参数(模型结构、优化器、数据增强等)都在独立的.yaml配置文件中定义,使得运行不同实验、追踪实验配置和复现结果变得极为简便高效。

2. 实验设计

2.1 数据集与预处理

  • 数据集: CIFAR-10,数据划分与A1保持一致(训练集40000,验证集10000,测试集10000)。
  • 基础数据增强: 我们沿用了A1中被证明行之有效的增强策略,包括随机裁剪、水平翻转、颜色抖动、随机旋转和随机擦除,以构建一个强大的数据基线。
  • (附加)高级数据增强:MixUp 与 CutMix
    • MixUp: 通过对两张图片及其标签进行线性插值,生成新的训练样本。这鼓励模型在不同类别之间形成更平滑的决策边界,增强了泛化能力。
    • CutMix: 将一张图像的随机区域裁剪并粘贴到另一张图像上,标签也按区域面积比例进行混合。这迫使模型不再依赖于图像中最具辨识度的单一区域,而是学习利用更全面的上下文信息。 我们通过一个collate_fn在数据加载阶段以一定概率随机应用这两种策略之一。

2.2 模型:残差网络

我们设计了一个高度模块化的卷积网络Cifar10ConvNet,其核心是残差块(Residual Block),允许信息通过捷径跨层流动,极大地缓解了深度网络训练中的梯度消失问题。

其主要结构如下:

  1. Stem层: 一个初始的卷积层,用于将输入图像的3通道扩展为更高维度的特征图。
  2. Stages: 由多个串联的残差块(ConvResidualBlockPreActResidualBlock)组成。网络的深度(stage_blocks)和宽度(stage_channels)都可以通过Hydra配置进行灵活调整。
  3. 池化与分类器: 在通过所有卷积阶段后,使用自适应平均池化(AdaptiveAvgPool2d)将特征图降维,最后送入一个或多个全连接层进行分类。

可配置超参数包括:

  • 网络深度与宽度: stage_blocksstage_channels
  • 归一化方法: normalization ("batch""group")。
  • 预激活结构: preactivation (TrueFalse),决定了BatchNorm和ReLU相对于卷积层的位置。
  • Dropout率: 分别为卷积层(conv_dropout)和分类器(classifier_dropout)设置。

2.3 实验环境与超参数搜索

  • 硬件: 4 x NVIDIA RTX 3090
  • 软件: PyTorch, PyTorch Lightning, Hydra, Weights & Biases (W&B)

3. 实验结果与分析

3.1 Baseline:CNN vs. FCN

首先,我们将一个相当基础的的CNN模型(stem_channels: 16、conv_channels: [16, 32, 64]、conv_blocks: [3],100epoches,无高级增强)的性能与A1中的最佳FCN模型(3000epoches)进行对比。 ![[Pic/Pasted image 20251112234902.png]] ![[Pic/Pasted image 20251102134413.png]] 图一:CNN(红色)与FCN(蓝色)的训练/验证准确率对比曲线图 结果分析: 如图所示,即使是基础的CNN模型,在测试集上的准确率也轻松超过了A1中经过精细调优的FCN模型(例如,从71.49%提升至83.00%)。这直观地证明了卷积操作在提取图像空间特征方面的压倒性优势。

3.2 模型架构探索

**3.2.1 网络深度与退化现象的验证

实验目的: 本实验旨在探究简单地增加网络深度对模型性能的实际影响,并验证深度学习中经典的网络退化 现象。为此,我们固定网络宽度(stem_channels=32, stage_channels=[64, 128, 256])及所有训练超参数,仅改变每个阶段的残差块数量(stage_blocks),从而得到深度递增的一系列网络。

实验结果: 经过300个epoch的训练后,不同深度模型在验证集上达到的最高准确率如下: ![[Pic/Pasted image 20251113095839.png]] ![[Pic/Pasted image 20251113094558.png]]

结果分析: 实验结果清晰地揭示了网络深度与模型性能之间的非线性关系,可以分为两个阶段进行解读:

  1. 从浅层到中等深度:性能提升 (2 < 3 < 5 < 7) 在网络的初始加深阶段,从20层增加到56层,模型的性能稳步提升。这符合我们的基本预期:更深的网络拥有更大的模型容量和更广阔的感受野,使其能够学习到更复杂、更具层次性的抽象特征。每一层额外的残差块都为模型提供了进一步精炼特征表示的机会,从而带来了更高的分类准确率。

  2. 从中等到超深度:性能退化 (9 < 7) 当我们将网络深度从56层([7,7,7])进一步推向74层([9,9,9])时,模型的性能不升反降。74层的网络其准确率甚至低于44层网络([5,5,5])。这正是典型的网络退化现象。

    这种退化并非由过拟合直接导致,因为残差网络本身通过恒等映射的捷径,理论上可以让多余的层不产生负面影响。问题的根源在于优化困难。随着网络层数急剧增加,损失函数的曲面变得异常复杂和崎岖,充满了大量的局部最小值和鞍点。尽管我们使用了强大的AdamW优化器和残差连接,但对于过深的网络,优化器依然难以找到一个真正优秀的解。新增的层非但没有学到有用的特征,反而可能在训练过程中引入了噪声和累积误差,最终损害了模型的整体性能。

结论: 本实验成功地验证了我们的假设:简单地堆叠网络层数并不能保证性能的持续提升。对于CIFAR-10这个特定任务和我们的网络架构,存在一个最佳的深度范围(在本实验中约为56层)。超越这个范围后,训练的优化难度将成为主要瓶颈,导致性能饱和乃至退化。这一发现强调了网络架构设计中,深度、宽度和其他结构(如注意力机制、更高效的归一化层等)之间需要进行权衡。

3.2.2 归一化方法对比 (Batch Norm vs. Group Norm)实验目的: 本实验旨在对比批次归一化(Batch Normalization, BN)与组归一化(Group Normalization, GN)的性能。我们采用性能最佳的56层残差网络作为基准架构,并在[256, 128, 64, 32]四种不同批次大小下进行了对比测试,以评估它们的有效性与稳定性。 ![[Pic/Pasted image 20251114114156.png]]

结果分析: 出乎我们最初的预期,实验结果表明,在我们测试的所有批次大小范围内(从32到256),Batch Normalization 的性能在收敛速度和最终性能上都始终一致地优于 Group Normalization。这可能是由于:

  1. Batch Normalization 的核心机制是在一个批次内计算均值和方差。由于每个批次都是从训练集中随机抽样的,这为模型的每一层都引入了轻微的噪声。这种噪声可以被看作是一种高效的隐式正则化,它降低了模型对单个训练样本的依赖,从而有效防止过拟合,提升了模型的泛化能力。Group Normalization 在样本内部进行归一化,其计算是确定性的,因此不具备这种正则化效果。

  2. 本次对比实验是在一个为BN调优好的学习率下进行的。BN的归一化机制使其对较高的学习率有更好的鲁棒性,而GN可能需要一个更小、更精细调整的学习率才能发挥其全部潜力。因此,当前结果应被解读为“在固定超参数下,BN的普适性和性能更优”。

  3. 实验结果表明,对于32x32的图像和我们的网络架构,32的批次大小尚未达到BN性能急剧恶化的“临界点”。可以推断,如果继续减小批次大小至16或8,我们可能会观察到理论预期的性能反转。 结论: 对于本次CIFAR-10分类任务,Batch Normalization 是最优选择。它在广泛的批次大小范围内实现了更快的收敛速度和更高的分类精度,证明了其在该特定场景下的强大效果和鲁棒性。

3.3 正则化策略分析 (附加题)

3.3.1 MixUp与CutMix的效果 ![[Pic/Pasted image 20251114115147.png]] 结果分析: 引入MixUp和CutMix的组合后,模型的性能得到了进一步的显著提升(约提升了1%)。这证明了MixUp/CutMix作为强大的隐式正则化方法,能有效迫使模型学习更鲁棒、更具泛化能力的特征。


4. 最佳模型与性能评估

通过W&B的超参数扫描,我们筛选出在验证集上表现最佳的一组配置,并将其在完整的训练集(训练集+验证集)上重新训练,最终在测试集上进行评估。

最佳模型配置 (通过Hydra加载):

超参数类别参数最佳值
架构model.conv_channels[160, 320, 640]
model.conv_blocks[3, 3, 3]
model.normalizationbatch
model.preactivationtrue
model.conv_dropout0.14455474979952848
model.conv_kernel_size3
优化optimizer.lr0.001172269669057
optimizer.weight_decay0.003976231109771246
正则化model.classifier_dropout0.2
data.mixup_alpha0.4
data.cutmix_alpha0.2
data.mixup_cutmix_prob0.5
最终性能验证集最高准确率96.6%
测试集准确率96.29%

训练曲线: ![[Pic/Pasted image 20251116115536.png]]

混淆矩阵: ![[Pic/Pasted image 20251116115547.png]]

结果分析: 与A1的混淆矩阵相比,最佳CNN模型在所有类别上都表现出更高的准确性。尤其值得注意的是,之前混淆严重的类别对,如 cat/dog 和 automobile/truck,其混淆程度得到了极大缓解。例如,被错分为dog的cat数量从194下降到了53。这强有力地证明了CNN成功学习到了区分这些类别的关键局部特征(如动物的耳朵轮廓、车辆的格栅形状等),而这是FCN无法做到的。

定性结果:

![[Pic/Pasted image 20251116115607.png]]


5. 结论与展望

5.1 结论总结

本次实验成功地设计、训练并评估了一个高性能的卷积神经网络分类器。通过从FCN到CNN的升级,并引入现代化的工程实践(PyTorch Lightning + Hydra)与先进的正则化技术,我们取得了以下关键结论:

  1. 凭借卷积和池化操作,CNN能够有效捕获图像的空间层次特征,其性能远超忽略空间信息的FCN,测试集准确率从 71.49% 提升至 96.29%
  2. 残差结构是构建和训练深度CNN模型的关键技术,有效解决了梯度消失问题。
  3. MixUp和CutMix等数据增强方法是强大的正则化工具,能显著提升模型的泛化能力。
  4. PyTorch Lightning和Hydra的结合极大地提升了实验的效率、可读性和可复现性。

5.2 思考与展望

尽管我们的CNN模型取得了优异的成绩,但计算机视觉领域仍在飞速发展。未来的探索方向可以包括:

  1. 更先进的架构: 探索如Vision Transformer (ViT) 等正在兴起的、基于注意力机制的新型网络架构,并与CNN进行性能对比。
  2. 自监督学习: 尝试使用自监督预训练方法(如SimCLR, MAE)在无标签数据上预训练模型,再在CIFAR-10上进行微调,这可能进一步提升模型性能。

贡献者

页面历史