基于OpenMV辅助进食机械手人脸检测算法研究*

2021-12-30 05:36刘祚时许志良
传感器与微系统 2021年1期
关键词:机械手特征值人脸

刘祚时, 许志良, 张 平

(江西理工大学 机电工程学院,江西 赣州 341000)

0 引 言

随着社会人口老龄化问题的出现,助老助残机器人作为服务机器人一个重要分支成为研究的热点。近几年,发达国家加大了对个人和家用机器人研究投入,并且在应用上发展迅速,其中以日本、韩国、美国等尤为突出。2017年日本软银集团发布的机器人Pepper[1],它集成语音和表情识别技术,最有创意的是它能够在与人交流中使用丰富的肢体语言。日本丰田公司和东京大学联合研制的AR(assistant robot)不仅能够为主人送来美味食物,还可以帮助打扫卫生和使用家用洗衣机。2018年12月份,美国曝光了一台由Design公司发明的自动喂饭机器人Obi,它有4个餐盘通过按键切换用餐的食物,也可以使用脚踏模式完成餐盘切换,用来为残疾人辅助进食;能够示教定位,并且有避障的功能[2]。

本文主要从机器视觉方面,基于OpenMV平台,设计能检测人脸并识别,达到机械手能自动追踪人脸,并能够按照预期辅助上身有缺陷的人群完成辅助进食等一系列功能。这对助老助残机器人的研究也有很大的现实意义。

1 OpenMV平台

OpenMV(Open Machine Vision)是开源的机器视觉库。OpenMV Cam是微型的、低功耗的允许在现实世界中轻松使用机器视觉完成应用的微控制器摄像头,它搭载了Python解释器,Python 是一种面向对象的高级编程语音,使得在嵌入式上进行机器视觉算法的编程变得简单。同时OpenMV提供了多种通信接口,包括通用同步异步收发器(USART)、串行外设接口(SPI)以及集成电路总线(I2C)等。它包含了丰富的应用接口函数(API),可以方便地扩展OpenMV的功能,是功能强大的图像编程模块。

2 基于Haar特征Adaboost分类器人脸检测算法分析

人脸特征分类器就是在一帧图片中划分出人脸和非人脸的算法。Haar特征最初由Papageorgiou等人在人脸识别中运用。后续在此基础上提出了3种类型4种形式。Haar特征就是一类矩形特征,在实际的运用中通常用来进行目标检测[3]。用白色矩形区域的灰度值之和减去黑色矩形区域的灰度值之和的差值这个特征能够表征图像局部的灰度变化,这个差值即为Haar特征值。

2.1 Haar特征的生成

Haar特征分类器使用的5种基本特征(BASIC)[4],为了解决适应于不同检测目标的灰度分布的问题,Lienhart R等研究者陆续提出了不同的Haar特征[5],具有代表性的是45°方向Haar特征。

如图1所示,首先使用x3最小特征(3个像素点)通过在人脸矩形检测窗口进行平移,x3特征分别沿着x方向和y方向会产生一系列的特征值。然后保持黑白区域面积比不变同比例放大再从矩形窗口左顶点分别沿x方向和y方向平移又能产生若干x3特征,最后放大到和检测窗口相同大小这样就完成了x3系列特征的生成。

图1 x3特征平移 +放大产生一系列子特征示意

对于x3特征通过平移和放大以后能够生成的特征数目,根据图2所示,检测窗口大小为W×H,特征大小是w×h,那么在水平与垂直方向上最大比例因子分别是W/w和H/h。下面给出矩形特征数目演算过程。

图2 特征数量计算示意图

假设X=W/w,Y=H/h,以垂直方向的放大与平移,当h放大1倍,则竖直方向特征数目为H-h+1;当h放大2倍,则竖直方向特征数目为H-2h+1;……;当h放大Y=[H/h]倍,则竖直方向特征数目为H-Y×h+1;这里[]符号表示向上取整,根据等差公式可以计算出垂直方向的数目为

(1)

同理可得水平方向的数目为

(2)

所以总的数目为

(3)

2.2 Haar特征值计算

而为了提高求解特征值的计算速度,可以采用Viola与Jones提出的积分图方法[6]。特征值的计算是通过设置黑白区域的权重实现相减操作的

(4)

关于不同的Haar特征权重不同,权重参数见下表1。

表1 Haar特征权重值表

对于不同类型特征值的计算结果通过设置权重值来达到白色区域像素值之和减去黑色区域像素值之和的目的。以表1中的x3特征为例,参考式(4)和表1可以得到

f=(黑+白)×1+黑×(-2)=白-黑

(5)

式中f为特征值,黑、白分别表征对应颜色区域的像素值的和。

2.3 分类器结构

基于Haar特征人脸分类器是由树形数据结构组织起来的[7],一个Stage对应一个强分类器,Stage的数量和级联等级有关。相应设置的Stage越低,识别率正确率就越低,与此同时检测的速度就会越高。每一个强分类器必须通过才会进行下一级强分类器的筛选,只有待匹配的人脸对象通过所有的强分类器才认为是目标人脸。

而每一级的强分类器都是若干弱分类器组合而成,弱分类器又是二叉树数据结构组织而成的[8]。使用的OpenCV3.3每一个弱分类器有两个叶子节点值和一个阈值。假设Haar表示计算出来的特征值,Threshod表示其阈值。如果Haar小于阈值,取左值,反之取右值。在对目标进行检测时,将每个弱分类器的输出结果之和Result作为该强分类器的输出结果,然后比较该结果和强分类器的阈值大小关系。只有当Result>StageN Threshold时才认为是检测的目标[9],同时开始下一级强分类器的检测,其中,StageN Threshold为这级强分类器的阈值。

