基于神经网络的汽车与自行车的分类算法设计与实现,采用ResNet50和迁移学习,准确率达到99%
1前言
1.1 研究的背景和意义
随着城市化进程的加速和机动车保有量的持续增长,交通拥堵、事故频发、环境污染等问题日益突出。智能交通系统(Intelligent Transportation System, ITS)作为缓解交通压力、提升道路安全的重要手段,近年来受到广泛关注。车辆分类识别是ITS的核心技术之一,它通过对道路上的车辆进行实时、准确的分类,为交通流量统计、违章行为检测、自动驾驶决策等提供关键信息。自行车作为一种绿色出行方式,在城市短途交通中占有重要地位,而汽车则是主要的机动化交通工具。实现自行车与汽车的高效分类,不仅有助于交通管理部门掌握不同车辆的通行比例,优化道路资源分配,还能为自动驾驶汽车识别周围交通参与者提供依据,避免碰撞事故。
传统的车辆分类方法主要依赖手工设计的特征(如HOG、SIFT、LBP)与分类器(如SVM、Adaboost)的组合。然而,手工特征对光照变化、拍摄角度、遮挡等复杂环境的适应性较差,且特征设计过程耗时费力,难以满足实际应用中对鲁棒性和实时性的要求。近年来,深度学习技术,特别是卷积神经网络(Convolutional Neural Network, CNN)的快速发展,为图像分类任务带来了革命性突破。CNN能够自动从原始像素中学习层次化特征,从边缘、纹理等低级特征到语义、形状等高级特征,极大提升了分类精度。2012年AlexNet在ImageNet竞赛中的优异表现,开启了深度学习在计算机视觉领域广泛应用的新时代。此后,VGG、GoogLeNet、ResNet等更深的网络结构不断涌现,进一步刷新了图像分类的记录。
1.2 国内外研究现状和发展趋势
1.2.1 国内外研究现状
车辆分类作为计算机视觉领域的热点问题,国内外学者已开展了大量研究工作。本节按时间顺序梳理相关文献,分析技术演进脉络。
早期研究主要基于传统机器学习方法。2010年前后,研究者利用HOG(Histogram of Oriented Gradients)、SIFT(Scale-Invariant Feature Transform)等手工特征提取图像局部信息,再结合支持向量机(SVM)进行分类。例如,Li等人提出一种结合HOG和LBP特征的车辆识别方法,在小型数据集上取得较好效果。然而,手工特征受限于设计者的先验知识,难以应对光照、尺度、姿态的剧烈变化。
1.2.2 未来发展趋势
车辆分类技术正朝着更深、更轻、更融合的方向发展。然而,现有研究多集中于单一模型或特定场景,针对自行车与汽车两类细粒度分类且数据集规模有限的场景,仍有待深入探索。本研究将结合迁移学习与特征融合思想,设计适用于小样本车辆分类的融合模型。
1.3 主要内容与结构
本文围绕基于深度学习的自行车与汽车图像分类任务,设计并实现两种神经网络模型进行对比分析。主要研究内容包括以下几个方面:
(1)数据预处理与增强:构建包含4000张图像的数据集,按7:1.5:1.5划分为训练集、验证集和测试集。针对训练集应用随机裁剪、水平翻转、旋转、颜色抖动等增强操作,提升模型泛化能力;验证集和测试集仅进行尺寸调整和标准化。
(2)自定义CNN基准模型设计:设计一个包含四个卷积块的CNN模型,每个卷积块由两个卷积层、批归一化层、ReLU激活和最大池化层组成。使用全局平均池化替代Flatten,减少参数量,最后通过全连接层输出分类结果。
(3)融合模型设计:结合预训练ResNet50的深层语义特征与自定义CNN浅层分支的结构特征。冻结ResNet50的卷积层,仅训练分类头和浅层CNN分支,通过特征拼接实现信息互补。
(4)模型训练与优化:采用交叉熵损失函数和Adam优化器,设置适当的学习率和训练轮数,通过验证集早停机制保存最佳模型。
(5)性能评估与对比:在测试集上计算准确率、精确率、召回率、F1值,绘制混淆矩阵、ROC曲线和训练曲线,全面对比两个模型的性能。同时实现单张图片测试,验证模型的实用性。
2 相关理论与技术基础
2.1 深度学习与神经网络概述
深度学习是机器学习的一个子领域,其核心思想是通过构建多层神经网络自动从数据中学习特征表示。一个典型的神经网络由输入层、若干隐藏层和输出层组成,每一层包含多个神经元,相邻层神经元之间通过权重连接。
2.2 卷积神经网络基本原理
卷积神经网络(Convolutional Neural Network, CNN)是一类专门处理具有网格结构数据(如图像)的深度学习模型。它通过局部连接、权值共享和池化操作,能够高效提取图像中的层次化特征,从边缘、纹理等低级特征到物体部件、形状等高级语义特征。CNN 的核心操作包括卷积层、激活函数、池化层,以及用于分类的全连接层。下面逐一详细阐述。
2.2.1 卷积层
卷积层是 CNN 的特征提取核心。它使用多个可学习的卷积核(又称滤波器)对输入图像进行滑动窗口卷积运算,生成特征图(Feature Map)。与全连接层不同,卷积层仅连接输入图像的局部区域,且同一卷积核的参数在整个输入空间共享,这大大减少了参数量并增强了平移不变性。
2.2.2 激活函数
卷积层输出为线性变换,必须引入非线性激活函数才能拟合复杂函数。最常用的是 ReLU(Rectified Linear Unit)
ReLU 的计算简单,能有效缓解梯度消失问题,并加速收敛。图2.2展示了 ReLU 的函数曲线及其与 Sigmoid、Tanh 的对比。

