周書田,顏 信,謝鎮(zhèn)汕
(電子科技大學(xué)格拉斯哥學(xué)院 成都 611731)
隨著越來越多的攝像采集與監(jiān)控設(shè)備被部署,視頻中人臉識(shí)別的需求大幅上升。這些系統(tǒng)迫切地需要可靠與準(zhǔn)確的人臉識(shí)別。與靜態(tài)配合式人臉識(shí)別[1-3]不同的是,視頻中的人臉識(shí)別往往是非受限的,即捕捉姿勢(shì)、圖像質(zhì)量等在幀間都會(huì)呈現(xiàn)巨大的變化。一方面,幀間信息可以形成信息互補(bǔ),并通過多幀對(duì)人臉進(jìn)行更加準(zhǔn)確的識(shí)別;另一方面,幀間部分低質(zhì)量,如運(yùn)動(dòng)模糊、極端采集角度及低分辨率的圖像,又會(huì)干擾視頻人臉識(shí)別的結(jié)果。如果直接使用靜態(tài)人臉識(shí)別方法,那么這些低質(zhì)量幀將會(huì)帶來誤識(shí)別。因此如何對(duì)幀之間的信息進(jìn)行有效匯聚,從而形成更加魯棒的視頻人臉特征表達(dá),成為一個(gè)關(guān)鍵問題。
目前對(duì)視頻中進(jìn)行人臉識(shí)別最流行的方法是將視頻人臉圖像幀表示為無序的特征向量[4-8],并把各幀的特征向量進(jìn)行匯聚成為視頻級(jí)特征。驗(yàn)證時(shí),對(duì)視頻級(jí)特征進(jìn)行相似性檢索即可。常見匯聚的方式有平均匯聚[6]、最大池化匯聚與注意力機(jī)制匯聚[7]。但這些方式需要對(duì)所有視頻幀進(jìn)行特征提取,消耗了大量的計(jì)算資源,并不高效。因此近來,視頻識(shí)別領(lǐng)域提出了如3D 卷積[8]等新穎的視頻分析框架,可以有效地對(duì)連續(xù)幀信息進(jìn)行捕捉,但3D 卷積同樣會(huì)引入巨大的計(jì)算量。
本文首先比較了基于2D 卷積網(wǎng)絡(luò)與不同幀間匯聚的方法,并介紹了一種在視頻中使用3D 分解卷積的連續(xù)幀人臉識(shí)別方法。該方法不需要逐幀地對(duì)人臉數(shù)據(jù)進(jìn)行提取,而是將多幀輸入一個(gè)3D 分解卷積結(jié)構(gòu),得出一個(gè)全局的特征向量。與逐幀進(jìn)行特征提取并匯聚的算法相比,該方法可以大幅提高計(jì)算效率,且保持了競爭力的識(shí)別精度。最后,本文提出了用于視頻人臉識(shí)別的時(shí)間金字塔網(wǎng)絡(luò),可以對(duì)幀間互補(bǔ)信息進(jìn)行有效建模。3D 分解卷積與時(shí)間金字塔網(wǎng)絡(luò)的有效性在YouTubeFace[9]、PaSC 測(cè)試集得到了驗(yàn)證。
本節(jié)介紹視頻人臉識(shí)別的整個(gè)流程及各項(xiàng)的詳細(xì)配置。視頻人臉識(shí)別系統(tǒng)可以分為3 部分:視頻特征編碼器、優(yōu)化視頻編碼器的損失函數(shù)及將視頻進(jìn)行匹配與檢索的查找方法。首先將視頻切成連續(xù)且非重疊的視頻片段{ck},每個(gè)片段包含有 T幀,對(duì)每個(gè)片段進(jìn)行特征抽取。片段特征抽取器將片段作為輸入,并且輸出 D維度的特征向量 fc。視頻總體的特征為所有視頻片段特征的平均匯聚。
在對(duì)視頻間特征進(jìn)行比對(duì)時(shí),本文采用余弦相似度,并且設(shè)定閾值,當(dāng)閾值大于一定值時(shí),認(rèn)為兩段視頻中的人為同一人,亦或是視頻中的人臉與底庫當(dāng)中的相匹配。視頻特征向量 xi與 yi的余弦相似度為:
判定是否為同一人的閾值,可根據(jù)應(yīng)用場(chǎng)景進(jìn)行設(shè)定。在評(píng)價(jià)性能時(shí),往往采用一定FPR(false positives rates)下的TPR(true positives)進(jìn)行比較。
接下來,本文分別介紹基于2D 卷積神經(jīng)網(wǎng)絡(luò)+特征聚合以及3D 卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行視頻人臉識(shí)別的方法,并提出一種高效分解卷積,以在保持識(shí)別精度的同時(shí),降低計(jì)算消耗。
另外一種匯聚的方式是使用注意力機(jī)制。注意力機(jī)制旨在自適應(yīng)地在幀特征之間尋找權(quán)重,以給“關(guān)鍵幀”更高的匯聚權(quán)重[11]?;谧⒁饬C(jī)制的幀間匯聚表示為:
對(duì)于視頻連續(xù)幀,本文直接將其輸入3D 卷積神經(jīng)網(wǎng)絡(luò)——ResNet-50 網(wǎng)絡(luò)。將包含有n幀的視頻片段c 進(jìn)行卷積生成為 fc。相比于正常的2D 卷積,3D 卷積在時(shí)間維度上多了一維度,正常的2D 卷積核可以表示為[c,h,w],而3D 卷積核則可表示為[c,t,h,w]。因?yàn)闀r(shí)間通道的加入,可以建模時(shí)序幀間的特征信息。
采用3D 卷積可以建模幀間信息,但3D 卷積會(huì)引入巨大的計(jì)算量與顯存消耗,給部署帶來巨大挑戰(zhàn)。文獻(xiàn)[12]對(duì)3D 卷積分解進(jìn)行了一定的探索。如圖1 所示,忽略掉通道維度,一個(gè)t×d×d的3D 卷積,可以分解為一個(gè)1×d×d的卷積再加上一個(gè)t×1×1的卷積,使計(jì)算量減小,并且分解后的卷積本質(zhì)上為2D 卷積加1D 卷積,可以使用工業(yè)界更加成熟的卷積優(yōu)化算子進(jìn)行加速。
3D 分解卷積其本質(zhì)是先對(duì)單幀的空間信息進(jìn)行建模(2D 卷積),后對(duì)幀間信息進(jìn)行卷積匯聚(1D 卷積)。本文將ResNet-50 網(wǎng)絡(luò)中所有的3D 卷積都替換成為此分解卷積,實(shí)驗(yàn)證明,其實(shí)現(xiàn)了更快的推理速度與有競爭力的準(zhǔn)確度。
圖1 將卷積核為t×d×d 的3D 卷積分解為1×d×d與t×1×1 的卷積
對(duì)于視頻人臉識(shí)別,核心關(guān)鍵點(diǎn)是如何對(duì)視頻幀間的信息進(jìn)行建模,如何高效地利用幀間的互補(bǔ)信息。使用3D 卷積分離對(duì)連續(xù)幀進(jìn)行提取,并沒考慮到視頻速度的變化,即一個(gè)人在視頻中是緩慢的搖晃頭部,還是快速地?fù)u晃頭部,這種速度的變化并沒有被建模到網(wǎng)絡(luò)中。為了對(duì)多種速度的臉部運(yùn)動(dòng)進(jìn)行建模,本文以不同的時(shí)間幀率對(duì)視頻進(jìn)行采樣,并將不同幀率的輸入以時(shí)間金字塔的方式進(jìn)行匯聚。
不同分支的網(wǎng)絡(luò)會(huì)經(jīng)過一個(gè)時(shí)間金字塔結(jié)構(gòu),由時(shí)間分辨率低的分支進(jìn)行時(shí)序上連續(xù)線性插值( I),與高時(shí)間分辨率分支進(jìn)行融合,融合過程可以表示為:
圖2 用于視頻人臉識(shí)別的時(shí)間金字塔網(wǎng)絡(luò)
然后,各時(shí)間分辨率網(wǎng)絡(luò)將會(huì)進(jìn)行特征匯聚,最終由最大池化(max-pooling)形成視頻人臉特征。時(shí)間金字塔網(wǎng)絡(luò)綜合了不同時(shí)間分辨率信息,從而可以捕捉更豐富的幀間信息。
對(duì)于單幀與基于時(shí)序卷積的網(wǎng)絡(luò)的訓(xùn)練,本文采用了三元組損失與softmax 交叉熵?fù)p失相結(jié)合的方式。三元組損失旨在將負(fù)樣本對(duì)的距離拉遠(yuǎn),而保持正樣本對(duì)的距離靠近。softmax cross-entropy損失則為經(jīng)典的分類損失函數(shù)。在兩個(gè)loss 的監(jiān)督下,可以使卷積神經(jīng)網(wǎng)絡(luò)形成健壯的特征表達(dá)。
本文采用UMDFace[13]作為訓(xùn)練集,其包含了3 107 476 個(gè)帶注釋的視頻幀,這些視頻幀來自于包含3 107 個(gè)人物的22 075 個(gè)視頻。數(shù)據(jù)集預(yù)先包含了估計(jì)的人臉姿勢(shì)和21 個(gè)關(guān)鍵點(diǎn)位置及性別等信息。本文采用RetinaFace 對(duì)視頻幀的人臉進(jìn)行預(yù)處理,采用仿射變換進(jìn)行剪裁,所有的人臉都被裁切到224×224。
本文在YouTubeFace[9]數(shù)據(jù)集上對(duì)提出的方法與基線方法進(jìn)行了測(cè)試。YouTubeFace 數(shù)據(jù)集包含來自1 595 個(gè)體的3 424 個(gè)視頻,平均每個(gè)人2.15個(gè)視頻,是現(xiàn)在廣泛采用的視頻人臉識(shí)別測(cè)試數(shù)據(jù)集。視頻的長度從48 幀到6 070 幀不等,平均為181.3 幀。本文采用了標(biāo)準(zhǔn)的測(cè)試流程對(duì)6 000 對(duì)給定的正負(fù)樣本對(duì)進(jìn)行預(yù)測(cè),當(dāng)預(yù)測(cè)結(jié)果與樣本對(duì)標(biāo)簽結(jié)果一致時(shí),計(jì)為正確。匯報(bào)結(jié)果為在6 000對(duì)樣本的預(yù)測(cè)準(zhǔn)確率。
為了驗(yàn)證該方法的泛化能力,本文還在PaSC[14]數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)。
本文采用SGD 作為網(wǎng)絡(luò)訓(xùn)練的優(yōu)化器,初始學(xué)習(xí)率被設(shè)定為0.01,且隨著損失的飽和而乘以0.1。對(duì)于2D 卷積網(wǎng)絡(luò),網(wǎng)絡(luò)訓(xùn)練的批大小被設(shè)定為32。對(duì)于3D 卷積網(wǎng)絡(luò)及3D 分離卷積網(wǎng)絡(luò),批大小設(shè)定為8。在8 塊NVIDIA 2080TI GPU 進(jìn)行了實(shí)驗(yàn)。
在YoutubeFace 數(shù)據(jù)集上對(duì)分解卷積以及各項(xiàng)基線方法進(jìn)行了驗(yàn)證,其結(jié)果如表1 所示。
表1 不同方法在YoutubeFace(YTF)上性能的比較
可以看到,在性能比較上,直接利用3D 卷積實(shí)現(xiàn)了最差的性能,而利用改進(jìn)的分解卷積,可以使得測(cè)試準(zhǔn)確率提高1.5%。在預(yù)先采用2D 卷積網(wǎng)絡(luò)提取幀間特征并使用不同匯聚方法進(jìn)行匯聚的比較中,注意力機(jī)制取得到了最好的結(jié)果,達(dá)到96.1%。最大池化相比于平均池化提高了0.2%的性能。對(duì)3D 卷積進(jìn)行高效分解后,其實(shí)現(xiàn)了與2D 卷積網(wǎng)絡(luò)+幀間匯聚相競爭力的結(jié)果。進(jìn)一步將3D 分解卷積與時(shí)間金字塔網(wǎng)絡(luò)進(jìn)行結(jié)合,達(dá)到了最佳的性能,為96.5%。
在PaSC 數(shù)據(jù)集上驗(yàn)證了本文方法的泛化性,如表2 所示??梢钥吹?,采用3D 分離卷積+時(shí)間金字塔結(jié)構(gòu)在PaSC 數(shù)據(jù)集上取得了最優(yōu)成績,比常用的2D 卷積+平均池化提高了4.51%的性能
本文比較了不同方法計(jì)算消耗的大小,以包含32 幀的視頻片段為例,對(duì)于2D 卷積網(wǎng)絡(luò),其單模型輸入為224×224,對(duì)于3D 卷積網(wǎng)絡(luò),其單模型輸入為32×224×224。如表3 所示,3D 卷積網(wǎng)絡(luò)方法與3D 分離卷積方法顯著減小了推理階段的計(jì)算消耗。時(shí)序金字塔網(wǎng)絡(luò)在提高精確的同時(shí),相比于2D 方法,還減少了50%的算力消耗,這有利于工業(yè)界的大規(guī)模應(yīng)用。
表2 不同方法在PaSC 上性能的比較
表3 不同方法在計(jì)算消耗比較
本文針對(duì)視頻中人臉識(shí)別問題,比較了2D 卷積網(wǎng)絡(luò)特征提取+幀間特征匯聚(平均池化、最大池化與注意力機(jī)制)與3D 卷積的方法,采用3D 分解卷積提高了視頻人臉識(shí)別的準(zhǔn)確率與效率,并提出了一種時(shí)間金字塔網(wǎng)絡(luò),實(shí)現(xiàn)了更高精度的視頻人臉識(shí)別。在未來的工作中,將會(huì)考慮如組卷積及Depth-wise 卷積等更加輕量化的3D 卷積實(shí)現(xiàn)方式,以實(shí)現(xiàn)更加高效的視頻人臉識(shí)別。