基于开源模型的实时人脸识别系统(九):软件说明

续 人脸识别_CodingInCV的博客-CSDN博客

文章目录

  • 前言
  • 简介
  • 模型选择的要求
  • 总体流程图
  • 人脸检测
  • 人脸跟踪
  • 人脸质量
  • 人脸关键点
  • 人脸识别
  • 代码结构
  • 人脸识别的逻辑
  • 高阶设置

前言

前面的文章我们介绍了整个系统里的关键步骤,基于这些步骤我们就可以搭建出属于自己的人脸识别系统了。下面从软件的角度讲解实现的功能。
源码:https://mbd.pub/o/bread/ZJyTmZty

简介

本软件是基于开源的模型实现的一套动态人脸识别系统,该人脸系统会对人脸进行跟踪,并选择最优帧进行人脸识别,并统计人员出现的次数。人脸检测使用yolov8face, 跟踪使用sort, 数据存储使用sqlite, 人脸识别使用resnet50,人脸比对采用faiss. GUI使用Pyside6. 软件不仅可以识别出在库人员的出现次数,还在非在库人员第一次出现时,自动加入底库,从而实现对非在库人员的出现次数进行统计。
软件可以在CPU上实现实时,GPU上表现更流畅。
特点

  • 完全基于开源模型
  • 支持输入视频文件、USB摄像头、rtsp视频流
  • 注册信息和识别记录存储在sqlite,重启后不消失
  • 除了识别人员,还会累计其出现次数
  • 对于非注册人员,也会累计其出现次数
  • CPU可实时

模型选择的要求

为了实现CPU的实时,模型选择优先考虑模型的复杂度。

总体流程图

基于开源模型的实时人脸识别系统(九):软件说明_第1张图片

人脸检测

人脸检测即是从图像中定位出人脸的位置,本软件采用yolov8face算法,可参见:derronqi/yolov8-face: yolov8 face detection with landmark (github.com)

人脸跟踪

人脸跟踪是为检测出的人脸框分配ID,从而实现对同一个人的持续监控, 采用速度较快的SORT跟踪算法:abewley/sort: Simple, online, and realtime tracking of multiple objects in a video sequence. (github.com)

人脸质量

动态人脸容易出现大角度、人脸模糊等质量差的脸,而且每一帧都去做识别也很浪费计算资源,所有本软件引入了人脸质量的计算,主要包括人脸的角度、光照、模糊、大小。具体来源于论文:
ietresearch.onlinelibrary.wiley.com/doi/full/10.1049/ipr2.12008

人脸关键点

人脸关键点是人脸识别前的步骤,主要用于将人脸对齐。aliprf/KD-Loss: Facial Landmark Detection Using Knowledge Distillation-Based Neural Networks (github.com)

人脸识别

采用insightface/model_zoo at master · deepinsight/insightface (github.com)

代码结构

face_recognition_modules
—base_model 模型推理基类
— configs 全局配置
— database sqlite数据库相关炒作
— face_alignment 人脸关键点
— face_detection 人脸检测
—face_quality 人脸质量
— face_search 基于faiss的人脸搜索
— face_recognition 人脸识别,包括识别模型和识别服务
—tracker 人脸跟踪
—common 一些通用结构体和功能函数
models 模型目录
test_images 测试视频和图片
ui 窗口界面
face_detect_task 算法运行的线程
gui.py 程序入口

人脸识别的逻辑

  • 人脸最优帧
    每个跟踪对象,最多存储5张质量最好的帧,当触发识别时(达到设定帧数),送入识别队列,最优帧数清空,可以再次接收5张最好的帧。
  • 多次识别
    提取出人脸特征后,若比对分数超过阈值,则该跟踪对象识别成功,她的其他最优帧将不再进行识别;若识别未成功,则在该人员消失前,会继续进行识别,直到消失时,上报未识别成功。
  • 陌生人入库
    对于未识别成功的人员,将其最后一张抓拍照加入陌生人库
  • 识别次数统计
    人员首先与注册人员库进行比对,若失败,则与陌生人库比对。将比对的人员id到识别记录库中搜索,对出现次数+1

高阶设置

可以修改configs/global_config.py中的参数,设置识别阈值、最长识别时间、质量阈值、识别记录抠图的比例等

你可能感兴趣的:(人脸识别,计算机视觉,目标跟踪,深度学习,目标检测,python)