2.4 目标搜索

在面对一副待检测的图像时,不同尺寸的训练样本和检测机制得到的检测窗口不同,本文使用的正负训练样本尺寸归一化处理为24×24,对应的检测窗口的尺寸为24×24(单位:像素值)。即使用图像金字塔及滑动窗口检测机制(Pyramid+Sliding-Window)根据图像比例缩放因子,先按比例缩小图像,然后遍历图像搜索目标,直至缩放到最小检测窗口尺寸结束,图中的矩形框就是固定大小24×24的检测窗口。

2.5 Haar人脸检测算法流程

基于Haar特征级联分类器的检测流程为:首先加载训练好的分类器(OpenCV中指xml文件,OpenMV中指cascade文件),接着加载待检测的图像,然后经过级联分类器一次检测,只有通过每一级的检测才认定为人脸对象。值得注意的是分类器的级联等级与识别准确度正相关而与识别速度负相关,检测过程如图3所示。文中使用的是25级(stage=25),也就是通过25级的检测认为是人脸对象。

图3 级联分类器检测流程

3 目标追踪PID控制算法

此次设计的机械手是辅助进食,服务的对象是人,是动态的,而不是静态的工件坐标,所以这里机械手的运动不仅仅是两点运动,同时需要动态的调整,这也是需要目标追踪算法的意义所在。

3.1 PID控制对象分析

本文中PID控制目标是通过OpenMV采集人脸中心相对于图像中心的像素差作为PID的输入,然后通过输出脉冲宽度调制(PWM)控制舵机机械手运动,完成机械手动态跟随人脸的目标[10]。在整个的控制过程中,通过采集识别到的人脸图像,然后对人脸图像信息处理,识别到的人脸图像在图片区域中为4个参数(x,y,w,h),人脸对象的起点为(x,y),人脸区域宽度为w,高度为h,所有的单位为像素值。选用的分辨率是QQVGA,即160×120,像素格式为灰度图,如图4所示。

图4 人脸坐标分析

图4中,当人脸对象被人脸检测算法识别出来以后,返回的是人脸对象在图像中的感兴趣区域(region of interest,ROI)。ROI区域由4个参数表征,人脸对象的中心坐标如图中十字型标记所示,那么人脸对象的中心坐标为

(6)

这样人脸对象中心坐标和整个图像的中心坐标的差值就可以作为舵机云台PID控制器的控制量了,两个方向的误差分别为

(7)

3.2 舵机位置PID控制器设计

因为服务的对象是动态的人,它要完成搜索到视野中的人脸对象的任务,然后等待人的进食。若因为特殊人群行动不便使得人脸位置发生变化,那么机械手又要重新在工作空间中搜索人脸,此时效率十分低下。所以这里设计舵机位置PID控制器就能在服务对象进食前,让机械手完成人脸目标的追踪,保证机械手的执行器一直在人脸的正前方。控制器设计规则1:关节0与关节1使用相同的PID控制器;控制器设计规则2:当控制变量较小时,PID控制器不生效;控制器设计规则3:控制器的响应速度快。根据以上设计规则,设计了位置型PID控制器。通过调节PID控制器的参数,控制器能够满足实际的控制要求,且对于执行元件的响应效果也满足系统的需要。

3.3 舵机位置型PID控制器实际控制效果测试及分析

本文设计了2组实验测试机械手PID控制器的在水平方向的跟随效果。分别在机械手检测到人脸以后,人脸相对于机械手进行左偏和右偏,对于PID控制器像素误差数据进行采集和分析,误差像素数据是由控制器串行外设接口传到上位机得到的。图5是采集到的误差数据绘制的曲线。

图5 人脸偏转PID控制曲线

从图5中可以看出,控制量是像素值,经过PID参数整定后,敏感变量PID控制器的响应速度很快,能够达到人脸移动的追踪要求,同时达到预期的控制效果。

4 机械手辅助进食调试

在完成人脸检测识别和人脸目标追踪之后,接着对机械手进行了整体调试。鉴于条件有限,仅针对辅助进食机械手抓取食物储存器中的食物做了实验验证。机械手的具体工作流程是,机械手启动以后首先复位原点,然后到固定食物存放点取食物,取完食物以后回到复位起点位置搜索人脸,并且等待用户主动进食,在等待的过程中会进行人脸动态的跟随。最后在用户进食完成以后会继续下一次的取食物动作。在系统调试过程中,分别截取了机械手取食物(上)、机械手喂食物(中)、以及动态人脸跟随(下)的实验照片,如图6所示。

图6 辅助进食机械手调试

在整个实验过程中,辅助进食机械手能够先去固定的食物储存器中取食物(实验中食物用燕麦片代替),然后送达目的位置(可进行人脸动态跟随),在进食完成之后继续重复上次动作,经过实验证实本文机械手可以达到辅助进食的效果。

5 结 论

通过机械手辅助进食调试,能够完成对手脚不便的老人或者上体截肢的特殊人群的人脸检测和辅助进食工作,达到了预期效果,验证了本文所设计的辅助进食机械手的可行性。

猜你喜欢
机械手特征值人脸
一类带强制位势的p-Laplace特征值问题
有特点的人脸
一起学画人脸
单圈图关联矩阵的特征值
TRIZ与情景分解法在换刀机械手设计中的应用
三国漫——人脸解锁
H型群上一类散度形算子的特征值估计
机械手式自动打结机
基于粒子群迭代的一种冗余机械手逆解算法
搬运机械手PLC控制系统设计