本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于物联网的人脸识别安全系统

发布时间:2022-01-08
分享到:

基于物联网的人脸识别安全系统

发布时间:2022-01-08
分享到:

项目背景:

我们都有一部具有面部解锁功能的智能手机。但是我们中的许多人仍然使用基本的旧机械锁来保护我们的房子,安全锁等。 像我们在电影中看到的那样在我们的房子里安装人脸识别系统的功能是不是很神奇?在这里,在这个项目中,我将展示一个这样的人脸识别安全系统的原型,其中包含有关过程以及编码部分和硬件设备的所有信息,您也可以按照步骤构建这样一个系统。

硬件组件

  • Bolt IoT Bolt WiFi 模块×    1    
  • LDR,5 兆欧    ×    1    
  • USB-A 转 Mini-USB 数据线×    1    
  • 蜂鸣器    ×    1    
  • LED(通用)    ×    1    
  • 面包板(通用)    ×    1    

软件应用程序和在线服务

  • Bolt 物联网 Bolt 云
  • OpenCV    
  • 微软 Visual Studio 2017

手动工具和制造机器

  • 伺服电机,优质公/公跳线
  • 优质母/公延长跳线,40 x 6"(150 毫米)

项目要求:

用户要与之交互的第一个设备是我们的 LDR - 光检测电阻器。

人脸识别只有在光线强度有障碍时才会启动,否则,如果我们直接连接人脸识别系统,它将开始消耗内存和电量。

现在,如果 LDR 观察到光强度有任何障碍,它会将信息发送到 Bolt Cloud,我们在系统中编写的 Python 代码将观察到该信息。python 将启动网络摄像头以扫描授权人员或入侵者。如果摄像机的视角中有授权人员,它将检测并关闭端口 1 的电路,我们的继电器连接到端口 1,该电路将电机连接到电源。此处的电机将充当滑轮,将金属杆从孔中拉出。并且它还会向当局发送电报消息,以授权的名称和时间授予访问权限。如果摄像机的视角内有入侵者,则蜂鸣器组成的电路将关闭。

这就是我们在这里要做的所有事情。现在,让我们看看构建这个项目的分步过程。

 程序:

硬件设置:
将 LDR 终端之一连接到 Bolt IoT 模块的 3v3 端口,另一个连接到“A0”模拟端口。(这是因为 Bolt IoT 模块的 A0 端子是 Bolt IoT 中唯一可用于获取类似输入值的端口)。
将蜂鸣器的正极连接到“0”数字端口,将另一个端子连接到 GND 端口。(这是因为数字端口“0”用于输入和输出,在这种情况下,我们将其用作输出端口,通过端口“0”为蜂鸣器供电)。
将 LED 正极端子连接到“1”数字端口,将负极端口连接到 GND 端口。(这是因为数字端口“1”用于输入和输出,在这种情况下,我们将其用作输出端口,通过端口“1”为 LED 供电)。在这里,我没有继电器,所以只是为了演示我使用 LED。
使用面包板连接这些电路,如图所示。(使用面包板不是强制性的,我们正在使用它,以便我们以后可以在需要时轻松地对电路进行更改,也为了简单起见)。
现在,将 USB 电缆连接到螺栓模块,另一端通过笔记本电脑或充电器连接到电源。
硬件设置到此结束。有关LDR和Bolt IoT 模块的更多信息,请单击嵌入式链接。

注意:所有这些连接都是在 Bolt IoT 设备中进行的,可以从以下链接购买。

软件设置:
首先,我们需要在我们的系统中安装python,否则“*.py”将无法打开。你可以从这里下载python 。然后通过在命令提示符中输入以下命令来确保您的 pip 已升级:
现在,您需要安装一些库来运行这个项目。否则,您将收到导入错误。这个项目需要的库是:

打开基础库: pip install opencv-python
NumPy 库: pip install numpy
人脸识别: pip install face-recognition
现在,您需要安装一些库来运行这个项目。否则,您将收到导入错误。这个项目需要的库是开放的CV库: NumPy库:face_recognition:pip install opencv-python
pip install numpy
pip install face-recognition
有关更多信息,请单击此处:Python、人脸识别库、Open CV 库、Numpy 库和Pickle 库

