劉雪峰 陳曄 王元杰 龐彬堯
(中北大學(xué) 電氣與控制工程學(xué)院, 山西 太原? 030051)
摘? 要: 機器人擁有多種應(yīng)用,其中較為重要的是圖像識別能力,而它們的圖像識別網(wǎng)絡(luò)均需要不斷的訓(xùn)練,才能準(zhǔn)確地識別物體。為解決NAO機器人在室內(nèi)環(huán)境下實時數(shù)字識別問題,重新設(shè)計圖像識別模塊,在TensorFlow中搭建兩種數(shù)字識別系統(tǒng),一種基于BP神經(jīng)網(wǎng)絡(luò),另一種基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)。在相同的數(shù)據(jù)集上,BP神經(jīng)網(wǎng)絡(luò)與CNN在仿真中都取得了較好的效果,但在真實的機器人上運行時,CNN在有限的實驗次數(shù)內(nèi)得到了更好的數(shù)據(jù),被證明是一種更有效的數(shù)字識別系統(tǒng)。
關(guān)鍵詞: 數(shù)字識別; NAO機器人; 圖像識別; BP神經(jīng)網(wǎng)絡(luò); 卷積神經(jīng)網(wǎng)絡(luò); 仿真分析
中圖分類號: TN911.72?34? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼: A? ? ? ? ? ? ? ? ? ? ? 文章編號: 1004?373X(2020)14?0173?04
Digital recognition based on NAO robot
LIU Xuefeng, CHEN Ye, WANG Yuanjie, PANG Binyao
(School of Electrical and Control Engineering, North University of China, Taiyuan 030051, China)
Abstract: Robots have a variety of applications, the most important of which is the image recognition, and the image recognition network requires constant training to accurately identify objects. In order to solve the real?time digital recognition problem of NAO robot in indoor environment, the image recognition module was redesigned, and two digital recognition systems were built in the TensorFlow, one based on BP neural network and the other based on CNN (convolutional neural network). The BP neural network and CNN have achieved good results in the simulation on the same data set, but when running on a real robot, CNN gets better data in a limited quantity of experiments, which is proved to be a more efficient digital identification system.
Keywords: digital recognition; NAO robot; image recognition; BP neural network; convolutional neural network; simulation analysis
0? 引? 言
機器人技術(shù)是機械、電子、計算機科學(xué)、控制、人工智能等技術(shù)的交叉領(lǐng)域[1]。這個多學(xué)科領(lǐng)域誕生于50年代中期,近幾十年來發(fā)展非常迅速。如今,機器人相對成熟,可以在全球范圍內(nèi)大規(guī)模部署智能機器人開始參與提高人類的生活質(zhì)量[2]。
由SoftBank機器人制造和商業(yè)化的NAO仿人機器人,具有25個自由度,配備兩個攝像頭、一個IMU(慣性測量裝置)、聲納傳感器、壓力傳感器和編碼器[3]。Choregraphe 2.1.4自帶的Vision模塊有Face Detection,? Learn Face, Record Video, Select Camera等[4]。
數(shù)字識別技術(shù)在這種信息大爆炸的AI時代,可以很好地節(jié)省人力、物力和財力。故本文主要運用卷積神經(jīng)網(wǎng)絡(luò)的數(shù)字識別系統(tǒng),先由NAO機器人用攝像頭采集圖像,通過局域網(wǎng)傳輸給PC,對采集的圖像進(jìn)行處理分割,再經(jīng)卷積神經(jīng)網(wǎng)絡(luò)識別(需要預(yù)先訓(xùn)練),最后反饋給機器人并使其做出響應(yīng)。
隨著深度學(xué)習(xí)的不斷進(jìn)步,涌現(xiàn)了各具特色的學(xué)習(xí)框架,其中,TensorFlow由Google研發(fā),作為最受歡迎的開源項目,它提供了大量的API,便于研究者使用,故本文采用此框架。
1? 軟硬件設(shè)計
實驗在SoftBank NAO人形機器人3.2版上進(jìn)行。對于圖像識別,使用了NAO頭部內(nèi)的兩個攝像頭,其為是VGA攝像機,可產(chǎn)生高達(dá)30 Hz的視頻流。兩個相機的水平視場(FOV)為47.8°,垂直FOV為36.8°,并使用YUV 422色彩空間。NAO機器人攝像頭視場如圖1所示。本文為便于處理,僅使用單目。
在實驗期間,NAO正在運行Choregraphe 2.1.4。使用的軟件架構(gòu)在Ubuntu 18.04下運行,采用的是Python 27。圖像處理時,使用TensorFlow 1.3.0、OpenCV庫、NumPy包。數(shù)據(jù)傳輸時,在交互式命令行中使用了WinSCP中的通信協(xié)議SETP,實現(xiàn)了圖像的拍攝,以及從NAO機器人內(nèi)部存儲器傳輸?shù)诫娔X的過程,以便于后期處理。
2? 神經(jīng)網(wǎng)絡(luò)簡介
大量科學(xué)家為了使計算機如人腦般智能,多年來在醫(yī)學(xué)、生物學(xué)、信息學(xué)、計算機學(xué)等領(lǐng)域進(jìn)行探索,逐漸形成了一個多學(xué)科交叉的領(lǐng)域,稱為神經(jīng)網(wǎng)絡(luò)(Neural Networks,NNs)。它仿照生物大腦的結(jié)構(gòu)和功能構(gòu)建數(shù)學(xué)模型,通過神經(jīng)元間的相互作用,進(jìn)行訓(xùn)練學(xué)習(xí)與動作預(yù)測。訓(xùn)練時將訓(xùn)練集喂給網(wǎng)絡(luò),使其按規(guī)定的算法調(diào)整神經(jīng)元間的權(quán)值,以達(dá)到預(yù)期輸出效果。訓(xùn)練分為有指導(dǎo)和無指導(dǎo),有指導(dǎo)是將訓(xùn)練集喂入,并規(guī)定相應(yīng)的輸出,通過多次迭代得到連接權(quán)值。
2.1? BP神經(jīng)網(wǎng)絡(luò)
本文采用的是應(yīng)用最為廣泛的BP神經(jīng)網(wǎng)絡(luò),其重點在于反向傳遞,整體過程為:輸入數(shù)據(jù)、逐層傳遞、輸出結(jié)果。將結(jié)果與預(yù)期對比,判斷其是否要進(jìn)入反向傳遞過程。當(dāng)進(jìn)入反向傳遞后,根據(jù)結(jié)果與期望的誤差值,采用梯度下降法優(yōu)化前向傳遞中的權(quán)值和閾值,使BP神經(jīng)網(wǎng)絡(luò)最終達(dá)到預(yù)期效果。
圖2? 典型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
在TensorFlow中,BP神經(jīng)網(wǎng)絡(luò)的實現(xiàn)較為簡單,分為兩步:第一,定義層數(shù)以及每層的神經(jīng)元個數(shù);第二,建立神經(jīng)元之間的關(guān)系。神經(jīng)節(jié)點的計算也非常簡單,首先,y=tf.matmul(x,w1)+b1,意思是將所有的輸入與權(quán)值相乘,對其求和后加上偏置量;其次是設(shè)置激活函數(shù),y1=tf.nn.relu(y)。
反向傳播的主要目的是訓(xùn)練模型參數(shù)。TensorFlow提供的訓(xùn)練方式有:梯度下降法、momentum優(yōu)化器、adam優(yōu)化器等,用于優(yōu)化網(wǎng)絡(luò)參數(shù),使得神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練數(shù)據(jù)中的損失函數(shù)(loss)盡可能的小。這里采用梯度下降法減小loss值,為了得到較為客觀的誤差信息,便于網(wǎng)絡(luò)的評估,采用均方誤差(MES)計算。
訓(xùn)練規(guī)則由會話設(shè)定,通過多次迭代,訓(xùn)練網(wǎng)絡(luò)并調(diào)整參數(shù),得到可以滿足損失函數(shù)值要求的神經(jīng)網(wǎng)絡(luò)。在此同時,還進(jìn)行了斷點續(xù)訓(xùn),在一定周期后顯示成功識別率和損失函數(shù)值,這樣可以更好地監(jiān)控訓(xùn)練進(jìn)度。
本文BP神經(jīng)網(wǎng)絡(luò)選用三層網(wǎng)絡(luò)結(jié)構(gòu),輸入層將圖形轉(zhuǎn)化為28×28的圖形,后轉(zhuǎn)化為784個輸入量喂入網(wǎng)絡(luò),隱含層設(shè)置為500個以保證識別精度,輸出設(shè)定為10個,分別對應(yīng)10個數(shù)。
2.2? 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)框架
本文采用的是在圖像處理方面效果極佳的CNN,其模型如圖3所示。
由Conv. Layer, Subs. Layer, Full connection組成,Conv. Layer配合Subs. Layer將數(shù)據(jù)特征逐層提出,最終由多個Full connection對結(jié)果分類,輸出。它的優(yōu)點在于,并不需要前期的圖像預(yù)處理,而且在卷積時可共享卷積核,對高維數(shù)據(jù)處理很輕松,不需要手動選取特征。池化主要是為了對特征圖像進(jìn)行壓縮,簡化結(jié)構(gòu)的復(fù)雜程度,提取主要特征,防止過擬合。
卷積神經(jīng)網(wǎng)絡(luò)中前向傳播有幾種不同的環(huán)節(jié),所以反向傳播針對不同的層有相應(yīng)的計算規(guī)則[5?6]。對于誤差值的反向傳遞,較為復(fù)雜的是從池化層向前傳遞以及從卷積層向前傳遞。在得到每一層的梯度誤差[δl]以后,需要通過誤差對每一層的參數(shù)進(jìn)行迭代。其中,全連接層的原理與BP神經(jīng)網(wǎng)絡(luò)相同,可以按BP神經(jīng)網(wǎng)絡(luò)的反向傳播算法求該層[W,b]的梯度[7?8]。而池化層本身并沒有[W,b],所以這里只需要求出卷積層中[W,b]的梯度。
本文卷積神經(jīng)網(wǎng)絡(luò)設(shè)置了兩個卷積層加池化層,兩個全連接層,以及一個輸出層。卷積層使用5×5卷積核以保證識別精度的同時克服干擾;池化選取2×2卷積核,保證邊緣不丟失;全連接層為512個全連接層;輸出層依舊是10個對應(yīng)是個數(shù)。
3? 結(jié)果分析
本文使用的是來自美國國家標(biāo)準(zhǔn)與技術(shù)研究所(NIST),由250個不同年齡段,不同工作的人進(jìn)行書寫的mnist手寫數(shù)字?jǐn)?shù)據(jù)集,該數(shù)據(jù)集包含60 000個訓(xùn)練樣本以及10 000個測試樣本,可以很大程度上滿足神經(jīng)網(wǎng)絡(luò)訓(xùn)練的需求,達(dá)到較為理想的訓(xùn)練效果[9?10]。
在對網(wǎng)絡(luò)進(jìn)行評價時,考慮loss損失和accuracy準(zhǔn)確率。在訓(xùn)練中,loss值會隨著次數(shù)的增加逐漸趨于0,因此,可以反映網(wǎng)絡(luò)的效果;accuracy準(zhǔn)確率是用單獨的測試集對訓(xùn)練完成的網(wǎng)絡(luò)的輸出結(jié)果進(jìn)行測試,通過準(zhǔn)確率的高低來判斷網(wǎng)絡(luò)的能力。loss損失和準(zhǔn)確率對比如圖4、圖5所示。
由圖4、圖5可以看出,BP神經(jīng)網(wǎng)絡(luò)和CNN都可以解決本文的問題,其中BP神經(jīng)網(wǎng)絡(luò)較為平穩(wěn),而CNN則可以更快的收斂;由于數(shù)據(jù)較為簡單,存在過擬合現(xiàn)象,導(dǎo)致accuracy準(zhǔn)確率會突然降低,然而很快又會調(diào)整回來。
在現(xiàn)實中測試時,使用了0~9十個數(shù)字(手寫體),如圖6所示,對每個數(shù)字進(jìn)行20次測試,總計200次,結(jié)果如表1所示(準(zhǔn)確率1為BP神經(jīng)網(wǎng)絡(luò)的,準(zhǔn)確率2為CNN的),可以看出CNN具有更好的魯棒性和泛化性。
4? 結(jié)? 語
本文主要解決了NAO機器人在圖像識別中存在的一些局限性問題,如只能識別特定物體與目標(biāo)。在室內(nèi)場景中,將手寫體數(shù)字作為目標(biāo),然后使用NAO機器人完成定位、識別和反饋。最終證實,CNN在數(shù)字識別中的效果優(yōu)于BP神經(jīng)網(wǎng)絡(luò)。
在實際處理過程中,識別精度還有待提高,可以根據(jù)實際情況對圖像進(jìn)行適當(dāng)裁剪,減少干擾信息,提高識別精度。本文介紹的框架需要進(jìn)行預(yù)訓(xùn)練,這取決于預(yù)訓(xùn)練的樣本。當(dāng)有強干擾項(例如照明、遮擋等)時,精度會降低。接下來,將花費一些時間進(jìn)行目標(biāo)檢測,例如Yolo v3和Faster R-CNN等,將不再局限于數(shù)字圖像,并且會從圖形中獲取越來越多的信息。
參考文獻(xiàn)
[1] 郝英好.機器人技術(shù)發(fā)展及其對經(jīng)濟和社會的影響研究[J].新型工業(yè)化,2016,6(11):68?74.
[2] 張紅霞.國內(nèi)外工業(yè)機器人發(fā)展現(xiàn)狀與趨勢研究[J].電子世界,2013(12):5?7.
[3] BUIHUUTOAN.智能服務(wù)機器人控制系統(tǒng)研究與實現(xiàn)[D].南京:南京理工大學(xué),2015.
[4] Softbank. NAOqi documentation [DB/OL]. [2018?03?25]. http://doc.aldebaran.com/2?1/dev/python/examples/motion/stiffness.html#python?example?motion?stiffness.
[5] 王勇,周慧怡,俸皓.基于深度卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)流量分類方法[J].通信學(xué)報,2018,39(1):14?23.
[6] 余秋婷.基于中間語言的移動應(yīng)用安全性檢測方法研究[D].杭州:浙江工業(yè)大學(xué),2017.
[7] 高玉明,張仁津.基于遺傳算法和BP神經(jīng)網(wǎng)絡(luò)的房價預(yù)測分析[J].計算機工程,2014,40(4):187?191.
[8] 談力.基于相似日選取的小波極限學(xué)習(xí)機短期負(fù)荷預(yù)測模型研究[D].南京:南京理工大學(xué),2015.
[9] 宋明順,周涵婷,周立軍,等.基于過程分折法的美國標(biāo)準(zhǔn)化體制形成的驅(qū)動因素分析[J].科技管理研究,2018,38(11):147?153.
[10] 孫巍巍.基于深度學(xué)習(xí)的手寫漢字識別技術(shù)研究[D].哈爾濱:哈爾濱理工大學(xué),2017.