一种卷积神经网络下的室内智能控制系统的设计与应用

2019-02-13 10:09陈晓飞赵云鹤方辉鸿刘凯多
数字通信世界 2019年8期
关键词:串口人脸人脸识别

陈晓飞,谭 新,赵云鹤,方辉鸿,刘凯多

(湖南科技大学,湘潭 411100)

该方案系统主要分为硬件和软件两部分,其中硬件部分包括RaspberryPi3b+,CSI 摄像头和STM32系统,软件部分包括行人检测和人脸识别。系统设计的运行流程为“开始—行人检测程序启动检测是否有人—是—人脸检测是否为陌生人—是—给主人发送邮件提示—结束”、“开始—行人检测程序启动检测是否有人—是—人脸检测是否为陌生人—否—自行关闭设备”,具体设计及应用情况如下:

1 设计构思

硬件上使用RaspberryPi3b+连接一个CSI 摄像头,通过摄像头获取图像数据,经过计算判断有没有人以及是否是陌生人,同时发信号给STM32,STM32 控制室内灯光等所有操作。其中,如果发现是陌生人,则RaspberryPi3b+给主人发送邮件提示,并且STM32控制语音模块发送语音警报。

2 硬件配置情况

2.1 RaspberryPi3b+

RaspberryPi3b+与摄像头连接,用于对摄像头镜头采集图像的控制,以及行人检测和人脸识别软件程序的运行,并且当检测识别室内人员为陌生人时,向用户发送邮件提示,同时向STM32 发送信号,由STM32 控制语音模块进行语音警报。其作为RaspberryPi 系列的最新一代,搭载了博通BCM2837B0 的SoC,集成四核ARMCortex-A53(ARMv8)64位@1.4GHzCPU,1.4GHz 主频。无线网络支持2.4GHz 和5GHz 的双频Wi-Fi,支持802.11b/g/n/ac。LAN7515扩展了千兆的以太网,速率大大提升,理论最大吞吐量为300Mb/s。性能强悍,用于此项目游刃有余。

2.2 CSI 摄像头

摄像头采用CSI 接口的摄像头模块,用于视频录取和图像采集。通过自动搜索并拍摄用户的人脸图像,来为RaspberryPi3b+进行行人检测和人脸识别提供图像数据,其采用的CSI 接口的摄像头模块,最大500W 像素,视场角达65度,OV5647感光元件,光圈2.9、焦距3.29,支持1080P/720P/640*480P 摄影,静态图片分辨率高达2592*1944。此摄像头后续可升级,操作简单,用户可自行购置USB 接口摄像头并升级。

2.3 STM32 主控制器

本系统使用的主控制器具体型号为STM32F103C8T6,为Cortex®-3内核,具有20KRAM 和64KFLASH。STM32F103C8T6作为被控制电器的主控制器,负责接收来自用户键盘、显示屏、树莓派的数字信号,并快速执行相应的任务。用户键盘和树莓派发送开关信号到STM32F103C8T6的GPIO 口,STM32F103C8T6读取GPIO 口的数据即可。显示屏与STM32F103C8T6采用的是UART 通信,波特率为9600,可接收来自显示屏的语音信号、开关信号等,例如显示器在即将进入主界面时会向主控制器发送语音播报指令,STM32F103C8T6接收后,判断当前指令类型和上一次指令的状态,从而控制语音播报发出正确的声音。

2.4 语音模块

语音模块与STM32处理器连接,本系统使用的语音模块为触发式模块,触发电平兼容TTL 电平,低电平有效,只需将5根杜邦线与STM32的GPIO 连接即可,通过不同的触发组合,即可自动播放不同的声音,此时STM32的GPIO 设置为推挽输出,加快触发速度。

2.5 串口屏

系统使用的串口屏控制器也为STM32(STM32F030RBT6)微处理器,是显示屏的控制器,因为与外部设备通信时通常使用UART 信号,因此也被称为串口屏。串口屏的内部数据和代码通过图形化上位机进行编辑和写入,图片的美化、数字化过程使用了Photoshop。注意STM32的RXD 接屏幕TXD,STM32的TXD 接屏幕RXD。STM32F030RBT6与STM32F103C8T6相比最大的特点就是其拥有256K 的FLASH,可存储较多的控制代码、字库、图片等,在断电后,STM32F030RBT6会将重要数据保存到EEPROM 中,以保证再次通电时一些重要数据得以保留。

3 软件设计

3.1 行人检测

本系统用Python 语言编写,其中行人检测部分用到了ImageAI 库,运用了当前最先进的RetinaNet 目标检测算法,提供了性能调整和实时处理参数。

3.2 人脸识别

采用的是(M:N)人脸识别模式,可以多人同时进行识别,其程序主体用Python 语言编写,深度学习的底层代码则是用C++实现。首先使用dlib 深度学习库,构建神经网络,训练黄种人人脸识别数据。然后运用OpenCV 计算机视觉库,numpy 科学计算库等python 基础第三方库,利用训练数据对人进行人脸识别,在运用的过程中,还会不断地改进自身数据,使识别准确率不断提高。

(1)人脸图像预处理

针对脸部的不同姿势,使用一种称为面部特征点估计(facelandmarkestimation)的算法,其基本思路是找到68个人脸上普遍存在的特定点,包括下巴的顶部、每只眼睛的外部轮廓、每条眉毛的内部轮廓等。

(2)人脸图像特征提取

从每张人脸上提取一些基本的测量数值,给脸部进行编码,可以用同样的方式测量未知的面孔,并找到最接近测量数值的那张已知的脸。解决方案是训练一个深度卷积神经网络,但是,并不是让它去识别图片中的物体,而是要让它为脸部生成128个测量值。

(3)人脸匹配与识别

为了根据脸部测量数值,从脸部编码中找出相匹配人的名字,训练简单的线性SVM 分类器,它可以从一个新的测试图像中获取测量结果,并找出最匹配的那个人。分类器运行一次只需要几毫秒,分类器的结果就是人的名字。

4 其他部分

电源由两节18650 电池供电,RaspberryPi3b+内存卡采用128MMicroSD 卡和32GMicroSD 卡各一张,在电源的整流稳压系统上,采取LM1117-3.3和LM1117-5.0为该稳压系统的稳压芯片。

5 结束语

卷积神经网络下的室内智能控制系统用于解决室内能源浪费严重以及室内安保需要的方案,为未来智能家居领域具有广泛的应用空间。

猜你喜欢
串口人脸人脸识别
人脸识别 等
有特点的人脸
一起学画人脸
浅谈AB PLC串口跟RFID传感器的通讯应用
揭开人脸识别的神秘面纱
人脸识别技术的基本原理与应用
三国漫——人脸解锁
人脸识别在高校安全防范中的应用
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索