Skip to content

运行于 Linux 开发板上的客户端人脸检测与识别系统,包含服务端组件,实现人脸识别功能

Notifications You must be signed in to change notification settings

YusJade/ArmFaceID

Repository files navigation

ArmFaceID-server

提醒🍏:gRPC协作开发请见: 开发Tips:如何实现一个rpc接口~

C++ 项目旨在使用gRPC框架搭建一个提供人脸身份识别微服务的后端应用,提供人脸身份注册和人脸身份识别的接口。

构建本项目:CMake

注意⚠️:在 Linux 下构建本项目。

运行以下命令进行构建:

cmake -B ./build
cmake --build ./build/

协同开发约定

任务划分

本分支已经在在前主分支的基础上,对gRPC的异步服务端的编写做了略微封装,目标是实现人脸身份注册与人脸身份识别两个接口。

开发并维护人脸身份识别接口

负责开发:

  • 请求中的参数:face_img: bytes // 要进行识别的图片
  • 响应中的参数:res: UserInfo // 身份识别的结果
  • 响应中的消息:数据无效:图片格式错误识别不到身份识别成功

并维护人脸身份注册接口

负责开发:

  • 请求中的参数:
  • face_img: bytes // 要进行注册的人脸图片
  • info: UserInfo // 身份信息
  • 响应中的参数:res: User // 注册的结果
  • 响应中的消息:数据无效:图片、身份格式错误人脸图片质量过低注册成功

继续开发计划

编写数据库模块,实现人脸特征与个人信息的绑定

已通过 SQLITE 数据库 与 QTQSQL 模块实现基本功能,可能的待优化项:

  • Qt 的数据库连接无法跨线程使用,解决办法为维护一个std::thread:id到的map

使用性能更佳的人脸识别库

未来会尝试在开发板上部署模型,可能涉及模型的转换(pytorch?onnx?ncnn ?),以及运行他们所需的依赖库。

本项目使用的人脸识别库 SeetaFace2 的人脸特征提取是基于 ResNet50 神经网络实现的,但并没有提供 GPU 加速的功能(源码中预留了 GPU 的代码及接口,并未实现 :<),未来计划使用 SeetaFace6GPU 版本。

Liniyous/ElaWidgetTools

待办清单🧐:

  • 编译准备: WSL 下安装 CUDA Toolkit
  • 编译 X86_84 Linux GPU 版本的 SeetaFace6
  • 测试对比 SeetaFace2SeetaFace6 的性能表现。
  • 交叉编译 aarch64 Linux CPU 版本的 SeetaFace6

About

运行于 Linux 开发板上的客户端人脸检测与识别系统,包含服务端组件,实现人脸识别功能

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published