项目概述
本项目实现了一个基于深度学习的年龄与性别多任务预测系统,使用 UTKFace 数据集,采用 PyTorch 训练 ResNet 多任务模型,可对人脸图片、视频、摄像头画面进行年龄回归与性别分类。系统支持图形界面(PyQt5)和命令行双模式操作,提供了完整的模型训练、预测、管理功能。
主要特性
- 多任务预测:同时预测年龄(回归)和性别(分类)
- 多种输入支持:支持图片、视频、摄像头实时预测
- 深度学习模型:基于 ResNet18/34/50 的多任务学习架构
- 人脸检测:集成 YOLOv8 进行人脸检测,提高预测准确性
- 图形界面:基于 PyQt5 的现代化 GUI,支持浅色/深色主题
- 命令行支持:提供完整的命令行操作接口
- 模型管理:支持模型的保存、加载、删除、比较等功能
- 训练监控:实时显示训练进度和损失曲线
- 数据预处理:自动去重和整理 UTKFace 数据集
- CUDA 加速:支持 GPU 加速训练和推理
技术栈
- 深度学习框架:PyTorch
- 计算机视觉:OpenCV, Pillow
- 人脸检测:Ultralytics YOLOv8
- GUI 框架:PyQt5
- 数据处理:scikit-learn, matplotlib
- 其他工具:tqdm, keyboard, netron
项目结构
AgeGenderVision-main/
├── assets/ # 图形界面资源文件
│ ├── dark.qss # 深色主题样式表
│ ├── light.qss # 浅色主题样式表
│ └── svg/ # 图标资源
├── convention/ # 数据传输类
├── data/ # 数据目录
│ ├── UTKFace/ # UTKFace数据集
│ └── models.json # 模型信息文件
├── models/ # 训练好的模型存储目录
├── panels/ # GUI面板组件
│ ├── main_panel.py # 主面板
│ ├── train_panel.py # 训练面板
│ ├── model_list_panel.py # 模型列表面板
│ ├── predict_image_panel.py # 图片预测面板
│ ├── predict_camera_panel.py # 摄像头预测面板
│ ├── predict_video_panel.py # 视频预测面板
│ └── ... # 其他面板
├── services/ # 服务层
├── threads/ # 线程类
├── utils/ # 工具类
├── widgets/ # 自定义UI组件
├── camera_predict.py # 摄像头预测脚本
├── check_and_deduplicate_utkface.py # 数据去重脚本
├── main.py # 命令行主程序
├── photo_predict.py # 图片预测脚本
├── qt5_main.py # GUI主程序
├── requirements.txt # 依赖列表
├── train_age_gender_multitask.py # 训练脚本
├── video_predict.py # 视频预测脚本
└── yolov8m-face.pt # YOLO人脸检测模型