基于开源模型的实时人脸识别系统

背景

人脸识别已经发展了很多年,随着深度学习发展,开源的模型也有很不错的效果了。我们可以在不需要深入各种算法细节的情况下,就能搭建自己的人脸识别系统了,除了用于学习,还可以将我们自己家的摄像头接入到我们自己搭的系统,真正用起来。这个专栏就基于这样一个设想,从开源的模型中寻找适合的算法,一步步搭建一个实时的人脸识别系统出来。

效果

img
视频:https://www.bilibili.com/video/BV1Bh4y157f3/
源码:CoderInCV的个人主页 (mbd.pub)

实现功能

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

系列预计写得一些内容

  • 人脸检测
  • 人脸跟踪
  • 人脸关键点
  • 人脸质量
  • 人脸特征提取
  • 人脸比对
  • 动态人脸识别逻辑
    计划首先在CSDN更,视情况再看是否转发博客园。
    人脸识别_CodingInCV的博客-CSDN博客

整体框架

image

代码结构

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 程序入口

软件使用说明

在项目目录,运行gui.py

python gui.py

软件界面如下:
6df8fec2281f164fcc4f9313bbfff1ec_MD5

注册人员

点击注册人员按钮,选择导入的文件夹,将注册文件夹下的图片,图片的名称为人员的名字。
146e468c0fcabacd78749e7dd7bfa19c_MD5
注册进度会在日志输出区域显示,在识别过程中也可以执行注册人员的操作。
人员注册信息会存在register.sqlite数据库中。

打开输入源

软件支持3种输入源:视频文件、USB摄像头以及rtsp流。

打开视频文件

点击“打开文件”按钮,选择要打开的视频文件,视频预览区将开始播放视频,并画人脸框以及名称。

打开USB摄像头

在USB Camera区域输入摄像头的索引,一般为数字0,然后点击打开摄像头按钮。

打开IP摄像头(rtsp)

在IP Camera区域输入摄像头流地址rtsp://xxxxx,点击打开IP摄像头。
9dc613cd27d1194588856b9ea0d929b9_MD5

输出说明

识别结果包含人员姓名(不在底库中的为Unkown), 出现的时间以及出现的次数。
注意该出现次数是从注册这个人开始计算,即使软件重启也不会清零,因为识别记录是存储在数据库中,只有点击清空记录,才会重新开始计算。

数据说明

人员注册信息以及识别记录存储在sqlite数据库中,关闭软件不会清空。再次打开时,会自动载入人员,无需重复注册。需要清空可以删除数据库文件或者在软件界面点击相应的按钮。

posted @ 2023-08-17 21:53  CoderInCV  阅读(1050)  评论(0编辑  收藏  举报