符 哲 夫
(復旦大學 上海 200433)
模糊數(shù)字識別是深度學習與模式識別下一個重要的分支。這項技術能夠運用在財務報表、車牌識別、快遞分揀、犯罪證據(jù)判斷、試卷成績統(tǒng)計、銀行識別單據(jù)、統(tǒng)計金融數(shù)據(jù)等生活中方方面面,有著十分廣闊的應用前景[1]。在全球數(shù)據(jù)化和人工智能快速發(fā)展的背景下,對于模糊數(shù)字識別研究的需要變得十分迫切,研究出準確率高并且運行時間短的識別算法有重要的意義和價值。Ghosh等[1]經(jīng)過實驗,發(fā)現(xiàn)結(jié)合注意力處理能提高大規(guī)模分類任務中CNN的性能。Fu等[2]提出了殘差注意力網(wǎng)絡可以提高特征提取性能。Sonbhadra等[3]共同提出了一種基于內(nèi)容的模糊數(shù)字識別算法,這種算法可以很好地應對圖像邊界不清的問題。Zoran等[4]提出一種YOLO模型的檢測圖片內(nèi)容算法,最后的結(jié)果可以放到神經(jīng)網(wǎng)絡的模型中,完成圖像的識別。這種模型的檢測速度十分快速,同時還有非??捎^的準確率,但是其模糊數(shù)字的邊界處理有一定的不足之處。Wang等[5]合作研究,開發(fā)出一種文本的數(shù)圖像檢測模型,使用檢測到的數(shù)字特征,再定位到數(shù)字字符的區(qū)域,最后把結(jié)果利用二值化的技術后傳送到一個全連接卷積神經(jīng)網(wǎng)絡中進行檢測。Ma等[6]研究出了數(shù)字邊緣檢測模型,這種模型利用了滑動窗口,可以采用共享權重的方式提取特征,并利用卷積神經(jīng)網(wǎng)絡加以檢測,能取得一定效果,但是準確率和時間復雜度仍有提高的空間。
本文主要提出基于注意力機制的SCDM模塊,用來應對數(shù)字圖像識別中可能出現(xiàn)模糊不清難以提取特征的情況[7]。SCDM模塊具體可分為通道域(Channel)模塊和空間域(Space)模塊。使用該模塊能夠有效地利用圖像中的通道注意力信息和空間注意力信息[8],對模糊數(shù)字圖像的特征加以提取。本文介紹模SCDM模塊的基本結(jié)構(gòu)與各模塊特征的計算方法,并經(jīng)過實驗驗證,在ResNet網(wǎng)絡上使用該模塊,相較于之前的模糊數(shù)字識別方法準確率能進一步提高。
通道域的中心思想是,使用特征中通道之間的聯(lián)系,生成新的通道注意力圖I′,并對通過卷積得到的特征圖各通道層分配以不同的權重。這顯示了該層所表示特征與目標信息的關聯(lián)性。相應地,權重越大,這個層所表示的信息越重要,關聯(lián)性的程度越高。權重越小,這個層所表示的信息就越不重要。獲得k維卷積層后,通過壓縮函數(shù)、Sigmoid函數(shù)和比例函數(shù)等獲得各維的權重w1,w2,…,wk。這些權重將與各通道特征相乘,以獲得新的特征[9]。通道注意力模塊如圖1所示。
圖1 通道注意力模塊
如果將I∈RC×H×W的特征指定為輸入,SCDM將按先后順序得到一維通道注意力圖Mc∈RC×1×1以及二維空間注意力圖Ms∈R1×H×W。整個特征提取的過程可以概括為兩個階段:
I′=Mc(I)?I
(1)
I″=Mc(I′)?I′
(2)
(3)
(4)
通道域模塊注意力特征圖的計算方法為:
MC(F)=σ(MLP(AvgPool(F))+MLP(MaxPool(F)))
(5)
通道模塊的操作過程可以概括為以下:
(1) 對于一個中間特征圖作為輸入,利用兩種池化方式將每一個二維通道圖映射為一個特征量α,α一定程度上具有全局的感受野。最終獲得向量的維度k和中間特征圖的通道數(shù)是一致的。
(2) 利用共享的多層感知器MLP進行調(diào)整,可以更好地擬合特征通道間的聯(lián)系,同時也可以實現(xiàn)輕量級運算,降低時間復雜度。再輸出經(jīng)過調(diào)整的特征F。
(3) 將每個向量各個元素進行逐項相加,映射成一個一維向量F′,再輸入到Sigmoid函數(shù),這樣可以得到位于[0,1]區(qū)間內(nèi)的向量。
(4) 把每一個通道與輸入的中間特征圖進行加權運算,實現(xiàn)初始特征在通道的每一個維度上重新標定。
空間域的設計思路是通過注意力機制,關注空間中的位置特性,將原來圖像中的空間特征映射到其他空間中,并保存重要的信息[13]??臻g注意力模塊如圖2所示。
圖2 空間注意力模塊
對于某個確定的通道域的特征I″,計算空間注意力的主要的思路與通道注意力的思想方法類似。要想獲得空間注意力圖,需要計算一個二維向量β,該向量對全部區(qū)域所有像素點進行通道賦值操作,然后將這個二維向量β輸入到一個卷積層當中并獲得輸出β′。最終將注意力圖通過Sigmoid函數(shù)進行歸一化[14]。
因為卷積操作是把不同的通道和空間信息融合在一起來獲得圖像特征,因此模糊數(shù)字識別中采用這個混合模塊來突出沿這兩個重要維度(空間域和通道域)的有價值特征[15]。為此,將空間域模塊和通道域模塊串聯(lián)使用,從而每個卷積模塊都可以單獨訓練在通道域和空間域上的不同參數(shù)。該模塊能夠利用學習強化或削減某些信息,對于網(wǎng)絡內(nèi)的特征信息的提取具有重要的意義。
空間注意力向量Ct的定義為:
Ct=f(v,ht-1)
(6)
式中:f表示的是注意力映射函數(shù);v表示卷積層獲得的輸入圖像的特征;ht-1表示在t-1時隱藏層獲得的狀態(tài)。
之后用一個神經(jīng)網(wǎng)絡層把圖像特征和隱藏層狀態(tài)一起輸入,最后添加Softmax函數(shù)用來獲得圖片的空間注意力分布。
at=ktatanh(kvv+(khht-1))
(7)
γt=softmax(at)
(8)
式中:kta、kv、kh這幾個參數(shù)都需要通過神經(jīng)網(wǎng)絡學習獲得的。
實驗環(huán)境:本文中實驗均采用的是如下硬件環(huán)境:CPU為Intel(R) Core i7- 920,主頻2.66 GHz,16 GB物理主存,GPU為NVIDIA GTX 1080,運行的操作系統(tǒng)為ubuntu18.04,并通過Python3.6環(huán)境下編譯。
使用數(shù)據(jù)集:為了驗證本文提出模塊的有效性,利用了多個數(shù)據(jù)集進行實驗。
(1) SVHN[16],這是源自于Google街景拍攝的數(shù)字數(shù)據(jù)集,數(shù)據(jù)豐富,包含約30 000幅模糊數(shù)字圖像。經(jīng)過優(yōu)化后,對于圖片的預先處理要求比較低。數(shù)據(jù)集含有兩個變量X代表圖像,訓練集X的張量需要(samples,width,height,channels)等參數(shù),所以需要進行轉(zhuǎn)換。由于直接調(diào)用cifar 10的網(wǎng)絡模型,數(shù)據(jù)需要先做個歸一化,將所有像素除以255,另外原始數(shù)據(jù)0的標簽是10,這里要轉(zhuǎn)化成0,并提供one_hot編碼。
(2) MNIST[17],這是NIST共享集中的一個子數(shù)據(jù)集,已在特征方面優(yōu)化過,并添加高斯模糊處理。數(shù)據(jù)集包含了0~9共10類手寫數(shù)字圖片,每幅圖片都做了尺寸歸一化,都是28×28大小的灰度圖。每幅圖片中像素值大小在0~255之間,其中:0是黑色背景;255是白色前景。
模糊數(shù)字識別的任務里最通用的評價參數(shù)是識別準確率,本文也以圖像識別準確率進行識別方法性能評估[18],如式(9)所示。
(9)
式中:K表示測試集中模糊數(shù)字圖像的總數(shù);Ka表示測試集數(shù)字圖片預測正確的圖片數(shù)目,識別準確率可以比較好地反映識別的性能。
平均識別時間可由式(10)得到。
(10)
式中:n表示測試集中模糊數(shù)字圖像預測正確的總數(shù);Ti表示第i幅測試集數(shù)字圖片預測的消耗時間。平均識別時間也能反映識別的性能。
可以通過實驗說明該利用模塊的有效性。對于此部分研究,使用SVHN、MNIST等數(shù)據(jù)集的圖片當作訓練集并采用ResNet作為基礎架構(gòu)[12]。SVHN分類數(shù)據(jù)集包含用于訓練的8 000幅圖像和用于驗證的多種類別的12 000幅圖像。MNIST數(shù)據(jù)集則包括了5 000幅數(shù)字圖像用于訓練,14 000幅圖像用于測試。采用以上數(shù)據(jù)集進行訓練,224×224規(guī)格的數(shù)字圖像在測試中被用作輸入。學習率從0.1開始,訓練批次為100,最大迭代次數(shù)20 000。
首先,使用ResNet模型在SVHN數(shù)據(jù)集上進行添加SCDM模塊的模糊數(shù)字識別實驗。先訓練采用最大池化的ResNet模型,再將ResNet模型中初始池化層的最大池化替換成了平均池化進行訓練[19]。在第一個實驗里,單獨利用通道注意力模塊,并且將壓縮比設置為16。實驗采用跨通道域的平均池化方法和最大池化方法以及利用標準1×1卷積將通道維數(shù)減小為1的通道池[20]。另外,內(nèi)核大小分別為3和7。在第二個實驗中,將之前討論的通道域模塊設置在空間域模塊的前面,這是為了將兩個模塊串聯(lián)使用。
利用MNIST數(shù)據(jù)集和SVHN數(shù)據(jù)集,復現(xiàn)文獻[6]的Inception模型的對比實驗,發(fā)現(xiàn)相比之前的文獻[6]的Inception模型,準確性提高了近2.56百分點,如圖3和圖4所示。另外還作了單獨添加空間注意力模塊的實驗結(jié)果對比??梢杂^察到加了空間注意力模塊能得到更高的準確率,這表明兩個子模塊一起用能得到更精確的提取特征??梢钥闯鎏砑訂瓮ǖ滥K和完整的SCDM模塊都能起到一定的效果。同時也能看出,如果只利用單通道模塊,而沒有利用完整的SCDM模塊,結(jié)果就會差一些,準確率比后者要低4.35百分點。這說明加入SCDM模塊是一種可以提升精度的方法,可以在不增加其他可學習參數(shù)的情況下將識別準確率從傳統(tǒng)方法的基礎上進一步提升。在通道注意力模型里同時利用了平均池化方法和最大池化方法,且壓縮比設置為8。
圖3 MNIST數(shù)據(jù)集上的識別準確率曲線圖
圖4 SVHN數(shù)據(jù)集在上的識別準確率曲線圖
以上的實驗結(jié)果表明,SCDM模塊在ResNet網(wǎng)絡中能夠提高識別的準確率,但是實驗過程僅僅只考慮到了ResNet的網(wǎng)絡架構(gòu)。為了進一步證明該模塊的泛化性,另外使用了AlexNet網(wǎng)絡模型,添加該模塊后進行對照實驗。學習率從0.1開始,訓練批次為100,最大迭代次數(shù)20 000。首先單獨利用通道注意力模塊,并且將壓縮比設置為16。再將通道域模塊與空間域模塊串聯(lián)使用。實驗結(jié)果如圖5所示。從實驗結(jié)果可以看出,在AlexNet網(wǎng)絡下使用SCDM模塊,準確率比之前的Inception模型提高2.15百分點。這也能看出,SCDM模塊在不同網(wǎng)絡下準確率均能取得一定的提升,但是在ResNet網(wǎng)絡使用該模塊提升的準確率較多。
圖5 SVHN數(shù)據(jù)集在AlexNet網(wǎng)絡上的識別準確率曲線圖
實驗結(jié)果數(shù)據(jù)表明在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡中通過引入該附加的模塊,能有效地利用注意力機制,能從傳統(tǒng)的基本網(wǎng)絡中獲得更高的準確率[21]。這說明用SCDM加強的網(wǎng)絡比基礎傳統(tǒng)網(wǎng)絡更有針對性地關注目標特征,同時也說明該模塊具有泛化性,在不同的網(wǎng)絡中都能使用。特征的提取性能提高主要是因為有效信息的關注和無效信息的弱化[6]。并且通過實驗也能發(fā)現(xiàn),在SVHN和MNIST數(shù)據(jù)集上目標提取識別的性能均有比較好的改進,這也說明了SCDM模塊能適用于多種場合的數(shù)據(jù)集,具有一定的普適性。在對比不同卷積核大小產(chǎn)生的影響時,發(fā)現(xiàn)在兩種情況下利用更大的卷積核將會產(chǎn)生更高的精度。這說明有必要用一個更大的感受野來確定空間上需要重點關注的區(qū)域[22]。因此在計算空間注意力時,可以利用通道數(shù)較多和內(nèi)核較大的卷積層來計算。使用空間注意力模塊時,設置卷積核大小為7。此外,也對比了使用該方法和文獻[6]方法的識別時間,如圖6所示。結(jié)果表明相差不大,均在1.01 s左右。這是由于這個模塊的運算量相比卷積網(wǎng)絡來說不太大,因此引入?yún)?shù)和提高計算時間的花費可以相對忽略[23]。
圖6 MNIST數(shù)據(jù)集上的識別時間曲線圖
表1 多種方法識別準確率對比
本節(jié)進行的實驗中,添加SCDM模塊的最終分類精確度最高為96.82%。比較現(xiàn)有的方法,采用文獻[6]的Inception模型的方法是分類精確度較高的一種方法。與文獻[6]的方法相比較,本文方法分類準確度提升了2.56百分點。結(jié)果證實利用SCDM模塊能有效地提高模糊數(shù)字識別的準確率和有效性。
本文對于不同場景下的模糊數(shù)字,提出一種基于注意力機制的SCDM模塊。在進行訓練時應用該模塊,使中間的特征圖沿著空間與通道兩個不同的維度生成注意力特征圖,這樣能夠強化有效信息,削弱無效信息。在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡中通過引入該附加的模塊,能有效地突出空間和通道上的特征,從傳統(tǒng)網(wǎng)絡中獲得更高的準確率。并通過MNIST和SVHN數(shù)據(jù)集的實驗,驗證了運用該模塊獲得的識別準確率要高于已經(jīng)存在的方法,說明該模塊具有一定的泛化性與普適性,同時也證明了注意力機制的有效性。