孔凡國, 李智宗, 劉慶, 黃偉
(1.五邑大學(xué) 智能制造學(xué)部,廣東 江門529020;2.深圳市圓夢精密技術(shù)研究院,廣東 深圳518110)
近幾年在大數(shù)據(jù)和強大計算能力的驅(qū)動下,人工智能技術(shù)得到了快速發(fā)展,深度學(xué)習(xí)被廣泛應(yīng)用到了各個領(lǐng)域,其中智能游戲設(shè)備也得到了廣泛關(guān)注。中國象棋是中國傳統(tǒng)的游戲,棋子的定位與識別是中國象棋機器人中的兩項關(guān)鍵技術(shù)。
針對棋子字符識別,杜俊俐[1]使用文字連通數(shù)、字符年輪統(tǒng)計等特征進行棋子識別,該方法具有方向無關(guān)性,很好地解決了棋子字符旋轉(zhuǎn)問題,但需要提前統(tǒng)計特征,步驟繁瑣、準(zhǔn)確率不高且通用性不高;馮元華[2]提出一種基于模板匹配字符識別方法,該方法的優(yōu)點是對模板方向無要求,但識別過程繁瑣,通用性不強;曾國強[3]通過對棋子進行閾值預(yù)處理得到文字骨架,然后使用凸包方法進行棋子識別,該方法處理速度快,但準(zhǔn)確率依賴閾值的設(shè)定,容易受光照變化導(dǎo)致預(yù)處理結(jié)果不理想;針對棋子的旋轉(zhuǎn)特性,郭曉峰[4]提出一種基于旋轉(zhuǎn)差分的中國象棋字符識別方法,準(zhǔn)確率提高到了98%,但該方法依賴旋轉(zhuǎn)角的設(shè)計以及定位精度,識別過程需要對每個棋子進行旋轉(zhuǎn)匹配,過程繁瑣而導(dǎo)致計算量大,且泛化能力差;段云濤[5]提出一種BP神經(jīng)網(wǎng)絡(luò)的棋子識別方法,通過Moravec算子計算字符的特征點,明顯的優(yōu)點是速度快,但對圖像邊緣和噪聲點敏感;韓燮[6]提出了基于卷積神經(jīng)網(wǎng)絡(luò)的棋子識別方法,該方法在大量圖像數(shù)據(jù)的驅(qū)動下,獲得較好的識別準(zhǔn)確率,但只是使用了經(jīng)典的網(wǎng)絡(luò)模型AlexNet[7],并未針對棋子旋轉(zhuǎn)特性作模型設(shè)計,最終準(zhǔn)確率也只達到了98%。
中國象棋字符識別中的難點在于字符的角度隨意性、字體類型多樣性和字符筆畫密集性,在這樣的難點下,使用手工設(shè)計特征的識別方法準(zhǔn)確率不高。相比傳統(tǒng)機器學(xué)習(xí)方法,性能更好的深度卷積神經(jīng)網(wǎng)絡(luò)模型相繼出現(xiàn),以AlexNet為開端,VGG、GoogleNet等模型相繼被提出,在圖像識別上取得了非常大的成果。針對中國象棋識別,提出一種基于可變形卷積棋子識別模型。
象棋機器人視覺系統(tǒng)包括棋子定位和棋子識別兩個主要部分。首先,利用相機采集圖像,對圖像進行預(yù)處理;然后對棋子區(qū)域進行定位,將定位到的棋子區(qū)域輸入到分類器進行棋子識別;最后將坐標(biāo)位置信息和棋子識別信息傳輸給象棋解法計算子系統(tǒng)。視覺系統(tǒng)算法處理流程如圖1所示,棋子定位和識別處理流程在PC端完成。
在棋子定位前,必須要先定位棋盤,只有棋盤確定了才能確定棋子相對棋盤的位置。為了減少系統(tǒng)在時間上的處理時間,將棋盤、機器人和相機的相對位置固定,那么棋盤的位置便可以直接給定,無需在圖像處理過程中再進行定位。

