基于FPGA Facenet 与物联网的智能门锁

2020-12-29 15:47:17 浏览数 (1)

项目来源:2019年第三届全国大学生FPGA创新设计竞赛

一、设计概述

1.1 设计目的

随着 5G 时代的到来,万物互联唱响了这个时代的主题曲,物联网日新月异 的发展,社会的信息程度显著提升。其次,人工智能技术的发展,大量人工智能技术走出实验室,以各种各样产品的形式极大的丰富了人们的日常生活。物联网技术和人工智能技术的完美融合,造就了智能家居这一种新的时代潮流,给人们的生活带来极大的便利性的同时,给人以更加舒适、快捷、智能的生活体验。智能家居如火如荼的发展,坚定了我们设计智能门锁的想法。

本作品名为基于FPGA Facenet 与物联网的智能门锁,着眼于人脸识别技术,物联 网技术的综合应用。以 PYNQ-Z2 为控制核心,借助人脸识别技术,可以进行多人识别、实时识别,进而实现对访客以及主人的开门操作。同时,结合与本作品同步开发的 APP,可以实现对智能门锁的远程操控,通过 APP 端指纹开门的方式, 使得远程开门的安全性进一步得到保证。

1.2 应用领域

本作品作为一款功能全面的智能门锁,具有广泛的市场前景。例如,可以将本作品应用于智能家居等领域,通过连入家庭互联网,成为智能家居中的一员。通过人脸识别解锁和 APP 远程指纹解锁的方式,使得智能家居的内容更加丰富, 人们的生活更加便捷。在智能家居的潮流下,我们的作品可以完美融入。不仅适 用于日常家居,而且可以在各种无人酒店,企业机构等领域发挥其独特价值。门 锁在我们的生活当中无处不在,有门锁的地方,就可以有我们作品的身影。

1.3 主要技术特点

(1)基于 Facenet 的人脸识别算法,可以实现多人识别,实时识别。

(2)通过家庭互联网连接至阿里云,实现多设备的交互。

(3)与系统同步开发 APP,增加手机端指纹解锁开门,陌生人信息上传的功 能,安全可靠,可满足更多生活场景的需要。

1.4 关键性能指标

(1)人脸识别实时性: 采用人脸检测和人脸识别加速算法,系统稳定运行时 人脸识别速度可以达到每秒十帧以上,最高可达三十帧。

(2)人脸识别准确率: 基于 Facenet 算法,针对亚洲人进行特定训练,使得 人脸识别准确率达到 99%以上。

(3)智能门锁系统安全性: 作品依托了阿里云的安全机制和安卓手机端的指 纹系统,进而使系统达到了很高的安全等级。

二、系统组成及功能说明

2.1 系统介绍

本系统以 PYNQ-Z2 作为主控板,使用丰富的外设接口,HDMI 输出接口连接 显示器,音频接口连接音响,USB 接口使用分线器挂载 USB 摄像头和 NCS2 加速棒,千兆以太网连接路由器。由此,极大方便了系统的搭建。使用阿里云的物联网平台和云储存平台作为桥梁,实现 PYNQ 和 APP 的信息交互,并支持多设备在线。

2.1.1 人脸检测及跟踪

人脸跟踪通过摄像头采集图像,将采集到的数据送入 PS 端进行人脸检测, 提取人脸坐标以及人脸坐标中心点。通过 AXI 总线将数据发送至 PL 端,使用 PWM 控制舵机转向,进而实现人脸跟踪。并在此过程中自定义 IP 核,生成自定义 Overlay。以下为 RTL 图:

以下为系统 AXI 接口连接电机驱动模块部分:

人脸检测是人脸识别的基础,算法层次使用 Opencv 的 DNN 进行人脸检测。

使用深度神经网络,一方面是因为其检测精度高,另一方面在 Facenet 工程中,已经提供了用于人脸检测的 DNN 接口。DNN 是一个深度卷积多任务的框架,特别是,在预测人脸及脸部标记点的时候,通过 3 个 DNN 级联的方式对任务进行从粗到精的处理。基于以上几点,人脸检测效率较为理想,可以在光线较差,侧 脸,佩戴装饰品等条件下实现高精度的检测。

2.1.2 人脸识别

人脸识别主要基于 Facenet 算法,Facenet 的核心思想是把人脸图像映射到 一个多维空间,通过空间欧式距离表示人脸的相似度。

