文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.173409
中文引用格式: 王磊,,張翠霞. 機(jī)器視覺(jué)筆跡識(shí)別和Arduino控制機(jī)器人的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2017,43(11):15-17.
英文引用格式: Wang Lei,,Zhang Cuixia. Machine vision handwriting recognition and Arduino control robot design[J].Application of Electronic Technique,,2017,43(11):15-17.
0 引言
伴隨著現(xiàn)在日益高性能的計(jì)算機(jī)硬件和完善的理論技術(shù),,機(jī)器視覺(jué)技術(shù)已開(kāi)始得到廣泛的應(yīng)用。結(jié)合機(jī)器視覺(jué)技術(shù)的智能機(jī)器人在現(xiàn)今人工智能趨勢(shì)下扮演一個(gè)重要角色,,在智能制造推進(jìn),、智慧城市建設(shè)、家居生活質(zhì)量提高等方面,,都有廣闊的施展空間[1],。
1 整體設(shè)計(jì)思路及方案
本設(shè)計(jì)將能勝任機(jī)器視覺(jué)處理能力的計(jì)算機(jī)與單片機(jī)作主控的機(jī)器人相結(jié)合,通過(guò)無(wú)線通信方式構(gòu)建一個(gè)相比其他低成本機(jī)器人具備更高自主性和智能性的機(jī)器人模型,,目的在于:(1)對(duì)比評(píng)估主流手寫數(shù)字識(shí)別模型的實(shí)際識(shí)別表現(xiàn),;(2)探究低成本機(jī)器人實(shí)現(xiàn)更高智能性的方法[2],。
本設(shè)計(jì)結(jié)合現(xiàn)今熱門的機(jī)器視覺(jué)技術(shù)以及Arduino單片機(jī)實(shí)現(xiàn)了一個(gè)能夠通過(guò)上位機(jī)識(shí)別手寫數(shù)字并發(fā)送至下位機(jī)進(jìn)行執(zhí)行的機(jī)器人模型,,當(dāng)上位機(jī)得到待識(shí)別的圖片后,將進(jìn)行圖片的處理轉(zhuǎn)化為數(shù)據(jù)并輸入已經(jīng)在前期構(gòu)建好的識(shí)別模型,,計(jì)算后輸出識(shí)別的內(nèi)容并通過(guò)無(wú)線通信發(fā)送到下位機(jī),,下位機(jī)根據(jù)接收到的識(shí)別信號(hào)執(zhí)行相應(yīng)動(dòng)作。
本設(shè)計(jì)總體可分為上位機(jī)識(shí)別與下位機(jī)執(zhí)行部分,。上位機(jī)識(shí)別部分包含前期輸入信號(hào)的處理,、手寫字符的識(shí)別模型構(gòu)建、與下位機(jī)通信構(gòu)建等部分,;下位機(jī)執(zhí)行部分采用Arduino單片機(jī)結(jié)合各類電子元器件和電路模塊實(shí)現(xiàn)了所期望的執(zhí)行內(nèi)容,,包括電源供電設(shè)計(jì),、表盤指示器電路設(shè)計(jì)、人機(jī)交互顯示設(shè)計(jì)以及無(wú)線通信設(shè)計(jì)[3],。
1.1 下位機(jī)硬件設(shè)計(jì)方案
該下位機(jī)硬件使用Arduino單片機(jī)作為主控,,并結(jié)合步進(jìn)電機(jī)以及步進(jìn)電機(jī)驅(qū)動(dòng)模塊構(gòu)成了指針數(shù)字指示盤,OLED與單片機(jī)相連構(gòu)成人機(jī)交互顯示界面,,NRF2401L無(wú)線串口模塊與上位機(jī)進(jìn)行通信,,使用LM2596穩(wěn)壓模塊輸出9 V電源為Arduino單片機(jī)供電,并且由單片機(jī)供電給各個(gè)執(zhí)行模塊,。采用1.3寸OLED顯示屏作為顯示器,,輸出經(jīng)過(guò)上位機(jī)識(shí)別后發(fā)送至下位機(jī)的信號(hào),采用SSD1306作為驅(qū)動(dòng)的OLED顯示屏顯示出數(shù)字[4],。
采用步進(jìn)電機(jī)作為儀表盤指示器執(zhí)行部件,,其需要相應(yīng)電機(jī)驅(qū)動(dòng)模塊進(jìn)行驅(qū)動(dòng)。設(shè)計(jì)儀表指示器需要對(duì)步進(jìn)電機(jī)進(jìn)行正轉(zhuǎn),、反轉(zhuǎn)控制,,從而造成指針的順時(shí)針旋轉(zhuǎn)和逆時(shí)針旋轉(zhuǎn),以便能夠使其根據(jù)輸入的識(shí)別信號(hào)轉(zhuǎn)動(dòng)相應(yīng)角度(有對(duì)應(yīng)的正向角度和負(fù)角度),。電機(jī)接收到單片機(jī)輸出的特定脈沖時(shí),,步進(jìn)角(步進(jìn)電機(jī)每前進(jìn)一個(gè)步序所轉(zhuǎn)過(guò)的角度)便會(huì)進(jìn)行相應(yīng)的轉(zhuǎn)動(dòng),當(dāng)電機(jī)接收一個(gè)脈沖信號(hào)就會(huì)轉(zhuǎn)過(guò)一個(gè)步進(jìn)角,,二者呈相互的線性關(guān)系,。通過(guò)此線性關(guān)系,再根據(jù)原有角度與現(xiàn)在應(yīng)該轉(zhuǎn)動(dòng)角度做差值計(jì)算,,求出相差角度,,控制電機(jī)轉(zhuǎn)動(dòng)相應(yīng)角度,便可以實(shí)現(xiàn)電機(jī)的儀表指示功能,。
1.2 數(shù)據(jù)收集以及上位機(jī)識(shí)別模型
上位機(jī)部分主要負(fù)責(zé)手寫圖片的識(shí)別,,其流程包括手寫數(shù)字圖像預(yù)處理、識(shí)別模型訓(xùn)練,、識(shí)別模型驗(yàn)證和測(cè)試等,。選擇MNIST手寫庫(kù)作為模型的數(shù)據(jù),并給出了將MNIST數(shù)據(jù)庫(kù)進(jìn)行圖像處理的方法,,通過(guò)比對(duì)SVM,、BP神經(jīng)網(wǎng)絡(luò)、KNN三種識(shí)別模型的發(fā)展歷程,、數(shù)學(xué)原理以及算法步驟等,,最終選用BP神經(jīng)網(wǎng)絡(luò)識(shí)別模型。
1.3 BP神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識(shí)別模型及驗(yàn)證
BP神經(jīng)網(wǎng)絡(luò)是神經(jīng)網(wǎng)絡(luò)的一種,,目前大多數(shù)神經(jīng)網(wǎng)絡(luò)模型都是由BP神經(jīng)網(wǎng)絡(luò)擴(kuò)展而來(lái),。對(duì)于本設(shè)計(jì)所需手寫數(shù)字識(shí)別這一應(yīng)用來(lái)說(shuō),,神經(jīng)網(wǎng)絡(luò)主要用于關(guān)于數(shù)字0到數(shù)字9的分類問(wèn)題。BP神經(jīng)網(wǎng)絡(luò)算法又稱為反向傳播算法,,其連接神經(jīng)元的權(quán)值訓(xùn)練從最末層(即網(wǎng)絡(luò)的輸出層)開(kāi)始,,從輸出到輸入依次更新每一層的權(quán)值,所以被稱為反向傳播,。
BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法采用方法為δ學(xué)習(xí)規(guī)則(步長(zhǎng)最優(yōu)化),,目標(biāo)函數(shù)為:
式中:Yk表示真實(shí)的值,即期望值,,是真實(shí)圖片中所代表數(shù)字,,k為樣本編號(hào);Tk為預(yù)測(cè)值,,即經(jīng)過(guò)模型所計(jì)算出來(lái)的值,;E為真實(shí)值與預(yù)測(cè)值得平方誤差求和。整個(gè)式子的目標(biāo)便是使平方誤差和最小,。
其算法過(guò)程的流程描述如圖1所示,。
BP神經(jīng)網(wǎng)絡(luò)由于只應(yīng)用了均分誤差函數(shù)對(duì)權(quán)值和閾值的一階導(dǎo)數(shù)(即梯度)的信息,在實(shí)際程序中該算法存在收斂速度慢從而計(jì)算時(shí)間長(zhǎng),、容易陷入局部最?。ê雎粤巳肿顑?yōu)解導(dǎo)致不能正確求解)等問(wèn)題。在實(shí)際的應(yīng)用中,,應(yīng)注意這些問(wèn)題的解決,,可以與LM神經(jīng)網(wǎng)絡(luò)、RBF神經(jīng)網(wǎng)絡(luò)等結(jié)合使用來(lái)解決[5],。
2 使用CV2庫(kù)進(jìn)行圖像預(yù)處理
在設(shè)計(jì)中使用OpenCV庫(kù)的擴(kuò)展庫(kù)CV2庫(kù)對(duì)圖片進(jìn)行了圖像預(yù)處理,,過(guò)程主要包括手寫數(shù)字圖像的歸一化以及二值化數(shù)據(jù)形式,并保存為逗號(hào)分隔符的csv文件,。
圖像處理時(shí)間如表1所示,,T1時(shí)間為轉(zhuǎn)化訓(xùn)練集圖片所用時(shí)間,用時(shí)352 s,;T2時(shí)間為轉(zhuǎn)化測(cè)試集圖片所用時(shí)間,,用時(shí)55 s。
2.1 PCA降維操作
本設(shè)計(jì)使用Python的sklearn庫(kù)中的PCA方法,,輸入原始數(shù)據(jù)集,,即可完成PCA降維操作,其降維結(jié)果如表2所示,。
在經(jīng)過(guò)PCA(主成分分析法)降維操作去除影響較小的變量影響后,得到了59 989行,、67列的X_pca數(shù)據(jù)集,,手寫數(shù)字圖片數(shù)量不變,,但維數(shù)從784列縮小為67列,從而有效地減輕了支持向量機(jī),、神經(jīng)網(wǎng)絡(luò)以及KNN模型的計(jì)算過(guò)程,。在后續(xù)的模型訓(xùn)練以及模型識(shí)別準(zhǔn)確度評(píng)估中,也同樣使用了PCA操作對(duì)數(shù)據(jù)簡(jiǎn)化計(jì)算量[6],。
2.2 模型比較以及上位機(jī)識(shí)別模型的選取
本測(cè)試模型中,,經(jīng)過(guò)轉(zhuǎn)化的訓(xùn)練集數(shù)據(jù)大小1.09 GB(59 989張圖片轉(zhuǎn)化完成的數(shù)據(jù)),測(cè)試集數(shù)據(jù)大小為186 MB(9989張圖片轉(zhuǎn)化完成的數(shù)據(jù)),,經(jīng)過(guò)PCA降維操作后,,測(cè)試集數(shù)據(jù)大小為97.7 MB(由原來(lái)的864列數(shù)據(jù)降維為67列數(shù)據(jù)),訓(xùn)練集數(shù)據(jù)大小為16.2 MB,。模型數(shù)據(jù)采用PCA降維操作后的數(shù)據(jù)[7],。
從表3中可知,3種模型中,,SVM(支持向量機(jī))模型識(shí)別的準(zhǔn)確度最高,,但訓(xùn)練時(shí)間比其他兩個(gè)模型稍長(zhǎng)。BP神經(jīng)網(wǎng)絡(luò)模型最小,,訓(xùn)練時(shí)間比SVM(支持向量機(jī))稍短,,測(cè)試時(shí)間用時(shí)也最短,明顯短于其他兩個(gè)模型,,說(shuō)明識(shí)別速度是最快的,。KNN(K近鄰)模型訓(xùn)練時(shí)間雖然最短,但從測(cè)試時(shí)間來(lái)看用時(shí)最長(zhǎng),,測(cè)試近10 000個(gè)數(shù)據(jù)的時(shí)間比其他兩個(gè)模型訓(xùn)練近60 000個(gè)數(shù)據(jù)的時(shí)間還長(zhǎng)了兩倍多,,模型識(shí)別速度最慢。準(zhǔn)確率上來(lái)看,,小數(shù)據(jù)量時(shí)準(zhǔn)確率只有百分之五六十,,只有大數(shù)據(jù)體量下準(zhǔn)確率才有明顯提升,與SVM(支持向量機(jī))和BP神經(jīng)網(wǎng)絡(luò)相比,,在手寫數(shù)字識(shí)別方面遜色很多,。
對(duì)上面3個(gè)模型根據(jù)識(shí)別時(shí)間、準(zhǔn)確率進(jìn)行比較評(píng)估后,,決定以準(zhǔn)確率優(yōu)先,,次而考慮識(shí)別時(shí)間,最終決定使用SVM(支持向量機(jī))作為本設(shè)計(jì)的手寫識(shí)別模型[8],。
3 手寫筆跡圖像識(shí)別機(jī)器人整體設(shè)計(jì)
在整體設(shè)計(jì)中,,首先選擇NRF2401L無(wú)線通信模塊完成了通信硬件的搭建,并根據(jù)其配置表進(jìn)行命令配置完成了硬件的初始化。上位機(jī)方面,,使用Python結(jié)合win32u庫(kù)和serial庫(kù)完成上位機(jī)讀取識(shí)別程序的設(shè)計(jì),。下位機(jī)方面,使用串口結(jié)合下位機(jī)處理硬件完成數(shù)字接收處理的設(shè)計(jì),。整個(gè)系統(tǒng)構(gòu)成一套上位機(jī)對(duì)手寫圖像進(jìn)行識(shí)別,,通過(guò)無(wú)線發(fā)送至下位機(jī)處理的手寫筆跡圖像識(shí)別機(jī)器人。
4 結(jié)論
通過(guò)本設(shè)計(jì)與研究,,取得的主要結(jié)果如下:
(1)選擇了MNIST手寫數(shù)字圖片庫(kù)作為手寫識(shí)別模型的原始數(shù)據(jù),,設(shè)計(jì)實(shí)際情況完成了MNIST庫(kù)圖像的處理和轉(zhuǎn)化,從而得到了原始的訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集,。
(2)分別對(duì)SVM(支持向量機(jī)),,BP神經(jīng)網(wǎng)絡(luò),KNN(K近鄰)3種分類模型進(jìn)行了對(duì)比,,并使用Python分別對(duì)3種模型進(jìn)行了構(gòu)建和測(cè)試,。通過(guò)3個(gè)模型的訓(xùn)練時(shí)間、測(cè)試時(shí)間以及準(zhǔn)確度等指標(biāo),,比較了3個(gè)模型的優(yōu)劣性,,最終以準(zhǔn)確率優(yōu)先原則選取準(zhǔn)確度最高的SVM(支持向量機(jī))作為手寫數(shù)字識(shí)別模型并進(jìn)行應(yīng)用。
(3)使用NRF2401L無(wú)線通信模塊和串口功能構(gòu)建了上位機(jī)和下位機(jī)之間無(wú)線通信,,完成了二者的對(duì)接,,將單片機(jī)在電子硬件方面的處理和計(jì)算機(jī)對(duì)手寫圖片的識(shí)別進(jìn)行了結(jié)合[9]。
(4)實(shí)現(xiàn)了Python設(shè)計(jì)上位機(jī)應(yīng)用程序,,功能包括圖像讀取,、圖像預(yù)處理以及轉(zhuǎn)化、圖像識(shí)別,、串口發(fā)送,、異常處理等。完成了整個(gè)上位機(jī)的功能,,構(gòu)成了一套上位機(jī)手寫圖像識(shí)別,,完成了整個(gè)設(shè)計(jì)。
參考文獻(xiàn)
[1] 周志華.機(jī)器學(xué)習(xí)[M].北京:清華大學(xué)出版社,,2016.
[2] 麥好.機(jī)器學(xué)習(xí)實(shí)踐指南案例應(yīng)用解析[M].北京:機(jī)械工業(yè)出版社,,2016.
[3] 夏良正.數(shù)字圖像處理[M].南京:東南大學(xué)出版社,1999.
[4] 楊楠.基于Arduino的智能產(chǎn)品設(shè)計(jì)研究[D].無(wú)錫:江南大學(xué),,2014.
[5] 宋飛.基于模板匹配算法的字符識(shí)別系統(tǒng)研究與實(shí)現(xiàn)[D].合肥:合肥學(xué)院,,2007.
[6] 吳忠,朱國(guó)龍,,黃葛峰,,等.基于圖像識(shí)別技術(shù)的手寫數(shù)字識(shí)別方法[J].計(jì)算機(jī)技術(shù)與發(fā)展,,2011,21(12):48-51.
[7] 柳回春,,馬樹(shù)元,,吳平東,,等.手寫體數(shù)字識(shí)別技術(shù)的研究[J].計(jì)算機(jī)工程,,2003(4):24-61.
[8] 徐勛華,王繼成.支持向量機(jī)的多類分類方法[J].微電子學(xué)與計(jì)算機(jī),,2004,,21(10):149-152.
[9] 劉建明,唐霞,,李龍.基于機(jī)器學(xué)習(xí)的VoIP流量在線識(shí)別系統(tǒng)[J].電子技術(shù)應(yīng)用,,2016,42(8):133-137.
作者信息:
王 磊1,,張翠霞2
(1.北京聯(lián)合大學(xué) 自動(dòng)化學(xué)院,,北京100101;2.北京聯(lián)合大學(xué)工科綜合實(shí)驗(yàn)教學(xué)示范中心,,北京100101)