圖1 視覺系統(tǒng)算法流程
中國象棋主要有兩個顯著特點,即棋子形狀和字符顏色,字符顏色往往是紅色和綠色,因此可通過顏色對棋子進行分割。先將RGB顏色空間轉(zhuǎn)換到HSV空間,因為HSV顏色空間可以避免光照變化對顏色的影響,H、S、V三個分量分別表示色調(diào)、飽和度和明度。紅色的HS分量為(150~180,40~255),綠色的HS分量為(35~80,40~255),從這些分量值的范圍可以看到,要區(qū)分紅色和綠色,直接單獨使用H分量便可以,將滿足這種顏色的像素設(shè)為255,否則設(shè)置為0。
從得到的分割圖像可以看到,H分量可以將棋子較好地分割出來,然后通過形態(tài)學(xué)處理得到更好的棋子輪廓,在此輪廓的基礎(chǔ)上使用霍夫變換進行圓檢測,由于是二值圖像,在此使用霍夫變換較在灰度圖像下的計算量更少,檢測結(jié)果如圖2所示。

圖2 棋子定位效果
棋子識別是最關(guān)鍵的一步,正確地識別棋子對于棋局解法計算是至關(guān)重要的。針對中國象棋字符識別難點,構(gòu)建帶有Inception[8]模塊的卷積神經(jīng)網(wǎng)絡(luò)。該模型有兩大特點:首先,通過Inception模塊中不同大小的卷積核,以不同的感受野學(xué)習(xí)字符特征;其次,融入可變形卷積,使模型能夠?qū)W習(xí)擺放任意角度的字符。棋子識別過程首先將定位到的棋子使用外接矩形方式提取棋子區(qū)域,然后輸入到分類器中進行識別。
中國象棋棋子任意擺放的角度是棋子字符識別的一大挑戰(zhàn),通常會通過數(shù)據(jù)增強來構(gòu)建多樣性的數(shù)據(jù)集,但這樣的前提是假設(shè)模型變換是固定的,不利于具有位置變換模型的生成。深度學(xué)習(xí)模型應(yīng)該具備學(xué)習(xí)幾何變換的能力,因此通過增加中間層來學(xué)習(xí)數(shù)據(jù)的空間變換特征,構(gòu)建可變形卷積層(Deformed Convolution)。
2D卷積主要是通過矩形格子在特征圖上進行采樣,然后帶權(quán)重求和。對于特征圖上每一個位置,進行卷積操作后得到為y(p0),其表達式為

式中:R是矩形格子中每一位置的坐標(biāo);w表示卷積權(quán)重。
對于標(biāo)準(zhǔn)的矩形格子,對于每個位置增加兩個方向的偏移量,得到非矩形卷積。通過增加偏移量來達到可變形卷積的目的,在矩形格子上增加偏移進行采樣,然后作用在特征圖上,使得特征點發(fā)生了重新組合。對于矩形格子R,增加偏移Δpn后得到

采樣過程如圖3所示。其中,通道為N的特征圖經(jīng)過一個普通的二維卷積,得到通道為2N的卷積結(jié)果,結(jié)果中包含了x、y兩個方向的偏移,故為2N。其中x、y兩個方向的偏移屬于浮點型數(shù)據(jù)類型,而圖像像素坐標(biāo)是整型數(shù)據(jù),因此最終的偏移通過雙線性插值獲得。
在Inception-V3中,通過將較大的二維卷積核拆分成兩個較小一維的卷積,比如將5×5拆分成5×1和1×5,如此大大減少了參數(shù)量,同時增加了一層非線性變換,從而獲得一定的性能提升。Inception模塊中對輸入特征進行分路卷積,容易出現(xiàn)不同核卷積下的信息提取重復(fù),基于分組思想,將模塊改進為分組卷積方式,改進后的Inception模塊在參數(shù)量上有所降低,意味著降低了模型對硬件的要求,更適合實時識別過程。

