在树莓派上实现人脸识别

在树莓派上实现人脸识别

介绍

预计在不久后的未来,人脸识别和身份认证技术将在咱们的平常生活中扮演一个很是重要的角色。这项技术为咱们开辟了一个全新的世界,它几乎适用于咱们生活的方方面面。面部识别/身份认证的使用案例包括安全系统、认证系统、个性化智能家居和家庭护理助理等。
python

咱们将搭建什么?

本教程将帮助你创建一个能够训练 HARASCALDES 模型的树莓派,该模型可用于检测已识别的/未识别过的人,使用监控摄像头进行实时监控,并利用物联网 JumpWay 来发送传感和警告消息,进而容许你的设备利用其余物联网 JumpWay 网与其余设备进行通讯。nginx

本教程将利用 TechBubble Technologies 物联网 JumpWay Python MQTT 库进行通讯,利用 OpenCV 实现计算机视觉,在本地端口上建造移动 Web 流和安全的 NGNX 服务器,以即可以安全地从外部访问视频流。git

这个例子是咱们最初的 TASS 版本,由于咱们的进步依靠了不少更先进的计算机视觉库和框架,因此咱们决定将代码进行开源。github

Python 版本

  • 2.7 版本
  • 3.4 或更高版本

软件要求

  • Jessie
  • TechBubble IoT JumpWay Python MQTT Client(https://github.com/TechBubbleTechnologies/IoT-JumpWay-Python-MQTT-Clients)
  • Linux 驱动
  • Nginx

硬件要求

  • 树莓派
  • Linux 兼容摄像头

准备工做

在开始以前,有几个教程你应该看一下,尤为是若是这是你第一次按照咱们的树莓派教程,或者若是这是你第一次使 TekBaseIO-JavaWoW 开发程序。若是这是你第一次在物联网项目中使用 TechBubble IoT JumpWay,在你建立 IOT 设备以前须要注册开发账户,并在进行一些基本的设置。访问下面的物联网 JumpWay 开发者使用文档(5-10 分钟阅读/设置 https://github.com/TechBubbleTechnologies/IoT-JumpWay-Docs/),并查看引导来进行注册并设置你的位置、区域、设备和应用程序(大约 5 分钟)。安全

  • 物联网 JumpWay 开发者程序文档 (5-10 分钟 阅读/设置 https://github.com/TechBubbleTechnologies/IoT-JumpWay-Docs/)
  • 准备你的树莓派(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/1-Raspberry-Pi-Prep.md)
  • 设置区域名字 & 树莓派的 SSL(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)
  • 在你的树莓派上配置 OpenCV(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/2-Installing-OpenCV.md)
  • 在你的树莓派上配置 Linux 驱动(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/5-Installing-Motion.md)
  • 在树莓派上为 Linux 驱动安装(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/6-Secure-Nginx-Server-For-Motion.md)
  • 用 IPTables 确保树莓派的安全(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/4-Securing-Your-Raspberry-Pi-With-IPTables.md)

准备你的树莓派

花一些时间来确保你的树莓派的硬件和包都是最新的,而且确保你的准备过程严格按照树莓派 3 的教程文件(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/1-Raspberry-Pi-Prep.md),设备是安全的。bash

复制 Repo

你将须要将 echBubble IoT JumpWay (https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples)树莓派实例 Examples 示例库下载到你的树莓派上,并导航到你想下载的目录,如下命令是将其下载到主目录最简单的方式。服务器

1
git clone https: //github .com /TechBubbleTechnologies/IoT-JumpWay-RPI-Examples .git

安装要求

接下来,你须要将计算机视觉库导航到目录并按照要求进行安装,若是你已经将库复制到你的主目录上,那么这一部分的命令以下:网络

1
2
3
cd IoT-JumpWay-RPI-Examples /Computer-Vision/Python
pip install --upgrade pip
pip install -r requirements.txt

安装 OpenCV

OpenCV 须要遵循树莓派教程(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/2-Installing-OpenCV.md)进行安装,它是咱们将使用的一种计算机视觉库。框架

安装 Linux 驱动

咱们将使用 Linux 驱动把视频流传送到树莓派本地端口上,OpenCV 在这里链接到视频流并从中读取图像帧。为了创建 Linux 驱动,遵循安装教程(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/5-Installing-Motion.md)在你的树莓派教上安装 Linux 驱动。

这里有一些修改,在驱动安装教程的第 9 部分中,它告诉你如何修改媒体的保存目录,在本教程中,你应该将这些设置更改成:

1
/home/YOURUSERNAME/IoT-JumpWay-RPI-Examples/Computer-Vision/Python/media

不要忘记注意第 10 部分中关于关闭图像保存来节省磁盘空间的问题。

设置域名和 SSL

咱们但愿咱们提供的教程能够确保帮助人们学会建立安全的项目。为了使视频流安全工做,你须要设置指向你的树莓派域名,你也须要设置 SSL 证书来确保用于视频流的服务器是安全的。树莓派域名和 SSL 设置教程(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)会向你详细解释如何作到这一点,若是有疑问,你可让你的注册员或主机来协助你。若是你将这个存储库复制到你的主目录中,你须要使用以下的 CSR 和密钥生成的路径:

1
2
/etc/nginx/key .key
/etc/nginx/csr .csr

一旦你从证书颁发机构收到你的签名 crt.crt 和 ca.crt 文件,你须要将它们上传到:

1
2
/etc/nginx/ca .crt
/etc/nginx/crt .crt

为 Linux 驱动安装安全的 NGINX 服务器

咱们将使用 NGNIX 做为咱们的服务器解决方案,并在 QualSS-SSL 实验室 SSL 报告中将其设置为 A 级+ SSL 等级。为了作到这一点,咱们提供了一个能够在 RasBuriPi 上的 Linux 驱动上安装 NGINX 服务器的指南(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/6-Secure-Nginx-Server-For-Motion.md)。在开始这一步以前,你须要在你的树莓派上安装 Linux 驱动(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/5-Installing-Motion.md),并为你的树莓派设置域名和 SSL(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)。

用 IPTables 保证树莓派的安全

下一个你应该采起的安全步骤是设置 IPTABLE。遵循 Securing Your Raspberry Pi With IPTables 文件(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/4-Securing-Your-Raspberry-Pi-With-IPTables.md)来实现这一点。

视频流

若是你遵循了以上步骤,若是它们尚未运行,你须要按照下面的步骤操做。

1
2
3
4
5
6
7
sudo service motion start
sudo /etc/init .d /motion start
启动 NGINX
sudo service nginx start
sudo /etc/init .d /nginx start

重要的是:这种流式传输是一个新的特性,咱们仍然在消除一些扭结,若是你想让 OpenCV 直接访问网络摄像头,而不须要驱动/NGNIX 流,那么在 TASS.py 重取消注释 43 行,注释 44 行和 45 行。

链接证书和传感设置

下一步是在互联网 JumpWay 开发者控制台中安装设备实例。遵循 IoT JumpWay Location Device Doc (https://github.com/TechBubbleTechnologies/IoT-JumpWay-Docs/blob/master/4-Location-Devices.md)来设置你的设备。你将须要设置一个有闭路监控的设备,而且添加了传感器/执行器部分。

检索你的链接证书并用新的链接证书和相机 ID 设置更新配置文件 JSON 文件(你须要在建立它以后进入设备页面以得到正确的摄像头 ID)。

1
2
3
4
5
6
7
8
9
10
11
"IoTJumpWaySettings" : {
         "SystemLocation" : 0,
         "SystemZone" : 0,
         "SystemDeviceID" : 0,
         "SystemDeviceName" : "Your Device Name" ,
         "SystemCameraID" :0
     }
  "IoTJumpWayMQTTSettings" : {
         "username" : "Your MQTT Username" ,
         "password" : "Your MQTT Password"
     }

训练你的数据

如今基本构架已经搭建好,是时候用你本身的照片训练你的模型了。当你下载这个 RPO 时,在那个被处理的文件夹中已经有一个通过训练的模型和被处理的图像,可是这个模型不会识别你。你须要选择本身在不一样的位置和灯光下的照片。你训练模型的照片越多,它就越精确,若是你的设备没有识别你,你只须要用更多的图像来训练它。

你能够添加你喜欢的图片(这取决于你的树莓派 3 可用的空间),有不少像你这样人。为了将训练数据导航到训练文件夹中并建立目录,目录应该是一个数字,并且不是那个已处理文件夹中的数字。

一旦你创建了图像的文件夹,进入 Tas.Py 文件改变第 34 行(self.train = 0)为 self.train = 1,并启动程序。程序将循环检测你的图像,若是它检测到脸部,它将以模型所需的格式从新建立一个图像,将其保存到匹配文件夹处理后的目录中中,并删除原始图像以节省空间。若是它没有检测到面部,它将简单地删除原始图像,由于它是无效的面部识别。

一旦处理阶段完成,你的新模型将自动开始训练,训练完成后,它将自动运行主面部识别程序。把你的脸放在你链接的摄像头前面,看着程序的输出你是谁。

注意:从处理目录中删除 read me 文件。

执行程序

1
sudo python /python3 TASS.py

自主物联网通讯

当你的设备每次检测到一我的时,设备会把传感器数据传送到 TechBubble IoT JumpWay(https://iot.techbubbletechnologies.com/),当运动传感器检测到入侵者时会发出警报。你可使用传感器值和警告消息与链接到 IoT JumpWay Location 的其余设备实现自主通讯。

在「设备编辑」页面上,向下滚动到「执行器/传感器」下的「建立规则」部分。你能够在这里利用下拉菜单建立规则,容许你的设备发电子邮件给你,或者在状态更新、传感器数据和警告的状况下自主地与其网络上的其余设备进行通讯。

查看数据

每次你的设备检测到一我的或一个入侵者,它将发送数据到 TechBubble IoT JumpWay。你将可以访问 TechBubble IoT JumpWay 开发区中的数据(https://iot.techbubbletechnologies.com/developers/dashboard/)。一旦登陆到开发区,访问 TechBubble IoT JumpWay Location Devices Page 页面(https://iot.techbubbletechnologies.com/developers/location-devices),找到你的设备,而后访问传感器/执行器页和警告页,查看从你的设备发送的数据。物联网 JumpWay 树莓派计算机视觉实例缺陷/问题

当你在运行物联网 JumpWay 树莓派计算机视觉实例遇到困难时请保持一种释然,当你遇到麻烦时你也能够在提问区寻求帮助。

物联网 JumpWay 树莓派实例贡献者

TechBubble 科技公司创始人:Adam Milton Barker(https://github.com/AdamMiltonBarker
TechBubble Technologies Dev 公司:Andrej Petelin(https://github.com/AndrejPetelin
原文连接:https://www.hackster.io/AdamMiltonBarker/facial-recognition-identification-on-raspberry-pi-1c7495
转自雷锋网:https://club.leiphone.com/page/TextTranslation/624

相关文章
相关标签/搜索