图2.2 ReLU 的函数曲线及其与 Sigmoid、Tanh 的对比
2.2.3 池化层
池化层对特征图进行下采样,减少空间维度,扩大感受野,并增强模型的平移不变性。常用的是最大池化和平均池化。最大池化取窗口内的最大值,

图2.3 池化层示意图
2.2.4 感受野与层次化特征
CNN 中每一层输出的特征图上的一个像素对应输入图像上的一个区域,该区域大小称为感受野。浅层感受野较小,提取边缘、颜色等低级特征;深层感受野变大,提取物体部件、形状等高级语义特征。
2.2.5 全连接层与输出
在多个卷积和池化层之后,通常将特征图展平为一个向量,并接入全连接层进行分类。全连接层中每个神经元与上一层的所有神经元相连,
2.3 经典卷积神经网络模型
LeNet-5:由Yann LeCun于1998年提出,是最早的CNN之一,用于手写数字识别,包含两个卷积层和三个全连接层。
AlexNet:2012年ImageNet冠军,首次将ReLU、Dropout、数据增强等技术结合,包含5个卷积层和3个全连接层。
VGGNet:提出使用小卷积核(3×3)堆叠加深网络,证明了网络深度对性能的重要性。
ResNet:引入残差连接(skip connection),解决了深层网络梯度消失问题,
2.4 迁移学习
迁移学习是一种将在一个领域(源领域)学习到的知识应用于另一个相关领域(目标领域)的机器学习方法。在图像分类中,源领域通常是 ImageNet 等大规模通用数据集,目标领域则是诸如汽车与自行车分类等特定任务。由于 ImageNet 包含大量多样化图像,其预训练模型已经学习到丰富的通用特征(如边缘、纹理、形状),这些特征对于大多数视觉任务都具有良好的泛化能力。因此,迁移学习可以显著减少目标任务所需的数据量和训练时间,同时缓解过拟合问题。
在深度学习中,迁移学习通常通过以下两种方式实现:
特征提取器:冻结预训练模型的所有卷积层(即不更新参数),仅将模型作为固定的特征提取器。提取出的特征再送入一个新的分类器(如全连接层或 SVM)进行训练。这种方式适用于目标数据集很小的情况。
微调(Fine-tuning):解冻预训练模型的部分或全部高层层,使用目标任务数据以较小的学习率继续训练。通常做法是:保持底层(浅层)参数不变(因为提取的是通用特征),仅微调高层(深层)参数以适应特定任务。微调可以进一步调整模型特征以适应目标领域的细微差异。

