崔海生,侯晨杰
(1.重慶移通學(xué)院物理學(xué)院,重慶 401520;2.華中科技大學(xué)物理學(xué)院,湖北 武漢 430074)
作為交叉領(lǐng)域技術(shù),面部表情識(shí)別的發(fā)展可以推動(dòng)面部檢測(cè)[1]、面部重組[2]、動(dòng)畫模擬[3]、人機(jī)交互[4-5]在線教育等相關(guān)技術(shù)領(lǐng)域的進(jìn)步。近年來(lái),對(duì)于面部表情識(shí)別的研究逐步從傳統(tǒng)的人工設(shè)計(jì)特征方式轉(zhuǎn)換到以人工智能為基礎(chǔ)的研究,使面部表情識(shí)別技術(shù)取得了跨越式的發(fā)展。李勇等[6]通過(guò)改進(jìn)LeNet-5 卷積神經(jīng)網(wǎng)絡(luò),將從網(wǎng)絡(luò)中提取到的低層次特征和高層次特征相結(jié)合,構(gòu)建分類器,利用JAFFE 表情數(shù)據(jù)庫(kù)將識(shí)別率提高到了94.37%;CHANG 等[7]運(yùn)用卷積神經(jīng)網(wǎng)絡(luò)提取特征,并使用復(fù)雜性感知分類算法將數(shù)據(jù)集分為簡(jiǎn)單分類樣本子空間和復(fù)雜分類樣本子空間,降低了因情緒的不同表達(dá)和環(huán)境因素的變化而導(dǎo)致的面部表情識(shí)別的復(fù)雜性;GEORGESCU 等[8]將卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的自動(dòng)特征和由視覺(jué)文字包模型計(jì)算的手工特征相結(jié)合,采用局部學(xué)習(xí)框架來(lái)預(yù)測(cè)每個(gè)測(cè)試圖像的類標(biāo)簽;CHEN 等[9]提出一種強(qiáng)面部特征提取方法,提取表情表達(dá)峰值與中性面部表情值之間的差值特征,保留了中性面到表情面過(guò)渡中發(fā)生變化的細(xì)微面部部分;李軍等[10]提出了一種融合多尺度卷積神經(jīng)網(wǎng)絡(luò)和雙向長(zhǎng)短期記憶的模型,除了能提取到更加豐富的表情特征,還加強(qiáng)了特征信息的再利用;張?chǎng)╂旱萚11]針對(duì)實(shí)際情景中面部表情識(shí)別模擬和實(shí)驗(yàn)數(shù)據(jù)因來(lái)源于不同情景會(huì)導(dǎo)致識(shí)別性能明顯下降的問(wèn)題,提出了一種基于稀疏子空間遷移學(xué)習(xí)的跨域人臉表情識(shí)別的新方法;尹鵬博等[12]提出了一種基于卷積注意力的輕量級(jí)人臉表情識(shí)別方法,該方法中機(jī)器學(xué)習(xí)模型在人臉表情識(shí)別研究中對(duì)數(shù)據(jù)集需求量小、對(duì)硬件配置要求也較低。但以上方法在特定場(chǎng)景面部表情識(shí)別實(shí)踐中,普遍存在處理速度較慢的問(wèn)題。
人工智能作為一門新興的交叉學(xué)科,研究者們希望了解所謂智能的本質(zhì),并制造出一種能與人類智能相似的方式對(duì)各類請(qǐng)求做出響應(yīng)的智能機(jī)器[13],主要研究領(lǐng)域包括圖像識(shí)別、語(yǔ)音理解和溝通、機(jī)器人技術(shù)、基于深度學(xué)習(xí)的認(rèn)知和推理專家系統(tǒng)等。目前人工智能領(lǐng)域廣泛使用的主要有Caffe、Keras 和Tensorflow 這3 個(gè)框架,本文對(duì)基于Tensorflow 卷積神經(jīng)網(wǎng)絡(luò)的面部識(shí)別技術(shù)及其應(yīng)用進(jìn)行了研究,與傳統(tǒng)的僅基于計(jì)算機(jī)軟件的系統(tǒng)相比,該方法可以大大提高整個(gè)系統(tǒng)的處理速度。
Tensorflow 是一個(gè)采用數(shù)據(jù)流圖用于數(shù)值計(jì)算的開源框架,其計(jì)算學(xué)習(xí)過(guò)程依賴張量,張量是現(xiàn)代機(jī)器學(xué)習(xí)的基礎(chǔ),它的核心是一個(gè)數(shù)據(jù)容器[14]。四維張量可以記錄圖像數(shù)據(jù),五維張量就可以保存視頻數(shù)據(jù),維度繼續(xù)增加即可以儲(chǔ)存更復(fù)雜的數(shù)據(jù)。在實(shí)際應(yīng)用場(chǎng)景中,往往需要處理成千上萬(wàn)甚至更多的數(shù)據(jù)信息,此種情境下通常需要頻繁地使用四維和五維張量。
Tensorflow 實(shí)現(xiàn)機(jī)器學(xué)習(xí),其原理是通過(guò)計(jì)算機(jī)編程實(shí)現(xiàn),主要包含2 個(gè)步驟:構(gòu)造計(jì)算圖、運(yùn)行計(jì)算圖[15]。Tensorflow 使用圖表示計(jì)算任務(wù),圖中的節(jié)點(diǎn)定義為op(operation),每個(gè)op 獲得0 或多個(gè)tensor進(jìn)行運(yùn)算,同時(shí)將得到0 個(gè)或多個(gè)tensor。圖描述了整個(gè)計(jì)算過(guò)程,為了執(zhí)行計(jì)算,計(jì)算圖在會(huì)話(Session)中啟動(dòng),將圖的op 分發(fā)到GPU 或CPU 設(shè)備上,同時(shí)執(zhí)行op 相關(guān)方法,計(jì)算后將產(chǎn)生的tensor 返回。以下通過(guò)一個(gè)簡(jiǎn)單線性擬合說(shuō)明其過(guò)程。
使用Python 語(yǔ)言進(jìn)行Tensorflow 編程,生成隨機(jī)數(shù)訓(xùn)練集對(duì)離散點(diǎn)進(jìn)行線性擬合訓(xùn)練,代碼如下:
通過(guò)100 次機(jī)器學(xué)習(xí)訓(xùn)練,計(jì)算機(jī)已經(jīng)能夠很好地?cái)M合離散點(diǎn),訓(xùn)練結(jié)果如圖1 所示。
圖1 訓(xùn)練100 次后擬合結(jié)果示意圖
圖中擬合損失函數(shù)(loss)曲線圖用于描述模型預(yù)測(cè)值與真實(shí)值的差距大小,可以看出擬合誤差隨訓(xùn)練次數(shù)(n)的增加不斷減小,到訓(xùn)練結(jié)束時(shí),模型預(yù)測(cè)值已與真實(shí)值完全相等??梢詫⑦@個(gè)過(guò)程通俗地理解為人類為完成某一任務(wù)而不斷試錯(cuò)的過(guò)程,機(jī)器學(xué)習(xí)算法使計(jì)算機(jī)不斷修正試錯(cuò)產(chǎn)生的偏差,以求逐漸趨近于正確。這樣的思路也可以應(yīng)用于基于光顯示的面部識(shí)別技術(shù)中。
實(shí)現(xiàn)面部識(shí)別最重要的一點(diǎn)在于訓(xùn)練數(shù)據(jù)集的獲取,想要使計(jì)算機(jī)成功識(shí)別出每一個(gè)人,訓(xùn)練集需要上千萬(wàn)人的面部數(shù)據(jù),使用卷積神經(jīng)網(wǎng)絡(luò)算法,卷積神經(jīng)網(wǎng)絡(luò)是根據(jù)仿生學(xué)視知覺(jué)機(jī)制進(jìn)行構(gòu)建的,該技術(shù)對(duì)于大型圖像處理有非常出色的表現(xiàn),其主要包括卷積層(Convolutional layer)和池化層(Pooling layer)。
卷積層對(duì)原始輸入的數(shù)據(jù)信息進(jìn)行特征提取,這一過(guò)程以小區(qū)域劃分依次執(zhí)行,卷積計(jì)算過(guò)程如圖2所示。
圖2 卷積計(jì)算過(guò)程示意圖
左側(cè)為輸入層,即輸入的圖像,經(jīng)過(guò)特征提取獲得一個(gè)深度為1 的特征圖,不同區(qū)域進(jìn)行特征提取后就會(huì)得到一個(gè)特征集合,將該集合疊在一起就得到了卷積層輸出的結(jié)果。
將卷積層對(duì)特征圖進(jìn)一步執(zhí)行卷積操作得到更高層次的特征。多次卷積過(guò)程如圖3 所示。
圖3 多次卷積計(jì)算示意圖
可以看出,進(jìn)行一次卷積計(jì)算可以提取出的只有低層次的特征,第二次卷積計(jì)算則能夠提取出中層次的特征,第三次能夠提取出更高層次的特征。這樣不斷進(jìn)行提取,最終就能夠得到較高層次特征,方能滿足各種實(shí)際應(yīng)用的需要。
池化層操作執(zhí)行過(guò)程如圖4 所示。池化是對(duì)特征圖進(jìn)行特征壓縮,選取原區(qū)域的max 或mean 代替該區(qū)域,整體上相當(dāng)于進(jìn)行了壓縮,進(jìn)一步提取了必要特征,減少了學(xué)習(xí)過(guò)程中不必要的計(jì)算量。
圖4 池化層操作示意圖
在獲取到標(biāo)準(zhǔn)面部信息數(shù)據(jù)集對(duì)計(jì)算機(jī)進(jìn)行訓(xùn)練后就能夠進(jìn)行面部識(shí)別應(yīng)用了。整個(gè)系統(tǒng)架構(gòu)如圖5所示,主要包括特征點(diǎn)提取模塊、歸一化算法、編碼模塊、光學(xué)識(shí)別器及處理模塊等。該系統(tǒng)采用液晶顯示器(LCD)作為實(shí)時(shí)空間光調(diào)制器(SLMS),這也是整個(gè)特征提取模塊的關(guān)鍵。識(shí)別時(shí)首先對(duì)CCD 攝像機(jī)捕獲的實(shí)時(shí)目標(biāo)輸入圖像使用計(jì)算機(jī)軟件進(jìn)行預(yù)處理和編碼,然后用光學(xué)識(shí)別器與預(yù)先存儲(chǔ)在計(jì)算機(jī)中的編碼參考圖進(jìn)行連續(xù)匹配,最后使用卷積神經(jīng)網(wǎng)絡(luò)算法給出識(shí)別結(jié)果。由于該系統(tǒng)結(jié)合了光學(xué)系統(tǒng)的大規(guī)模并行性與計(jì)算機(jī)的可編程性的優(yōu)點(diǎn),與僅基于計(jì)算機(jī)軟件的混合系統(tǒng)相比,大大提高了整個(gè)系統(tǒng)的處理速度。
圖5 面部識(shí)別系統(tǒng)架構(gòu)示意圖
面部識(shí)別系統(tǒng)組成如圖6 所示,其中非相干光學(xué)相關(guān)設(shè)備包括非相干擴(kuò)散源S、在液晶顯示器(LCD)上并排顯示的輸入圖像和參考圖像、成像透鏡L1 和加裝透鏡L2 的CCD 攝像機(jī)。利用非相干光源的擴(kuò)散特性,將輸入圖像沿不同方向投影到參考圖像上,成像透鏡L1 從各個(gè)方向采集輸入圖像和參考圖像的疊加圖像,并對(duì)收集到的所有圖像進(jìn)行疊加,以便在成像透鏡后的輸出平面上形成相關(guān)合成圖像。CCD 攝像機(jī)將光學(xué)部件和電子部件連接起來(lái),相關(guān)結(jié)果在攝像機(jī)目標(biāo)上成像,數(shù)字化后(256 灰度級(jí)),相關(guān)平面上感興趣的區(qū)域?qū)⑼ㄟ^(guò)幀捕獲器傳輸至計(jì)算機(jī),并保存在存儲(chǔ)器中,用于特征提取過(guò)程。
圖6 面部識(shí)別系統(tǒng)組成示意圖
本次實(shí)驗(yàn)使用了3 個(gè)數(shù)據(jù)庫(kù),分別為JAFFE 表情數(shù)據(jù)庫(kù)[16]、CK+數(shù)據(jù)庫(kù)[17]、MMI 數(shù)據(jù)庫(kù)[18]。通過(guò)改變訓(xùn)練數(shù)量進(jìn)行實(shí)驗(yàn)并測(cè)試圖像。實(shí)驗(yàn)中用于仿真的平臺(tái)是在具有2.70 GHz CPU 速度、4.00 GB RAM 和Windows1064 位版本操作系統(tǒng)的PC。
JAFFE 表情數(shù)據(jù)庫(kù)由10 位日本女性的213 張圖像組成,213 張圖像全部用于實(shí)驗(yàn)中。CK+數(shù)據(jù)庫(kù)包含來(lái)自123 個(gè)對(duì)象的姿勢(shì)和非姿勢(shì)表情,總共使用了CK+數(shù)據(jù)庫(kù)中的431 張圖像。MMI 數(shù)據(jù)庫(kù)包含20 多名男女受試者。該項(xiàng)研究共用了MMI 數(shù)據(jù)庫(kù)中的256 張圖像。3 個(gè)數(shù)據(jù)庫(kù)合計(jì)900 張圖像,圖7 為來(lái)自3 個(gè)數(shù)據(jù)庫(kù)的樣本圖像。
圖7 3 個(gè)數(shù)據(jù)庫(kù)的樣本圖像
選擇每例人臉面部表情張量最大的表情圖像作為樣本,待檢測(cè)出人臉面部表情后再歸一化成大小為64×64 的表情圖像,然后將其裁剪成大小為60×60 的子圖像并通過(guò)鏡像翻轉(zhuǎn)將人臉面部表情樣本數(shù)量擴(kuò)大至原來(lái)的40 倍。
實(shí)驗(yàn)時(shí)先用全部900 張圖像通過(guò)改變訓(xùn)練數(shù)量進(jìn)行訓(xùn)練,直至擬合訓(xùn)練結(jié)束。然后從900 張圖像中隨機(jī)抽取1張圖像進(jìn)行測(cè)試,進(jìn)行實(shí)驗(yàn)測(cè)試時(shí)利用3 折交叉測(cè)試的方法,將3 次測(cè)試平均值作為最后的結(jié)果,測(cè)試結(jié)果如表1、表2、表3 所示。
表1 使用樣本圖像集中的原始圖像實(shí)驗(yàn)時(shí)間
表2 使用本征面作為圖像濾波器后實(shí)驗(yàn)時(shí)間
表3 本文方法與其它方法的比較
光處理器與電子類控制模塊之間存在數(shù)據(jù)傳輸問(wèn)題,例如LCD 的刷新頻率、幀捕獲器的數(shù)據(jù)傳輸速率限制等,這使得光圖像處理的高度并行性受到了一定削弱。實(shí)際實(shí)驗(yàn)過(guò)程中,在一組900 張面部圖像中檢索目標(biāo)人物需要約16 s 的時(shí)間,這是一個(gè)比較低的速度。利用光學(xué)相關(guān)運(yùn)算可以在單位時(shí)間內(nèi)獲得更多的特征,為了提升處理速度,必需要減少操作量,通過(guò)使用本征面作為圖像濾波器而不是圖像集中的原始圖像,光學(xué)相關(guān)操作可減少至較低水平,如此一來(lái)系統(tǒng)的處理速度從16 s 減少至不到3 s,同時(shí)也保持了較高的識(shí)別精度。
本文主要研究了基于Tensorflow 卷積神經(jīng)網(wǎng)絡(luò)的面部識(shí)別技術(shù)。使用Python 語(yǔ)言進(jìn)行編程,生成隨機(jī)數(shù)訓(xùn)練集對(duì)離散點(diǎn)進(jìn)行線性擬合訓(xùn)練。然后將此思路應(yīng)用于基于光顯示的面部識(shí)別技術(shù)中,該技術(shù)對(duì)于大型圖像處理有非常出色的表現(xiàn),卷積層進(jìn)行特征提取,池化層對(duì)特征圖進(jìn)行特征壓縮。在獲取到標(biāo)準(zhǔn)面部信息數(shù)據(jù)集對(duì)計(jì)算機(jī)進(jìn)行訓(xùn)練后就能夠進(jìn)行面部識(shí)別應(yīng)用了。