圖3 可變形卷積采樣過程
棋子字符筆畫密集,而且筆畫間存在一定的關(guān)系,通過Inception模塊中不同大小的卷積核對字符進行采樣,從多個不同大小的感受野中學(xué)習(xí)字符筆畫特征,通過大的感受野學(xué)習(xí)遠距離的筆畫關(guān)系。搭建模型如圖4所示,主要使用兩個Inception模塊進行高語義特征提取,低層使用標(biāo)準(zhǔn)卷積提取簡單特征,隨后加入可變形卷積層提取字符形變特征等。Inception模塊中的ReLU函數(shù)替換為LeakyReLU函數(shù)。

圖4 棋子識別模型框架
中國象棋識別數(shù)據(jù)集是自建的數(shù)據(jù)集,包括了拍攝制作的棋子圖像以及網(wǎng)絡(luò)獲取的棋子圖像,包含了多種材質(zhì)和多種字符,數(shù)據(jù)集總大小為33 274張圖。一副中國象棋有10種字符,但由于附帶顏色而將某些字符分開,比如“紅馬”與“藍馬”,雖字符一樣,但需要將其分為2類,因此得到中國象棋共14個類別。訓(xùn)練集中除了紅色和綠色外,還增加了黑色,使得分類器能夠適應(yīng)不同顏色的棋子。為了增加棋子的復(fù)雜性和多樣性,經(jīng)過旋轉(zhuǎn)、裁剪、縮放等數(shù)據(jù)增強操作,效果如圖5所示。

圖5 數(shù)據(jù)增強結(jié)果圖
3.2.1 測試結(jié)果
本文實驗的計算機配置為Windows、CUDA9.0、cuDNN7.0、NVIDIA GTX1060。模型訓(xùn)練采用ADAM優(yōu)化器最小化交叉熵損失,對8250個棋子圖像樣本進行離線測試,評估標(biāo)準(zhǔn)采用查全率(Recall)、查準(zhǔn)率(Precision)和綜合性能F1-score。對于每一種棋子,TP(True Positive)表示將正類識別為正類的個數(shù),F(xiàn)P(False Positive)表示將負類識別為正類的個數(shù),F(xiàn)N(False Negative)表示正類識別為負類的個數(shù),TN(True Negative)表示負類識別為負類的個數(shù)。

測試結(jié)果如圖6所示,無論是簡單字符還是復(fù)雜字符,棋子識別準(zhǔn)確率都非常高,從準(zhǔn)率來看,只有“藍車”和“紅車”出現(xiàn)識別錯誤,其他都能準(zhǔn)確識別;從查全率來看,“藍將”、“藍卒”、“紅兵”和“紅相”出現(xiàn)了漏檢情況,即未被識別出來;但模型的f1-score得分全部為1,說明模型的綜合性能優(yōu)秀。

圖6 模型測試結(jié)果
在實時定位與識別的實驗中(如圖7),可以看到識別準(zhǔn)確率非常高,而且每種棋子的輸出置信度都在90%以上,具有非常好的魯棒性。

圖7 棋子識別效果局部圖
3.2.2 不同模型對比
實驗利用了LeNet-5、AlexNet、VGG16模型與本文方法進行對比,因為棋子識別類別少,故減少了這些模型的全連接層,避免過擬合。由表1看出,本文方法在棋子識別準(zhǔn)確率上明顯高于傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò),比AlexNet提高了近3%。模型使用全局池化代替了全連接層,大大減低了模型參數(shù),模型占內(nèi)存大小不足3 MB,比帶全連接層的卷積模型更加輕量化。在加入注意力模塊和可變性卷積后,模型準(zhǔn)確率大大提升,和其他文獻中的棋子識別方法對比,本文方法可以實現(xiàn)了更高的準(zhǔn)確率。

表1 不同模型在本文數(shù)據(jù)集上的識別效果對比
中國象棋識別是象棋機器人的關(guān)鍵技術(shù)之一,棋子擺放角度的任意性是棋子識別的最大難點,人工特征提取方法存在局限性,且模型魯棒性不強。提出一種卷積神經(jīng)網(wǎng)絡(luò)方法,以改進Inception模塊為基礎(chǔ)卷積方式,通過可變形卷積層提高普通卷積神經(jīng)網(wǎng)絡(luò)模型的形變能力,使模型具有更強的魯棒性,準(zhǔn)確率可達99.9%,可滿足象棋機器人棋局解算的輸入要求。