
一、前言很多深度学习初学者都会有一个疑问同一个CNN模型为什么在简单灰度数据集上效果极佳换到彩色数据集后准确率断崖式下跌、训练难以收敛本次实验并未直接使用原始论文中的原生LeNet-5网络而是对其进行了多项针对性改良优化规避原生网络的缺陷、适配灰度与彩色两类不同数据集。原生LeNet-5采用Sigmoid/Tanh激活函数极易出现梯度消失问题且无任何正则策略、泛化能力薄弱无法直接用于现代图像分类实验。因此本文对网络进行核心优化使用ReLU激活函数替换传统Sigmoid/Tanh解决梯度消失问题新增Dropout随机失活、L2权重衰减双重正则化策略抑制过拟合。同时本次实验对FashionMNIST灰度数据集、CIFAR10彩色数据集统一施加数据增强与归一化预处理包括随机裁剪、随机水平翻转、数据集均值方差标准化保证预处理策略统一。最后根据两类数据集的原生规格自适应修改网络输入通道与全连接层维度适配FashionMNIST1×28×28灰度输入与CIFAR103×32×32彩色输入除以上定点改良外网络核心卷积、池化结构完全保留严格保证实验变量唯一。本文将基于改良版LeNet网络严格控制网络核心结构、训练超参数、训练策略完全一致仅保留适配数据集的必要维度修改分别训练单通道灰度数据集FashionMNIST、三通道彩色数据集CIFAR10。通过完整对照实验、数据指标对比、训练曲线可视化深度拆解图像灰度/彩色属性、数据复杂度、特征维度差异对经典CNN模型性能的决定性影响。论文链接http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf二、实验前置1.固定不变条件固定模型改良优化版LeNet网络引入ReLU激活、Dropout随机失活、L2权重衰减添加双重正则增强策略非原生朴素LeNet-5固定超参数学习率0.001、迭代轮数30epoch、batch_size64、Adam优化器、交叉熵损失、权重衰减正则化5e-4固定训练设备与策略GPU加速、训练样本打乱、测试集固定图像尺寸差异化适配CIFAR10固定32×32FashionMNIST固定28×28贴合数据集原生规格与模型输入要求2.唯一变量对比维度FashionMNIST灰度数据集CIFAR10彩色数据集通道数1通道单灰度亮度信息3通道RGB彩色三通道信息图像特点轮廓清晰、无复杂背景、纹理单一、干扰极少背景杂乱、物体角度多变、色彩纹理丰富、干扰信息多任务难度低仅需轮廓特征即可完成分类高依赖色彩、纹理、空间复合特征模型适配性完美适配LeNet-5轻量化结构远超LeNet-5特征提取能力上限模型总参数量6170683126模型存储体积MB0.350.483.数据集预处理本实验对两个数据集采用完全一致的训练预处理策略均使用随机裁剪、随机水平翻转、数据集专属均值方差归一化保证实验无预处理偏差严格保证唯一变量为数据复杂度1.CIFAR10预处理代码如下#训练集 transform_train transforms.Compose([ transforms.Resize(size32), transforms.RandomCrop(32, padding4), transforms.RandomHorizontalFlip(0.5), transforms.ToTensor(), transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)) ]) #验证集 transform_val transforms.Compose([ transforms.Resize(size32), transforms.ToTensor(), transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)) ])2.FashionMNIST预处理代码如下#训练集 transform_train transforms.Compose([ transforms.Resize(size28), transforms.RandomCrop(28, padding4), transforms.RandomHorizontalFlip(0.5), transforms.ToTensor(), transforms.Normalize(mean[0.2860], std[0.3530]) ]) #验证集 transform_val transforms.Compose([ transforms.Resize(size28), transforms.ToTensor(), transforms.Normalize(mean[0.2860], std[0.3530]) ])三、模型网络结构实现1.基于CIFAR10数据集3*32*32程序如下class LeNet(nn.Module): def __init__(self, num_classes10): super(LeNet, self).__init__() #激活函数使用ReLU去替代原版论文里面的Sigmoid/Tanh解决梯度消失问题 # 特征提取部分 self.features nn.Sequential( nn.Conv2d(in_channels3, out_channels6, kernel_size5, padding2), nn.ReLU(), nn.AvgPool2d(kernel_size2, stride2), nn.Conv2d(in_channels6, out_channels16, kernel_size5), nn.ReLU(), nn.AvgPool2d(kernel_size2, stride2) ) # 分类器部分 self.classifier nn.Sequential( nn.Flatten(), #原论文是1*28*28这里我们使用CIFAR-10数据集为3*32*32,故展平后为576个数据 nn.Linear(16 * 6 * 6, 120), # 16通道 * 6x6尺寸 nn.ReLU(), nn.Dropout(0.3), nn.Linear(120, 84), nn.ReLU(), nn.Dropout(0.3), nn.Linear(84, num_classes) # 输出类别数 ) def forward(self, x): x self.features(x) x self.classifier(x) return x2.基于FashionMNIST数据集1*28*28代码如下class LeNet(nn.Module): def __init__(self, num_classes10): super(LeNet, self).__init__() #激活函数使用ReLU去替代原版论文里面的Sigmoid/Tanh解决梯度消失问题 # 特征提取部分 self.features nn.Sequential( #输入图像为1*28*28故输入通道数为1 nn.Conv2d(in_channels1, out_channels6, kernel_size5, padding2), nn.ReLU(), nn.AvgPool2d(kernel_size2, stride2), nn.Conv2d(in_channels6, out_channels16, kernel_size5), nn.ReLU(), nn.AvgPool2d(kernel_size2, stride2) ) # 分类器部分 self.classifier nn.Sequential( nn.Flatten(), nn.Linear(400, 120), nn.ReLU(), nn.Dropout(0.3), nn.Linear(120, 84), nn.ReLU(), nn.Dropout(0.3), nn.Linear(84, num_classes) # 输出类别数 ) def forward(self, x): x self.features(x) x self.classifier(x) return x四、训练结果对比1.基于CIFAR10数据集3*32*32的训练结果结果分析模型训练收敛速度缓慢验证准确率长期处于低位、爬升极其平缓损失值整体偏高且存在小幅震荡。训练集与验证集曲线间距较大拟合程度差即便经过数据增强与正则优化模型依旧无法充分学习彩色实景复杂特征存在明显欠拟合问题即由于模型结构上限约束性能上限极低2.基于FashionMNIST数据集1*28*28的训练结果结果分析模型收敛速度极快训练前期准确率快速拉升、损失快速下降训练中后期曲线迅速趋于平稳。训练集与验证集曲线贴合度极高、震荡微弱在双重正则约束下无过拟合现象模型泛化能力优异拟合效果完美五、测试结果分析1.基于CIFAR10数据集3*32*32的测试结果测试集准确率测试集混淆矩阵2.基于FashionMNIST数据集1*28*28的测试结果测试集准确率测试集混淆矩阵3.测试结果分析通过二者准确率可知测试集准确率差距高达 20.69%直观证明轻量化改良 LeNet对简单灰度图像适配性远优于复杂彩色实景图像通过CIFAR10混淆矩阵可知轻量化改良LeNet在基于CIFAR10数据集时对于frog(0.83)、ship(0.82)、car(0.80)、truck(0.76)、plane(0.74)这类偏物体轮廓、色彩特征辨识度高识别效果优秀而对于deer(0.43)、cat(0.49)、bird(0.56)、dog(0.53)这类偏动物类由于形态高度相似、纹理细节多小模型提取区分特征能力不足。分析说明动物类样本纹理细腻、形态相似度高需要高层语义特征区分而 LeNet仅两层浅层卷积无法提取细粒度差异是小模型固有缺陷通过FashionMNIST混淆矩阵可知轻量化改良LeNet在基于FashionMNIST数据集时对于Trouser(0.97)、Bag(0.97)、Ankle boot(0.96)、Sneaker(0.94)、Sandal(0.95)由于轮廓差异极大识别效果优秀几乎无错分唯一薄弱的类别是Shirt(0.56)极易和T-shirt/top(0.87)、Pullover(0.84)、Coat(0.76)混淆因为4类上衣版型灰度轮廓相似度高六、结论本次控制变量实验表明改良优化后的轻量化LeNet模型性能表现高度依赖数据复杂度与模型容量的匹配关系。对于背景单一、特征简单的单通道灰度FashionMNIST数据集LeNet模型容量充足搭配双重正则化与数据增强策略可快速稳定收敛具备优异的分类精度与泛化能力而针对背景复杂、特征维度更高、干扰信息丰富的三通道彩色CIFAR10实景数据集LeNet固有轻量化结构导致模型容量严重不足无法提取高级语义特征欠拟合明显。实验充分证明图像灰度与彩色的差异本质是任务复杂度的全方位升级正则化与数据增强仅能优化模型泛化能力无法弥补模型容量不足的缺陷深度学习建模需依据数据复杂度适配对应模型结构与训练策略。喜欢的朋友麻烦点赞收藏关注后续会继续分享技术干货、学习总结与实战踩坑记录