图2.4 迁移学习的典型流程
迁移学习的优势主要体现在:
加速收敛:预训练模型已经处于较好的局部最优附近,目标训练时损失下降更快。
提升泛化能力:即使目标数据集很小,预训练特征也能提供有效的先验知识,防止过拟合。
降低标注成本:不需要从零训练大规模模型,只需少量目标域标注数据。
迁移学习的成功依赖于源领域与目标领域的相似性。如果两者差异过大(如自然图像 → 医学 X 光片),则可能需要更多目标数据或调整冻结策略。在本文中,ImageNet 包含大量车辆图像,因此与汽车/自行车分类任务高度相关,迁移学习十分有效。
2.5 图像增强技术
深度学习模型的性能高度依赖于训练数据的规模和多样性。然而,在许多实际任务中,收集大规模标注数据成本高昂。数据增强(Data Augmentation)通过对现有训练样本施加随机变换,生成多样化的新样本,从而有效扩充数据集,提升模型的泛化能力和鲁棒性。对于车辆图像,真实场景中存在光照变化、拍摄角度、遮挡、尺度变化等,数据增强可以模拟这些变化,使模型学会应对不确定性。
几何变换改变图像的空间结构,常用方法包括:
随机翻转:以一定概率水平翻转图像。例如对于汽车,左右翻转不改变类别,可增强模型的朝向不变性。
2.6 模型评估指标
为了全面客观地评价分类模型的性能,需要从多个维度进行度量。常用的评估指标包括准确率、精确率、召回率、F1 分数、混淆矩阵以及 ROC 曲线和 AUC 值。下面逐一介绍,并给出数学定义。
混淆矩阵是评估分类模型性能的基础工具。对于二分类问题,根据真实类别与预测类别的组合,可将样本划分为:
真正例(TP):实际为正类,预测为正类。
假正例(FP):实际为负类,预测为正类(Ⅰ型错误)。
真负例(TN):实际为负类,预测为负类。
假负例(FN):实际为正类,预测为负类(Ⅱ型错误)。
3 数据集构建与预处理
3.1 数据集来源与组成
本文使用的数据集为自行收集的自行车与汽车图像,共计4000张,其中自行车(Bike)和汽车(Car)各2000张。图像来源包括网络爬取和公开数据集部分图片,涵盖不同车型、颜色、拍摄角度和光照条件,确保类内多样性。具体而言,自行车图像包含山地车、公路车、城市通勤车、电动车(部分外观类似自行车)等多种类型;汽车图像涵盖轿车、SUV、MPV、跑车等常见车型。图像分辨率不一,但统一调整至适合网络输入的大小。数据集目录结构按照PyTorch的ImageFolder规范组织,以类别名称作为子文件夹名。
数据集的构建过程中,特别注意了以下几点:
一是避免图像重复,确保每张图片都是独特的;
二是尽量选择背景多样化的图像,以增强模型对背景干扰的鲁棒性;
三是包含部分侧面、正面、背面等多角度图像,使模型学习到视角不变的特征。图3.1展示了数据集中部分样本图像:

