前言
智能安防、人员管理等场景对身份识别需求的增长,一套稳定、高效、可私有化部署的人脸识别系统变得尤为重要。许多现有方案要么依赖云端服务,存在隐私风险;要么架构复杂,难以维护。
本文推荐一个完全本地运行、基于 .NET 8 开发的人脸识别与追踪服务。它不依赖外部 API,核心识别逻辑采用本地余弦相似度比对,兼顾性能与可控性,适合企业级私有部署。
项目介绍
一个基于 .NET 8.0 开发的高性能人脸识别与追踪服务系统。系统集成了深度学习模型(YOLOv8 人脸检测 + ArcFace 特征提取)、向量数据库(Qdrant)和关系型数据库(PostgreSQL),实现了完整的人脸注册、识别和轨迹追踪功能。
识别阶段默认采用本地余弦相似度比对(不依赖 Qdrant 相似度检索),确保低延迟与高可靠性。
项目功能
1、人脸注册
通过 API 接口提交 Base64 图片,系统自动检测人脸、筛选清晰图像、提取 512 维特征向量,并将数据存储到 PostgreSQL 和 Qdrant。
2、实时识别监控
后台服务 FtpRecognitionWorker 持续监控指定 FTP 文件夹,自动处理新的人脸快照,完成检测、特征提取与本地相似度匹配,并记录识别结果。
3、轨迹追踪记录
系统记录人员在不同摄像头间的移动轨迹和时间信息,支持按人员 ID 查询完整路径。
4、清晰度筛选
基于拉普拉斯方差评估人脸清晰度,自动过滤模糊图像,确保识别质量。
5、RESTful API
提供完整的 HTTP 接口,支持人脸注册、查询、删除及轨迹查询,集成 Swagger 文档便于调试。
项目特点
高精度人脸检测:基于 YOLOv8s-face 模型,支持实时检测
特征向量提取:使用 ArcFace 模型生成 512 维特征
相似度比对:从 PostgreSQL 读取向量,本地计算余弦相似度
实时监控识别:通过 FTP 文件夹轮询,自动处理快照
轨迹追踪记录:完整记录跨摄像头移动路径与时间
清晰度筛选:动态阈值过滤低质量人脸
配置灵活:所有参数(模型路径、阈值、线程数等)均可通过 JSON 配置调整
项目技术
系统采用以下技术栈开发
框架:.NET 8.0 (ASP.NET Core)
数据库:PostgreSQL 10.0+
向量数据库:Qdrant 1.16+
深度学习:ONNX Runtime 1.23+
图像处理:EmguCV 4.12+、SkiaSharp 3.119+
API 文档:Swagger/OpenAPI
核心组件包括
FaceDetector:使用 YOLOv8s-face ONNX 模型检测人脸FaceFeatureService:调用 ArcFace 提取特征并计算余弦相似度SharpnessEvaluator:基于拉普拉斯方差判断图像清晰度FtpRecognitionWorker:后台轮询 FTP 目录,处理快照并记录轨迹QdrantVectorManager:管理向量存储与同步
项目结构清晰分层,包含 API 控制器、Core 算法、Infrastructure 数据访问、Services 业务逻辑等模块,便于维护与扩展。
项目效果
系统启动后自动初始化 PostgreSQL 表结构,包括face_persons(人脸信息)、track_records(轨迹记录)、camera_mappings(摄像头映射)。
在普通 Windows 服务器上,单张图片处理耗时约 100–150ms,本地比对千级人脸库响应在 10ms 内。
FTP 监控默认每 2 秒轮询一次,支持多线程并行处理,队列缓冲防止积压。实际测试中,系统可稳定运行数周无内存泄漏,日志与异常处理机制完善。
项目源码
项目源码组织如下:
├── API/Controllers/ # FaceController, TrackController ├── Core/Algorithms/ # FaceDetector, FaceFeatureService 等 ├── Infrastructure/Database/ # PostgreSQL 上下文 ├── Services/ # 注册、删除、轨迹等服务 ├── res/model/ # yolov8s-face.onnx, arcface.onnx └── appsettings.json # 全量配置文件打包采用单文件发布模式,运行build.bat即可生成FaceTrackService.exe及配套资源。
部署时只需安装 PostgreSQL 和 Qdrant(可通过 Docker 快速启动),配置连接字符串与模型路径,即可运行服务。支持作为 Windows 服务注册,便于生产环境管理。
总结
项目以实用为导向,充分利用 .NET 8 的性能优势,结合成熟的开源模型与数据库,开发了一套完整、可控、易部署的人脸服务系统。其"本地比对优先"的设计思路,有效规避了向量数据库实时检索的延迟与成本问题,同时保留 Qdrant 作为未来扩展选项。
不管是用于门禁联动、考勤统计还是客流分析,该系统都能提供稳定可靠的技术支撑。