基于龙芯派的人脸识别智能物联网抽纸系统的设计与实现

2022-04-29 05:43侯奕辰张振宇陈哲奕王廷军沈庆云张沁来徐昕芸
科技创新与应用 2022年10期
关键词:服务端龙芯人脸

侯奕辰,张振宇,陈哲奕,王廷军,沈庆云,张沁来,徐昕芸

(上海电机学院 机械学院,上海 201306)

我国每年因为纸张过度使用而造成资源的巨大浪费和经济的巨大损失,环保和节约问题在当今这个社会中显得愈发严峻,随着我国公共厕所提供厕纸已经普及,厕纸的过度浪费使用也成了商家与公厕的负担之一[1]。传统的厕纸抽纸机需要工作人员时刻关注纸张的剩余情况,以免出现由于厕纸添加不及时,可能会出现没有厕纸的窘境。随着技术的发展和防备病毒的需求,人们的一些生活方式也发生了改变,各种无接触设备也渐渐流行,而传统抽纸机免不了需要触碰抽纸机或卷筒纸,而这些可能被前一个人碰过而造成卫生方面的污染[2]。随着人脸识别与检测技术应用,直接刷“脸”可以实现无接触取纸[3],因此,针对上述情况,需要研发一种能够解决以上问题的精巧抽纸设备。本文利用现代物联网技术,提出了一种基于龙芯平台的运用人脸识别技术来完成无接触抽纸设备。

1 工作原理与结构设计

采用龙芯派与作为服务端的Ubuntu两个设备进行协同完成,主要信息交互通过各自的Socket服务进程完成,并通过两个Qmainwindows进程分别在客户端与服务端的屏幕上显示有效信息[4-5]。

整个系统的核心目的为借助摄像头与人脸识别程序按要求合理启动机械部分的设备,如图1所示。

图1 智能抽纸系统原理框图

1.1 送纸机构

送纸机构如图2所示,由两部分组成,其中A为第一部分(以下简称A)、B为第二部分(以下简称B)。

图2 送纸结构

A用来固定卷筒纸,并与B配合让卷筒纸顺利向下运输。B则给卷筒纸一个向下的力,使得纸能够向下做直线运动。

B由一对直齿轮、一对轴、12V永磁式直流减速电机、同步带轮、传送带和支架构成。同步带轮通过传送带带动主动轴。永磁式直流减速电机通过继电器连接到龙芯派上,使得龙芯派可以通过控制继电器的触发引脚的高低电平来控制电机的启停。一对轴分为主动轴和从动轴,两者的装配间距应小于0.2 mm,主动轴被支架约束只能进行转动不能进行平移,而从动轴则既可以转动也能进行平移,通过对从动轴进行平移运动可以改变主动轴与从动轴之间的距离,并将卷筒纸置于间隙中。

1.2 压纸机构

压纸机构由一对12V推拉式电磁铁、刀片和支架组成,如图3所示。电磁铁通电后,将电转化为磁并产生吸力,在断电时通过弹簧的弹力将其自动复位。推拉式电磁铁的行程为200 mm,在通电时能够将刀片快速向前推使得刀片将卷筒纸固定在凹槽内,此时用户可以伸手将已经落下的卷筒纸扯下来。

图3 压纸机构

压纸机构通过推拉式电磁铁(行程20 mm)通电后线圈闭合带动刀片将卷筒纸固定在凹槽内,其在未通电时应保持与凹槽有一定的间隙距离,经Solidworks模拟验证,安装距离为110 mm时最优。两个电磁铁同样通过继电器连接到龙芯派上,使得龙芯派可以控制电磁铁的吸合与松开。

出纸方式是用刀片将卷筒纸压住的方式进行固定后,用户再用手撕下来完成取纸过程。为了进一步完善用户的使用体验,可以将压住这个步骤改为切断,直接将纸切断后依靠重力让纸落到用户手上。

2 控制系统设计

系统选取龙芯2K1000芯片作为主控设备,UI设计上使用Qt完成了桌面程序的编写,并包含多种信息化内容。控制系统主要由位于龙芯派的客户端以及Ubuntu服务端构成,并需在龙芯派中编写底层驱动来控制12V直流电动机和推拉式电磁铁,单位时间内出纸量可以设定,如定值300 mm,误差在10 mm内。

由于需要满足龙芯派能完成自动开机,因此为其设置了开机方案:PMON启动(不显示)→启动内核(显示Boot List)→调用Psplash→启动Xserver并直接启动Qt应用程序。系统控制流程图如图4所示。

2.1 龙芯派客户端

龙芯派客户端应用程序是通过Qt编译的。Client进程启动后,首先进行一系列初始化操作,包括初始化图像处理进程,socket进程,Loongnix底层驱动进程,Qmainwindow进程,V4L2驱动进程,并在V4L2驱动初始化完成后获取摄像头数据,并将其memcpy到socket进程与Qmainwindow中。其流程框图如图4所示。

图4 系统控制流程图