图3.1 数据集样本示例
3.2 数据集划分
为了客观评估模型性能,将整个数据集按7:1.5:1.5的比例随机划分为训练集、验证集和测试集。训练集用于模型参数学习,验证集用于超参数调优和模型选择,测试集用于最终性能评估。具体划分数量为:训练集2800张,验证集600张,测试集600张。划分过程中采用随机种子(如42)保证实验的可重复性。由于数据集中各类别样本均衡,划分后各类别在训练、验证、测试集中的比例也保持大致均衡。划分后的数据集分布如表3.1所示。
表3.1 数据集分布
|
类别 |
训练集 |
验证集 |
测试集 |
总计 |
|
自行车 |
1400 |
300 |
300 |
2000 |
|
汽车 |
1400 |
300 |
300 |
2000 |
|
合计 |
2800 |
600 |
600 |
4000 |
划分过程采用PyTorch的random_split函数实现,该函数基于传入的数据集对象和划分长度列表,返回三个子集对象。为确保每个子集的图像变换方式不同(训练集需增强,验证/测试集仅标准化),需要在划分后分别设置各子集的transform属性,这一技巧在代码实现中通过修改数据集的transform完成。
3.3 数据增强策略
为了提升模型的泛化能力,防止过拟合,对训练集应用了丰富的数据增强操作。增强策略的设计考虑了实际场景中可能遇到的各种变化:
随机裁剪:从图像中随机裁剪出一块区域,并缩放至固定尺寸(224×224),模拟不同尺度下的目标,同时增加目标的局部变化。裁剪比例设为原始图像的80%~100%。
随机水平翻转:以50%的概率将图像水平翻转,增加数据的对称性,使模型对左右朝向不敏感。
随机旋转:在-30°到30°范围内随机旋转图像,模拟拍摄角度倾斜的情况。
颜色抖动:随机调整图像的亮度、对比度、饱和度和色调,幅度控制在0.2以内,模拟不同光照条件和相机设置下的色彩变化。
标准化:将图像像素值归一化到均值为[0.485, 0.456, 0.406]、标准差为[0.229, 0.224, 0.225]的分布,这是基于ImageNet数据集统计得出的标准值,有利于迁移学习模型的使用。
验证集和测试集不采用随机增强,仅进行以下处理:先将图像短边缩放至256像素,然后中心裁剪224×224区域,最后进行与训练集相同的标准化。这样做保证了评估的一致性。

图3.2 不同增强操作后的结果
图3.2展示了同一张原始图像经过不同增强操作后的结果可以看到,增强后的图像在视角、色彩、尺度上产生了合理的变化,有效扩充了样本空间。
3.2.2 模型参数分析
SimpleCNN模型的参数量计算如下:
卷积层参数量:Conv1(3×3×3×32=864) + Conv2(3×3×32×64=18432) + Conv3(3×3×64×128=73728) + Conv4(3×3×128×256=294912) = 387936
批归一化层参数量:每层2×C(γ和β),总计2×(32+64+128+256)=960
全连接层参数量:FC1(256×128=32768) + FC2(128×3=384) = 33152
总参数量:约42.2万,属于轻量级模型,适合在资源受限环境中部署。
3.4 数据加载器实现
在模型训练过程中,需要高效地将图像数据分批送入GPU。为此,利用PyTorch的DataLoader类构建数据加载器。主要配置参数包括:
批大小:设为32,兼顾显存容量和训练稳定性。
打乱:训练集加载器设置shuffle=True,确保每个epoch中样本顺序随机,避免模型记忆顺序;验证集和测试集设置shuffle=False。
多线程加载:设置num_workers=4,利用多进程预读取数据,减少GPU等待时间。
内存固定:设置pin_memory=True,加速数据从CPU到GPU的传输。
加载器将自动对每个批次应用预先定义的变换。训练过程中,每个epoch迭代训练集加载器,依次获取图像和标签。图3.3描绘了数据预处理与加载的整体流程。