具体到智能门锁项目中,将检测到的人脸储存到人脸的数据库中,通过 Facenet 的模型函数处理成 128 维的特征向量。在录入人脸信息的过程中,把特 征向量储存到 pkl 文件中,程序初始化的读取数据文件。当摄像头采集到一帧图像,使用人脸检测函数提取出图像里的人脸图像,然后对人脸进行识别。Facenet 算法将人脸的 128 维特征向量和人脸数据库中的特征向量进行比较,计算其欧式距离,根据不同的阈值设定,进而实现人脸识别。

以下为程序设计框图:

(1)处理速度

为保证人脸识别实时同步,每秒需要处理至少 10 帧以上数据。每一帧都需 要提取特征向量并且比较数据库中所有的人脸,所以需要处理很大的数据量。因此,我们采用了神经网络加速棒(NCS2)来提高运算速度。

(2)pkl 文件

创建 pkl 文件,存储设备运行过程中产生的重要数据,当设备断电时,人脸 数据和设置数据不会丢失,提高系统稳定性。

a.使用 pkl 文件将系统数据储存到文件中。利用 pkl 文件的优势,在初始 化、录入、删除人脸数据时都把数据写进 pkl 文件中,然后重新读取新的 pkl 文 件。保证程序运行的人脸数据和 pkl 文件同步。

b.用户录入时会默认加载录入时间设定程序,将用户照片保存到特定的用户 文件夹下,初始化人脸数据时读取该文件夹目录下的图片。文件夹采用“名字 时间”的命名方法,读取时默认把所在文件夹的后缀时间作为录入时间,用户名、 时间、人脸特征值以 python 字典的形式加载进程序。

2.1.3 交互设计

人机交互界面的设计,提供以下功能:

(1)人脸信息录入

(2)设定解锁的时间段

(3)设置人脸姓名(默认为 visitor)

(4)人脸信息删除

程序流程图如下所示:

a.以下为人脸信息录入界面下模式选择设置,通过按键移动光标选择不同的模 式。“All Day”表示全天均享有人脸识别解锁权限,一般为房屋主人所享有。“User defined”的设定主要源于将本作品实用化的设计,这个功能主要可以 应用在以下几种生活场景:

1、作为家庭门锁使用时,如家中有保洁阿姨或者临时工,给他们设定特定时间段的入门权限,在记录下出入信息的同时,又可畅想安全便捷的体验。

2、智能门锁应用于无人酒店等行业时,可引导住客录入人脸信息,仅在入 住期间有效,方便企业管理。

3、智能门锁应用于企业机构中,由管理员发放入门权限,入门时间,方便 企业机构的管理。

b.以下为设置时间的具体界面,通过按键移动光标分别设置“Start Time”和 “End Time”,设置成功后系统自动加载。

c.采集人脸信息的同时,记录与之相对应的名字。由于系统具有多人识别的特 点,以名字作为标签返回人脸识别结果,并在显示器上做出相应指示。通过把 人脸信息和姓名建立起映射关系,并写入 pkl 文件,使人脸识别系统更加完善。

2.1.4 阿里云

智能门锁是分为物联网和云存储两部分连接至阿里云端。

(1)云物联网平台:

阿里云物联网平台,实现物联网设备的接入和管理,设备和 APP 使用 TLS 保障连接安全。TLS 时安全传输层协议,使用 TLS 协议,在两个通信应用程序之间 提供保密性和数据完整性,能够有效防止在数据交换时受到窃听和篡改。TLS 协 议的优势是与高层的应用层协议(如 HTTP、FTP、Telnet 等)无耦合。应用层协议能透明地运行在 TLS 协议之上,由 TLS 协议进行创建加密通道需要的协商和认证。应用层协议传送的数据在通过 TLS 协议时都会被加密,从而保证通信的私密性。使得设备接入端的安全达到进一步保证。

其次,基于阿里云平台云端开发,使用 JAVA 开发了 WEB 服务器应用程序, 并运行在阿里云 ECS 上,通过 MQTT 连接到阿里云平台,连接设备和 APP,处理 和转发应用消息,以及处理 OSS 图片服务请求。

门锁数据对于用户来讲是及其重要的数据,用户可以在手机端实时查看门锁状态,并且对门锁进行远程操作。PYNQ 设备端实时上传门锁状态到物联网控制 台,手机 APP 端登录物联网控制平台,通过控制台给 PYNQ 传达开门的指令,使 用 TLS 传输协议,使得安全性得到显著提升,并基于控制台开发了其他功能如:报警、故障上报等功能。

