李 堃, 王傳安, 呂雅潔, 陳雪敏
(安徽科技學(xué)院 信息與網(wǎng)絡(luò)工程學(xué)院,安徽 鳳陽 233100)
人臉表情識別是人工智能領(lǐng)域的一個重要研究方向,隨著注意力機制[1]的廣泛運用,研究者開始更多地使用基于注意力機制的方法開展表情識別研究。和傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)相比,基于注意力的模型可以在提高精度的同時,解決長距離依賴問題,并提升網(wǎng)絡(luò)的可解釋性[2]。在計算機視覺領(lǐng)域,注意力可以放大特征圖的差異性,提升關(guān)鍵部分的權(quán)重[3]。在圖像分類任務(wù)中,常用的注意力模型包括SENet、ECANet和CBAM等。
SENet率先將通道注意力[4]引入到圖像分類任務(wù)中,通過全局平均池化和2個全連接層提取通道注意力。由于采用降維操作,SENet在提取通道注意力時,在特征上有一定的損失。針對這一缺點,Wang等[5]提出了ECANet。該模型使用一維卷積代替SENet中的全連接層,在保留所有通道信息的同時,實現(xiàn)局部通道信息的交互。CBAM模型同時包括通道注意力和空間注意力[6]。模型分為CAM和SAM兩個部分,采用串聯(lián)的方式分別提取通道和空間注意力。在提取通道注意力時,CBAM也采用了先降維再升維的方式。
以上模型在圖像分類領(lǐng)域中均取得了很好的效果,因此研究者們開始將這些注意力模型引入表情分類。王玨[7]采用改進的ECANet構(gòu)建通道注意力,認為ECANet使用的全局平均池化不利于表情紋理特征的保留,因此為網(wǎng)絡(luò)并聯(lián)了一路全局最大池化,將2個通道特征向量融合得到新的通道特征。張鵬等[8]將多尺度特征和SENet相結(jié)合,先使用Inception結(jié)構(gòu)和空洞卷積獲得人臉表情特征在不同尺度上的信息,再利用SENet引入通道注意力,提升模型對于關(guān)鍵特征的表達能力。包志龍等[9]基于CBAM模型,先利用金字塔卷積實現(xiàn)表情多尺度特征的提取,再使用通道和空間注意力加強關(guān)鍵特征的權(quán)重。
以上方法均在表情識別過程中使用了基于SENet、ECANet或者CBAM的通道注意力,并且相較于傳統(tǒng)深度學(xué)習(xí)模型,在識別率上有了一定的提升。但是這些模型也存在一些缺點:SENet和CBAM因為在全連接層中使用降維操作,導(dǎo)致通道信息不可逆的損失;ECANet雖然不再對通道信息降維,但是使用一維卷積導(dǎo)致信息只在相鄰?fù)ǖ篱g融合,跨通道融合能力不足。因此,針對目前模型對特征利用不充分、跨通道交互能力不足的問題,提出了基于SENet的改進方法。
改進后的方法利用Inverted Bottleneck[10]代替原模型中全連接層先降維后升維的操作,更加充分地融合各個通道的注意力特征;將提取注意力時使用的ReLU激活函數(shù)替換為GELU,以優(yōu)化Inverted Bottleneck帶來的過度融合問題,并且GELU函數(shù)更加平滑,有更好的泛化能力和優(yōu)化能力,可以提高模型的性能;同時,為了體現(xiàn)不同通道特征圖對表情識別的貢獻度,利用信息熵[11]提取各個通道的信息量,并和Inverted Bottleneck的輸出融合,將信息量作為注意力提取的依據(jù)之一。最后對Inverted Bottleneck結(jié)構(gòu)中升維倍數(shù)進行研究并獲取最優(yōu)值。在CK+和Oulu-CASIA庫上的試驗表明,改進的模型可以更加充分地利用和融合不同通道的注意力特征。
Bottleneck是一種瓶頸結(jié)構(gòu),在ResNet和ResNeXt等網(wǎng)絡(luò)中被廣泛運用。該結(jié)構(gòu)中輸入的特征先被降低維度,再升維恢復(fù)至降維之前。與之相反,Inverted Bottleneck先將輸入特征的維度升高,再降維恢復(fù)至升維之前。這種結(jié)構(gòu)最早出現(xiàn)在MobileNetV2網(wǎng)絡(luò),在Transformer中也使用了這種結(jié)構(gòu)。受到MobileNetV2和Transformer的啟發(fā),文獻[10]中的ConvNeXt網(wǎng)絡(luò)提出了Inverted Bottleneck結(jié)構(gòu)。圖1對比了ResNeXt網(wǎng)絡(luò)中的Bottleneck和ConNeXt網(wǎng)絡(luò)的Inverted Bottleneck結(jié)構(gòu):圖1的左邊為ResNeXt中Bottleneck結(jié)構(gòu),右邊為ConNeXt的Inverted Bottleneck結(jié)構(gòu)。通過Inverted Bottleneck結(jié)構(gòu),ConNeXt網(wǎng)絡(luò)在ImageNet上的精度從80.5%增加到80.6%,為了更好地利用通道信息,本研究將Inverted Bottleneck引入SENet結(jié)構(gòu)中,并對維度放大倍數(shù)的取值做了優(yōu)化,選取最優(yōu)值。
圖1 Bottleneck和Inverted Bottleneck結(jié)構(gòu)Fig.1 Structure of Bottleneck and Inverted Bottleneck
GELU是Transformer中常用的激活函數(shù),可以看做是ReLU的平滑變體,是Dropout的思想和ReLU的結(jié)合。GELU函數(shù)具體形式如式(1)所示:
(1)
其中,μ表示正態(tài)分布的均值;σ示正態(tài)分布的標(biāo)準(zhǔn)差。
圖2左側(cè)為ReLU函數(shù)曲線,右側(cè)為GELU函數(shù)曲線??梢钥闯?和ReLU相比,GELU表現(xiàn)出了更好的連續(xù)性。在自然語言處理中GELU表現(xiàn)出很好的性能,因此ConvNeXt網(wǎng)絡(luò)將GELU激活函數(shù)用于計算機視覺任務(wù)并在精度上取得了一定的提升。
圖2 ReLU和GELU函數(shù)對比Fig.2 Comparison of ReLU and GELU functions
信息熵來源于信息論,用于描述一個系統(tǒng)中,某一屬性值的不確定性,當(dāng)熵值較高時,表明在系統(tǒng)中,該屬性值的不確定性高;反之該屬性值的不確定性低。對于離散型隨機變量X,信息熵的計算公式如式(2)所示:
(2)
其中,X用于表示1個隨機變量,x表示隨機變量X的某一取值,p(x)用于表示隨機變量X取值等于x時的概率。通過公式(2)可以看出,當(dāng)隨機變量X取值的可能性多時,其信息熵值就相對較高;隨機變量X取值的可能性少時,其信息熵值就相對較低。因此通過信息熵的值,可以衡量隨機變量X可能取值的豐富程度。
對于圖像而言,信息熵可以反映圖像某一特征在統(tǒng)計學(xué)上的豐富程度。在處理灰度圖像時,選定圖像的像素點灰度值分布特征計算圖像的熵,計算方式如式(3)所示:
(3)
其中,H表示圖像中灰度分布的信息熵,pi表示第i個灰度級的像素點在所有像素點中所占的比例,灰度圖像的像素取值區(qū)間為0~255。當(dāng)圖像中各個灰度級對應(yīng)像素點的數(shù)量較為均衡時,圖像的信息熵就較大;反之圖像的信息熵較小。本研究使用特征圖的信息熵衡量各通道的重要性。
為更加完整有效地提取和融合特征圖的通道信息,將SENet中提取通道注意力的2個全連接層改為Inverted Bottleneck結(jié)構(gòu)。針對充分融合導(dǎo)致的過擬合問題,將GELU激活函數(shù)引入Inverted Bottleneck結(jié)構(gòu)中,因為GELU函數(shù)更加平滑且兼具正則,所以在泛化能力和優(yōu)化能力上更強。同時,將信息熵和注意力相關(guān)聯(lián)作為先驗知識,基于信息熵計算各特征圖的信息豐富程度,并與Inverted Bottleneck輸出相融合作為最終的注意力,也為網(wǎng)絡(luò)引入了更多的歸納偏置。
SENet中提取通道注意力使用2個全連接層,第1個全連接層對輸入特征做了降維處理,第2個全連接層對特征維度進行還原。SENet中的2層全連接層可以看做是1個Bottleneck結(jié)構(gòu),這種結(jié)構(gòu)在保證性能的同時降低了計算量。但文獻[5]中通過實驗證明了降維操作對通道注意力機制的預(yù)測產(chǎn)生了副作用,通道和全連接層的直連效果要優(yōu)于Bottleneck。對表情識別而言,臉部微小的變化都可能對表情的類別產(chǎn)生影響,每個卷積核提取的特征圖都可能對表情識別至關(guān)重要,因此需要完整的保留各特征圖的信息。
文獻[5]認為全通道之間的依賴是不必要的,因此使用一維卷積,提取相鄰?fù)ǖ篱g的交互信息。但是對于表情識別任務(wù)而言,表情的表達是多種特征的組合,因此對不同特征圖做更加充分的融合就顯得非常重要。因此本研究使用Inverted Bottleneck結(jié)構(gòu),構(gòu)建通道間更加豐富、更加完整的信息交流。
在人臉表情識別過程中,需要充分挖掘不同特征組合對分類的影響,完全基于Inverted Bottleneck容易導(dǎo)致所有特征的過度融合進而影響整體性能。受到ConvNeXt的啟發(fā),本研究將ReLU函數(shù)替換為GELU。GELU函數(shù)相比較ReLU,其函數(shù)本身提供了隨機正則性,可以防止Inverted Bottleneck過于充分的融合導(dǎo)致的過擬合問題,能夠更好地判斷不同通道特征組合對表情的影響;同時GELU在0點附近的連續(xù)性更好,有助于保持小的負值,從而穩(wěn)定網(wǎng)絡(luò)梯度流。
Sinv=σ(W2G(W1Z))
(4)
其中,Sinv表示嵌入了Inverted Bottleneck的通道注意力權(quán)重,大小為1×1×C,C表示通道數(shù)。σ表示Sigmoid函數(shù);W1為全連接層1的權(quán)重矩陣,維度為C×(C×e);W2為全連接層2的權(quán)重矩陣,維度為(C×e)×C,e表示擴張系數(shù),是一個超參數(shù),在實驗中驗證最優(yōu)值。Z表示GAP操作的結(jié)果;G表示GELU激活函數(shù)。
在表情識別過程中,不同通道的特征圖對表情識別的貢獻是不同的,在提取通道信息的時候,僅通過全局平均池化并不能夠有效表達通道的信息。Wang等[12]在對神經(jīng)網(wǎng)絡(luò)進行剪枝操作的時候,以各特征圖的信息熵值為依據(jù),保留信息熵值高的特征圖而去除信息熵值低的特征圖。因為信息熵可以表達特征圖包含信息的豐富程度,因此信息熵值大的特征圖所包含的信息量比較高,對分類效果的影響也就會比較大。
受到文獻[12]的啟發(fā),本研究使用信息熵值來衡量表情信息的豐富程度。為驗證信息熵和表情信息的相關(guān)性,本研究將原表情圖像做分塊處理,橫豎各平均分為4份,得到4×4個子塊。分別計算圖像各個分塊的熵值。式(3)計算的是整張圖片的信息熵值,計算各個子塊的信息熵值方法和計算整張圖片的信息熵值相同,但是把計算區(qū)域限制在分塊之內(nèi),如式(5)所示:
(5)
當(dāng)p為0時,設(shè)0log0=0。其中,Hb表示第b個子塊的熵值,p(b,i)表示在第b個子圖像中,第i個灰度級的像素點在整個小塊所有像素點中所占的比例。原表情圖和通過公式6計算各個子塊信息熵后得到的分塊效果如圖3所示。
圖3 信息熵分塊效果Fig.3 Information entropy blocking effect
計算熵后的圖像中,亮度較高的區(qū)域為信息熵值較大的區(qū)域,亮度較低的區(qū)域為信息熵值較小的區(qū)域。可以看出,對表情貢獻度高的眼睛、嘴巴等區(qū)域包含的信息更加豐富,對應(yīng)的子塊亮度較高。將圖3的效果推廣到不同特征圖之間的比較,則可以基于信息熵來判斷特征圖的重要性。
CNN可以使用更少的數(shù)據(jù)得到更好的模型,是因為其具備局部性和平移等變性2個歸納偏置。而認為信息熵高的特征圖對表情識別貢獻更大應(yīng)該給予更高的權(quán)重,也可以看作是為情識別領(lǐng)域的歸納偏置。因此融合信息熵的通道注意力可以獲得更多的先驗知識。特征圖的像素點數(shù)據(jù)和原圖相比,數(shù)據(jù)更加分散,為減小特征圖信息熵的計算量,先根據(jù)特征圖信息將所有像素點的數(shù)值映射到1個整數(shù)區(qū)間[0,K]。映射方式如式(6)所示:
(6)
其中,xmap表示特征圖像素點映射的結(jié)果,ceil(·)函數(shù)表示向上取整函數(shù),xi,j表示特征圖第i行第j列個像素點,min(·)表示取最小值函數(shù),b的計算方式如式(7)所示:
(7)
其中,max(·)表示取最大值函數(shù),K即為映射區(qū)間的上界。K的取值參考文獻[12],設(shè)為32。
項目質(zhì)量的好與壞決定于施工總承包單位的實力,整體管理水平,作為建設(shè)單位,控制項目質(zhì)量的關(guān)鍵點在于施工總承包單位的選擇。EPC建造模式的總承包單位可以更加科學(xué)地設(shè)計和管理,使承包單位不斷的比較、對照、擇優(yōu)。傳統(tǒng)建設(shè)流程通常是要等到施工圖設(shè)計出圖后,才進行施工承包商單位招標(biāo),這樣會造成開工日期推遲,從而項目總建設(shè)周期也會因此而加長,同時施工總承包單位不能介入施工圖設(shè)計就會對質(zhì)量控制帶來許多不利。
基于式(6)~(7),特征圖信息熵的計算公式如式(8)所示:
(8)
其中,Xl,m表示第l層卷積第m個通道特征圖,E(·)表示Xl,m的信息熵;Hl和Wl分別表示第l層特征圖的高和寬;f(·)函數(shù)用于計算信息熵的統(tǒng)計直方圖。
為了便于提取的信息熵值可以被訓(xùn)練,將通道信息熵輸入1個全連接層并做激活,將結(jié)果和Inverted Bottleneck提取的信息融合作為最終的通道注意力。融合后的通道注意力既包含了特征圖的平均特征,又包含了信息量特征,可以更好地為通道加權(quán)。
結(jié)合Inverted Bottleneck、GELU和信息熵的注意力提取模型,處理過程如圖4所示。
圖4 模型流程圖Fig.4 Model flow chart
圖4中X表示輸入的特征圖,Cl、Hl、Wl分別表示第l層特征圖的通道數(shù)、高度和寬度;Entropy表示對特征圖求熵,AVG表示全局平均池化。FC表示全連接層,用于訓(xùn)練通道信息熵,FC的輸入和輸出均為Cl。FC之后的激活函數(shù)為Sigmoid函數(shù)。注意力融合過程中的符號“×”表示特征向量間的點乘。
特征圖輸入注意力提取模型后分為兩路,分別基于信息熵和原始信息訓(xùn)練出兩組注意力向量,然后將二者相乘得到最終的通道注意量,并和原輸入特征圖X逐點相乘,得到最終的輸出。
實驗基于Ubuntu系統(tǒng)、Pytorch 1.12.0和Python 3.8,顯卡為NVIDIA GeForce RTX 3090,顯存為24 G,CPU為AMD EPYC 7302。數(shù)據(jù)集選擇了CK+和Oulu-CASIA表情庫,這2個集合都是目前人臉表情識別應(yīng)用較為廣泛的數(shù)據(jù)集。
CK+表情庫包含了123個被拍攝者的593個表情序列。本研究從中選擇了327有標(biāo)簽的序列,將每個序列的最后3張圖像用于實驗,共獲得981張表情圖像。這些圖像分為7類,包含135張憤怒、57張蔑視、177張厭惡、75張恐懼、207張高興、84張悲傷和246張驚訝的表情圖像。
Oulu-CASIA表情庫由80位被拍者在3種光照強度下的表情序列組成,這些序列包含6種表情,分別為:憤怒、厭惡、恐懼、高興、悲傷和驚訝。每種強度各包含了480個序列。每個序列也是由表情從初始到峰值變化的圖像組成。選取每個序列最后3張用于試驗,共獲得1 440張表情圖像,每類表情均為240張。
在實驗前,對2個庫的圖像做了預(yù)處理:先轉(zhuǎn)為灰度圖,再通過MTCNN檢測人臉,最終剪裁成224×224的大小。圖5為預(yù)處理后各類表情示例,其中第1行是CK+庫處理后的圖像,第2行為Oulu-CASIA庫處理后的圖像。
圖5 預(yù)處理表情圖像示例Fig.5 Examples of preprocessing facial expression image
實驗時,批量大小設(shè)置為32,epoch次數(shù)為50,優(yōu)化器為Adam,初始學(xué)習(xí)率為0.001,每10輪迭代學(xué)習(xí)率減小10倍。主干網(wǎng)絡(luò)為ResNet18。試驗時對數(shù)據(jù)做了增強,將集合內(nèi)所有圖片按照[-15°,-10°,10°,15°]進行旋轉(zhuǎn),旋轉(zhuǎn)后數(shù)據(jù)集擴展為原來的5倍。增強后,CK+集合擴展為4 905張圖像,Oulu-CASCI擴展為1 440張圖像。
因為2個表情庫只包含表情序列,并未區(qū)分訓(xùn)練集和測試集。因此本研究在2個庫上使用了十折交叉法,試驗過程中嵌入了Inverted Bottleneck和GELU的注意力模塊放置于ResNet18網(wǎng)絡(luò)的殘差模塊之后,如圖6所示,CA模塊被置于殘差模塊之后,通過CA模塊獲取的注意力和殘差模塊輸出融合后,再與原特征X融合。
圖6 嵌入位置Fig.6 Embedding position注:X表示輸入特征圖;CA表示通道注意力模塊;Y表示輸出特征。
在Inverted Bottleneck中e是超參數(shù),將提出的通道注意力模塊嵌入ResNet18進行實驗,并對超參數(shù)e的取值進行測試。表1中的Inv表示嵌入Inverted Bottleneck的網(wǎng)絡(luò),Inv后的數(shù)字表示e的取值,結(jié)果如表1所示??梢钥闯?在CK+庫上直接使用Inverted Bottleneck模塊,在e為1的時候識別率高于直接使用SENet,e為其他值時略低于SENet,說明e較大時產(chǎn)生了過度融合現(xiàn)象,而當(dāng)加入GELU函數(shù)后,只有e為1時識別率有所下降,其他情況下識別率均有所提高。在Oulu-CASIA庫上,在e為4的時候識別率略低于直接使用SENet,其他情況下均高于SENet,加入GELU函數(shù)后,從e為4開始,識別率均有所提升。2個庫均是在e取8,并和GELU結(jié)合使用時,性能達到最佳。
表1 取不同e值識別率
為驗證本方法的有效性,將本模型和其他模型做了對比。本模型中的Inverted Bottleneck使用識別率最高的Inv8+GELU的組合。對比結(jié)果分別如表2所示,可以發(fā)現(xiàn),在CK+庫上本研究方法識別率高于其他方法。在Oulu-CASIA上本研究方法僅低于文獻[18]的方法,并高于其他方法。因此基于Inverted Bottleneck和GELU的通道注意力可以提升人臉表情識別模型的性能。
表2 CK+對比結(jié)果Table 2 Comparison of CK+
CK+庫上實驗結(jié)果的混淆矩陣如圖7所示。其中驚訝的識別率最高,達到了99.59%。高興和厭惡等表情也取得了較高的識別率,分別達到了98.94%和98.87%。以上表情識別率表現(xiàn)很好,是因為表情特征明顯且樣本數(shù)量較多。蔑視、恐懼和悲傷的識別率較低,其中蔑視最容易被誤識別為悲傷,恐懼容易被誤識別為高興,悲傷容易被誤識別為生氣。這是因為這些表情的樣本數(shù)量較少,且和其他表情的相似性也很高。在Oulu-CASIA庫上,當(dāng)e取8時實驗結(jié)果的混淆矩陣如圖8所示。其中高興和驚訝表情的特征最明顯,因此識別率也最高,分別達到了98.08%和96.25%。生氣和厭惡表情識別率最低,分別為86.08%和87.17%,且這2種表情彼此間的誤識別率也是最高,這是因為在Oulu-CASIA庫上,這2種表情的相似度很高,人工分辨也很難判斷。
圖7 CK+混淆矩陣Fig.7 CK+Confusion matrix
圖8 Oulu-CASIA混淆矩陣Fig.8 Oulu-CASIA Confusion matrix
為進一步驗證模型的有效性,對本研究方法進行了消融實驗,結(jié)果如表3所示。首先直接使用SENet和ECANet進行表情識別;然后將SENet中的ReLU函數(shù)改為GELU開展實驗;再基于3.3節(jié)中的Inv1和Inv8開展實驗;然后將Inv8和GELU相融合進行實驗;最后將基于信息熵的通道信息和Inv8與GELU結(jié)合進行實驗。表3中直接使用的SENet和ECANet的識別率較低且低于Inv1,說明在表情識別任務(wù)上跨通道信息的充分融合非常重要,而保留完整的通道信息有助于模型性能的提高。SENet+GELU方法的識別率在2個庫上也較低,說明對降維后的通道信息使用GELU會導(dǎo)致性能的下降。Inv8+GELU組合高于Inv8,說明在充分融合通道信息的基礎(chǔ)上,引入隨機正則能夠更加有效地提升方法的精度。最后,基于信息熵+Inv8+GELU的組合取得了最高精度,說明將信息熵融入注意力提取過程能夠更加有效地提升網(wǎng)絡(luò)性能。
表3 消融實驗
表3 Oulu-CASIA對比結(jié)果
表情是人類內(nèi)心復(fù)雜情感的表達,面部不同區(qū)域的動作及其幅度的組合都會對表情產(chǎn)生重要的影響。針對這一特點,在表情識別任務(wù)中,需要完整保留卷積核提取的每一類特征,并對不同特征的組合進行充分的融合;同時,考慮到不同特征圖包含的信息量不同,因此依據(jù)平均池化獲取通道信息并不能夠有效體現(xiàn)通道信息的差異性。目前經(jīng)典的通道注意力模塊均不能滿足以上需要:SENet通道注意力因為使用了降維操作導(dǎo)致部分通道信息損失;ECANet因為僅僅捕捉了相鄰?fù)ǖ佬畔?dǎo)致了特征融合不夠充分。因此本研究提出了基于信息熵和Inverted Bottleneck的表情識別方法,首先利用信息熵提取各通道特征圖的信息量信息,然后基于全局平均池化保留特征圖的原始信息,將2組信息分別訓(xùn)練后得到2組注意力向量,融合后對原特征圖加權(quán)得到最終的輸出特征。本方法中的信息熵將特征圖信息量作為注意力的計算依據(jù),能夠更好地反應(yīng)不同特征圖的重要程度,而Inverted Bottleneck能夠更好地保留和融合原通道信息,引入GELU函數(shù)則可以防止信息的過度融合。實驗結(jié)果也驗證了本方法的有效性。在后續(xù)研究中,將進一步完善注意力模塊,在通道注意力的基礎(chǔ)上引入空間注意力,以捕捉同一特征圖不同區(qū)域?qū)Ρ砬樽R別的影響。