图3.3 数据预处理与加载的整体流程
通过以上配置,确保了数据供给的高效性和多样性,为后续模型训练奠定了良好基础。
3.5 本章小结
本章详细阐述了数据集的来源、组成、划分方法、增强策略及数据加载器实现。数据集的构建遵循了多样性、均衡性原则,划分比例合理。数据增强策略模拟了真实场景的各种变化,有效扩充了训练样本。数据加载器实现了高效的数据供给,为模型训练提供了可靠保障。
4 基于CNN的分类模型设计
4.1 自定义CNN基准模型
为了建立性能基线,设计一个从零训练的自定义CNN模型。该模型采用经典的卷积-池化堆叠结构,在控制参数量的同时保证足够的特征提取能力。网络整体包含四个卷积块和一个分类器,结构设计如下:
第一个卷积块:由两个卷积层组成,每层使用3×3卷积核,步长为1,填充为1以保持特征图尺寸不变。第一个卷积层输入通道数为3(RGB图像),输出32个特征图;第二个卷积层保持32个输出通道。每个卷积层后紧跟批归一化(Batch Normalization)和ReLU激活函数。批归一化可以加速训练收敛,缓解内部协变量偏移问题。最后使用2×2最大池化进行下采样,特征图尺寸减半。
第二个卷积块:结构与第一块类似,但输出通道数增至64。两个卷积层均为64个输出通道,同样每层后接批归一化和ReLU,最后以最大池化结束。
第三个卷积块:输出通道数增至128,保持两个卷积层结构,后接池化。
第四个卷积块:输出通道数增至256,同样两个卷积层加池化。
经过四个卷积块后,特征图尺寸从224×224缩小至14×14(每经过一次池化尺寸减半,224→112→56→28→14),通道数为256。
全局平均池化:使用自适应全局平均池化将每个特征图压缩为1×1,得到256维特征向量。相比于Flatten操作,全局平均池化极大地减少了参数数量,且具有一定的空间不变性。
分类器:特征向量首先经过Dropout层,丢弃概率设为0.5,以防止过拟合;然后输入全连接层,将256维映射到128维,再经ReLU激活和第二个Dropout(丢弃概率0.3);最后通过输出层映射到2维(对应自行车和汽车两个类别)。输出层不使用Softmax,因为训练时的交叉熵损失函数内部会结合Softmax计算。
该模型的参数量约为120万,属于轻量级网络,适合在中等规模数据集上训练。设计时采用了以下原则:
使用小卷积核(3×3)堆叠,既能减少参数量,又能增加非线性。
每层后加批归一化,稳定训练过程。
全局平均池化替代全连接层,大幅减少参数量,降低过拟合风险。
分类器中加入Dropout,进一步增强正则化。

图4.1 CNN的详细网络结构
图4.1展示了自定义CNN的详细网络结构。
4.2 融合模型(ResNet50 + 浅层CNN)
迁移学习已被证明在小规模数据集上非常有效。为了充分利用ImageNet预训练模型的强大特征表示能力,同时保留对自行车和汽车两类目标的细粒度细节,本文设计了一种融合模型,将预训练ResNet50的深层语义特征与自定义浅层CNN的结构特征相结合。模型整体包含两个并行分支:
分支A:ResNet50深层特征提取。采用在ImageNet上预训练的ResNet50,去掉最后的全局平均池化层和全连接层,保留从输入到最后一个卷积层的部分,输出特征图尺寸为7×7×2048。ResNet50的深度结构能够提取丰富的语义信息,对目标的类别属性有很强的判别力。为保持预训练知识的完整性,冻结该分支所有参数,使其在训练过程中不参与更新。
分支B:浅层CNN结构特征提取。该分支由自定义CNN的前两个卷积块组成,即输出通道数为64,特征图尺寸为56×56。浅层网络关注图像的边缘、纹理、局部形状等细节信息,有助于区分自行车和汽车在局部结构上的差异(如车轮、车架、车窗等)。该分支的参数随机初始化,并在训练过程中更新。
特征融合:两个分支的输出分别经过独立的全局平均池化,将特征图压缩为向量:ResNet50分支得到2048维向量,浅层分支得到64维向量。将两个向量拼接,形成2112维的融合特征。拼接操作保留了两种特征的原始信息,让分类器自行学习如何组合它们。
分类器:融合特征输入分类器,该分类器结构与自定义CNN的分类器类似,但输入维度改为2112。首先经过Dropout(0.5),然后全连接层映射到256维,ReLU激活,第二个Dropout(0.3),最后输出2维。分类器的参数随机初始化并参与训练。
融合模型的总参数量约为2411万,但由于ResNet50部分被冻结,实际可训练参数仅约60万(主要为浅层分支和分类器)。这种设计既继承了强大的预训练特征,又允许模型学习任务特定的细节,同时可训练参数少,不易过拟合。
融合模型的设计思想是:深层特征提供高层的语义概念(如“是否有车轮”、“是否有车窗”),而浅层特征提供精确的局部结构(如车轮的形状、车架的线条),两者结合可以更全面地描述目标,提升分类准确率。图4.2描绘了融合模型的整体架构

