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

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

前言

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

简介

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

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

模型选择的要求

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

总体流程图

a29819dc23edd024bea2a2dd5d27692e_MD5

人脸检测

人脸检测即是从图像中定位出人脸的位置,本软件采用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中的参数,设置识别阈值、最长识别时间、质量阈值、识别记录抠图的比例等

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingInCV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值