65.9K
CodeProject 正在变化。 阅读更多。
Home

IoT 参考实现:如何构建面部访问控制解决方案。

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2017年10月10日

CPOL

3分钟阅读

viewsIcon

8819

人脸门禁应用程序是一系列物联网参考实现的一部分,旨在指导用户如何为特定问题开发有效的解决方案。

引言

人脸门禁应用程序是一系列物联网参考实现的一部分,旨在指导用户如何为特定问题开发有效的解决方案。该解决方案使用面部识别作为授予物理访问权限的控制系统的基础。该应用程序将一个人的面部图像检测并注册到数据库中,识别进入指定区域的已知用户,并在一个人的面部与数据库中的图像匹配时授予访问权限。

通过此参考实现,开发人员将学会构建和运行一个应用程序,该应用程序可以:

  • 检测并注册一个人的面部图像到数据库
  • 识别进入指定区域的已知用户
  • 当一个人的面部与数据库中的图像匹配时授予访问权限

工作原理

人脸门禁系统由两个主要子系统组成

cvservice

  • cvservice是一个使用英特尔®计算机视觉SDK(Intel® CV SDK)的C++应用程序。它连接到USB摄像头(用于检测人脸),然后根据授权用户的训练数据文件进行面部识别,以确定检测到的人是已知用户还是以前未知用户。当识别出用户时,消息会被发布到一个MQTT*代理,处理后的输出帧以原始格式写入stdout(将被管道传输到ffmpeg进行压缩和流式传输)。在这里,摄影视觉库用于面部检测和识别。

webservice

  • webservice使用MQTT代理与cvservice进行交互。这是一个基于Node.js*的应用程序,用于在用户访问站提供视觉反馈。当用户被识别为授权用户时,会向他们打招呼,或者提供注册为新用户的选项。它显示高质量、低延迟的动态jpeg流以及用户界面和数据分析。

在用户界面中,有三个标签页:

  • 实时流视频
  • 用户注册
  • 访问历史分析。

这是实时流视频标签页的样子

这是用户注册标签页的样子

这是分析标签页的一个示例

硬件要求

  • 第五代英特尔®酷睿™处理器或更新版本英特尔®至强®v4、英特尔®至强®v5处理器,配备英特尔®显卡技术(如果OEM在BIOS和主板中启用)[在NUC6i7KYK上测试]
  • USB网络摄像头[使用Logitech* C922x Pro Stream测试]

软件要求

如何设置

Intel® CV SDK

下载并安装OpenCL*

Intel® CV SDK需要OpenCL*,它是一个单独下载项。我们提供了一个脚本,可以帮助完成安装过程,在此处下载。使用以下命令解压存档:

tar xf install_OCL_driver2_sh.tgz

然后准备一个临时工作区并运行脚本

mkdir opencl-temp
./install_OCL_driver2.sh install --workspace opencl-temp

对于此应用程序,您不需要重新编译Linux*内核,因此在安装过程中被问到时,请回答。更多详细信息和说明请参阅本文。文章中提到的系统分析器实用程序可用于确认安装是否正确。

下载并安装Intel® CV SDK

安装Intel® CV SDK的指南在此处提供。完成注册后,下载Ubuntu*的存档,解压它,然后运行GUI安装程序

tar xaf intel_cv_sdk_ubuntu_<version>.tgz
cd intel_cv_sdk_ubuntu_<version>
./install_GUI.sh

当提示时,以root用户或具有root权限的用户身份安装。其余指南假设您将Intel® CV SDK安装在默认位置。

安装完成后,不要忘记设置CV SDK环境变量

source /opt/intel/computer_vision_sdk_<version>/bin/setupvars.sh

这将是构建和运行cvservice所必需的。要自动化此过程,您可以从.profile.bashrc中设置脚本。或者,您可以将变量添加到/etc/environment

ffmpeg

此参考实现使用ffmpeg来压缩和流式传输cvservice的视频输出到webservice客户端。ffmpeg从Ubuntu存储库单独安装

sudo apt update
sudo apt install ffmpeg

cvservice

安装Paho* MQTT* C客户端库依赖项

此参考实现使用MQTT在服务之间发送数据。要安装依赖项

sudo apt update
sudo apt install libssl-dev

构建可执行文件(从cvservice目录)

mkdir build
cd build
cmake ..
make

webservice

Node.js服务设置的说明可在webservice文件夹中找到。

运行应用程序

  1. 启动webservice,包括服务器和前端组件。

  2. 使用以下命令启动ffserver:

     sudo ffserver -f ./ffmpeg/server.conf
  3. 导出所需的环境变量

     export MQTT_SERVER=localhost:1883
     export MQTT_CLIENT_ID=cvservice
     export FACE_DB=./defaultdb.xml
     export FACE_IMAGES=../../webservice/server/node-server/public/profile/
  4. cvservice/build目录启动cvservice并将输出管道传输到ffmpeg

     ./cvservice 0 2>/dev/null | ffmpeg -f rawvideo -pixel_format bgr24 -video_size vga -i - https://:8090/fac.ffm
  5. 浏览到

     https://:8080
© . All rights reserved.