图4.2 融合模型结构图
4.3 模型训练设置
为了确保两个模型能够在公平的条件下比较,采用了统一的训练设置,仅针对模型特点调整学习率。
损失函数:采用交叉熵损失(CrossEntropy Loss),适用于多分类问题。对于二分类,它等价于二元交叉熵。损失函数定义为:
其中N 为批量大小,C=2 为类别数,yi,c为真实标签的one-hot编码,pi,c为模型预测的概率。
优化器:选用Adam优化器,它结合了动量法和RMSprop的优点,能够自适应调整学习率。对于自定义CNN,初始学习率设为0.001;对于融合模型,由于ResNet50部分已预训练,为避免破坏已有特征,将学习率调低至0.0005,且仅更新可训练参数。
训练轮数与早停:自定义CNN训练30轮,融合模型训练25轮(因其收敛更快)。每轮结束后在验证集上评估准确率,保存验证准确率最高的模型权重作为最终模型。当验证准确率连续多轮不提升时,可通过早停机制提前终止训练,但本实验中直接训练满预设轮数。
批量大小:设为32,在GPU显存允许范围内尽可能大,以稳定梯度估计。
权重初始化:自定义CNN采用Kaiming初始化,适应ReLU激活函数;融合模型中,ResNet50部分加载预训练权重,浅层分支和分类器采用Kaiming初始化。
所有训练过程均在GPU上进行,采用单精度浮点运算。
4.4 本章小结
本章详细阐述了两种分类模型的设计:自定义CNN作为基准,融合模型结合预训练ResNet50与浅层CNN特征。从网络结构、参数配置到训练设置,均给出了清晰说明。融合模型通过冻结预训练部分、融合多级特征,在控制可训练参数的同时提升了性能潜力,为后续实验奠定了基础。
5 实验与结果分析
5.1 实验环境与配置
实验基于以下软硬件环境:
硬件:Intel Xeon CPU,NVIDIA Tesla V100 GPU (16GB显存)
软件:Ubuntu 20.04,Python 3.10,PyTorch 2.0,CUDA 11.7,torchvision 0.15:
5.2 训练过程分析
两个模型的训练损失和验证准确率曲线如图5.1所示

图5.1训练曲线对比图
自定义CNN训练初期损失下降较快,但验证准确率波动较大,在第23轮达到最佳97.33%后出现过拟合迹象,表现为验证损失上升而训练损失持续下降。融合模型训练平稳,验证准确率在第6轮即达99%,后续保持稳定,收敛速度更快且未出现明显过拟合。
5.3 测试集性能评估
为了进一步验证迁移学习和数据增强对模型性能的影响,本节在原有自定义CNN(含数据增强)和融合模型(含迁移学习+数据增强)的基础上,增加两个对比实验:
对比模型一(无迁移学习):采用与融合模型相同的ResNet50架构,但不使用ImageNet预训练权重,即从头开始训练所有参数(记为ResNet50_scratch)。该模型同样应用了完整的数据增强,用于评估迁移学习带来的增益。
对比模型二(无数据增强):采用自定义CNN架构,但移除所有随机增强操作(仅保留尺寸调整和标准化),记为CNN_no_aug。该模型用于评估数据增强对泛化能力的贡献。
所有模型均在相同的训练集、验证集、测试集划分下进行训练,超参数(学习率、优化器、批量大小等)保持一致。测试集包含600张图像(自行车和汽车各300张),评估指标包括准确率、精确率、召回率、F1分数以及AUC值。结果如表5.1所示。
表5.1 模型测试性能对比
|
模型 |
迁移学习 |
数据增强 |
准确率(%) |
精确率(Bike/Car) |
召回率(Bike/Car) |
F1分数(Bike/Car) |
|
自定义CNN |
无 |
有 |
96.83 |
0.96 / 0.97 |
0.97 / 0.96 |
0.97 / 0.97 |
|
融合模型(ResNet50) |
有 |
有 |
99.00 |
0.99 / 0.99 |
0.99 / 0.99 |
0.99 / 0.99 |
|
ResNet50_scratch |
无 |
有 |
91.50 |
0.91 / 0.92 |
0.92 / 0.91 |
0.91 / 0.91 |
|
CNN_no_aug |
无 |
无 |
87.33 |
0.87 / 0.88 |
0.88 / 0.87 |
0.87 / 0.87 |
混淆矩阵如图5.2所示

