吴必瑞,蒙永富,金志扬
(宁德师范学院 信息与机电工程学院,福建 宁德 352100)
随着人脸检测算法的成熟,人脸识别技术在很多领域都得到了应用,特别是在智能监控领域,摄像头已能实现对目标的检测、识别和追踪,但传统方法存在识别效果不佳、系统效率不高、准确性较低等问题[1-3]。文献[4-6]采用单片机分析人脸特征点,检测其与头部姿态的关系,并设计相似度算法,实现了摄像头的自动追踪,但程序较为复杂。采用K210型芯片能避免以上算法设计复杂的问题,简化设计过程。
本研究基于K210型芯片的人脸坐标输出,首先根据摄像头反馈的图像将其定义为一个平面内的X、Y轴,图像中心点为(0,0),然后识别出人脸在画面中的位置, 最后通过K210型芯片输出PWM控制舵机的角度转向,从而实现人脸的自动识别与追踪。目前该产品已成功应用于手机支架做追踪云台用,可通过扩展应用于人脸识别门禁系统,并可根据人的身高改变摄像头的位置来提高人脸识别速度。
系统以嘉楠科技公司生产的勘智K210型芯片为控制核心器件。该芯片在机器视觉上自带神经网络加速器KPU,可完成基于神经网络的图像分类任务,进行人脸识别与检测,简化系统程序设计。OV2640型摄像头采集模块将采集到的图像信息传输到K210型芯片,该芯片检测到人脸数据信息后会通过系统自带的函数运算功能进行PWM值运算,根据人脸的不同位置给出PWM值,控制云台进行人脸实时追踪,具体的硬件电路原理如图1所示。系统采用OV2640型摄像头作为 CMOS 图像传感器,用2个PAM3101DAB120型芯片分别为摄像头提供工作电源和基准电压,5 V的外接输入电压通过EA3036型芯片转化后为K210型芯片供电。系统实物见图2。
图1 硬件电路原理Fig.1 Hardware circuit schematic diagram
图2 系统实物Fig.2 The real device
该系统的软件开发环境为C++语言,采用模块化程序设计,其主程序流程如图3所示。软件由摄像头图像采集、K210型芯片处理、PID算法、PWM调节和键盘设定程序等各子组成。摄像头采集的图像经过K210型芯片处理后得出人脸的位置坐标,再通过PID运算输出相应的PWM值来控制云台转向。软件程序首先完成系统初始化,主要包括系统中断、串口、OV2640型摄像头、舵机等功能模块的初始化。
本设计采用帧同步的信号接收方式,帧同步信号即VSYNC为高电平时有效、VSYNC为低电平时进行图像传输,直到读取完一整帧图像后VSYNC变为高电平。程序设计即当HREF为高电平时开始接收信号,当HREF为低电平时不进行数据接收,检测到HREF为高电平后,等待第1个PCLK的上升沿,在PCLK为上升沿后开始读取第1个像素的低字节,之后进行第2个PCLK的上升沿等待,如此循环,具体如图4所示。
图3 软件主程序流程Fig.3 Flow chart of software main program
图4 摄像头图像读取流程Fig.4 Flow chart of camera image reading
首先对摄像头反馈的图像信息进行处理,然后将其导入事先训练好的人脸识别模型中进行卷积神经运算,再根据画面中的人脸张数进行运算,最后将人脸的位置以X坐标轴和Y坐标轴的形式输出。
本设计利用K210型芯片自带的强大运算功能在多张人脸的情况下进行人脸面积比较,根据人脸识别范围的大小来判别人脸的远近。程序中将第1张识别到的人脸面积记为C1,C1=A1*B1,其中A1为人脸识别框的长、B1为人脸识别框的宽。同理,第2张人脸定义为C2=A2*B2。然后,C1-C2=D,如果D为正数则输出C1的坐标,否则输出C2的坐标。在现实中人脸大小差别不大,根据小孔成像原理,当摄像头与人脸的距离不同时,人脸在摄像头的图像中所占面积也不同,距离摄像头近的人脸所呈现出来的面积会更大一些。在进行多张人脸识别时,K210型芯片会优先进行人脸面积比较,然后对面积大的人脸进行位置输出,从而使智能追踪稳定器对面积大的人脸进行自动追踪。当芯片未检测到人脸时,智能追踪稳定器则保持上一秒的状态。
陀螺仪在稳定器中起着至关重要的作用,它能使稳定器在一定误差范围内保持动态稳定。本设计的智能追踪稳定器在Y轴上采用陀螺仪进行控制,K210型芯片根据陀螺仪传感器所反馈的倾斜角度进行调整。首先对反馈的数据进行校正,然后进行数据融化和运算,将得出的结果与所要求控制的目标进行比对,最后根据偏差值进行Y轴舵机的PWM值控制输出,使得人脸始终在画面正中心。角度控制流程如图5所示。
图5 角度控制流程Fig.5 Angle control flow chart
本设计的云台舵机采用PID算法控制转向。云台能实现二自由度的追踪,其转向是由前面输出的X、Y轴坐标值经过比例、积分、微分的运算,输出不同的PWM电脉冲进行舵机角度转向,然后输出PWM占空比实现云台舵机的角度控制。经典的增量PID控制算法如下:
Δu(n)=Kp[e(n)-e(n-1)]+Kie(n)+Kd[e(n)-2e(n-1)-e(n-2)],
式中:Kp为比例系数;Ki为积分时间常数;Kd为微分时间。
PID算法控制如图6所示。
图6 PID算法控制Fig.6 PID control algorithms
由于本设计采用的OV2640型摄像头不具有自动调焦功能,所以第一步需要进行有效距离测试。测试开始时首先初始化舵机,测试对象(人脸)不动,然后分别对舵机转动30°、90°、120°进行测试。多次测试后取平均值,结果显示该智能追踪稳定器的有效追踪距离为15~209 cm,数据如表1所示。由于人脸受到不同光照强度的影响,所以摄像头能读取到的人脸数据有不同程度的差别,导致自动追踪的有效距离也有差别。
表1 有效距离测试结果Tab.1 The test results of effective range
稳定性考验智能追踪稳定器的数据处理能力和反应速度。云台稳定性测试结果如表2所示,表2中的数据为测量10次的平均值。从测试结果可知,当人脸以较快的速度停顿或移动时,云台识别人脸的成功率会有所下降,当人脸以较慢的速度移动时,云台的追踪成功率高达98%,即使两张人脸同时出现在画面仍能够实现稳定追踪。人脸以较快速度移动时云台自动追踪成功率较低的原因在于摄像头对画面的采集,人脸以较快速度移动使其不能实时检测出人脸,就会造成自动追踪的失败。
表2 云台稳定性测试结果Tab.2 The test results of cradle stability
本设计采用K210型芯片为核心控制器件,实现了人脸识别、PID运算、PWM控制等功能,同时还具有超高的运算速率,能够进行人脸的实时识别和追踪。测试结果表明,从人脸识别到PWM电脉冲输出控制舵机转向,整个过程可在0.5 s内完成。目前本设计已成功应用于手机支架做追踪云台用,可通过扩展应用于人脸识别门禁系统,并可根据人的身高改变摄像头位置来提高人脸识别速度。