南昌航空大学

本科生研究报告

           学期:               2025-20261)           

           课程:            神经网络与深度学习           

           题目:       基于 ConvNeXt 的掌纹识别研究     

           专业:           数据科学与大数据技术         

           学号:                 23208106               

           姓名:                  黄文婷                

           任课教师:               冷璐                 

2025年11月

基于 ConvNeXt 的掌纹识别研究

一、题目

基于 ConvNeXt 的掌纹识别研究

二、数据库

(一)数据库来源

本研究采用老师提供的掌纹数据库,该数据库仅限本班科研使用,不得外传。

(二)数据库详细信息

1.图像采集设备:接触式采集设备

2.图像分辨率:统一为 128×128 像素

3.采集对象:386 人,每人提供左右手掌纹图像,同一人的左右手视为两个不同类别

4.类别数:772 类(386 人 ×2 只手)

5.样本数量:数据库原始包含 7752 张掌纹 ROI(Region of Interest,感兴趣区域)图像,经样本均衡处理后,每类保留 6 张有效样本,最终数据集总样本数为 772×6=4632 张

6.编号格式:原始文件命名格式为 “P_F_1_1.bmp” 或 “P_S_2_3.bmp”,其中:

“F” 代表左手,“S” 代表右手

第三部分数字为基础人员 ID(1-386)

第四部分数字为该手掌的样本序号

类别 ID 计算规则:左手类别 ID = 基础 ID,右手类别 ID=386 + 基础 ID

均衡后样本编号采用 “class_id_sample_id” 格式,如 “1_1” 表示 1 号类别(1 号人员左手)的第 1 张样本

(三)数据预处理与均衡

由于原始数据库部分类别的样本数不一致,为保证模型训练的稳定性和公平性,对数据进行了均衡处理:

  1. 样本不足处理:若某类别样本数少于 6 张,采用重复采样方式补充至 6 张
  2. 样本过多处理:若某类别样本数多于 6 张,采用随机截取方式保留 6 张
  3. 数据增强:通过随机水平翻转(概率 0.3)、随机旋转(±5°)等操作扩充数据多样性,模拟手部姿态变化带来的影响
  4. 数据标准化:采用 ImageNet 数据集的均值([0.485, 0.456, 0.406])和标准差([0.229, 0.224, 0.225])进行标准化处理,适配模型输入要求

(四)数据集划分

将均衡后的 4632 张样本按比例划分为:

训练集:70%,共 3242 张样本

验证集:15%,共 695 张样本

测试集:15%,共 695 张样本

划分过程采用随机抽样方式,确保各数据集的类别分布一致。

三、任务建模

(一)核心科学问题

解决掌纹识别中的身份认证问题,实现从复杂背景下采集的掌纹图像中准确提取生物特征,完成身份的快速识别与验证,同时兼顾识别精度、计算效率和鲁棒性。

(二)计算机视觉任务定义

本研究采用 “分类 + 认证” 双任务模式:

  1. 分类任务(1:N 模式):将掌纹图像分为 772 个类别,实现多身份的快速分类识别
  2. 认证任务(1:1 模式):通过计算样本间的相似度,判断两个掌纹是否来自同一人,用于身份验证场景

(三)任务关联与价值

掌纹识别作为一种重要的生物特征识别技术,具有稳定性高、采集便捷、防伪性强等优势。本研究通过深度学习方法实现高精度掌纹识别,可应用于身份认证、安全访问控制等场景。分类任务为快速身份检索提供基础,认证任务为精准身份验证提供支撑,两者结合形成完整的身份识别解决方案。

四、评价指标

结合分类与认证双任务特点,采用以下评价指标,所有指标均提供计算公式:

(一)分类任务指标

识别率(Accuracy):正确分类的样本数占总样本数的比例,计算公式为:

其中,TP(True Positive)为真阳性,TN(True Negative)为真阴性,FP(False Positive)为假阳性,FN(False Negative)为假阴性。

(二)认证任务指标

1. 错误接受率(FAR):不同身份被误判为同一身份的概率,计算公式为:

2.错误拒绝率(FRR):同一身份被误判为不同身份的概率,计算公式为:

3.等错误率(EER):当 FAR 与 FRR 相等时的错误率,是衡量认证系统性能的核心指标,EER 值越低,系统性能越好

4.ROC 曲线(Receiver Operating Characteristic Curve):以 FAR 为横轴、正确接受率(TPR)为纵轴绘制的曲线,反映系统在不同阈值下的性能 trade-off

5.AUC(Area Under ROC Curve):ROC 曲线下的面积,取值范围为 [0,1],AUC 越接近 1,系统区分能力越强

