团队博客 服务外包杯A31赛题开发文档

团队博客 服务外包杯A31赛题开发文档

软件需求规格说明书 (SRS)
一、 引言
1.1 编写目的:本说明书旨在明确“基于生成式AI增强的跨时间域生物特征识别系统”的功能与非功能需求,为后续的设计、开发与测试提供基准。
1.2 项目背景:传统生物特征识别模型在面对跨越多年的面部图像时,受非线性形变影响,精度断崖式下跌。本项目引入AIGC进行老化增强,解决跨龄核验痛点。
二、 总体描述
2.1 目标用户:公安司法人员(跨龄寻亲、长效证件核验)、动物保护科研机构人员。
2.2 运行环境:服务器端需配备NVIDIA GPU(推荐CUDA 11.8+),操作系统支持Linux/Windows。客户端支持主流Web浏览器。
2.3 设计限制:为了保证老化特征生成的逼真度,系统需内嵌调用SDXL服务,因此对显存有较高要求(推荐>=8GB)。
三、 系统功能需求
3.1 智能数据分拣模块:支持深度嵌套目录的解析,通过自研路径溯源算法精准提取ID,避免上传路径异常导致的数据污染。
3.2 AIGC老化增强模块:识别年轻态/基础态照片,调用SDXL引擎并结合Prompt生成对应的高保真衰老图像。
3.3 双轨制模型训练模块:支持人类(多任务学习)与动物(老化增强流水线)数据集的自动判别与增量微调训练。
3.4 跨时间域核验与展示模块:提供A/B照片1:1比对及1:N检索功能,输出固定阈值Accuracy、Rank-1等指标及判定结果。
四、 非功能需求
4.1 性能需求:1:1验证特征提取与比对需在500ms内完成(不含生成耗时)。
4.2 稳定性需求:系统需具备完善的异常捕获机制,处理非图片文件上传时不得崩溃。
软件概要设计说明书 (PDD)
一、 总体架构设计
系统采用前后端分离与模块解耦的微服务化设计理念,自上而下分为四层:
• 表现层 (Web UI):基于Vue.js开发,提供可视化看板、数据上传分拣交互及核验结果大屏。
• 调度层 (Java/SpringBoot):作为安全网关,负责鉴权、文件流接收处理及跨语言任务下发。
• 引擎层 (Python/Flask + PyTorch):挂载SDXL图像生成网络与ResNet核心特征提取网络,执行密集型张量计算。
• 数据层 (MySQL):负责任务队列状态、性能指标(Acc, Rank-1等)的持久化及特征矩阵的本地化落盘。
二、 接口设计概览
2.1 内部API接口:调度层与引擎层之间通过RESTful API(如 /api/task/start)进行异步通信,传递taskId及超参数。
2.2 外部模型接口:通过HTTP本地/内网调用SDXL API(默认端口7860),实现img2img的高精度老化合成。
三、 运行控制与时序
训练任务下发 -> 物理路径倒推清洗 -> 判断是否触发SDXL老化生成 -> 构建DataLoader -> 模型前向传播与Loss计算(ArcFace) -> 模型评估(输出三大指标) -> 持久化权重并更新任务状态至数据库。
软件详细设计说明书 (DDD)
一、 核心算法模块设计 (CrossTimeBiometricModel)
本模块采用多任务学习(Multi-Task Learning)架构,包含三大子模块:
1.1 特征提取主干 (Backbone):采用ResNet-50,去除原始全连接层,输出512维的深层语义特征。训练初期采取冻结微调策略(Learning Rate=1e-5)以保护预训练权重。
1.2 度量学习分类头 (Identity Head):实现自定义的ArcFace层。引入加性角度间隔 (Margin m=0.45) 与特征缩放 (Scale s=32.0)。该层强制将同一ID的年轻态与老年态特征向超球面同一中心压缩,抵御形变。
1.3 年龄估算回归头 (Age Regression Head):由多层感知机(MLP)构成,采用MSE损失进行生理年龄预测,使主干网络隐式学习时间流逝规律。
二、 数据处理与增强详细设计
2.1 NestedImageFolder 数据加载类:重写 Dataset,使其支持深度嵌套并具备根据文件名(如 AgeDB中的_xx_特征)动态解析年龄的能力。
2.2 视觉干扰防范设计:在训练时引入 RandomResizedCrop(0.8-1.0) 与 ColorJitter;但在推理核验阶段,严格执行等比 Resize 加 CenterCrop,坚决杜绝因人脸被拉伸形变导致的识别率下降。
三、 评估算法实现细节
3.1 指标去水设计:在 evaluate_biometric_metrics 中,直接映射余弦相似度。设定硬性阈值(0.5)切分正负样本以计算 Accuracy,拒绝测试集上的阈值搜索,确保模型泛化真实性。
数据库设计说明书 (DBD)
一、 数据库环境与规范
采用 MySQL 8.0 作为核心关系型数据库。字符集统一使用 utf8mb4 以兼容多语种及特殊符号,存储引擎采用 InnoDB 支持事务与高并发访问。
二、 逻辑结构设计 (E-R 分析)
系统核心实体包括:
• 用户 (User):系统的操作者,拥有权限标识。
• 任务 (Task):核心实体,记录一次训练或核验的完整生命周期,包含超参数、执行状态及跑分结果。
三、 核心表结构定义 (t_task)
表名:t_task (大模型计算任务流水表)
字段1:id (VARCHAR 64, 主键) - 唯一任务标识
字段2:task_type (VARCHAR 32) - 任务类型 (training/generalization/human_verify等)
字段3:status (VARCHAR 16) - 状态 (PENDING, RUNNING, COMPLETED, FAILED)
字段4:result_metrics (JSON) - 存储 Accuracy, Rank-1, TAR等指标的JSON快照
字段5:start_time (DATETIME) - 任务启动时间
字段6:end_time (DATETIME) - 任务结束时间
项目开发计划 (PDP)
一、 团队组织架构与分工
• AI 算法组:负责SDXL Prompt工程测试、ArcFace核心模型开发与参数调优。
• 全栈工程组:负责Vue前端数据可视化看板开发、Flask与Java微服务网关的搭建及数据库联调。
• 测试与产品组:负责边缘用例(如嵌套目录)设计、标准数据集跑分及项目文档撰写。
二、 开发阶段划分
第一阶段(需求与技术验证):确认硬件环境,跑通SDXL API调用链路,清洗基础人脸与动物数据集。
第二阶段(核心算法攻坚):实现CrossTimeBiometricModel双头架构,跑通ArcFace训练流程,解决初期“灾难性遗忘”问题。
第三阶段(平台化与工程化):完成前后端接口联调,实现物理分拣模块及任务状态流转机制。
第四阶段(优化与封装):引入等比Crop防形变策略,多数据集交叉验证跑分,编写全套申报文档。
测试计划 (TP)
一、 测试目的与范围
目的:验证跨时间域生物识别系统的功能完备性、高并发下的鲁棒性以及在极其大跨度时间图像下的识别准确率。
范围:涵盖前端交互测试、文件系统容灾测试、大模型调度性能测试及算法核心指标测试。
二、 测试策略与环境
测试环境:NVIDIA RTX 50系显卡环境,Linux 操作系统。
测试策略:白盒测试结合黑盒测试。针对模型训练,采用按个体隔离(Subject-Exclusive)的严谨验证协议。
三、 算法基准测试指标 (核心标准)
在CACD、AgeDB、FG-NET等标准验证集上,系统必须达到以下验收标准:

  1. 严格使用固定验证阈值(0.5)下,Accuracy 不低于基准要求。
  2. 在海量库检索的 Rank-1 首选命中率具备显著优势。
  3. 在 TAR@FAR=0.1(严格防伪标准)下表现出优异的跨龄通过率。