Qmainwindow线程中,调用了图像处理进程;无人脸时,直接显示画面;有人脸时,通过使用服务端传回来的人脸检测方框矩阵,在画面上框出人脸并显示;检测成功时,会显示检测成功的提示图片,并传送给底层驱动进程。

Socket进程中,初始化完成后,首先将会通过select函数进行连接等待,在等待到服务端连接后,将摄像头数据封包成V4L2包,并发送给服务端,再接受服务端传回的检测数据,并存放入全局变量中,供其他进程调用。Socket进程中,在等待到客户端连接成功后,将会从客户端接收回V4L2图像数据;在人脸识别程序识别完成后,将会发送检测结果与识别结果至客户端。

Loongnix底层驱动进程中,如果接收到了传过来的数据,便会通过传进来的参数来进行启动机械部分或是关闭机械部分的判断。特别的、通过服务端传回的强制命令将不通过Loongnix底层驱动进程,而是直接操作驱动文件。

2.2 人脸检测与识别

人脸检测主要通过OpenCV级联分类器进行检测,初始化时调用haarcascade_frontalface_alt.xml文件,加载Mat格式的数据,在经过灰度化与直方图均衡化之后,进行检测,然后返回人脸框图矩阵。

OpenCV人脸识别进程中,首先会调用图像处理进程,将V4L2数据转化为Mat格式。人脸识别将图像进行灰度化处理,并提取其LBP特征,进行ULBP降维处理,对图像进行分割,分割成许多小cell,再对每个cell都进行直方图处理,更新图像模型,调用compareHist进行预测,并返回相似度。

3 实验结果及分析

抽纸系统实验系统如图5所示。

图5 抽纸系统实验系统

(1)采用Server+Client的设计理念,Server端运行Ubuntu 18.04,Client端 为 交 叉 编 译3.10.0内 核 的loongnix系统,其间的通信经自动封包的Socket数据进行连接,物理上通过网线连接路由器组网。

(2)移植了yocto中的psplash程序,完成开机动画制作,开机时使用xinit启动Client,达到开机自启的功能。

(3)人脸识别部分使用OpenCV 3.4.1,通过V4L2驱动获取摄像头画面;加载OpenCV人脸检测器后,通过实时获取摄像头获取到的人脸,通过LBPH人脸识别器完成训练,训练由Server端完成,采集由Client端完成。

(4)Socket传输中包含四种数据头(V4L2数据、检测结果、识别结果、抽纸信息),在Socket传输中程序通过数据头来辨识,并分别解码得到有效数据。

3.1 人脸识别实验

系统需要准确进行人脸识别与检测以达到无接触抽纸的目的,并且需要能通过用户层函数来控制底层驱动,不然整个项目将无法运行,并且人脸识别数据需求客户端与服务端之间同步传输。Qt应用程序界面与同步人脸如图6所示,同步人脸识别结果如图7所示。

图6 Qt应用程序界面与同步人脸检测(Client)

图7 同步人脸识别(Server)

人脸识别部分经过多次实验验证,将识别阈值设定为80%,此阈值能快速识别出人脸库中的人脸,并且只会出现极少数的误判,保证系统准确性,实验数据经简化后见表1。(误判指识别成他人的脸,本实验找了两个脸型相似者进行对比实验,每人各50次,超时10 s未检测出归为LOSS)。最终实现了准确的人脸识别/精确框出人脸/无延迟无卡顿的通信。

表1 人脸识别实验数据

3.2 出纸量精度的检测

在送纸过程中,应满足每次出纸的长度均为定值。为了精确控制出纸量,通过计算直流电机旋转1 s可以出多少长度的纸,依次为单位时间内的出纸量。然后根据每次出纸需要的长度去设置延时。

系统单位时间内的出纸量为30 mm,按每次需要的出纸量为300 mm,需延时10 s。在实践中发现每次出纸量有一些误差,需要通过实验来得到一个普遍的误差值,并且如果这个误差值在可接受范围内,那么此法即可使用。

出纸量精度实验检测结果见表2。可见,出纸的长度误差可以控制在7 mm以内,达到要求。

表2 出纸量精度的误差控制实验数据

4 结束语

基于龙芯派的人脸识别智能物联网抽纸系统具有良好的应用前景。龙芯派能完成自动开机并无操作的连接上服务端,编写了龙芯MIPS驱动及测试,能够进行准确的人脸识别与人脸检测,并准确控制驱动。能够精确的分别在客户端与服务端间框出人脸,精确无延迟无卡顿的连接客户端与服务端之间的通信,通过龙芯派自编驱动控制自动完成送纸与压纸的过程。如果进一步使用深度学习来完成识别的过程,则可以得到更高的人脸识别精度。

猜你喜欢
服务端龙芯人脸
基于国产化龙芯的动环数据采集系统
有特点的人脸
玻璃窗上的人脸
多人联机对战游戏的设计与实现
基于三层结构下机房管理系统的实现分析
基于三层结构下机房管理系统的实现分析
“领家系”可爱脸VS“高冷系”美人脸
“龙芯之父”胡伟武
长得象人脸的十种动物
“龙芯1号”:电脑中国“芯”