(三)综合性能指标

1. 时间复杂度:通过模型训练和测试过程中的平均迭代时间衡量计算效率

2. 空间复杂度:通过模型参数总量和显存占用量衡量存储需求

3. 鲁棒性:通过数据增强后的识别性能变化,评估模型对姿态变化等干扰因素的抵御能力

五、语言和框架

(一)编程语言

Python 3.8+,具备良好的可读性和丰富的深度学习生态库支持

(二)深度学习框架

PyTorch 1.10+,动态计算图机制便于模型调试和修改,且对 CPU/GPU 环境具有良好的兼容性

(三)核心依赖库

1. 数据处理:numpy(数组运算)、PIL(图像读取与处理)、os(文件路径操作)

2. 模型构建:torch(核心框架)、torch.nn(神经网络层)、torch.optim(优化器)

3. 数据加载:torch.utils.data(数据集构建与加载)

4. 图像预处理:torchvision.transforms(数据增强与转换)

5. 性能评估:sklearn.metrics(准确率、ROC 曲线、AUC 计算)

6. 可视化:matplotlib.pyplot(训练曲线、ROC 曲线绘制)

(四)代码规范

1. 采用类封装配置参数,提高代码可维护性

2. 每个函数和模块均添加详细注释,说明功能、参数定义和返回值

3. 遵循软件工程规范,模块化设计数据加载、模型构建、训练验证等核心功能

4. 代码命名采用下划线命名法,确保可读性

六、算法原理

(一)算法选择依据

本研究选用 2022 年提出的 ConvNeXt-Tiny 模型作为基础网络,该模型是 ConvNeXt 系列的轻量级版本,具有以下优势:

  1. 符合大作业要求:2022 年至今发表的最新算法,具备一定的新颖性
  2. 性能优越:采用深度可分离卷积、LayerNorm 等技术,在图像分类任务中表现出优于传统 CNN 的性能
  3. 计算高效:参数量小、计算量低,适配 CPU 训练环境,同时保证识别精度
  4. 兼容性好:支持 128×128 像素输入,无需对掌纹图像进行过度缩放,能保留更多细节特征

(二)算法整体流程

1. 数据输入:128×128×3 的 RGB 掌纹图像

2. 数据预处理:图像 resize、数据增强、标准化

3. 特征提取:通过 ConvNeXt-Tiny 的特征提取网络,逐步提取从低级到高级的掌纹特征

4. 特征分类:通过全连接层将提取的特征映射到 772 个类别

5. 概率输出:通过 Softmax 函数将分类结果转换为概率分布

6. 性能评估:基于预测结果和真实标签,计算各项评价指标

(三)模型结构细节

ConvNeXt-Tiny 模型整体结构如下表所示:

网络层类型

层数

核心参数

功能描述

卷积层

1

卷积核尺寸 7×7,步长 4,输出通道数 96

初步提取图像低级特征,降低分辨率

残差块(Stage 1)

3

每个块包含深度可分离卷积、LayerNorm、GELU 激活

提取中级特征,保持特征图尺寸

残差块(Stage 2)

3

第一个块步长 2,输出通道数 192

特征图下采样,增加通道数

残差块(Stage 3)

9

第一个块步长 2,输出通道数 384

深度提取高级特征

残差块(Stage 4)

3

第一个块步长 2,输出通道数 768

最终特征提取,形成高维特征向量

全局平均池化

1

-

降低特征维度,保留全局信息

LayerNorm

1

-

归一化特征,加速训练收敛

全连接层(修改后)

1

输入维度 768,输出维度 772

适配掌纹类别数,输出分类结果

(四)核心组件说明

1. 激活函数:采用 GELU(Gaussian Error Linear Units),相比 ReLU 能更好地缓解梯度消失问题,公式为:

   

其中

是标准正态分布的累积分布函数

2.归一化层:采用 LayerNorm,在通道维度上进行归一化,减少 batch 大小对训练的影响

3. 优化算法:AdamW 优化器,结合 Adam 的自适应学习率和权重衰减,有效防止过拟合

4. 损失函数:交叉熵损失(CrossEntropyLoss),适用于多分类任务,计算公式为:

其中N为样本数,C为类别数,

为第i个样本的真实类别,

为第i个样本在第j类的预测得分

  1. 学习率调度:ReduceLROnPlateau 策略,当训练损失连续 3 个 epoch 无下降时,学习率减半,提高训练稳定性

(五)模型改进与创新点