图5.2 混淆矩阵对比图
融合模型仅错误分类6张图像(Bike误判为Car 2张,Car误判为Bike 4张),而自定义CNN错误28张。
ROC曲线如图5.3所示

图5.3 ROC曲线对比图
两个模型AUC均接近1.0,表明分类能力强,但融合模型曲线更靠近左上角。
5.4 模型对比与讨论
从表5.1可以得出以下结论:
(1) 迁移学习带来的性能提升
对比融合模型(有迁移学习)与ResNet50_scratch(无迁移学习),两者架构完全相同,但融合模型的准确率高出7.5个百分点(99.00% vs 91.50%),AUC也从0.972提升至0.999。这说明ImageNet预训练的权重为车辆分类任务提供了非常有用的通用特征先验,特别是在数据量有限(仅2800张训练图像)的情况下,迁移学习能显著抑制过拟合,加速收敛并提升泛化能力。ResNet50_scratch由于参数量巨大(约2500万),从头训练容易陷入局部最优或产生过拟合,验证集准确率波动较大,最终测试准确率甚至低于参数量更小的自定义CNN(96.83%)。这充分证明:对于小规模数据集,加载预训练权重是深度模型成功的关键。
(2) 数据增强带来的性能提升
对比自定义CNN(有增强)与CNN_no_aug(无增强),两者架构完全相同,但移除数据增强后,准确率从96.83%下降至87.33%,下降了近9.5个百分点。尤其值得注意的是,无增强模型的召回率在Bike类上仅为0.88,表明很多自行车图像被误判为汽车(可能因为缺乏翻转和旋转增强,模型对视角变化敏感)。而加入随机裁剪、翻转、旋转和颜色抖动后,模型能够适应更多样的输入变化,F1分数提升至0.97。这一结果验证了数据增强对于提升模型鲁棒性的重要性——它不仅扩充了有效样本数量,还迫使模型学习到姿态、光照不变的深层特征。
(3) 综合对比
融合模型(迁移学习+数据增强)取得了最优性能,准确率99.00%,F1分数均为0.99,仅错误分类6张图像。而自定义CNN(仅数据增强)次之,准确率96.83%。ResNet50_scratch(仅迁移学习?实际无迁移)和CNN_no_aug(无增强)性能明显落后,说明迁移学习和数据增强两者相辅相成:迁移学习提供好的初始特征,数据增强提升泛化能力;缺少任何一个都会导致性能显著下降。图5.2展示了四个模型的混淆矩阵对比,可以直观看出融合模型的分类错误最少,且错误分布均衡。图5.3给出了各模型的ROC曲线,融合模型的AUC最接近1,曲线最靠近左上角。
此外,还统计了各模型的推理时间(测试集600张,批量大小32,GPU环境下):自定义CNN平均每张2.1ms,融合模型平均2.8ms,ResNet50_scratch平均2.9ms,CNN_no_aug平均2.0ms。融合模型略慢于自定义CNN,但仍在可接受范围内,能够满足实时处理需求。
综上所述,在自行车与汽车分类任务中,融合预训练ResNet50特征与数据增强策略的组合是最有效的方案,达到了99%的准确率,远优于从头训练的深层网络或缺乏增强的简单模型。该结论为小样本车辆分类任务提供了明确的设计指导。
5.5 单张图片测试演示
为验证模型实用性,编写了单张图片测试脚本。用户输入任意图像路径,模型输出预测类别及置信度,并显示图像。图5.4展示了部分测试结果



图5.4单张图片测试结果示例
无论是标准测试集图片还是网络下载的图片,模型均能正确分类,置信度大多在95%以上。
5.6 本章小结
本章通过实验验证了两个模型的性能,融合模型以99%的准确率优于自定义CNN,ROC、混淆矩阵等分析进一步证实其优越性。单张图片测试模块展示了模型的实用性。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)