无线视频监控系统人脸跟踪功能的实现

2021-06-22 03:13周岳斌曹煜晖
机械与电子 2021年6期
关键词:云台舵机人脸

周岳斌,杨 沫,曹煜晖

(湖北文理学院机械工程学院,湖北 襄阳 441053)

0 引言

视频监控系统广泛应用于工厂生产、交通、行政办公大楼和家庭安防等各领域[1-2]。早期的模拟视频监控方式是通过摄像头获取图像,然后在显示器上显示。虽然可以监测小范围区域内情况,但局限性太大,排查和维护也比较费时费力;而且视频存储一般是在盒式录像带中,无法满足快速查看。近年来,数字视频监控得到了前所未有的发展,嵌入式网络视频监控渐渐走入大众视野,各个领域的视频技术都有所提高,同时视频监控支持的功能越来越多,相应监控产品的研发、制造和应用已经成为行业发展的方向和新增长点,视频监控系统逐步向移动化、全数字化、智能化方向发展。目前,视频监控系统主要有2类:一种是以数控硬件存储录像数据为核心的视频监控系统;另一种是基于嵌入式实时多任务操作系统,以嵌入式Web服务器为核心的视频监控系统[3-5]。

为实现高质量高智能化的视频监测,通过计算机视觉技术将图像处理与人脸识别的相关算法结合到监控系统中,设计了一种具有人脸跟踪功能的无线视频监控系统,具有视频采集、人脸识别和传输等多种功能。系统利用MicroPython计算机视觉库,对采集的图像进行滤波处理,实现更优质图像效果,可满足对于监测场景的智能高效分析。采用卷积神经网络模型(convolutional neural network,CNN)进行机器学习和人脸识别,然后将整理后的监控图像以网络通信方式传输到手机终端,进行实时监控,同时驱动舵机云台进行人脸追踪[6]。

1 总体方案

系统结构如图1所示,主要包括图像采集模块、主控模块、舵机控制器模块、舵机云台模块、Wi-Fi通信模块、报警模块和客户端。图像采集模块将采集的视频数据进行处理与识别,然后通过Wi-Fi通信模块将处理后的视频数据传输至客户端,实现实时监控的功能。当识别到人脸后,主控模块将识别的人脸位置信息传输至驱动模块。通过解码处理,驱动模块将接收到的位置信息转变为舵机的控制信息传输至舵机云台,实现同步控制,同时驱动报警模块报警[7]。

图1 系统结构

2 硬件设计

图像采集模块采用MT9V034光感芯片,MT9V034具有全局快门和高动态范围操作。在全局快门的模式下,可拍摄清楚高速运动中的物体,避免了运动模糊对系统产生的影响。MT9V034对于6 μm大小的像素,其有源成像像素阵列为752 H×480 V,能够达到60帧/s的图像采集速度。MT9V034可通过简单的双线串行接口进行编程,可设置帧大小、曝光时长、增益等参数。默认模式以 60帧/s的速度输出宽VGA大小的图像。

主控模块采用OpenMV4控制板,OpenMV4是一款低价、可扩展、易于开发的机器视觉模块。搭载了MicroPython解释器,可在嵌入式芯片上运行Python3对底层进行编程。其核心芯片为ARM Cortex_M7系列的STM32H743VI,主频为400 MHz,运行内存为1 MB,有2 MB的Flash。所有的I/O引脚输出为3.3 V并且有5 V电压耐受。OpenMV4提供的μSD卡槽拥有100 Mbit/s读写速度,为监控视频提供存储单元。OpenMV4有1个SPI总线,速度高达54 Mbit/s,可将OpenMV4提取的图像流数据传给Wi-Fi通信模块;此外,OpenMV4还有1个I2C总线、1个CAN总线、1个异步串口总线,可用来与舵机控制器模块通信[8]。

Wi-Fi通信模块采用Microchip公司ATWINC 1500,该芯片是IEEE 802.11b/g/n IoT网络控制器SoC。通过SPI连接到OpenMV4实现Wi-Fi和网络功能。ATWINC 1500以最少的资源要求连接到任何AVR和SMART MCU。ATWINC 1500可提供高达72 Mbit/s的PHY吞吐量,具有完全集成的功率放大器、LNA、开关和电源管理。ATWINC 1500还提供内部闪存和多个外设接口,包括UART和SPI接口。ATWINC 1500的视频流传输速度可达48 Mbit/s,能有效提高网络视频监控的实时性,可通过OpenMV4固件内部的network module进行编程控制。利用MicroPython的BSD socket网络接口与TCP/UDP协议进行数据的发送和接收,省去了写底层驱动的环节[9-10]。

