高云華,劉奔
(江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院,江蘇南京,211168)
上世紀(jì)60年代,Hubel等人通過(guò)對(duì)貓視覺(jué)皮層細(xì)胞的研究,提出了感受野這個(gè)概念,到80年代,F(xiàn)ukushima在感受野概念的基礎(chǔ)之上提出了神經(jīng)認(rèn)知機(jī)的概念,第一次在技術(shù)上實(shí)現(xiàn)了卷積神經(jīng)網(wǎng)路。卷積神經(jīng)網(wǎng)絡(luò)(CNN),顧名思義,內(nèi)部包含卷積結(jié)構(gòu),同時(shí)具有深度前饋。卷積神經(jīng)網(wǎng)絡(luò)需要大量用于訓(xùn)練的數(shù)據(jù),但其依靠三個(gè)關(guān)鍵的操作大大減少深層網(wǎng)絡(luò)占用的內(nèi)存量,分別是局部感受野,權(quán)值共享,pooling層,有效的減少了網(wǎng)絡(luò)的參數(shù)個(gè)數(shù),緩解了模型的過(guò)擬合問(wèn)題[1]。在二十一世紀(jì)后,隨著深度學(xué)習(xí)理論的提出和數(shù)值計(jì)算設(shè)備的改進(jìn),現(xiàn)在CNN已經(jīng)成為眾多科學(xué)領(lǐng)域的研究熱點(diǎn)之一,并根據(jù)其學(xué)習(xí)的特征可以進(jìn)行監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)。特別是在模式分類(lèi)領(lǐng)域,CNN可以不用對(duì)圖像進(jìn)行復(fù)雜的前期處理,如去噪、二值化、腐蝕、膨脹、邊緣檢測(cè)、分割等步驟,因此在使用中更為便捷。近年來(lái)卷積神經(jīng)網(wǎng)絡(luò)的研究也在不斷突破,成為是圖像識(shí)別領(lǐng)域的核心算法之一,在日益興起的熱門(mén)領(lǐng)域中應(yīng)用極其廣泛,并在學(xué)習(xí)數(shù)據(jù)充足時(shí)有穩(wěn)定的表現(xiàn)[2]。
卷積神經(jīng)網(wǎng)絡(luò)模型主要包括輸入層、卷積層、池化層、全連接層和輸出層,網(wǎng)絡(luò)結(jié)構(gòu)如圖1。卷積神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺(jué)及圖像處理領(lǐng)域應(yīng)用較廣,因此輸入層信息為平面上的二維像素點(diǎn)和RGB通道。為了提取的特征更加豐富,網(wǎng)絡(luò)模型通常由一個(gè)或多個(gè)卷積層、池化層以及全連接層構(gòu)成。在一些更為現(xiàn)代的算法中可能有Inception模塊、殘差塊(residual block)等復(fù)雜構(gòu)筑。卷積神經(jīng)網(wǎng)絡(luò)整體架構(gòu)是一種多層監(jiān)督學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),通過(guò)學(xué)習(xí)大量的輸入輸出樣本,用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,再根據(jù)新的輸入,輸出擬合之后的結(jié)果。經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)模型有LeNet-5、AlexNet、VGG、GoogleNet、ResNet以及DenseNet等,這幾種網(wǎng)絡(luò)在深度和復(fù)雜度方面依次遞增,但每個(gè)模型都有獨(dú)特的優(yōu)點(diǎn)與缺點(diǎn)[3]。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
識(shí)別前必須先獲得雙方棋子圖像,此時(shí)可將棋子放入白色背景的指定位置孔位,為方便后續(xù)圖像目標(biāo)提取與分割,在孔位邊沿有與棋子邊緣大小一致的黑色矩形。用搭載了攝像頭的樹(shù)梅派采集識(shí)別圖片,調(diào)用OpenCV中VideoCapture類(lèi)實(shí)例化一個(gè)視頻對(duì)象,用該類(lèi)的read方法讀取攝像頭視頻流,按鍵拍攝一幅圖像,使用imwrite方法將圖片保存[4]。獲取的圖片放入預(yù)先訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)模型中進(jìn)行棋面文字的預(yù)測(cè),按軍棋規(guī)則比較棋力大小,給出判定結(jié)果,根據(jù)需要可以有聲光電提示。模型的構(gòu)建與訓(xùn)練直接影響到最后的判斷結(jié)果,因此至關(guān)重要。
本文使用的模型參照AlexNet模型結(jié)構(gòu),如圖2所示,它是8層網(wǎng)絡(luò)結(jié)構(gòu),有5個(gè)卷積層和3個(gè)全連接層。卷積層參數(shù)有3個(gè):卷積核大小、步長(zhǎng)和填充,三者共同決定了卷積層輸出特征圖的尺寸,是卷積神經(jīng)網(wǎng)絡(luò)的超參數(shù)。其中卷積核大小可以人為指定,其值可以是小于輸入圖像尺寸的任意值,可根據(jù)經(jīng)驗(yàn)設(shè)定,但不宜過(guò)大或過(guò)小。本文中采集到的圖像通過(guò)OpenCV中的resize( )函數(shù)裁減為大小224*224,第一卷積層使用大的卷積核,大小為11*11,步長(zhǎng)為4, 采用最大池化,大小為3*3,步長(zhǎng)為2,,第二卷積層使用5*5的卷積核大小,步長(zhǎng)為1, 采用最大池化,大小為3*3,步長(zhǎng)為2,,剩余卷積層都是3*3的大小,步長(zhǎng)為1。激活函數(shù)使用ReLu ,激活函數(shù)的作用是能夠給神經(jīng)網(wǎng)絡(luò)加入一些非線性因素,使得神經(jīng)網(wǎng)絡(luò)可以更好地解決較為復(fù)雜的問(wèn)題。常用的激活函數(shù)有sigmoid和ReLu兩種。兩者比較,ReLu 激活函數(shù)能夠大幅提高運(yùn)算效率,減少運(yùn)算量,同時(shí)ReLU會(huì)使一部分神經(jīng)元的輸出為0,這樣就造成了網(wǎng)絡(luò)的稀疏性,并且減少了參數(shù)的相互依存關(guān)系,緩解了過(guò)擬合問(wèn)題的發(fā)生。另一方面在輸入信號(hào)較強(qiáng)時(shí),仍然能夠保留信號(hào)之間的差別[5]。采用最大池化,大小為3*3,步長(zhǎng)為2。3個(gè)全連接層,全連接層增加了dropout,為0.5,最終激活函數(shù)采用softmax,類(lèi)別為12*2(紅黑雙方棋子類(lèi)別各為12種)。
圖2 AlexNet模型結(jié)構(gòu)
數(shù)據(jù)集的數(shù)量與質(zhì)量對(duì)后續(xù)創(chuàng)建的神經(jīng)網(wǎng)絡(luò)模型預(yù)測(cè)準(zhǔn)確性有直接的影響,所以在初始階段數(shù)據(jù)集的準(zhǔn)備顯得尤為重要。目前市面上軍棋的品牌眾多,棋子大小尺寸和棋面字體顏色不統(tǒng)一,為了保證數(shù)據(jù)的多樣性,通過(guò)實(shí)物拍攝和網(wǎng)絡(luò)搜索,獲取了軍棋各類(lèi)棋子的樣本,經(jīng)篩選后獲得50例有效數(shù)據(jù),并將其進(jìn)行裁減,尺寸為224*224,數(shù)據(jù)樣本示例見(jiàn)圖3。
圖3 數(shù)據(jù)樣本示例
由于卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練時(shí)需要大量的數(shù)據(jù),通過(guò)拍攝和網(wǎng)絡(luò)圖片獲得的數(shù)據(jù)量有限,不能滿足卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)需要大量數(shù)據(jù)的要求,因此本文在獲取的原始圖片的基礎(chǔ)上采取數(shù)據(jù)增強(qiáng)的方法來(lái)擴(kuò)充以創(chuàng)建更加豐富的數(shù)據(jù)集。數(shù)據(jù)增強(qiáng)的方法目前主要是對(duì)圖像進(jìn)行相應(yīng)的幾何變換(平移、翻轉(zhuǎn)、旋轉(zhuǎn)、縮放)、調(diào)整亮度、調(diào)整對(duì)比度以及調(diào)整銳度等。每張圖對(duì)于網(wǎng)絡(luò)來(lái)說(shuō)都是不同的輸入,比如最初采集圖片的分辨率大小是256×256,若采用隨機(jī)裁剪成224×224的方式,那么一張圖最多可以產(chǎn)生32×32張不同的圖,數(shù)據(jù)量擴(kuò)充將近1000倍。雖然許多的圖相似度太高,實(shí)際的效果并不等價(jià),但僅僅是這樣簡(jiǎn)單的一個(gè)操作,效果已經(jīng)非凡。本文中將每類(lèi)棋子通過(guò)數(shù)據(jù)增強(qiáng)的方法擴(kuò)充到300例,再將其按8:2隨機(jī)劃分為訓(xùn)練集和測(cè)試集,詳見(jiàn)表 1。
表1 軍棋數(shù)據(jù)集
不同的棋子圖片按類(lèi)別放在對(duì)應(yīng)的數(shù)據(jù)集文件夾中,提取文件夾名稱,即為棋子類(lèi)別。模型訓(xùn)練好后,將獲得的對(duì)戰(zhàn)雙方圖片送入模型進(jìn)行預(yù)測(cè)。根據(jù)大棋吃小棋,同歸于盡或挖雷等軍棋玩法規(guī)則,工兵能排除地雷,其它棋子不能排雷;炸彈與任何棋子相遇時(shí)同歸于盡等軍棋玩法規(guī)則,設(shè)定比較判斷條件。將軍棋中的工兵、排長(zhǎng)、連長(zhǎng)、營(yíng)長(zhǎng)、團(tuán)長(zhǎng)、旅長(zhǎng)、師長(zhǎng)、軍長(zhǎng)、司令分別設(shè)定棋力為1~9,地雷、炸彈設(shè)為-1、-2,軍棋設(shè)為100,在程序中設(shè)定比較判斷條件,最后得到比較結(jié)果。
本系統(tǒng)采用卷積神經(jīng)訓(xùn)練模型,訓(xùn)練后的模型裝載到樹(shù)莓派中。樹(shù)莓派被譽(yù)為 “世界上最流行最便宜的小型電腦”,它只有一張信用卡那么大,放到手掌中也綽綽有余。樹(shù)莓派可以安裝多種Linux系統(tǒng)發(fā)行版,在嵌入式和物聯(lián)網(wǎng)領(lǐng)域應(yīng)用廣泛。目前樹(shù)莓派更新到第4代,如圖4所示,可根據(jù)需要配置1G、2G或4G內(nèi)存,支持雙屏4K輸出和H.265硬件解碼;處理器搭載博通1.5GHz的四核ARM Cortex-A72處理器,支持雙頻無(wú)線Wi-Fi(802.11ac)、藍(lán)牙5.0,提供兩個(gè)Micro HDMI 2.0視頻輸出接口;內(nèi)置千兆以太網(wǎng)口、MIPI DSI接口、MIPI CSI相機(jī)接口、立體聲耳機(jī)接口、2個(gè)USB 3.0和2個(gè)USB 2.0,擴(kuò)展接口是40針的GPIO。
圖4 樹(shù)莓派
樹(shù)莓派經(jīng)濟(jì)性高,但總體來(lái)說(shuō)性能比不上常見(jiàn)的個(gè)人電腦。因此訓(xùn)練模型的任務(wù)預(yù)先需要在電腦上完成,為了提高準(zhǔn)確率,訓(xùn)練時(shí)輸入圖片要達(dá)到一定數(shù)量,在采集到的圖像有限的條件下,可以采用之前提到的數(shù)據(jù)增強(qiáng)的方法。樹(shù)莓派中用Python語(yǔ)言編寫(xiě)軍棋判定的程序,并加載訓(xùn)練好的模型。本系統(tǒng)硬件部分完成軍棋雙方對(duì)戰(zhàn)時(shí)相碰棋子大小的判定,結(jié)構(gòu)如圖5所示,因此給樹(shù)莓派連接攝像頭,按下相應(yīng)的按鍵后將采集到圖像后送入訓(xùn)練好的模型中進(jìn)行棋面大小和屬于紅黑的判斷,為了增強(qiáng)效果和交互性,可以點(diǎn)亮指定顏色的燈進(jìn)行示意,并且也可以用語(yǔ)音播報(bào)勝負(fù)一方。
圖5 系統(tǒng)框圖
本文在Pycharm集成開(kāi)發(fā)環(huán)境中構(gòu)架AlexNet模型,以第一層卷積層構(gòu)建如下:
self.c1=Conv2D(filters=96,kernel_size=(11,11),strides=4, input_shape=input_shape)
self.b1=BatchNormalization()
self.a1=Activation(‘relu’)
self.p1=MaxPool2D(pool_size=(3,3),strides=2),其中input_shape=(224, 224, 3),最后一層全連接層為self.f3=Dense(num_classes, activation=’softmax’),其 中num_classes=24[6]。將訓(xùn)練集圖片進(jìn)行歸一化處理后送入AlexNet 進(jìn)行特征提??;將訓(xùn)練集圖片進(jìn)行歸一化處理后送入AlexNet 進(jìn)行特征提取;模型訓(xùn)練完成后,將測(cè)試集傳入訓(xùn)練好的模型進(jìn)行預(yù)測(cè),準(zhǔn)確率達(dá)到98.73%。
將軍棋隊(duì)?wèi)?zhàn)中雙方圖片放入經(jīng)過(guò)訓(xùn)練的模型中進(jìn)行棋面文字預(yù)測(cè),識(shí)別準(zhǔn)確,可達(dá)98.78%。再按照軍棋規(guī)則,即可自動(dòng)判定大小。軍棋棋面字體風(fēng)格各異,利用卷積神經(jīng)網(wǎng)絡(luò)能很好的應(yīng)對(duì)棋子潔凈度,光線的影響,具有較高的實(shí)用價(jià)值。
本文采用卷積神經(jīng)網(wǎng)絡(luò)中的AlexNet模型來(lái)對(duì)軍棋棋面文字識(shí)別,進(jìn)而實(shí)現(xiàn)雙方對(duì)戰(zhàn)時(shí)無(wú)需人工第三方即做出自動(dòng)判定,結(jié)果顯示識(shí)別準(zhǔn)確率較高。卷積神經(jīng)網(wǎng)絡(luò)關(guān)鍵處在于能獲取足夠豐富的數(shù)據(jù)集,后續(xù)為了達(dá)到更好的識(shí)別效果,應(yīng)當(dāng)盡可能多獲取數(shù)據(jù)并提升數(shù)據(jù)預(yù)處理方法,經(jīng)過(guò)訓(xùn)練得到更優(yōu)的模型,以此應(yīng)對(duì)識(shí)別過(guò)程中因外界因素,如棋面潔凈度,周?chē)饩€環(huán)境對(duì)預(yù)測(cè)結(jié)果的不良影響。