程序:
创建一个 python - conf.py:在这个文件中输入设备 API 和设备 ID。
其次,创建一个python文件——embedding.py:该文件用于为授权人员创建编码,并为此数据创建一个pickle文件,用于人脸识别。
三、创建一个python文件——recognition.py:该文件是构成授权功能人脸检测程序的主要文件。这是包含 IoT 实现以通过 Bolt IoT 设备添加功能的主文件。

工作原理:

  • 首先,被授权人必须通过打开 embedding.py 文件来创建他/她的面部编码。然后输入他们的姓名和任意数字并点击“s” 5 次以获取他们面部的 5 个样本。这就是所有编码都将保存在文件 embedding.py 所在的同一目录中的 pickle 文件。
  • 现在当这个人想要打开门时。他/她必须把手放在 LDR 上,这将通过 API 向 Bolt Cloud 发送 LDR 值已更改的信号。
  • 现在 python 代码将接收这些信号并启动网络摄像头以启动面部识别过程。
  • 然后将创建面部编码并与之前创建的 pickle 文件的编码进行比较。
  • 现在,如果此人是授权人,则信号将传递到物联网设备,表明此人是授权人,并关闭端口 1 的电路,在我们的案例中,该端口连接了 LED,但带有步进电机的继电器将附加在实时应用程序中。然后,还将向当局发送一条消息,说明谁获得了访问权限以及访问时间。
  • 如果此人不是授权人,则该人未被授权的信号将传递到物联网设备。为了提醒入侵者,端口 0 的电路将关闭,将电流传递到蜂鸣器,蜂鸣器将开始响铃。并且还会向当局发送关于入侵者的电报消息以及时间戳。

本项目中使用的人脸识别技术的原创研究:

该项目基于发表在Modern Face Recognition with Deep Learning上的原始研究。这里的原始研究表明,捕获的人脸图像是通过深度学习算法 Hog's Algorithm 的,该算法遵循以下步骤:

  • 首先,捕获的图像被转换为​​黑白图像。
  • 然后根据每个对应像素的暗度分析每个像素。
  • 创建一个图像渐变,其中所有像素都转换为箭头,然后最强的箭头形成一个称为 Hog's Image 的图像渐变。
  • 将这张猪的人脸图像与各种训练进行比较,以在人脸识别中检测人脸。
  • 尽管如此,该算法将无法识别面部是否倾斜。
  • 因此,现在使用面部标志估计算法来倾斜图像以将嘴唇、眼睛和鼻子居中。为此,我们将使用基本方法像旋转一样倾斜,并缩放平行线,称为仿射变换。
  • 这背后的基本思想是,我们脸上有 68 个特定的点,分别位于嘴唇、眼睛的外部结构、下巴顶部等。
  • 然后创建由这 68 个点组成的图像。
  • 然后分析该图像以检测人脸。
  • 但是如果每次都将一张图像与其他几张图像进行比较,那将是非常耗时的。
  • 所以,现在我们要做的是从训练图像中创建一次测量,然后保存这些测量。并且当需要分析新图像而不是将图像与其他训练图像进行比较时。我们只是将新图像的测量结果与之前保存的测量结果进行比较。
  • 现在进行测量,我们使用深度卷积神经网络生成每张脸的 128 个测量值。
  • 但仍然是计算机如何识别这些图像。为此,我们比较了 3 张图像。
  • 第一个是之前保存的已知人物的图像。
  • 第二个是已知人物的新形象。
  • 三是不知名人物形象。
  • 并且如果新图像测量值与已知人的先前保存图像的测量值更相似。然后计算机将知道新图像是已知人物的。
  • 在 ML 中,人脸图像的这 128 个测量值称为嵌入。
  • 但是为了获得准确度,我们需要找到最好的 128 个测量值,我们可以用它来获得完美的人脸识别。
  • 为了获得这些完美的 128 次测量,我们需要为数百万人训练这些图像,数百万次,这是非常耗时的。
  • 所以,Open Face 的人发表了他们的训练研究。用于项目以实现准确性。
  • 这项研究被用作创建我们在这个项目中使用的人脸识别库的参考。

这就是构建 LDR 激活的基于物联网的人脸识别安全系统原型的方式。

接线图下载

代码下载:

这只是一个原型,这就是我们在这里使用 LED 的原因。您可以使用继电器和电机为您的项目添加解锁功能。此外,您可以向该项目添加电报消息功能,以通过附加入侵者的面部图像向当局警告入侵者。

以上内容翻译自网络,原作者阿杰·拉瓦特,如涉及侵权可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论