舵机控制器与云台模块采用以STM32单片机为处理核心的Pyboard控制板,作为舵机云台控制器。Pyboard是一个运行MicroPython解释器功能强大的开发板,可在Windows、Mac和Linux平台上做程序开发。MicroPython是对Python编程语言的完全重写,以适应在微控制器上的运行。它包括许多软件配置的优化,以便有效运行并使用非常少的RAM。MicroPython实际上是运行在Pyboard上的一个操作系统,其内置的pyb库包含了控制电路板上基本所有可用外设的功能和类,如UART、SPI、I2C、ADC和DAC。缩短了嵌入式程序调试开发的时间周期。Pyboard通过Micro USB连接到PC端,可通过USB闪存驱动器实现保存与修改Python程序脚本的功能。

人脸追踪即摄像头的视野方位跟随人脸做实时调整,当人要走出摄像头视野范围的时候,摄像头云台会自动调整摄像头的角度来跟随人脸的位置。为实现人脸追踪的功能,系统通过1块Pyboard开发板控制2个SG90舵机以调整摄像头视野方位。一个舵机实现俯仰的角度调整(俯仰范围0~90°),另一个舵机实现方位的角度调整(方位范围0~180°)。

3 软件设计

系统软件设计主要包括2部分:一部分是主控模块的程序设计,负责图像采集、人脸识别、人脸位置计算和视频文件打包的功能;另一部分是舵机控制器模块的程序设计,主要负责云台控制。

系统工作流程如下:

a.采用高灵敏度高性能感光元件MT9V034采集监测区域信息。

b.利用训练好的改进卷积神经网络(CNN)识别图像里面的人脸。如果识别到人脸,则在图像里将人脸标注,然后将标注后的图像通过SPI协议传输给ATWINC 1500 Wi-Fi通信模块,且将人脸与摄像头的相对位置转换成舵机偏转角度以串口通信的方式发送给Pyboard控制模块。如果没有识别到人脸,则直接将图像通过SPI协议传输给ATWINC 1500 Wi-Fi通信模块。实现实时显示的功能。

c.在识别到人脸的情况下,Pyboard控制板会驱动报警模块报警,同时会将接收到的舵机偏转角度转换成对应的PWM脉冲调制信号,通过PID算法控制俯仰电机与方位电机的偏转动作,实现人脸实时追踪。当没有识别到人脸时,Pyboard控制板则会停止PWM脉冲调制信号的输出。

d.ATWINC 1500的Wi-Fi通信模块初始化时自动被设置成ap模式(热点模式),终端设备可以通过连接Wi-Fi的方式连接到ATWINC 1500创建的网络。用户可以在浏览器中输入预先设定好的IP网址,来查看OpenMV4提供的视频信息。

4 算法与验证

4.1 卷积神经网络结构

人脸识别算法采用图2所示的改进卷积神经网络结构[11-12]。第1层是脸部图像输入层,像素规格为32×32。第2层是拥有20个大小为14×14特征图的卷积层,采用20个大小为5×5的滤波器来提取图片特征。第3层为拥有45个大小为5×5特征图、步长为2×2的卷积层,用来进一步提取特征,即进一步抽象图片。第4层为有240个神经元的全连接层,其作用是通过从图片中提取的特征识来别人脸,后面是ReLU激活层与dropout遗忘层,用来激活神经元与防止过拟合现象。第5层为全连接层,具体神经元个数按人数来定。最后一层分类器采用非线性分类能力更强的softmax分类器[13-14]。

图2 卷积神经网络结构

4.2 实验数据及预处理

实验数据采用AR面部数据库,包含了116人的3 288张脸部图像,其像素大小为120×165,且面部表情、光照强度和遮挡层度都有所不同。因为AR数据库里的图片都是人为事先处理好的灰度化图片数据库,所以在将数据喂入神经网络之前,不必进行常规的高斯滤波处理等其他降噪处理。但在实验之前,需要将图片按神经网络架构进行调整,然后才能喂入网络中进行训练。

