在本文中,将详细介绍如何开发一个基于人脸识别技术的门禁控制系统。该系统能够检测和记录人脸图像到数据库中,识别进入特定区域的已知用户,并在用户的人脸与数据库中的图像匹配时授予访问权限。
人脸识别门禁控制系统主要由两个子系统组成:
cvservice是一个使用Intel® Computer Vision SDK (Intel® CV SDK)的C++应用程序。它连接到USB摄像头(用于检测人脸),然后基于授权用户的培训数据文件执行人脸识别,以确定检测到的人是否为已知用户或之前未知的用户。当用户被识别时,消息会发布到MQTT*代理,处理后的输出帧以原始格式写入stdout(以便通过ffmpeg进行压缩和流式传输)。在这里,使用摄影视觉库进行面部检测和识别。
webservice使用MQTT代理与cvservice交互。它是一个基于Node.js*的应用程序,用于在用户访问站点提供视觉反馈。当用户被识别为授权用户时,系统会向他们打招呼,或者给他们注册为新用户的选项。它显示高质量、低延迟的运动JPEG流,以及用户界面和数据分析。
用户界面包含三个标签:
以下是实时视频流标签的样子:
以下是用户注册标签的样子:
以下是访问历史数据分析标签的例子:
第五代Intel® Core™处理器或更新版本,或
Intel® Xeon® v4或Intel® Xeon® v5处理器,配备Intel® Graphics Technology(如果OEM在BIOS和主板中启用)[在NUC6i7KYK上测试]
USB网络摄像头[与Logitech* C922x Pro Stream测试]
Ubuntu* 16.04
Intel® CV SDK Beta
下载并安装OpenCL*
Intel® CV SDK需要OpenCL*,可以单独下载。提供了一个帮助安装过程的脚本:
tar xf install_OCL_driver2_sh.tgz
然后准备一个临时工作区并运行脚本:
mkdir opencl-temp
./install_OCL_driver2.sh install --workspace opencl-temp
对于这个应用程序,不需要重新编译Linux*内核,因此在安装过程中被问到时回答
no
。更多详细信息和说明在
这篇文章
中提供。文章中提到的系统分析器实用程序可以用来确认正确的安装。
安装Intel® CV SDK的指南在
这里
提供。完成注册后,下载Ubuntu*的存档,解压缩它,并运行GUI安装程序:
tar xaf intel_cv_sdk_ubuntu_.tgz
cd intel_cv_sdk_ubuntu_
./install_GUI.sh
当被提示时,作为root用户或具有root权限的用户安装。其余的指南假设将在默认位置安装Intel® CV SDK。
这个参考实现使用ffmpeg将cvservice的视频输出压缩并流式传输到webservice客户端。ffmpeg单独从Ubuntu仓库安装:
sudo apt update
sudo apt install ffmpeg
安装Paho* MQTT* C客户端库依赖项:
sudo apt update
sudo apt install libssl-dev
构建可执行文件(从cvservice目录):
mkdir build
cd build
cmake ..
make
如何在webservice文件夹中设置Node.js服务的说明。
启动webservice,包括服务器和前端组件。
使用以下命令启动ffserver:
sudo ffserver -f ./ffmpeg/server.conf
导出所需的环境变量:
export MQTT_SERVER=localhost:1883
export MQTT_CLIENT_ID=cvservice
export FACE_DB=./defaultdb.xml
export FACE_IMAGES=../../webservice/server/node-server/public/profile/
从cvservice/build目录启动cvservice并管道到ffmpeg:
./cvservice 0 2>/dev/null | ffmpeg -f rawvideo -pixel_format bgr24 -video_size vga -i - http://localhost:8090/fac.ffm
http://localhost:8080