基于 IMDB-WIKI 人脸数据集的年龄与性别预测项目-python+IMDB-WIKI(无数据集)
项目描述 基于 IMDB-WIKI 人脸数据集的年龄与性别预测项目
基于 IMDB-WIKI 人脸数据集的年龄与性别预测项目,采用 ResNet18 轻量回归版模型,从原始数据集分层抽样 3714 张图,2 个 epoch 约 10 分钟即可完成训练,在 CPU 上即可流畅运行推理。
项目功能
人脸检测与对齐:基于 MTCNN(P/R/ONet 三阶段)检测人脸及 5 个关键点,仿射变换对齐到 112×112 标准人脸。
年龄/性别预测:模型同时输出回归年龄值与性别分类(0 女 1 男)。
命令行批量推理:demo.py 自动处理 images/ 下所有 *_raw.jpg,输出 sample_preds.json。
快速训练脚本:train_fast.py 内置分层抽样、数据增强、每 epoch 保存、超时早停,可一键复现模型。
Tkinter 桌面 GUI:app_tk.py 支持图片/文件夹选择、批量预测、左侧原图带人脸框+标注预览、右侧结果表格、导出 Excel/JSON。
结果导出:支持 .xlsx(pandas)与 .json 两种格式。
运行环境
操作系统:Windows(已验证)/ Linux / macOS 均可
Python:3.8+ (本机 3.13)
硬件:CPU 即可,GPU 可选(CUDA 自动启用)
Python 依赖:
pip install torch torchvision opencv-python numpy scipy pillow pandas openpyxl
外部数据(仅重新训练时需要):imdb_meta.tar + imdb_crop.tar,从 https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/ 下载
项目技术
网络结构:ResNet18 主干(去 avgpool/fc)+ AvgPool2d + 两路分支:fc1→age_pred(回归单值)+ fc2→gen_pred(2 分类)
预训练:加载 ImageNet 权重做迁移学习,加快收敛
损失函数:L1Loss(年龄回归)+ CrossEntropyLoss(性别分类)联合相加
优化器:SGD(momentum=0.9, weight_decay=5e-4, lr=1e-3)
数据增强:水平翻转随机增广
人脸对齐:5 关键点仿射变换到固定模板
推理兼容修复:补 AvgPool2d.divisor_override、torch.load(weights_only=False)、np.load(allow_pickle=True) 等适配新版 PyTorch/NumPy/OpenCV
GUI 框架:Tkinter(Treeview 表格 + PhotoImage 预览,无第三方依赖)
以上系统源码经过技术整理与调试,确保能正常运行