(2)云存储平台

阿里云使用对象为存储单元,用户访问需上传域名,访问域名和访问密钥。三者正确后可以访问储存文件。访问密钥是动态可设置的,用户可以通过阿里账 户来重新分配密钥。OSS 操作的文件具有原子性,不会存在中间状态的 Object。

当门外有陌生人时,门锁可以记录下来这一帧图像,上传到阿里云的文件储 存(OSS)控制台。用户可以在手机 APP 端读取 OSS 的文件,从而查看门外的陌 生人,这一过程也是实时同步的。

借助于此功能,当主人使用远程开门的功能时,方便对门外真实信息的确定。同时,正是由于其拥有陌生人图像信息上传的属性,因此,主人也可借助此了解 门外动向。

云的使用:

在视频中演示了远程指纹开门、远程报警、陌生人信息上传等功能。这些 功能都是通过云来实现的,在物联网控制台中,还包括其他服务如报警、故障 上报等功能。通过云台,设备将不局限于门锁的管理,还有其他智能家居的控 制,均可通过 APP 来实现。借此进一步诠释物联网的目的—-万物互联。作为手机 APP 与 PYNQ 进行信息交互的桥梁,随着阿里云平台搭建的完成,使得本系统脱离局域网的限制,方便用户使用 4G/5G 网络对智能门锁进行远程操控。

云的安全:

本系统定位于智能门锁,介于门锁的性质,安全性必须得到充分的保证。依托于阿里云的安全机制和安卓手机端的指纹系统,因此,系统的安全问题主 要来自设备端入网的安全。采用安全传输层协议(TLS),用于在两个通信应用程序之间提供保密性和数据完整性。通过以上方法,提高系统的安全等级。

阿里云的私有云服务,这类云的访问和读写都是需要密钥的。密钥的保存 已经封装到函数里,不会在用户的界面显示出来。上传门锁状态和查看陌生人 照片功能两部分隔离使用。并且在阿里云中,文件管理和物联网平台的级别比 账户级要低一级,文件管理的密钥和物联网平台的密钥都不能对账户级进行操 作。从而保证了用户账户的安全,保证整个云台的安全。

2.1.5 APP

APP 基于 Android stdio 开发,采用了安卓系统指纹模块,保证安全。服务器采用 Java 开发,采用 MQTT 协议进行通信,APP 和设备通过 mqtt 和服务器进行双向通信,采用 TLS 进行安全连接。图片采用阿里云 OSS 储存,APP 通过 SDK 访问云端储存。

通过不断对手机 APP 的完善,目前 APP 具有远程开门的功能,包括指纹开门和密码开门两种方式,陌生人信息实时显示,动态查看门锁状态,远程报警等功能。以下为系统 APP 操作界面图:

2.2 各模块介绍

2.2.1 摄像头模块

本系统的摄像头模块选用大影图片的摄像头模组,100 度无畸变广角镜头, 2.1V/Lux-sec(550nm)的低照度,在分辨率为 640*480 时,可实现每秒 120 帧 的图像采集。价格合理,性能稳定,符合本系统实用化设计。摄像头与 PYNQ 通 过 USB 接口连接,简洁方便。

2.2.2 显示模块

显示部分采用的是 10.1 寸 HDMI 显示器,画面清晰,显示细腻,接口支持 HDMI,AV,BNC,VGA。适配 PYNQ 的 HDMI 外设的输出端口,连接方便简单。

2.2.3 主处理器信息

ZYNQ XC7Z020-1CLG400C 650MHz

双核 Cortex-A9 处理器,DDR3 内存控制器,带 8 个 DMA 通道和 4 个高性能 AXI3 从端口。高带宽外设控制器:千兆以太网,USB 2.0,SDIO。低带 宽外设控制器:SPI,UART,CAN,I2C。可通过 JTAG,Quad-SPI 闪存和 MicroSD 卡进行编程,可编程逻辑等效于 Artix-7 FPGA:13000 逻辑片,每个片有 4 个 6 输入 LUT 和 8 个触发器,630 KB 快速 Block RAM,4 个时钟管理片,每个片都有 一个锁相环(PLL)和混合模式时钟管理器(MMCM),220 个 DSP 片,片上模数转 换器(XADC)。存储器:512MB DDR3,16 位总线@1050Mbps,16MB 四 SPI 闪存, MicroSD 插槽。电源:由 USB 或 7V-15V 外部电源供电。