1. 输入适配修改:针对掌纹图像尺寸特点,调整模型输入为 128×128,无需修改模型核心结构,保持特征提取能力

2. 分类头定制:替换原始模型的 1000 类分类头为 772 类分类头,适配掌纹识别的类别需求

3. 样本均衡策略:针对老师提供数据库的样本分布不均问题,设计了动态样本均衡方案,保证每类样本数量一致

4. 双任务兼容设计:模型同时支持分类任务(1:N)和认证任务(1:1),通过共享特征提取网络,提高代码复用性

(六)参考文献

[1] Liu Z, Mao H, Wu C Y, et al. A ConvNet for the 2020s[C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2022: 11976-11986.

七、程序框架

(一)程序整体架构

本程序遵循模块化设计原则,整体分为 7 个核心模块,各模块之间的调用关系如下:

主函数(main)

├── 1. 配置参数模块(Config类)

│   └── 数据配置、模型配置、训练配置、路径配置

├── 2. 数据处理模块

│   ├── 数据集类(PalmprintDataset)

│   └── 数据加载与均衡函数(load_and_balance_data)

├── 3. 模型构建模块(build_model)

│   └── ConvNeXt-Tiny模型加载与修改

├── 4. 评价指标模块(calculate_metrics)

│   └── 识别率、FAR、FRR、EER、ROC/AUC计算

├── 5. 训练验证模块(train_model)

│   ├── 训练循环

│   ├── 验证循环

│   └── 训练曲线绘制

├── 6. 测试可视化模块(test_model)

│   ├── 模型加载

│   ├── 测试评估

│   ├── ROC曲线绘制

│   └── 指标保存

└── 7. 输出模块

    ├── 模型权重保存

    ├── 可视化结果保存

    └── 性能指标保存

(二)核心模块功能说明

1. 配置参数模块:集中管理所有可配置参数,便于快速调整实验设置

2. 数据处理模块:实现数据集构建、样本均衡、数据增强和划分功能,为模型训练提供高质量数据

3. 模型构建模块:加载预定义模型并根据任务需求修改分类头,适配掌纹识别任务

4. 评价指标模块:实现大作业要求的所有评价指标计算,为性能评估提供统一标准

5. 训练验证模块:实现模型训练和验证的完整流程,包括损失计算、参数更新、模型保存和训练曲线绘制

6. 测试可视化模块:基于测试集评估模型最终性能,通过可视化手段直观展示结果

7. 输出模块:统一管理实验输出文件,包括模型权重、可视化图像和性能指标

(三)程序执行流程

1. 初始化配置参数

2. 加载并均衡数据集,划分训练集、验证集和测试集

3. 构建并初始化 ConvNeXt-Tiny 模型

4. 训练模型,实时监控训练损失和验证识别率,保存最优模型

5. 加载最优模型,在测试集上进行性能评估

6. 计算各项评价指标,绘制 ROC 曲线和训练曲线

7. 保存实验结果和输出文件

八、实验过程和讨论分析

(一)实验环境

1. 硬件环境:CPU(Intel Core i7-10750H),内存 16GB

2. 软件环境:Windows 11 操作系统,Python 3.8,PyTorch 1.12.1

3. 实验参数:batch size=8,epochs=15,初始学习率 = 2e-4,权重衰减 = 1e-5

(二)实验设计

1. 变量控制:固定模型结构和数据预处理流程,通过调整学习率、batch size、训练轮数等参数,探究不同配置对模型性能的影响

2. 对比实验:设置不同样本均衡数量(4 张 / 类、6 张 / 类、8 张 / 类),对比样本数量对识别性能的影响

3. 稳定性验证:每组实验重复 3 次,取平均值作为最终结果,减少随机因素影响

(三)实验过程

1. 数据准备阶段(1 天):完成数据库解压、样本均衡、数据集划分和数据增强脚本编写

2. 模型搭建阶段(1 天):基于 PyTorch 实现 ConvNeXt-Tiny 模型,修改分类头,编写训练和测试代码

3. 参数调试阶段(2 天):调整学习率、batch size 等参数,观察训练损失和验证识别率变化,确定最优参数配置

4. 模型训练阶段(3 天):基于最优参数配置训练模型,保存训练过程中的模型权重和训练曲线

5. 性能测试阶段(1 天):在测试集上评估模型性能,计算各项评价指标,绘制 ROC 曲线

6. 结果分析阶段(1 天):分析实验结果,总结规律,撰写实验报告

(四)实验结果

1. 训练过程结果

2. 测试集性能指标

3. 可视化结果

训练曲线:包含训练损失下降趋势和验证识别率上升趋势

ROC 曲线:展示模型在不同阈值下的 FAR 和 TPR trade-off,AUC 值为 0.9996

(五)结果分析与讨论

1. 训练过程分析

训练损失呈现持续下降趋势,从初始的 6.8500 降至 0.1108,说明模型能够有效学习掌纹特征

验证识别率逐步提升,从 0.43% 提升至 90.20%,无明显过拟合现象,表明模型泛化能力良好

训练后期(12-15 轮)损失和识别率变化趋于平缓,说明模型已接近收敛,继续增加训练轮数对性能提升有限

2. 性能指标分析

识别率达到 90.20%,在 772 类的多分类任务中表现良好,说明 ConvNeXt-Tiny 模型能够有效提取掌纹的判别性特征

EER 为 0.56%,表明模型在认证任务中具有较好的准确性,错误接受和错误拒绝的平衡效果良好

AUC 为 0.9996,接近 1,说明模型对正负样本的区分能力较强

时间复杂度:单轮训练时间约为 45 分钟,测试阶段单张图像识别时间约为 0.02 秒,满足实时识别需求

空间复杂度:模型参数量约为 2800 万,占用内存约 1.2GB,存储需求较低

3. 影响因素分析

样本数量:实验表明,每类样本数从 4 张增加到 6 张时,识别率提升约 12%;从 6 张增加到 8 张时,识别率仅提升 3%,说明样本数量存在最优值,过多增加样本对性能提升有限,且会增加训练时间

学习率:初始学习率为 2e-4 时效果最佳,学习率过高(如 1e-3)会导致训练震荡,学习率过低(如 1e-5)会导致收敛过慢

数据增强:关闭数据增强时,识别率下降约 8%,说明数据增强能够有效提升模型的鲁棒性,抵御姿态变化等干扰

4. 存在的问题与改进方向

识别率仍有提升空间:可通过增加训练轮数、使用预训练权重、优化数据增强策略等方式进一步提高识别率

模型对模糊图像的鲁棒性不足:后续可增加模糊图像样本,或在数据增强中加入高斯模糊操作

计算效率可优化:可通过模型剪枝、量化等技术,进一步降低计算量,适配嵌入式设备

九、结论和心得体会

(一)研究结论

1. 本研究基于 2022 年提出的 ConvNeXt-Tiny 模型,成功实现了掌纹识别任务,在老师提供的 772 类掌纹数据库上取得了 90.20% 的识别率和 0.56% 的 EER,AUC 达到 0.9996,验证了该模型在掌纹识别任务中的有效性

2. 样本均衡处理对模型性能有显著影响,每类 6 张样本的配置在性能和训练效率之间取得了较好的平衡

3. 数据增强技术能够有效提升模型的鲁棒性,降低姿态变化对识别性能的影响

4. ConvNeXt-Tiny 模型在 CPU 环境下表现出良好的兼容性,计算效率高,适合资源受限的场景

(二)心得体会

1. 理论与实践结合的重要性:通过本次大作业,我深刻体会到深度学习理论与实际工程实现的差距。在模型构建过程中,需要充分考虑数据特点、硬件环境等实际因素,才能设计出高效可行的解决方案

2. 数据预处理的关键作用:数据质量直接影响模型性能,样本均衡、数据增强等预处理步骤虽然繁琐,但对提升模型泛化能力至关重要

3. 参数调试的技巧:在实验过程中,通过控制变量法逐步优化参数,能够快速定位最优配置,同时也让我对学习率、batch size 等参数的作用有了更直观的理解

4. 问题解决能力的提升:面对模型训练过慢、识别率低等问题,通过查阅文献、调试代码、对比实验等方式逐步解决,锻炼了我的问题分析和解决能力

5. 学术规范的重要性:在撰写报告过程中,严格遵循参考文献格式和学术写作规范,培养了严谨的科研态度

(三)未来展望

1. 模型优化:尝试使用 ConvNeXt-Large 等更大规模的模型,或引入注意力机制,进一步提升识别率

2. 多模态融合:结合掌静脉、指节纹等其他手部生物特征,构建多模态识别系统,提高识别的稳定性和可靠性

3. 实时性优化:通过模型压缩、量化等技术,进一步降低计算量,实现掌纹识别的实时应用

4. 数据集扩展:收集更多不同光照、不同姿态的掌纹样本,构建更具挑战性的数据集,提升模型的泛化能力

本次大作业不仅让我巩固了神经网络与深度学习的理论知识,还锻炼了工程实践和学术研究能力,为今后的学习和科研工作奠定了坚实的基础。

源代码和图片后台私信我!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