通过image库的resize函数将图片的尺寸缩小至神经网络的入口尺寸32×32。其python语句为:img=image.resize(get_image,(32,32))。其中img为结果变量,其尺寸为32×32;resize为image库的尺寸修改函数,用来改变任意尺寸的图片至指定规格;get_image为从AR数据库里抽取的1张图像。

将灰度值控制在[0,1]之间。神经网络在训练的过程中,计算数据量非常庞大,因此在数据输入之前需将数据扁平化,从而减小处理器的计算负担。因为AR库图片每个像素点的值位于[0,255]之间,因此将每个像素点的值除以255即可将图片的像素点压缩至[0,1]之间。最终进行OpenMV4模块的视频流测试,C1层、C2层、特征维数分别采用20、45、240的参数配置。

5 系统测试

5.1 人脸识别测试

首先对OpenMV4主控模块做数据流人脸识别测试。由于OpenMV4是以MicroPython翻译器为操作系统的开发板,因此只需要将训练好的神经网络文件烧录到开发板内存,然后调用MicroPython固件库中自带的sensor库来设置摄像头的一系列参数,如图片尺寸、灰度或彩色图、白平衡、曝光时长等。

接着将提取的图片通过训练好的神经网络识别有无人脸图像。如果检测到人脸,则采用image库的绘图功能将人脸标注出来;如果没有,则不做处理;最后以USB数据线将图像传输至电脑端显示。

5.2 人脸追踪测试

Pyboard开发板同时控制2个SG90舵机模块来实现人脸追踪。Pyboard通过输出PWM来实现对SG90舵机云台的控制,不同占空比与不同的脉冲宽度对应着SG90舵机的不同角度位置。经过测试,SG90具体角度控制参数如表1所示。

表1 SG90角度控制参数

为了测试微控制器输出不同PWM所对应的舵机角度,设定输出脉冲频率为50 Hz,即基脉冲为20 ms,分别给方位舵机0.5 ms、1.5 ms、2.5 ms的高电平脉冲,方位舵机对应方位如图3所示;分别给俯仰舵机0.5 ms、1.0 ms、1.5 ms的高电平脉冲,俯仰舵机对应俯仰角度如图4所示;不同角度的人脸跟踪测试效果如图5所示。

图3 不同PWM方位舵机对应方位

图4 不同PWM俯仰舵机对应俯仰角度

图5 不同角度的人脸跟踪测试

5.3 网页显示测试

网页显示功能是OpenMV4模块通过SPI通信协议控制ATWINC 1500通信模块来实现。

测试步骤如下:

a.将ATWINC 1500通信模块与OpenMV4主控模块连接,然后为烧录好程序的OpenMV4模块供电,这时2个模块会自动进行系统初始化,OpenMV4主控模块的LED灯会先闪红灯然后亮白灯最后亮绿灯,表示初始化完毕。

b.用手机或电脑端连接名为OpenMV4的Wi-Fi网络,输入预先设置的密码(可在程序里面修改)。

c.打开浏览器,在浏览器里输入192.168.1.1:8080网站。前面的192.168.1.1为ATWINC 1500模块的IP地址,后面的8080为端口号。

d.等待接入成功后,网页就会显示此时摄像头正在拍摄的监控视频。

6 结束语

采用嵌入式处理器为核心的无线视频监控系统,利用MicroPython计算机视觉库进行图像处理,无线图像传输提升了监控系统的灵活性与实时性,省去了大量布线工作,只要Wi-Fi模块连接到路由器就可以查看监控图像。同时,人脸追踪功能也提高了视频数据的有效性和监控安全性。系统结合了嵌入式、网络化和图像处理技术的优势,具有智能化的操作管理,实现了小体积、低成本和高可靠性的视频监控功能。

猜你喜欢
云台舵机人脸
云上之家——万科·郡西云台
龙门山·卧云台
有特点的人脸
一起学画人脸
帮我买云台
含齿隙弹载舵机的全局反步模糊自适应控制
基于STM32的无线FPV云台设计
三国漫——人脸解锁
基于dsPIC单片机的飞艇舵机控制实现
基于高速同步485总线通信的多通道舵机控制器设计