段中興,白 楊
(西安建筑科技大學(xué) 信息與控制工程學(xué)院,西安 710055)
機(jī)器人示教編程(robot programming demonstration,RPD)是降低機(jī)器人編程復(fù)雜性的重要途徑,用戶可以通過示教器引導(dǎo)機(jī)器人完成學(xué)習(xí)并進(jìn)行任務(wù)再現(xiàn)[1]。在使用RPD系統(tǒng)對(duì)機(jī)器人進(jìn)行編程的過程中,通過將消息指令傳達(dá)給機(jī)器人來進(jìn)行人機(jī)交互,其中手勢(shì)由于其直觀性和確定性,是工業(yè)場(chǎng)景中信息交流的重要方式,因此如何在RPD中利用手勢(shì)高效完成人機(jī)交互已經(jīng)成為當(dāng)前研究的重要方向。
基于視覺的動(dòng)態(tài)手勢(shì)識(shí)別研究分為兩類:一類是包括手勢(shì)分割、手勢(shì)跟蹤、特征提取和手勢(shì)分類四個(gè)階段的傳統(tǒng)方法;另一類是利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)進(jìn)行相關(guān)研究。前者基于包括尺度不變特征變換(Scale-Invariant Feature Transform, SIFT)[2]、LBP特征(Local Binary Pattern)[3]、方向梯度直方圖特征(Histogram of Oriented Gradient, HOG)[4]和Haar-like特征等提取目標(biāo)完成圖像特征提取[5],再采用分類算法進(jìn)行分類來完成手勢(shì)識(shí)別,如支持向量機(jī)(Support Vector Machine, SVM)[6]、K近鄰法(K-NearestNeighbor, KNN)等完成手勢(shì)分類[7],進(jìn)而對(duì)不同識(shí)別結(jié)果進(jìn)行運(yùn)動(dòng)定義來引導(dǎo)機(jī)器人工作,也可以采用如凸包算法等幾何算法進(jìn)一步對(duì)手勢(shì)信息進(jìn)行提取[8],但傳統(tǒng)方法對(duì)每個(gè)階段的算法要求都較為嚴(yán)格,并且需要手工選取特征,導(dǎo)致其存在一定復(fù)雜度的局限性;而基于CNN在一定程度上避免了以上問題帶來的影響,該方法只需要將圖像序列送入設(shè)計(jì)好的網(wǎng)絡(luò)結(jié)構(gòu)就可以直接得到分類結(jié)果,整個(gè)識(shí)別過程簡(jiǎn)單且高效,逐漸成為手勢(shì)識(shí)別的重要研究方向。
其中Mohanty等人將原始圖像直接輸入簡(jiǎn)單的2層CNN進(jìn)行特征提取并完成手勢(shì)識(shí)別[9],但由于沒有進(jìn)行手勢(shì)分割,因此結(jié)果受背景干擾影響程度較大;Oyedotun等通過將預(yù)處理的二值圖像進(jìn)行閾值劃分獲取手勢(shì)區(qū)域并使用CNN完成識(shí)別[10],但其對(duì)光照干擾魯棒性較差;此外還存在將CNN與SVM[11]或者HOG[12]相結(jié)合的方法完成分類任務(wù);也可以使用HSV膚色模型[13]或YCbCr膚色空間[14]完成手勢(shì)分割,解決了對(duì)光線魯棒的問題,但其穩(wěn)定性較差。
針對(duì)以上問題,本文采用將RGB顏色空間與YCbCr顏色空間結(jié)合的方法完成手勢(shì)分割,并結(jié)合改進(jìn)LeNet-5網(wǎng)絡(luò)架構(gòu)進(jìn)行特征提取完成手勢(shì)識(shí)別,基于ROS設(shè)計(jì)機(jī)器人示教框架并定義相應(yīng)功能,進(jìn)而完成人機(jī)交互[15]。
首先需要對(duì)包含手勢(shì)區(qū)域的圖像進(jìn)行預(yù)處理,利用RGB與YCbCr結(jié)合的顏色空間膚色模型提取手掌區(qū)域,通過高斯濾波進(jìn)行平滑處理并進(jìn)行灰度處理,尺寸歸一化處理成32×32作為深度學(xué)習(xí)網(wǎng)絡(luò)的輸入;其次對(duì)LeNet-5進(jìn)行改進(jìn),原始簡(jiǎn)單網(wǎng)絡(luò)LeNet對(duì)于手寫體字符的識(shí)別非常高效,但其由于網(wǎng)絡(luò)設(shè)計(jì)原因,對(duì)于5分類測(cè)試集上存在過擬合現(xiàn)象,因此需要進(jìn)行改進(jìn);最后將該方法應(yīng)用于示教系統(tǒng)中,用于指示任務(wù)演示的開始和結(jié)束,達(dá)到人機(jī)交互的目的,并進(jìn)行實(shí)驗(yàn)與評(píng)估,統(tǒng)計(jì)結(jié)果進(jìn)行算法驗(yàn)證,系統(tǒng)流程如圖1所示。
圖1 系統(tǒng)流程圖
目前無論是開源的手勢(shì)樣本庫,還是通過相機(jī)自采樣手勢(shì)圖像建立數(shù)據(jù)集,得到的原始圖像中均包含了手勢(shì)區(qū)域和背景,并不適合用于神經(jīng)網(wǎng)絡(luò)的輸入圖像,需要經(jīng)過預(yù)處理去除冗余信息。本文中的預(yù)處理包括:手勢(shì)分割、濾波去噪和歸一化處理。
本文為了提高膚色檢測(cè)模型的穩(wěn)定性,將多個(gè)顏色空間結(jié)合,采用RGB顏色空間和YCbCr顏色空間的混合膚色檢測(cè)器。傳統(tǒng)采用HSV或YCbCr單一膚色模型對(duì)光照魯棒性較強(qiáng),但會(huì)將圖像分割得較為破碎。針對(duì)以上問題,通過將RGB顏色空間的3通道和YCbCr顏色空間3通道的值結(jié)合建立混合膚色檢測(cè)器來完成膚色分割,具體算法如式(1)所示。
R>B∧R>B
(G≥B∧5R-12G+7B≥0)∨
(G
Cr∈(135,180)∧Cb∈(85,135)∧Y>80
(1)
經(jīng)過混合膚色模型手勢(shì)分割結(jié)果如圖2所示。
圖2 YCbCr與RGB+YCbCr顏色空間結(jié)果對(duì)比
高斯濾波、均值濾波和中值濾波是圖像處理中使用的較為頻繁的濾波算法,其中高斯濾波和均值濾波采用的是線性濾波,能夠有效地抑制噪聲、平滑圖像,其窗口模板的系數(shù)和均值不同。均值濾波的模板系數(shù)都是1,是一種非線性濾波方法,但其效率較高的同時(shí)會(huì)導(dǎo)致丟失部分特征信息,不利于目標(biāo)手勢(shì)的識(shí)別,并且對(duì)于噪聲干擾效果不佳;
中值濾波是非線性濾波方法,對(duì)于椒鹽噪聲效果較好,但其時(shí)間復(fù)雜度較高;而高斯模板系數(shù)隨著模板中心的增大而系數(shù)減小,則其對(duì)圖像的模糊程度較小,更大程度地保留圖像特征信息,因此本文采用大小為15×15的高斯核進(jìn)行濾波去噪。
考慮到手勢(shì)圖像中手勢(shì)占主導(dǎo)地位,因此采用輪廓提取方法提取出手勢(shì)區(qū)域,并將小于最大輪廓的連通域填黑,僅顯示最大連通區(qū)域,結(jié)果如圖3所示。
圖3 濾波去噪結(jié)果
采用插值算法對(duì)手勢(shì)圖像作歸一化處理用于輸入卷積神經(jīng)網(wǎng)絡(luò)。常用插值算法有最近鄰插值法、雙線性插值法、基于局部像素重采樣、三次樣條插值和Lanczos插值算法等。最近鄰插值法由于會(huì)用距離待求像素點(diǎn)最近的四鄰像素值直接進(jìn)行替代,因此可能會(huì)導(dǎo)致結(jié)果產(chǎn)生明顯不連續(xù)情況;基于局部像素采樣更適用于圖像抽取的應(yīng)用場(chǎng)景;三次樣條插值與Lanczos插值算法由于計(jì)算量較大,速度較慢。
其中雙線性插值算法,可以保證插值結(jié)果較為光滑,具有一定的亮度采樣精度,但會(huì)損失細(xì)節(jié)部分的清晰度,但手勢(shì)圖像對(duì)于如紋理等細(xì)節(jié)部分并不關(guān)注,因此采用該方法進(jìn)行圖像歸一化處理,處理結(jié)果如圖4所示。
圖4 歸一化處理結(jié)果
為了避免人工選取圖像特征的局限性,本文采用卷積神經(jīng)網(wǎng)絡(luò)完成圖像特征提取。卷積神經(jīng)網(wǎng)絡(luò)是權(quán)值共享、非全連接的神經(jīng)網(wǎng)絡(luò),其包括卷積層(CONV)、池化層(POOL)和全連接層(FC)等。卷積層通過二維卷積完成圖像局部特征的提取,其公式如式(2)所示。
(2)
池化層位于連續(xù)的卷積層中間,用于壓縮數(shù)據(jù)和參數(shù)的量,減小過擬合。對(duì)于圖像類型輸入可以在保持主要特征同時(shí)進(jìn)行特征降維,減少冗余參數(shù),提高模型泛化能力,其公式如式(3)所示。
(3)
全連接層在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)起到分類器的作用,可以將卷積輸出的二維特征圖轉(zhuǎn)化成一維向量。實(shí)際使用中,全連接層可以卷積操作實(shí)現(xiàn),其公式如(4)所示。
(4)
LeNet5是最經(jīng)典的神經(jīng)網(wǎng)絡(luò)之一,但其由于算力與數(shù)據(jù)集等因素的限制,效果相較于傳統(tǒng)特征提取結(jié)合分類器的目標(biāo)識(shí)別方法較差,直到2012年ImageNet比賽上取得冠軍,使得卷積神經(jīng)網(wǎng)絡(luò)再一次成為研究熱點(diǎn)。
針對(duì)LeNet5手勢(shì)識(shí)別收斂速度慢、訓(xùn)練時(shí)間長(zhǎng)等問題,提出一種改進(jìn)的LeNet卷積神經(jīng)網(wǎng)絡(luò)模型,該模型結(jié)構(gòu)如圖5所示。
圖5 改進(jìn)LeNet5網(wǎng)絡(luò)結(jié)構(gòu)圖
首先對(duì)原有的網(wǎng)絡(luò)數(shù)量進(jìn)行調(diào)整。在4層網(wǎng)絡(luò)基礎(chǔ)上加入新的卷積層與池化層,考慮到目的是進(jìn)行手勢(shì)識(shí)別,需要盡可能保留紋理特征,減小卷積層參數(shù)誤差造成估計(jì)均值的偏移,池化方式選擇最大池化;為了保證輸出圖片尺寸與輸入一致,填充方式采用全零填充。
卷積核數(shù)目進(jìn)行調(diào)整。卷積核數(shù)目的大小會(huì)對(duì)特征圖個(gè)數(shù)產(chǎn)生影響,因此為了應(yīng)對(duì)工業(yè)場(chǎng)景中的大部分場(chǎng)景,設(shè)置了8種手勢(shì),為了提高網(wǎng)絡(luò)手勢(shì)識(shí)別性能,將卷積核數(shù)目設(shè)置為64,64,128,128,256,256。全連接層輸出節(jié)點(diǎn)分別設(shè)置為256和8,用于手勢(shì)分類。
卷積核大小調(diào)整。原始LeNet5使用的是5×5的卷積核,而多個(gè)小的卷積核疊加使用效果好優(yōu)于大卷積核單獨(dú)使用,并且為了降低參數(shù)個(gè)數(shù)與計(jì)算復(fù)雜度,本文調(diào)整卷積核大小為3×3。
激活函數(shù)的更改。原網(wǎng)絡(luò)使用的sigmoid函數(shù)在應(yīng)對(duì)較深網(wǎng)絡(luò)結(jié)構(gòu)時(shí)會(huì)導(dǎo)致梯度消失,且計(jì)算量較大,導(dǎo)致訓(xùn)練時(shí)間增加。本文采用ReLU函數(shù)作為激活函數(shù),其應(yīng)對(duì)較深網(wǎng)絡(luò)時(shí)具有計(jì)算速度快、收斂速度快等優(yōu)勢(shì),一定程度上保證了模型泛化能力。
加入Droupout層。為了緩解模型過擬合現(xiàn)象的發(fā)生,在池化層后加入大小為0.5的Droupout層,可以進(jìn)一步提升模型泛化能力。
為了簡(jiǎn)化工業(yè)機(jī)器人的編程過程,使公眾更容易地使用工業(yè)機(jī)器人,機(jī)器人研究人員開發(fā)了基于捕獲和分析人類演示動(dòng)作的演示編程方法,該方法為工業(yè)機(jī)器人提供了自我編程的能力,其一般步驟包括以下。
1)觀察:機(jī)器人使用其傳感器感知人體運(yùn)動(dòng);
2)編碼:RPD系統(tǒng)生成任務(wù)的表現(xiàn)形式及用于任務(wù)執(zhí)行的相應(yīng)程序;
3)執(zhí)行:機(jī)器人重現(xiàn)動(dòng)作。
如圖6所示,該圖描述了所提出的RPD框架,其包括3個(gè)主要組件,傳感器、編碼系統(tǒng)與機(jī)器人控制器。在任務(wù)演示過程中,傳感器信息被發(fā)送到編碼系統(tǒng),同時(shí)編碼結(jié)果通過屏幕作為演示反饋給用戶。而手勢(shì)識(shí)別(Hand Gesture Rcongnition, HGR)可以用作在任務(wù)演示期間向編碼系統(tǒng)傳遞消息或命令,與示教器相比更為直觀且效率也更高。
本文設(shè)計(jì)了HGR用作RPD系統(tǒng)的開關(guān),以指示任務(wù)演示的開始和結(jié)束,將產(chǎn)生的機(jī)器人程序發(fā)送到機(jī)器人控制器后,進(jìn)一步通過手勢(shì)命令批準(zhǔn)機(jī)器人運(yùn)動(dòng),整個(gè)過程中可以隨時(shí)利用手勢(shì)進(jìn)行暫停以保障運(yùn)行安全。
設(shè)計(jì)的編碼模塊通過ROS節(jié)點(diǎn)和消息實(shí)現(xiàn)。ROS是由節(jié)點(diǎn)作為基本的單元的開源的元操作系統(tǒng),其通過為節(jié)點(diǎn)提供發(fā)布與訂閱的標(biāo)準(zhǔn)來完成節(jié)點(diǎn)單元之間消息傳遞的管理,進(jìn)而保證節(jié)點(diǎn)通信的可靠性,各個(gè)節(jié)點(diǎn)用于實(shí)現(xiàn)不同的功能,具有高度的靈活性。
該系統(tǒng)由4個(gè)ROS節(jié)點(diǎn)組成,包括用于識(shí)別手勢(shì)的“/simple_hgr”節(jié)點(diǎn),可以通過相機(jī)將手勢(shì)識(shí)別結(jié)果進(jìn)行轉(zhuǎn)化,其次可以實(shí)現(xiàn)讀取機(jī)器人當(dāng)前關(guān)節(jié)角度的“/robot_joint_state_reader”節(jié)點(diǎn),用于反饋機(jī)器人當(dāng)前狀態(tài),“/hri_bridge_RPD”節(jié)點(diǎn)用于處理接收到的手勢(shì)消息,并結(jié)合機(jī)器人關(guān)節(jié)信息在任務(wù)演示和執(zhí)行階段之間進(jìn)行切換,最后是“ /move_ur5_by_joints”節(jié)點(diǎn),用于向機(jī)器人控制器發(fā)送關(guān)節(jié)角度以移動(dòng)機(jī)器人, RPD框架如圖6所示。
圖6 RPD框架
基于手勢(shì)識(shí)別算法,將識(shí)別的手勢(shì)結(jié)果分別轉(zhuǎn)化成數(shù)字信號(hào)用于輸出,例如識(shí)別到“start”的控制信號(hào)時(shí)輸出數(shù)字1,并設(shè)置在默認(rèn)狀態(tài)下輸出0,表示未檢測(cè)到手勢(shì)信號(hào),其公式如式(5)所示。
(5)
其中:Nd表示手勢(shì)輸出信號(hào),采用“cv_bridge”包實(shí)現(xiàn)ROS中“std_msgs/image”格式與opencv格式之間的圖像轉(zhuǎn)換,識(shí)別結(jié)果以ROS消息的形式通過主題“/simple_hgr/number”以30Hz的速率發(fā)送。
節(jié)點(diǎn)“/hri_bridge_RPD”用于分析接收到的數(shù)字以及RPD系統(tǒng)當(dāng)前工作階段。顯然,“/hri_bridge_RPD”節(jié)點(diǎn)扮演著中央處理器(Center Processing Unit,CPU)的角色,功能類似于CPU中的算術(shù)邏輯單元(Arithmetic Logic Unit,ALU),通過對(duì)采樣信息執(zhí)行算術(shù)運(yùn)算及邏輯運(yùn)算以提取用戶最可能執(zhí)行的手勢(shì)。該節(jié)點(diǎn)以0.1秒的時(shí)間間隔對(duì)接收到的數(shù)據(jù)進(jìn)行采樣,并對(duì)形成的數(shù)組中存在的每個(gè)數(shù)字的頻率進(jìn)行計(jì)數(shù),超過設(shè)置閾值0.8時(shí)即確定手勢(shì)信號(hào),節(jié)點(diǎn)部分在圖7中給出。
圖7 節(jié)點(diǎn)內(nèi)部結(jié)構(gòu)示意圖
節(jié)點(diǎn)基于采樣結(jié)果確定手勢(shì)信號(hào)后將用于引導(dǎo)系統(tǒng)進(jìn)入不同模式,功能類似控制單元(Control Unit,CU),其工作流程如圖8所示。
圖8 手勢(shì)引導(dǎo)工作流程
本文實(shí)驗(yàn)環(huán)境為Ubuntu16.04,ROS版本為kinetic,OpenCV版本為3.3.1,模型所使用深度框架是tensorflow,實(shí)驗(yàn)所使用GPU型號(hào)為TitanV,顯存12G。環(huán)境配置為CUDA9.0+anaconda3+python3+tensorflow1.8.0。采用在包括復(fù)雜背景的Marcel數(shù)據(jù)集上進(jìn)行手勢(shì)識(shí)別驗(yàn)證實(shí)驗(yàn)。Marcel數(shù)據(jù)集含有帶有背景的6種手勢(shì)圖像共5 494張,圖9展示了該數(shù)據(jù)集的樣本圖像。神經(jīng)網(wǎng)絡(luò)模型所有層均使用xavier初始化,優(yōu)化器采用Adadelta,總共迭代2 000次。
圖9 Marcel數(shù)據(jù)集樣本
深度學(xué)習(xí)模型效果基于充足的樣本數(shù)量,但目前數(shù)據(jù)庫數(shù)據(jù)量不足以充為訓(xùn)練網(wǎng)絡(luò)模型,容易導(dǎo)致訓(xùn)練模型過程中出現(xiàn)過擬合問題,為了增強(qiáng)CNN模型泛化能力、避免過擬合問題,本文應(yīng)用數(shù)據(jù)增強(qiáng)方法提高樣本質(zhì)量。通過采用對(duì)圖像水平和垂直方向的隨機(jī)平移(離線增強(qiáng)),或者在模型訓(xùn)練過程中對(duì)訓(xùn)練圖片隨機(jī)平移和翻轉(zhuǎn)(在線增強(qiáng)),將訓(xùn)練數(shù)據(jù)擴(kuò)充20倍,可以使模型達(dá)到充分的訓(xùn)練并增強(qiáng)其對(duì)尺度變化的魯棒性,數(shù)據(jù)增強(qiáng)結(jié)果如圖10所示。
圖10 數(shù)據(jù)增強(qiáng)結(jié)果
為了驗(yàn)證本文方法的有效性,本文分別利用單一膚色模型與混合膚色模型進(jìn)行了手勢(shì)識(shí)別對(duì)于實(shí)驗(yàn),其中單一膚色模型采用YCbCr顏色空間下的膚色模型進(jìn)行實(shí)驗(yàn),該實(shí)驗(yàn)結(jié)果如圖11所示。
圖11 單一膚色模型
混合膚色模型損失值與準(zhǔn)確率曲線分別如圖12和圖13所示。
圖12 準(zhǔn)確率曲線
圖13 損失值曲線
從圖11、圖12和圖13所示,混合膚色模型與單一膚色模型相比穩(wěn)定性更強(qiáng),損失值下降得更快,準(zhǔn)確率也明顯提升;并且混合模型隨著迭代次數(shù)的增加,損失值與準(zhǔn)確率趨于平穩(wěn),且損失值迅速下降,表明本文網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)較為合理。
為了進(jìn)一步驗(yàn)證本文方法準(zhǔn)確率,分別在Marcel數(shù)據(jù)集上與其它算法進(jìn)行性能比較,結(jié)果如表1所示。
其中文獻(xiàn)[16]并沒有進(jìn)行手勢(shì)檢測(cè),直接將原始圖像輸入2層CNN模型進(jìn)行識(shí)別,原始圖像中存在的背景干擾信息導(dǎo)致其性能較差;文文獻(xiàn)[17]采用Haar-Adaboost組合。
表1 與其它算法性能比較
特征進(jìn)行手勢(shì)檢信息提取,并利用SVM完成手勢(shì)分類,但其特征描述無法適應(yīng)數(shù)據(jù)集手勢(shì)多樣性與背景帶來的干擾;文獻(xiàn)[18]采用的單一顏色空間YCbCr下的的高膚色模型完成手勢(shì)信息的提取,因此準(zhǔn)確率和穩(wěn)定性較本文較差。
為了驗(yàn)證本文系統(tǒng)可行性,通過手勢(shì)識(shí)別過程預(yù)定義“start”、“end”和“stop”等控制模式手勢(shì),以UR5機(jī)器人為研究對(duì)象并對(duì)其編程令其到達(dá)5個(gè)指定位置,進(jìn)而通過手勢(shì)直接引導(dǎo)機(jī)器人末端分別到達(dá)以上5個(gè)位置,表明其進(jìn)入示教編程的5種不同階段,以證明本設(shè)計(jì)框架的合理性。首先在Kinect傳感器作用范圍內(nèi)執(zhí)行手勢(shì)“start”以進(jìn)入示教模式,在此模式下按下UR5配套的CB3機(jī)器手控制器頂部鎖定按鈕,并拖拽機(jī)器人到某一指定位置后,執(zhí)行另一手勢(shì)作為該位置的標(biāo)志,表明此位置將用該標(biāo)志手勢(shì)進(jìn)行引導(dǎo),完成對(duì)該位置的編碼,再回到起點(diǎn)“start”重復(fù)以上動(dòng)作完成所有位置的編碼;其次執(zhí)行手勢(shì)“execute”進(jìn)入執(zhí)行模式,通過執(zhí)行編碼手勢(shì)完成機(jī)器人末端到達(dá)相應(yīng)位置;并且在所有情況下通過執(zhí)行“stop”手勢(shì)來緊急停止機(jī)器人,模擬在示教過程中的一些突發(fā)情況;整個(gè)過程結(jié)束時(shí)通過“end”手勢(shì)關(guān)閉整個(gè)系統(tǒng),表明任務(wù)求教過程的安全結(jié)束。
實(shí)驗(yàn)結(jié)果表明,手勢(shì)識(shí)別率可達(dá)96.49%,響應(yīng)時(shí)間均不高于1s,表明該RPD可以易于使用且并不需要專業(yè)的編程知識(shí),一定程度降低了機(jī)器人使用門檻。
本文通過改進(jìn)膚色模型完成手勢(shì)信息的提取,并結(jié)合改進(jìn)后的LeNet5網(wǎng)絡(luò)完成手勢(shì)識(shí)別,極大地提高了基于膚色分割的手勢(shì)提取性能;并將該算法應(yīng)用于機(jī)器人示教系統(tǒng),降低了示教編程的技術(shù)門檻同時(shí)提高了RPD系統(tǒng)的易用性,基于ROS完成設(shè)計(jì)保證該系統(tǒng)具有良好的可移植性。