2.2.4 神经网络加速器

NCS2 是基于 Movidius Myriad X 视觉处理单元,并获得 Intel Openvino 工 具包支持,通过单个 USB A 型端口与 PYNQ 进行数据交换和电源供电。

舵机选用 MG995 数字舵机,PWM 控制,具有反应快,角度精确,大扭力,双 轴承,内阻小,不抖舵,堵转保护等优良特性。价格合理,性能稳定,实用性极高。

2.2.6 门锁驱动

本模块采用 L298N 作为主驱动芯片,具有驱动能力强,发热量低,抗干扰能 力强的特点,使用大容量滤波电容,续流保护二极管,可以提高可靠性。

2.2.7 电源模块

支持 24V/12V 转 5V 5A DC-DC 降压电源模块,该模块采用同步整流方案, 可满足大电流的需求。工作电压为 DC 9V-36V,宽电压,高效率。同时具有输入 反接保护,输出短路保护的功能,更加安全可靠。输入端使用接线端子和 DC 插 头,使用方便,输出端带有 4 个 USB 接口,分别作为 PYNQ 板卡,USB 辅助电源等。

2.2.8 路由器

本系统选用的路由器为小米路由器 4A,高增益 4 天线,64MB 大内存稳定连 接,支持 IPv6,提供 2.4GHz 和 5GHz 两个频段,互不干扰。路由器用于将 PYNQ 连接至互联网,在实际应用中,可以直接将 PYNQ 板卡连接家庭路由器。

三、完成情况及性能参数

3.1 完成情况

本系统由摄像头模块,显示模块,处理器模块,阿里云平台,手机 APP 共同 构成。

预计实现功能如下:

(1)通过人脸识别,实现开锁操作;

(2)设计人机交互界面,实现人脸信息的录入和删除;

(3)使用云平台和手机 APP,实现对门锁的远程操作。

目前已实现的功能:

(1)人脸识别开门,具有极高的准确性,可以满足多人识别,实时识别的要求;

(2)完成人机交互界面的设计,能够完成人脸信息录入与删除的操作;

(3)借助阿里云物联网和云存储平台,使用 TLS 协议,增强设备接入端的安全性;

(4)APP 可以实现远程指纹解锁和密码解锁,远程报警等功能;

(5)当门外有陌生人员活动时,摄像头将完成抓拍,上传至手机 APP。

目前,以上功能均以实现,各模块工作稳定,连接正常。

3.2 性能参数

(1)人脸识别实时性: 采用人脸检测和人脸识别加速算法,本系统稳定运行 时人脸识别速度可以达到每秒十帧以上,最高可达三十帧。

(2)人脸识别准确率: 基于 Facenet 算法,针对亚洲人进行特定训练,使得 人脸识别准确率达到 99%以上。

(3)人脸识别速度:本系统可以实现实时人脸识别,考虑电磁锁的延时,门锁 解锁速度保证在 0.5s 内。

(4)智能门锁系统安全性: 本作品依托了阿里云的安全机制和安卓手机端的 指纹系统,使得本系统达到了很高的安全等级。

四、总结

4.1 主要创新点

(1)PYNQ-Z2 板卡与 Modivius NCS2 神经网络加速器相互配合,使得 PYNQ-Z2 板 卡在处理复杂神经网络的过程中,能够以最快速度完成复杂计算,从而完成人脸 检测和人脸识别实时性的要求。

(2)开发与作品完美融合的 APP,借助阿里云平台,增加远程指纹开门和陌生人 信息上传的功能,实现远程对家居门锁的操控,符合生活需求。

(3)设备的入网端采用安全传输层协议(TLS),用于在两个通信应用程序之间 提供保密性和数据完整性。

(4)自定义 Overlay,我们在 PYNQ-Z2 Base Overlay 的基础上,增加自己的外设驱动,使得在后续开发过程中更加便利。

4.2 可扩展之处

(1)开发应用接口,兼容市面的智能家居系统和企业管理系统等。

(2)有待开发出在 APP 端进行人脸录入的功能。

(3)在 PL 端实现 H264 编码,推送至云服务器。

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

0 人点赞