DeepFace 年龄识别与性别识别指南3 分钟跑通附参数调优清单【免费下载链接】deepfaceA Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library for Python项目地址: https://gitcode.com/GitHub_Trending/de/deepface新用户注册时系统常常要先判断头像里的人是否成年、性别是什么。开源项目 DeepFace 把人脸年龄预测和性别识别封装成了analyze一个函数装上 pip 包一行 Python 就能拿到年龄数值和性别概率不用自己搭模型。这篇教程先带你跑通再讲结果背后是怎么算出来的。一、3 分钟安装并跑通第一次人脸分析安装只有一行依赖会一起装好pip install deepface装好后直接调用analyze。它默认的 actions 包含 age、gender、emotion、race 四项这里只取前两项示例图片用仓库测试集里的现成图from deepface import DeepFace results DeepFace.analyze( tests/unit/dataset/img4.jpg, actions[age, gender] ) print(results[0][age], results[0][dominant_gender])✅ 返回值是一个列表每张脸对应一个字典age是整型年龄gender是 Man / Woman 两个百分比dominant_gender是直接给定的结论另外还有人脸框region和检测置信度face_confidence。第一次调用会自动下载并缓存两份模型权重文件所以首跑比后面几次慢属正常现象。二、年龄和性别结果从哪来两个模型的关键参数两个模型共用同一个底座——VGGFace 预训练卷积网络只是末端接了不同的输出层。源码在 deepface/models/demography/不用逐行读抓住三个关键点就够统一输入不管原图多大脸先被检测器裁出来缩放到 224×224 再送进模型。年龄是101 档加权末端输出 101 个概率分别对应 0 到 100 岁一年一档经 softmax 后总和为 1最终年龄是概率 × 年龄的加权求和。所以结果在小数取整前是个连续值而且会偏向概率分布的中心——模型在 28 岁和 30 岁之间拿不准时就给你一个折中值。性别是两路 softmax末端只有 2 个输出Woman 和 Man 的概率相加等于 1dominant_gender就是取大的那个没有未定这一说。看结果时建议连gender里的两个百分比一起看95% 对 5% 说明判断很笃定55% 对 45% 则是模型没把握多半是侧脸或光线差。项目测试中年龄模型的平均绝对误差约 4.65 岁性别准确率达到 97.44%用于注册、内容推荐这类场景已经够用。三、从单张到批量3 种常见用法单张图会员验证就是第一节的例子。业务上拿age判断是否成年拿gender的百分比作为推荐策略的置信度即可。文件夹批量用内置的yield_images遍历图片配合enforce_detectionFalse让没有脸的图跳过而不是打断整批任务from deepface.commons import image_utils for path in image_utils.yield_images(my_photos/): res DeepFace.analyze(path, actions[age, gender], enforce_detectionFalse) if res: print(path, res[0][age], res[0][dominant_gender])多人合照analyze会为检测到的每张脸各返回一条记录不用手动裁脸用region坐标区分是谁results DeepFace.analyze(tests/unit/dataset/couple.jpg, actions[age, gender]) for r in results: print(r[region][x], r[region][y], r[age], r[dominant_gender])实时摄像头场景另有DeepFace.stream()可用原理相同这里就不展开了。四、参数调优速查表以下参数都来自analyze的入参完整签名见 deepface/modules/demography.py参数默认值调整建议actions四项全开只关心年龄和性别就收窄成两项省时间detector_backendopencv侧脸、小脸漏检时换retinaface或mediapipeenforce_detectionTrue批量跑时设False避免无脸图让整批报错alignTrue按眼睛对齐更稳纯调试时可设False提速expand_percentage0裁出的脸太紧时适当放大如 10silentFalse生产环境设True日志更干净 两点提醒deepface/config/threshold.py里存的是人脸识别的相似度阈值和年龄、性别无关别找错文件性别判断本身没有单独的决策阈值参数——它就是取两路概率里较大的那个。想更保守可在业务层加一条规则两边百分比差不足 10 个点时视为不可判定。五、避坑指南儿童年龄偏大症状8 岁的孩子被判出十几岁。 原因模型输出的是看起来的年龄训练样本以成年人为主低龄段分布被压缩误差天然偏大。 处理别拿它当严格的真实年龄依据必须卡年龄的场景如未成年人限制建议叠加人工审核或证件信息。树莓派等低配设备跑得慢症状首帧要等几十秒设备发烫。 原因VGGFace 底座是较重的卷积网络首跑还要下载权重文件。 处理先在普通机器上把权重下载到设备输入图降到必要分辨率actions只留单项别四项全跑。合照里漏了人症状照片里 3 个人结果只有 2 条记录。 原因默认的 opencv 检测器对画面里的小脸和侧脸容易漏检。 处理优先把detector_backend换成retinaface试试实在检不到又不想抛异常时再考虑enforce_detectionFalse但此时结果里没有人脸区域信息要谨慎使用。一句话回顾pip install deepface装好DeepFace.analyze跑起来只关心年龄和性别就把actions收窄成两项更多参数和返回值字段去仓库文档 README.md 和模型目录 deepface/models/demography/ 里按需翻查就行。【免费下载链接】deepfaceA Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library for Python项目地址: https://gitcode.com/GitHub_Trending/de/deepface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考