发布时间:2023-12-06 13:00
《人脸识别实战》系列文章将讲述一个人脸识别系统的设计与实现过程。本文是系列文章的开篇,主要描述系统的整体架构和各模块的功能职责,以及系统所需要的环境依赖部署。详细的设计细节及项目源码地址在以下的公众号发布:
文章同步更新在公众号 AIPlayer,欢迎扫码关注,共同进步
2.1 服务器端
(1)网络消息处理模块
主要负责管理客户端发送来的网络连接请求、消息数据的收发与数据协议解析,以及对图像数据的编解码处理。在系统中以JSON格式进行消息封装,使用TCP连接进行收发通信,而图像数据的解码仅支持OpenCV对图像数据的编解码操作。
(2)图像处理模块
图像处理模块负责处理人脸图像的数据,需要实现的功能包括:
人脸检测:如果客户端发送来的图像数据是人脸图像则不需要再进行检测,否则就需要对人脸进行检测。系统将采用基于ncnn实现的MTCNN算法进行部署。
人脸对齐:将检测到的人脸图像区域调整到正常角度,系统中将使用OpenCV的仿射变换来进行对齐。
人脸特征提取:系统将集成FaceNet和InsightFace两种算法进行人脸的特征提取。
人脸特征比对:使用欧式距离进行人脸特征比对,在阈值范围内选择最小值作为比对结果。