SeetaFace6 完整指南:9 大模块 3 步搭起一套人脸识别系统
【免费下载链接】SeetaFace6SeetaFace 6: Newest open and free, full stack face recognization toolkit.项目地址: https://gitcode.com/gh_mirrors/se/SeetaFace6
SeetaFace6 是中科视拓开源免费的 C++ 全栈人脸识别工具包,一张图或一帧视频,就能完成人脸检测、特征点定位、身份识别、活体判断,适合做门禁、闸机、人证核验的开发者直接拿来用。
🔍 速览卡片
- 项目类型:人脸识别算法工具包(C++ SDK + 模型 + Qt 示例)
- License:BSD
- 支持平台:Windows、Ubuntu、CentOS、macOS、Android、iOS;x86 与 ARM(含 RK3399)
- 核心依赖:无第三方库依赖,纯标准 C++ 接口
- 仓库地址:https://gitcode.com/gh_mirrors/se/SeetaFace6
🎯 它解决了什么?
做人脸识别最麻烦的不是算法,而是把检测、对齐、比对、防伪这些环节各找一套,接口还互不兼容。SeetaFace6 把人脸检测、特征点检测、人脸识别、静默活体、质量评估、年龄估计、性别估计、口罩检测、人脸跟踪9 个模块放在一套接口和一批模型里,输入输出类型统一,搭一条完整管线只需把它们串起来。
从上图可以看到,SeetaFace6 面向人脸认证、闸机、动态识别、人脸检索、门禁、人证对比这些真实落地场景,每个环节都有对应模块支撑。
门禁认证:照片进来,比对通过就放行
输入一帧人脸图像,走检测、对齐、提取特征、与底库特征比相似度,超过阈值即放行。这是最基础的用法,也是后面实战示例搭的系统。
口罩遮挡:戴口罩照样认得出人
口罩盖住下半脸,通用识别模型会明显掉点。先用口罩检测模块判断当前人脸是否戴口罩,再切换到对应的戴口罩识别模型,双路模型保证两种状态下的识别率。
从上图可以看到,系统先做检测与对齐,再按是否戴口罩分流到两个识别模型,遮挡场景不再掉链子。
静默活体:挡住翻拍照片和视频攻击
刷脸门禁最怕拿手机照片顶包。静默活体模块不需要用户做动作,单帧判断即可,也可走视频模式累计帧数后给出真人(REAL)、假体(SPOOF)或模糊(FUZZY)结论,部署在认证入口做最后拦截。
质量把关:模糊、偏头、过暗的帧先拦掉
质量评估器对人脸的亮度、清晰度、姿态、分辨率、完整度逐项打分,每档分为低、中、高三级。把低质量帧拦在识别之前,能显著提升通过率,也减少无效计算。
属性画像:顺带算出年龄和性别
年龄估计与性别估计在特征点上直接推断结果,适合做用户画像、分渠道统计,调用方式和识别模块一致,接入成本很低。
🚀 快速上手
仓库里没有编译好的二进制,开发包和模型文件需要从官方发布渠道按平台下载,这一步是上手的关键。
SeetaFace6/ ├── asserts/ 项目资源图 ├── docs/ 9 大模块中文接口文档 ├── example/qt/ Qt 完整示例工程 └── LICENSE- 获取代码
git clone https://gitcode.com/gh_mirrors/se/SeetaFace6 cd SeetaFace6- 下载资源:按你的平台(Windows / Ubuntu1604 / CentOS7 / Android / iOS / ARM-RK3399)从官方发布渠道下载对应开发包,以及模型文件(含 face_detector、face_recognizer、face_recognizer_mask、mask_detector 等 14 个 .csta 文件),解压到同一目录。
- 准备 Qt 环境(Qt5 即可),用 Qt Creator 打开 example/qt/seetaface_demo 下的工程文件,编译。
- 验证成功:程序启动后打开摄像头,画面上出现人脸检测框和 5 个特征点,控制台或界面打印出识别相似度分数,即说明整条链路跑通。
⚙️ 核心能力拆解
人脸检测
输入图像,返回所有人脸的位置框和置信分数。一切管线的入口,支持多人脸。
关键参数:
- 最小人脸尺寸,默认 20 像素,调小可检出更小人脸但变慢
- 检测阈值,默认 0.90
- 最大输入宽高
- 计算线程数,默认 4
- 设备:CPU / GPU 自动选择
接口细节见 docs/人脸检测.md。
人脸识别
输入图像与特征点,输出特征向量;两组向量比相似度即可判断是否同一人。相似度用余弦计算,比对本身非常快。
关键参数:
- 模型文件:通用版与戴口罩版二选一
- 裁剪人脸宽高,由模型接口给出
- 特征向量长度:1024 或 512
- 线程数,默认 4
接口细节见 docs/人脸识别.md。
静默活体
不依赖配合动作,判断当前人脸是真人还是照片、屏幕攻击。
关键参数:
- 单帧模式 Predict,或视频模式 PredictVideo
- 清晰度阈值,默认 0.3
- 活体阈值,默认 0.8
- 视频模式所需帧数
- 传入单个模型速度快,传入双模型精度高
接口细节见 docs/静默活体.md。
特征点检测
返回 5 点或 68 点坐标,并给出每个点是否被遮挡,是识别模型对齐的输入。
关键参数:
- 模型决定点位数(5 或 68)
- 口罩场景可换 5 点口罩模型
- 遮挡标记数组,1 为被遮挡
接口细节见 docs/特征点检测.md。
质量评估器
亮度、清晰度、姿态、分辨率、完整度五维打分,分低中高三档。深度与非深度两套实现,按需取用。
关键参数:
- 模糊阈值,默认 0.80
- 姿态 yaw / pitch / roll 高低阈值
- 各模块分级参数
- ARM 设备大核 / 小核 / 平衡计算模式
接口细节见 docs/质量评估器.md。
📊 规格与选型
| 配置项 | 通用人脸识别 | 带口罩人脸识别 | 通用(小) |
|---|---|---|---|
| 网络结构 | ResNet-50 | ResNet-50 | Mobile FaceNet |
| I7-6700 单帧耗时 | 57ms | 34ms | 9ms |
| RK3399 单帧耗时 | 300ms | 150ms | 70ms |
| 特征长度 | 1024 | 512 | 512 |
| 适用场景 | 服务器高精度部署 | 口罩遮挡场景 | 移动端与嵌入式 |
选型很简单:服务器上用通用版换最高精度,移动端和 RK3399 上用轻量版保帧率,防疫或门禁场景叠加口罩版。注意同一套底库要用同一模型的特征,512 维和 1024 维不能混比。
🌐 部署与兼容性
开放版提供标准 C++ 接口,覆盖 x86 与 ARM 两种架构:
- Windows / Ubuntu1604 / CentOS7:均有独立开发包,x86 老平台另有 pentium 兼容补丁
- Android:开发包支持 ARM 部署,移动端可切大核 / 小核 / 平衡计算模式控制帧率
- iOS:已提供开发包和示例
- macOS:官方标注 Coming soon,暂不可用
- RK3399 等 ARM 板卡:有专属 ARM-Ubuntu 开发包,配合轻量模型实时性最好
从上图可以看到,各操作系统与硬件架构的接口支持范围一目了然,按你的部署目标选包即可。
🛠️ 实战:搭一个最小门禁系统
以 Qt 示例工程为例,5 步跑通:
- 按快速上手的步骤加载开发包与全部模型文件,程序启动即完成模型初始化。
- 接入摄像头,示例内置的 videcapturethread 已封装好视频采集,直接复用。
- 每帧调用人脸检测得到人脸框,检测不到就等下一帧。
- 特征点模型定位 5 点,质量评估器检查清晰度,模糊帧直接丢弃。
- 活体检测判定为真人(REAL)才进入识别环节。
- 提取特征向量,与底库逐条比对,相似度超过阈值即通过。
- 通过即触发开门逻辑,底库的录入用同一套提取流程完成。
到这里,一个可演示的门禁系统已经能跑,后面只需替换底库和数据源,扩展成检索或动态识别。
💡 踩坑与调优
小人脸检测不到:默认最小人脸尺寸是 20 像素,调小即可检出,代价是速度变慢,按实际画面距离定值。
识别准确率低:先别怀疑模型,查输入质量。模糊、偏头、逆光的帧本来就不该进识别,把质量评估的档位阈值调严一些再看。
模型加载失败:检查 .csta 文件路径、读写权限,以及开发包与模型是否同一平台。
ARM 设备帧率不足:切小核 / 平衡计算模式,或换轻量识别模型,两者叠加效果明显。
性能上两条建议:检测、特征提取、识别做成流水线,识别放独立线程,界面不卡顿;批量入库时复用同一个识别器实例,避免反复加载模型。
🔗 延伸阅读
- 各模块的完整 C++ 接口说明在仓库 docs 目录,9 个文件逐一覆盖每个类、每个参数
- 示例工程源码在 example/qt/seetaface_demo,逐文件读懂即可掌握整条管线
- 遇到问题先翻本地文档;仍卡住可加 SeetaFace 开发者社区微信群交流,README 里有入群二维码
收尾
回到开头的结论:检测、对齐、比对、防伪,9 个模块一套接口,这就是 SeetaFace6 省掉你拼装时间的方式。性能数据摆在那,ResNet50 推理从 8FPS 提升到 20FPS,识别数据量上亿张。
去仓库把 Qt Demo 跑起来,看到检测框和相似度分数的那一刻,你的门禁系统就有了。
【免费下载链接】SeetaFace6SeetaFace 6: Newest open and free, full stack face recognization toolkit.项目地址: https://gitcode.com/gh_mirrors/se/SeetaFace6
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考