劉祚時(shí), 許志良, 張 平
(江西理工大學(xué) 機(jī)電工程學(xué)院,江西 贛州 341000)
隨著社會(huì)人口老齡化問(wèn)題的出現(xiàn),助老助殘機(jī)器人作為服務(wù)機(jī)器人一個(gè)重要分支成為研究的熱點(diǎn)。近幾年,發(fā)達(dá)國(guó)家加大了對(duì)個(gè)人和家用機(jī)器人研究投入,并且在應(yīng)用上發(fā)展迅速,其中以日本、韓國(guó)、美國(guó)等尤為突出。2017年日本軟銀集團(tuán)發(fā)布的機(jī)器人Pepper[1],它集成語(yǔ)音和表情識(shí)別技術(shù),最有創(chuàng)意的是它能夠在與人交流中使用豐富的肢體語(yǔ)言。日本豐田公司和東京大學(xué)聯(lián)合研制的AR(assistant robot)不僅能夠?yàn)橹魅怂蛠?lái)美味食物,還可以幫助打掃衛(wèi)生和使用家用洗衣機(jī)。2018年12月份,美國(guó)曝光了一臺(tái)由Design公司發(fā)明的自動(dòng)喂飯機(jī)器人Obi,它有4個(gè)餐盤(pán)通過(guò)按鍵切換用餐的食物,也可以使用腳踏模式完成餐盤(pán)切換,用來(lái)為殘疾人輔助進(jìn)食;能夠示教定位,并且有避障的功能[2]。
本文主要從機(jī)器視覺(jué)方面,基于OpenMV平臺(tái),設(shè)計(jì)能檢測(cè)人臉并識(shí)別,達(dá)到機(jī)械手能自動(dòng)追蹤人臉,并能夠按照預(yù)期輔助上身有缺陷的人群完成輔助進(jìn)食等一系列功能。這對(duì)助老助殘機(jī)器人的研究也有很大的現(xiàn)實(shí)意義。
OpenMV(Open Machine Vision)是開(kāi)源的機(jī)器視覺(jué)庫(kù)。OpenMV Cam是微型的、低功耗的允許在現(xiàn)實(shí)世界中輕松使用機(jī)器視覺(jué)完成應(yīng)用的微控制器攝像頭,它搭載了Python解釋器,Python 是一種面向?qū)ο蟮母呒?jí)編程語(yǔ)音,使得在嵌入式上進(jìn)行機(jī)器視覺(jué)算法的編程變得簡(jiǎn)單。同時(shí)OpenMV提供了多種通信接口,包括通用同步異步收發(fā)器(USART)、串行外設(shè)接口(SPI)以及集成電路總線(I2C)等。它包含了豐富的應(yīng)用接口函數(shù)(API),可以方便地?cái)U(kuò)展OpenMV的功能,是功能強(qiáng)大的圖像編程模塊。
人臉特征分類(lèi)器就是在一幀圖片中劃分出人臉和非人臉的算法。Haar特征最初由Papageorgiou等人在人臉識(shí)別中運(yùn)用。后續(xù)在此基礎(chǔ)上提出了3種類(lèi)型4種形式。Haar特征就是一類(lèi)矩形特征,在實(shí)際的運(yùn)用中通常用來(lái)進(jìn)行目標(biāo)檢測(cè)[3]。用白色矩形區(qū)域的灰度值之和減去黑色矩形區(qū)域的灰度值之和的差值這個(gè)特征能夠表征圖像局部的灰度變化,這個(gè)差值即為Haar特征值。
Haar特征分類(lèi)器使用的5種基本特征(BASIC)[4],為了解決適應(yīng)于不同檢測(cè)目標(biāo)的灰度分布的問(wèn)題,Lienhart R等研究者陸續(xù)提出了不同的Haar特征[5],具有代表性的是45°方向Haar特征。
如圖1所示,首先使用x3最小特征(3個(gè)像素點(diǎn))通過(guò)在人臉矩形檢測(cè)窗口進(jìn)行平移,x3特征分別沿著x方向和y方向會(huì)產(chǎn)生一系列的特征值。然后保持黑白區(qū)域面積比不變同比例放大再?gòu)木匦未翱谧箜旤c(diǎn)分別沿x方向和y方向平移又能產(chǎn)生若干x3特征,最后放大到和檢測(cè)窗口相同大小這樣就完成了x3系列特征的生成。
圖1 x3特征平移 +放大產(chǎn)生一系列子特征示意
對(duì)于x3特征通過(guò)平移和放大以后能夠生成的特征數(shù)目,根據(jù)圖2所示,檢測(cè)窗口大小為W×H,特征大小是w×h,那么在水平與垂直方向上最大比例因子分別是W/w和H/h。下面給出矩形特征數(shù)目演算過(guò)程。
圖2 特征數(shù)量計(jì)算示意圖
假設(shè)X=W/w,Y=H/h,以垂直方向的放大與平移,當(dāng)h放大1倍,則豎直方向特征數(shù)目為H-h+1;當(dāng)h放大2倍,則豎直方向特征數(shù)目為H-2h+1;……;當(dāng)h放大Y=[H/h]倍,則豎直方向特征數(shù)目為H-Y×h+1;這里[]符號(hào)表示向上取整,根據(jù)等差公式可以計(jì)算出垂直方向的數(shù)目為
(1)
同理可得水平方向的數(shù)目為
(2)
所以總的數(shù)目為
(3)
而為了提高求解特征值的計(jì)算速度,可以采用Viola與Jones提出的積分圖方法[6]。特征值的計(jì)算是通過(guò)設(shè)置黑白區(qū)域的權(quán)重實(shí)現(xiàn)相減操作的
(4)
關(guān)于不同的Haar特征權(quán)重不同,權(quán)重參數(shù)見(jiàn)下表1。
表1 Haar特征權(quán)重值表
對(duì)于不同類(lèi)型特征值的計(jì)算結(jié)果通過(guò)設(shè)置權(quán)重值來(lái)達(dá)到白色區(qū)域像素值之和減去黑色區(qū)域像素值之和的目的。以表1中的x3特征為例,參考式(4)和表1可以得到
f=(黑+白)×1+黑×(-2)=白-黑
(5)
式中f為特征值,黑、白分別表征對(duì)應(yīng)顏色區(qū)域的像素值的和。
基于Haar特征人臉?lè)诸?lèi)器是由樹(shù)形數(shù)據(jù)結(jié)構(gòu)組織起來(lái)的[7],一個(gè)Stage對(duì)應(yīng)一個(gè)強(qiáng)分類(lèi)器,Stage的數(shù)量和級(jí)聯(lián)等級(jí)有關(guān)。相應(yīng)設(shè)置的Stage越低,識(shí)別率正確率就越低,與此同時(shí)檢測(cè)的速度就會(huì)越高。每一個(gè)強(qiáng)分類(lèi)器必須通過(guò)才會(huì)進(jìn)行下一級(jí)強(qiáng)分類(lèi)器的篩選,只有待匹配的人臉對(duì)象通過(guò)所有的強(qiáng)分類(lèi)器才認(rèn)為是目標(biāo)人臉。
而每一級(jí)的強(qiáng)分類(lèi)器都是若干弱分類(lèi)器組合而成,弱分類(lèi)器又是二叉樹(shù)數(shù)據(jù)結(jié)構(gòu)組織而成的[8]。使用的OpenCV3.3每一個(gè)弱分類(lèi)器有兩個(gè)葉子節(jié)點(diǎn)值和一個(gè)閾值。假設(shè)Haar表示計(jì)算出來(lái)的特征值,Threshod表示其閾值。如果Haar小于閾值,取左值,反之取右值。在對(duì)目標(biāo)進(jìn)行檢測(cè)時(shí),將每個(gè)弱分類(lèi)器的輸出結(jié)果之和Result作為該強(qiáng)分類(lèi)器的輸出結(jié)果,然后比較該結(jié)果和強(qiáng)分類(lèi)器的閾值大小關(guān)系。只有當(dāng)Result>StageN Threshold時(shí)才認(rèn)為是檢測(cè)的目標(biāo)[9],同時(shí)開(kāi)始下一級(jí)強(qiáng)分類(lèi)器的檢測(cè),其中,StageN Threshold為這級(jí)強(qiáng)分類(lèi)器的閾值。
在面對(duì)一副待檢測(cè)的圖像時(shí),不同尺寸的訓(xùn)練樣本和檢測(cè)機(jī)制得到的檢測(cè)窗口不同,本文使用的正負(fù)訓(xùn)練樣本尺寸歸一化處理為24×24,對(duì)應(yīng)的檢測(cè)窗口的尺寸為24×24(單位:像素值)。即使用圖像金字塔及滑動(dòng)窗口檢測(cè)機(jī)制(Pyramid+Sliding-Window)根據(jù)圖像比例縮放因子,先按比例縮小圖像,然后遍歷圖像搜索目標(biāo),直至縮放到最小檢測(cè)窗口尺寸結(jié)束,圖中的矩形框就是固定大小24×24的檢測(cè)窗口。
基于Haar特征級(jí)聯(lián)分類(lèi)器的檢測(cè)流程為:首先加載訓(xùn)練好的分類(lèi)器(OpenCV中指xml文件,OpenMV中指cascade文件),接著加載待檢測(cè)的圖像,然后經(jīng)過(guò)級(jí)聯(lián)分類(lèi)器一次檢測(cè),只有通過(guò)每一級(jí)的檢測(cè)才認(rèn)定為人臉對(duì)象。值得注意的是分類(lèi)器的級(jí)聯(lián)等級(jí)與識(shí)別準(zhǔn)確度正相關(guān)而與識(shí)別速度負(fù)相關(guān),檢測(cè)過(guò)程如圖3所示。文中使用的是25級(jí)(stage=25),也就是通過(guò)25級(jí)的檢測(cè)認(rèn)為是人臉對(duì)象。
圖3 級(jí)聯(lián)分類(lèi)器檢測(cè)流程
此次設(shè)計(jì)的機(jī)械手是輔助進(jìn)食,服務(wù)的對(duì)象是人,是動(dòng)態(tài)的,而不是靜態(tài)的工件坐標(biāo),所以這里機(jī)械手的運(yùn)動(dòng)不僅僅是兩點(diǎn)運(yùn)動(dòng),同時(shí)需要?jiǎng)討B(tài)的調(diào)整,這也是需要目標(biāo)追蹤算法的意義所在。
本文中PID控制目標(biāo)是通過(guò)OpenMV采集人臉中心相對(duì)于圖像中心的像素差作為PID的輸入,然后通過(guò)輸出脈沖寬度調(diào)制(PWM)控制舵機(jī)機(jī)械手運(yùn)動(dòng),完成機(jī)械手動(dòng)態(tài)跟隨人臉的目標(biāo)[10]。在整個(gè)的控制過(guò)程中,通過(guò)采集識(shí)別到的人臉圖像,然后對(duì)人臉圖像信息處理,識(shí)別到的人臉圖像在圖片區(qū)域中為4個(gè)參數(shù)(x,y,w,h),人臉對(duì)象的起點(diǎn)為(x,y),人臉區(qū)域?qū)挾葹閣,高度為h,所有的單位為像素值。選用的分辨率是QQVGA,即160×120,像素格式為灰度圖,如圖4所示。
圖4 人臉坐標(biāo)分析
圖4中,當(dāng)人臉對(duì)象被人臉檢測(cè)算法識(shí)別出來(lái)以后,返回的是人臉對(duì)象在圖像中的感興趣區(qū)域(region of interest,ROI)。ROI區(qū)域由4個(gè)參數(shù)表征,人臉對(duì)象的中心坐標(biāo)如圖中十字型標(biāo)記所示,那么人臉對(duì)象的中心坐標(biāo)為
(6)
這樣人臉對(duì)象中心坐標(biāo)和整個(gè)圖像的中心坐標(biāo)的差值就可以作為舵機(jī)云臺(tái)PID控制器的控制量了,兩個(gè)方向的誤差分別為
(7)
因?yàn)榉?wù)的對(duì)象是動(dòng)態(tài)的人,它要完成搜索到視野中的人臉對(duì)象的任務(wù),然后等待人的進(jìn)食。若因?yàn)樘厥馊巳盒袆?dòng)不便使得人臉位置發(fā)生變化,那么機(jī)械手又要重新在工作空間中搜索人臉,此時(shí)效率十分低下。所以這里設(shè)計(jì)舵機(jī)位置PID控制器就能在服務(wù)對(duì)象進(jìn)食前,讓機(jī)械手完成人臉目標(biāo)的追蹤,保證機(jī)械手的執(zhí)行器一直在人臉的正前方??刂破髟O(shè)計(jì)規(guī)則1:關(guān)節(jié)0與關(guān)節(jié)1使用相同的PID控制器;控制器設(shè)計(jì)規(guī)則2:當(dāng)控制變量較小時(shí),PID控制器不生效;控制器設(shè)計(jì)規(guī)則3:控制器的響應(yīng)速度快。根據(jù)以上設(shè)計(jì)規(guī)則,設(shè)計(jì)了位置型PID控制器。通過(guò)調(diào)節(jié)PID控制器的參數(shù),控制器能夠滿(mǎn)足實(shí)際的控制要求,且對(duì)于執(zhí)行元件的響應(yīng)效果也滿(mǎn)足系統(tǒng)的需要。
本文設(shè)計(jì)了2組實(shí)驗(yàn)測(cè)試機(jī)械手PID控制器的在水平方向的跟隨效果。分別在機(jī)械手檢測(cè)到人臉以后,人臉相對(duì)于機(jī)械手進(jìn)行左偏和右偏,對(duì)于PID控制器像素誤差數(shù)據(jù)進(jìn)行采集和分析,誤差像素?cái)?shù)據(jù)是由控制器串行外設(shè)接口傳到上位機(jī)得到的。圖5是采集到的誤差數(shù)據(jù)繪制的曲線。
圖5 人臉偏轉(zhuǎn)PID控制曲線
從圖5中可以看出,控制量是像素值,經(jīng)過(guò)PID參數(shù)整定后,敏感變量PID控制器的響應(yīng)速度很快,能夠達(dá)到人臉移動(dòng)的追蹤要求,同時(shí)達(dá)到預(yù)期的控制效果。
在完成人臉檢測(cè)識(shí)別和人臉目標(biāo)追蹤之后,接著對(duì)機(jī)械手進(jìn)行了整體調(diào)試。鑒于條件有限,僅針對(duì)輔助進(jìn)食機(jī)械手抓取食物儲(chǔ)存器中的食物做了實(shí)驗(yàn)驗(yàn)證。機(jī)械手的具體工作流程是,機(jī)械手啟動(dòng)以后首先復(fù)位原點(diǎn),然后到固定食物存放點(diǎn)取食物,取完食物以后回到復(fù)位起點(diǎn)位置搜索人臉,并且等待用戶(hù)主動(dòng)進(jìn)食,在等待的過(guò)程中會(huì)進(jìn)行人臉動(dòng)態(tài)的跟隨。最后在用戶(hù)進(jìn)食完成以后會(huì)繼續(xù)下一次的取食物動(dòng)作。在系統(tǒng)調(diào)試過(guò)程中,分別截取了機(jī)械手取食物(上)、機(jī)械手喂食物(中)、以及動(dòng)態(tài)人臉跟隨(下)的實(shí)驗(yàn)照片,如圖6所示。
圖6 輔助進(jìn)食機(jī)械手調(diào)試
在整個(gè)實(shí)驗(yàn)過(guò)程中,輔助進(jìn)食機(jī)械手能夠先去固定的食物儲(chǔ)存器中取食物(實(shí)驗(yàn)中食物用燕麥片代替),然后送達(dá)目的位置(可進(jìn)行人臉動(dòng)態(tài)跟隨),在進(jìn)食完成之后繼續(xù)重復(fù)上次動(dòng)作,經(jīng)過(guò)實(shí)驗(yàn)證實(shí)本文機(jī)械手可以達(dá)到輔助進(jìn)食的效果。
通過(guò)機(jī)械手輔助進(jìn)食調(diào)試,能夠完成對(duì)手腳不便的老人或者上體截肢的特殊人群的人臉檢測(cè)和輔助進(jìn)食工作,達(dá)到了預(yù)期效果,驗(yàn)證了本文所設(shè)計(jì)的輔助進(jìn)食機(jī)械手的可行性。