项目来源:2019年第三届全国大学生FPGA创新设计竞赛
随着 5G 时代的到来,万物互联唱响了这个时代的主题曲,物联网日新月异 的发展,社会的信息程度显著提升。其次,人工智能技术的发展,大量人工智能技术走出实验室,以各种各样产品的形式极大的丰富了人们的日常生活。物联网技术和人工智能技术的完美融合,造就了智能家居这一种新的时代潮流,给人们的生活带来极大的便利性的同时,给人以更加舒适、快捷、智能的生活体验。智能家居如火如荼的发展,坚定了我们设计智能门锁的想法。
本作品名为基于FPGA Facenet 与物联网的智能门锁,着眼于人脸识别技术,物联 网技术的综合应用。以 PYNQ-Z2 为控制核心,借助人脸识别技术,可以进行多人识别、实时识别,进而实现对访客以及主人的开门操作。同时,结合与本作品同步开发的 APP,可以实现对智能门锁的远程操控,通过 APP 端指纹开门的方式, 使得远程开门的安全性进一步得到保证。
本作品作为一款功能全面的智能门锁,具有广泛的市场前景。例如,可以将本作品应用于智能家居等领域,通过连入家庭互联网,成为智能家居中的一员。通过人脸识别解锁和 APP 远程指纹解锁的方式,使得智能家居的内容更加丰富, 人们的生活更加便捷。在智能家居的潮流下,我们的作品可以完美融入。不仅适 用于日常家居,而且可以在各种无人酒店,企业机构等领域发挥其独特价值。门 锁在我们的生活当中无处不在,有门锁的地方,就可以有我们作品的身影。
(1)基于 Facenet 的人脸识别算法,可以实现多人识别,实时识别。
(2)通过家庭互联网连接至阿里云,实现多设备的交互。
(3)与系统同步开发 APP,增加手机端指纹解锁开门,陌生人信息上传的功 能,安全可靠,可满足更多生活场景的需要。
(1)人脸识别实时性: 采用人脸检测和人脸识别加速算法,系统稳定运行时 人脸识别速度可以达到每秒十帧以上,最高可达三十帧。
(2)人脸识别准确率: 基于 Facenet 算法,针对亚洲人进行特定训练,使得 人脸识别准确率达到 99%以上。
(3)智能门锁系统安全性: 作品依托了阿里云的安全机制和安卓手机端的指 纹系统,进而使系统达到了很高的安全等级。
本系统以 PYNQ-Z2 作为主控板,使用丰富的外设接口,HDMI 输出接口连接 显示器,音频接口连接音响,USB 接口使用分线器挂载 USB 摄像头和 NCS2 加速棒,千兆以太网连接路由器。由此,极大方便了系统的搭建。使用阿里云的物联网平台和云储存平台作为桥梁,实现 PYNQ 和 APP 的信息交互,并支持多设备在线。
人脸跟踪通过摄像头采集图像,将采集到的数据送入 PS 端进行人脸检测, 提取人脸坐标以及人脸坐标中心点。通过 AXI 总线将数据发送至 PL 端,使用 PWM 控制舵机转向,进而实现人脸跟踪。并在此过程中自定义 IP 核,生成自定义 Overlay。以下为 RTL 图:
以下为系统 AXI 接口连接电机驱动模块部分:
人脸检测是人脸识别的基础,算法层次使用 Opencv 的 DNN 进行人脸检测。
使用深度神经网络,一方面是因为其检测精度高,另一方面在 Facenet 工程中,已经提供了用于人脸检测的 DNN 接口。DNN 是一个深度卷积多任务的框架,特别是,在预测人脸及脸部标记点的时候,通过 3 个 DNN 级联的方式对任务进行从粗到精的处理。基于以上几点,人脸检测效率较为理想,可以在光线较差,侧 脸,佩戴装饰品等条件下实现高精度的检测。
人脸识别主要基于 Facenet 算法,Facenet 的核心思想是把人脸图像映射到 一个多维空间,通过空间欧式距离表示人脸的相似度。
具体到智能门锁项目中,将检测到的人脸储存到人脸的数据库中,通过 Facenet 的模型函数处理成 128 维的特征向量。在录入人脸信息的过程中,把特 征向量储存到 pkl 文件中,程序初始化的读取数据文件。当摄像头采集到一帧图像,使用人脸检测函数提取出图像里的人脸图像,然后对人脸进行识别。Facenet 算法将人脸的 128 维特征向量和人脸数据库中的特征向量进行比较,计算其欧式距离,根据不同的阈值设定,进而实现人脸识别。
以下为程序设计框图:
(1)处理速度
为保证人脸识别实时同步,每秒需要处理至少 10 帧以上数据。每一帧都需 要提取特征向量并且比较数据库中所有的人脸,所以需要处理很大的数据量。因此,我们采用了神经网络加速棒(NCS2)来提高运算速度。
(2)pkl 文件
创建 pkl 文件,存储设备运行过程中产生的重要数据,当设备断电时,人脸 数据和设置数据不会丢失,提高系统稳定性。
a.使用 pkl 文件将系统数据储存到文件中。利用 pkl 文件的优势,在初始 化、录入、删除人脸数据时都把数据写进 pkl 文件中,然后重新读取新的 pkl 文 件。保证程序运行的人脸数据和 pkl 文件同步。
b.用户录入时会默认加载录入时间设定程序,将用户照片保存到特定的用户 文件夹下,初始化人脸数据时读取该文件夹目录下的图片。文件夹采用“名字+ 时间”的命名方法,读取时默认把所在文件夹的后缀时间作为录入时间,用户名、 时间、人脸特征值以 python 字典的形式加载进程序。
人机交互界面的设计,提供以下功能:
(1)人脸信息录入
(2)设定解锁的时间段
(3)设置人脸姓名(默认为 visitor)
(4)人脸信息删除
程序流程图如下所示:
a.以下为人脸信息录入界面下模式选择设置,通过按键移动光标选择不同的模 式。“All Day”表示全天均享有人脸识别解锁权限,一般为房屋主人所享有。“User defined”的设定主要源于将本作品实用化的设计,这个功能主要可以 应用在以下几种生活场景:
1、作为家庭门锁使用时,如家中有保洁阿姨或者临时工,给他们设定特定时间段的入门权限,在记录下出入信息的同时,又可畅想安全便捷的体验。
2、智能门锁应用于无人酒店等行业时,可引导住客录入人脸信息,仅在入 住期间有效,方便企业管理。
3、智能门锁应用于企业机构中,由管理员发放入门权限,入门时间,方便 企业机构的管理。
b.以下为设置时间的具体界面,通过按键移动光标分别设置“Start Time”和 “End Time”,设置成功后系统自动加载。
c.采集人脸信息的同时,记录与之相对应的名字。由于系统具有多人识别的特 点,以名字作为标签返回人脸识别结果,并在显示器上做出相应指示。通过把 人脸信息和姓名建立起映射关系,并写入 pkl 文件,使人脸识别系统更加完善。
智能门锁是分为物联网和云存储两部分连接至阿里云端。
(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),用于在两个通信应用程序之间提供保密性和数据完整性。通过以上方法,提高系统的安全等级。
阿里云的私有云服务,这类云的访问和读写都是需要密钥的。密钥的保存 已经封装到函数里,不会在用户的界面显示出来。上传门锁状态和查看陌生人 照片功能两部分隔离使用。并且在阿里云中,文件管理和物联网平台的级别比 账户级要低一级,文件管理的密钥和物联网平台的密钥都不能对账户级进行操 作。从而保证了用户账户的安全,保证整个云台的安全。
APP 基于 Android stdio 开发,采用了安卓系统指纹模块,保证安全。服务器采用 Java 开发,采用 MQTT 协议进行通信,APP 和设备通过 mqtt 和服务器进行双向通信,采用 TLS 进行安全连接。图片采用阿里云 OSS 储存,APP 通过 SDK 访问云端储存。
通过不断对手机 APP 的完善,目前 APP 具有远程开门的功能,包括指纹开门和密码开门两种方式,陌生人信息实时显示,动态查看门锁状态,远程报警等功能。以下为系统 APP 操作界面图:
本系统的摄像头模块选用大影图片的摄像头模组,100 度无畸变广角镜头, 2.1V/Lux-sec(550nm)的低照度,在分辨率为 640*480 时,可实现每秒 120 帧 的图像采集。价格合理,性能稳定,符合本系统实用化设计。摄像头与 PYNQ 通 过 USB 接口连接,简洁方便。
显示部分采用的是 10.1 寸 HDMI 显示器,画面清晰,显示细腻,接口支持 HDMI,AV,BNC,VGA。适配 PYNQ 的 HDMI 外设的输出端口,连接方便简单。
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 外部电源供电。
NCS2 是基于 Movidius Myriad X 视觉处理单元,并获得 Intel Openvino 工 具包支持,通过单个 USB A 型端口与 PYNQ 进行数据交换和电源供电。
舵机选用 MG995 数字舵机,PWM 控制,具有反应快,角度精确,大扭力,双 轴承,内阻小,不抖舵,堵转保护等优良特性。价格合理,性能稳定,实用性极高。
本模块采用 L298N 作为主驱动芯片,具有驱动能力强,发热量低,抗干扰能 力强的特点,使用大容量滤波电容,续流保护二极管,可以提高可靠性。
支持 24V/12V 转 5V 5A DC-DC 降压电源模块,该模块采用同步整流方案, 可满足大电流的需求。工作电压为 DC 9V-36V,宽电压,高效率。同时具有输入 反接保护,输出短路保护的功能,更加安全可靠。输入端使用接线端子和 DC 插 头,使用方便,输出端带有 4 个 USB 接口,分别作为 PYNQ 板卡,USB 辅助电源等。
本系统选用的路由器为小米路由器 4A,高增益 4 天线,64MB 大内存稳定连 接,支持 IPv6,提供 2.4GHz 和 5GHz 两个频段,互不干扰。路由器用于将 PYNQ 连接至互联网,在实际应用中,可以直接将 PYNQ 板卡连接家庭路由器。
本系统由摄像头模块,显示模块,处理器模块,阿里云平台,手机 APP 共同 构成。
预计实现功能如下:
(1)通过人脸识别,实现开锁操作;
(2)设计人机交互界面,实现人脸信息的录入和删除;
(3)使用云平台和手机 APP,实现对门锁的远程操作。
目前已实现的功能:
(1)人脸识别开门,具有极高的准确性,可以满足多人识别,实时识别的要求;
(2)完成人机交互界面的设计,能够完成人脸信息录入与删除的操作;
(3)借助阿里云物联网和云存储平台,使用 TLS 协议,增强设备接入端的安全性;
(4)APP 可以实现远程指纹解锁和密码解锁,远程报警等功能;
(5)当门外有陌生人员活动时,摄像头将完成抓拍,上传至手机 APP。
目前,以上功能均以实现,各模块工作稳定,连接正常。
(1)人脸识别实时性: 采用人脸检测和人脸识别加速算法,本系统稳定运行 时人脸识别速度可以达到每秒十帧以上,最高可达三十帧。
(2)人脸识别准确率: 基于 Facenet 算法,针对亚洲人进行特定训练,使得 人脸识别准确率达到 99%以上。
(3)人脸识别速度:本系统可以实现实时人脸识别,考虑电磁锁的延时,门锁 解锁速度保证在 0.5s 内。
(4)智能门锁系统安全性: 本作品依托了阿里云的安全机制和安卓手机端的 指纹系统,使得本系统达到了很高的安全等级。
(1)PYNQ-Z2 板卡与 Modivius NCS2 神经网络加速器相互配合,使得 PYNQ-Z2 板 卡在处理复杂神经网络的过程中,能够以最快速度完成复杂计算,从而完成人脸 检测和人脸识别实时性的要求。
(2)开发与作品完美融合的 APP,借助阿里云平台,增加远程指纹开门和陌生人 信息上传的功能,实现远程对家居门锁的操控,符合生活需求。
(3)设备的入网端采用安全传输层协议(TLS),用于在两个通信应用程序之间 提供保密性和数据完整性。
(4)自定义 Overlay,我们在 PYNQ-Z2 Base Overlay 的基础上,增加自己的外设驱动,使得在后续开发过程中更加便利。
(1)开发应用接口,兼容市面的智能家居系统和企业管理系统等。
(2)有待开发出在 APP 端进行人脸录入的功能。
(3)在 PL 端实现 H264 编码,推送至云服务器。
完
后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。
大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!