分享嘉賓:Robert Lorenz(德國(guó)籍),澎思科技資深算法研究員,德國(guó)柏林洪堡大學(xué)數(shù)學(xué)系博士,致力于人臉檢測(cè)、人臉跟蹤和人臉質(zhì)量判斷等領(lǐng)域的技術(shù)研發(fā),尤其擅長(zhǎng)模型構(gòu)建和模型優(yōu)化。其研究成果已經(jīng)應(yīng)用于澎思科技多種人臉識(shí)別軟件平臺(tái)和硬件產(chǎn)品中。同時(shí)也致力于視頻結(jié)構(gòu)化算法的研究和開(kāi)發(fā),負(fù)責(zé)數(shù)個(gè)子研究課題的攻堅(jiān)工作。
曾任職學(xué)習(xí)寶聯(lián)合創(chuàng)始人兼首席科學(xué)家、精通5國(guó)語(yǔ)言,完成學(xué)習(xí)寶所有模式識(shí)別算法的搭建及商用。精通模式識(shí)別、機(jī)器學(xué)習(xí)與圖像處理的常見(jiàn)算法,例如貝葉斯分類器、SVM、ADA-BOOST、MLP、CNN、kernelized回歸、受限制BOLTZMANN機(jī)、特征提取、特征選擇,圖像預(yù)處理、二值化算法、連通域分析、PPC(Project Profile Cutting),Viterbi算法,C語(yǔ)言數(shù)據(jù)結(jié)構(gòu),例如樹(shù)結(jié)構(gòu)、圖形結(jié)構(gòu)等等。
分享主題:有限算力資源下的深度學(xué)習(xí)與人臉識(shí)別技術(shù)——人臉抓拍算法設(shè)計(jì)、移植和優(yōu)化
分享提綱:
-
深度學(xué)習(xí)定義與概念
-
人臉檢測(cè)與深度學(xué)習(xí)
-
人臉跟蹤與深度學(xué)習(xí)
-
人臉屬性與深度學(xué)習(xí)
-
人臉識(shí)別應(yīng)用
-
深度學(xué)習(xí)與人臉識(shí)別未來(lái)
雷鋒網(wǎng)AI研習(xí)社將其分享內(nèi)容整理如下:
大家好,我是來(lái)自德國(guó)的Robert,目前負(fù)責(zé)算法研究、算法設(shè)計(jì)和算法實(shí)現(xiàn),今天想分享的內(nèi)容是有限算力資源下的深度學(xué)習(xí)與人臉識(shí)別技術(shù)——人臉抓拍設(shè)計(jì)、移植和優(yōu)化。在標(biāo)題中大家可以看到兩個(gè)關(guān)鍵詞,第一深度學(xué)習(xí),第二人臉識(shí)別。
人臉識(shí)別主要分兩大類,第一人臉抓拍,指的是從原始的數(shù)據(jù)(如錄像數(shù)據(jù))中提取人臉,第二大類是對(duì)提取好的人臉進(jìn)行進(jìn)一步操作,比如人臉比對(duì)、人臉性別分類、表情分類等具體應(yīng)用。今天我們把重點(diǎn)放在人臉抓拍這一步,還會(huì)特別注意算法的運(yùn)行速度。
近年來(lái),所有的人臉識(shí)別算法都是基于深度學(xué)習(xí)完成的,所以今天分享的內(nèi)容也基于深度學(xué)習(xí)來(lái)展開(kāi),具體目錄如下:
大家可能聽(tīng)過(guò)深度學(xué)習(xí)這個(gè)術(shù)語(yǔ),但是深度學(xué)習(xí)到底是什么?如圖所示,即為深度學(xué)習(xí)的定義。我們將深度學(xué)習(xí)之外所有的模式識(shí)別算法命名為傳統(tǒng)模式識(shí)別算法。下面來(lái)了解一下深度學(xué)習(xí)和傳統(tǒng)模式識(shí)別之間有哪些區(qū)別,深度學(xué)習(xí)的特點(diǎn)是什么。
傳統(tǒng)算法主要有兩個(gè)步驟。其中第一步為“手動(dòng)特征提取”,即按照當(dāng)前分類任務(wù)手動(dòng)定義特征提取方法。下圖顯示對(duì)于文字圖像的邊緣特征,總共四個(gè)方向的邊緣特征。深度學(xué)習(xí)之前,基于四個(gè)方向的邊緣特征在文字識(shí)別領(lǐng)域非常流行,因?yàn)槲淖謭D像邊緣特征的判別能力好于原始圖像像素的判別能力。
傳統(tǒng)算法第二步為“訓(xùn)練參數(shù)”,參數(shù)訓(xùn)練是基于在第一步提取好的特征進(jìn)行的。下圖顯示對(duì)于文字特征向量的建模,每類由多維高斯分布建模。多維高斯分布唯一由期望值和相關(guān)矩陣描述。為了提高魯棒性,僅僅估計(jì)了相關(guān)矩陣的前k個(gè)特征值和特征向量,后(d-k)個(gè)特征值由一個(gè)常數(shù)描述。有了每一類的參數(shù),可以使用貝葉斯分類器對(duì)未知、不在訓(xùn)練庫(kù)的新圖像提取特征,并對(duì)提取好的特征進(jìn)行分類。
傳統(tǒng)方法有一些不太理想的地方:特征提取和參數(shù)訓(xùn)練的兩個(gè)步驟是拆開(kāi)的。更優(yōu)的方案是聯(lián)合優(yōu)化特征提取和參數(shù)訓(xùn)練。另外,預(yù)測(cè)任務(wù)的變化引起特征提取方法的改動(dòng)。例如,對(duì)腫瘤檢測(cè)文理特征判別能力好于邊緣特征。為了達(dá)到不錯(cuò)的預(yù)測(cè)效果,每個(gè)領(lǐng)域需要有經(jīng)驗(yàn)的專家琢磨出好的手動(dòng)特征提取方法。深度學(xué)習(xí)克服了這些難題。
接下來(lái)我們看一下,深度學(xué)習(xí)放棄手動(dòng)特征提取而采用自動(dòng)特征提取,如圖所示:
上圖有10個(gè)特征層,每一層的參數(shù)是自動(dòng)學(xué)習(xí)的,不涉及到手動(dòng)干預(yù)。因深度學(xué)習(xí)的特征提取是自動(dòng)、智能的,所以深度學(xué)習(xí)屬于人工智能的領(lǐng)域。
我們還需要知道的一點(diǎn)是,與傳統(tǒng)算法相比,深度學(xué)習(xí)有一定的優(yōu)勢(shì)。在包含1000類的IMAGENET數(shù)據(jù)庫(kù)中,基于幾層深度學(xué)習(xí)的分類錯(cuò)誤率為25%。將層數(shù)提高到19,錯(cuò)誤率降低到7%,22層的錯(cuò)誤率為6%,如果是非常深的深度學(xué)習(xí)模型(152層),錯(cuò)誤率才3%,而人類的錯(cuò)誤率也有5%。這說(shuō)明在特定情況下,深度學(xué)習(xí)的識(shí)別率高于人類的識(shí)別率,這就引起了各行業(yè)都想將深度學(xué)習(xí)的思路融入到他們的領(lǐng)域里,人臉識(shí)別也不例外。
人臉識(shí)別屬于圖像處理的領(lǐng)域。圖像處理領(lǐng)域中最常見(jiàn)的層是卷積層,比較一下卷積層和全連接層。如下圖所示,全連接層每個(gè)輸入節(jié)點(diǎn)跟任何輸出節(jié)點(diǎn)都構(gòu)造一個(gè)連接,而卷積層只有考慮特殊的連接。一個(gè)卷積核掃描所有輸入圖的窗口,可以做到參數(shù)共享、參數(shù)數(shù)量降低。可訓(xùn)練參越多,越容易發(fā)生過(guò)度適應(yīng)現(xiàn)象,因卷積層大大降低了參數(shù)數(shù)量,其過(guò)度擬合現(xiàn)象大量減少,卷積操作可以理解為深度學(xué)習(xí)網(wǎng)絡(luò)的正則化。另外全連接不考慮二維圖像拓?fù)洌矸e層更好地利用相鄰像素之間的關(guān)聯(lián)性。
來(lái)看一下深度學(xué)習(xí)早期的一個(gè)完整的深度學(xué)習(xí)網(wǎng)絡(luò)模型。下圖顯示所謂LENET5的拓?fù)洌壕矸e層1、欠采樣層2、卷積層3、欠采樣層4、卷積層5、全連接6、分類輸出層7。LENET5對(duì)32x32大小的輸入通過(guò)卷積和欠采樣和全連接層提取84維的特征向量,對(duì)84維的特征向量進(jìn)行最終的分類,都在一個(gè)聯(lián)合框架中。
對(duì)深度學(xué)習(xí)的定義和概念的介紹就到這,接下來(lái)了解深度學(xué)習(xí)怎么應(yīng)用在人臉抓拍的領(lǐng)域。
人臉抓拍第一步是人臉檢測(cè),是一個(gè)二類分類問(wèn)題,只有兩類:人臉和非人臉。人臉檢測(cè)中一個(gè)難題是人臉大小未知。克服這個(gè)難題的一個(gè)辦法是圖像金字塔,如下圖左側(cè)部分所示。圖像金字塔包含不同縮小率的縮小圖像。對(duì)不同縮小圖用固定窗口大小進(jìn)行掃描,就可以做到多尺度人臉檢測(cè)。
人臉檢測(cè)另外的難題是類內(nèi)的豐富性。人臉有白種人、黃種人、黑人等不同種族,圖像光照條件不同、模糊度不同,人臉姿態(tài)、角度也不同。非人臉類更復(fù)雜,有無(wú)窮多個(gè)非人臉的可能性。所以,分類人臉和非人臉需要比較深、有一定判別能力的深度學(xué)習(xí)網(wǎng)絡(luò)。用深的網(wǎng)絡(luò)掃描整個(gè)圖像金字塔的方法不最優(yōu),計(jì)算量太大。可以利用非人臉可以細(xì)分成簡(jiǎn)單負(fù)樣本(例如平穩(wěn)的天空)、中等負(fù)樣本(例如衣服文理、胳膊、手)和難負(fù)樣本(跟人臉?lè)浅O嗨疲┑氖聦?shí)。先用極少的計(jì)算量排除簡(jiǎn)單負(fù)樣本,然后用中等計(jì)算量排除中等負(fù)樣本。以此類推,用更大的計(jì)算量排除難度更大的負(fù)樣本,最中留下的所有沒(méi)排除的窗口分類成人臉。在傳統(tǒng)領(lǐng)域該思想叫做ADABOOST分類器組合方法。
下面介紹一個(gè)基于ADABOOST思想的三個(gè)階段人臉檢測(cè)算法,如下圖所示。總共有三個(gè)深度學(xué)習(xí)模型:PNET、RNET和ONET。PNET網(wǎng)絡(luò)不深,只有三個(gè)卷積層,用12x12的窗口掃描圖像金字塔,快速排除大量的簡(jiǎn)單負(fù)樣本。留下的候選窗口用大小24x24重新?lián)福?dāng)作RNET的輸入,RNET的計(jì)算量中等,有四個(gè)卷積層。對(duì)RNET可能沒(méi)有成功排除的難負(fù)樣本調(diào)用計(jì)算量比較大的ONET,輸入大小為48x48,ONET有5個(gè)卷積層,構(gòu)造最終的人臉/非人臉?lè)诸愋ЧM瑫r(shí)ONET計(jì)算人臉5個(gè)特征點(diǎn)(眼睛,鼻尖,嘴角),用來(lái)在人臉比對(duì)之前做人臉矯正。
三個(gè)階段的高效人臉檢測(cè)器運(yùn)行速度快,分類效果不錯(cuò)。然而,如果CPU跟GPU聯(lián)合使用的話,CPU與GPU之間的傳輸數(shù)據(jù)時(shí)間不可忽略,如下圖所示。
為了減少傳輸數(shù)據(jù)的時(shí)間,我們尋找一個(gè)階段的人臉檢測(cè)器,即只有一個(gè)深度模型的人臉檢測(cè)器。下面我們來(lái)看一下一個(gè)階段的高效人臉檢測(cè)器。因?yàn)闆](méi)有快速預(yù)淘汰簡(jiǎn)單負(fù)樣本的步驟了,我們?cè)谇皟蓚€(gè)卷積層和欠采樣層大大降低網(wǎng)絡(luò)輸入圖的尺寸,縮小率為32倍。兩個(gè)卷積層之后還有非常多的深度學(xué)習(xí)層,但是因圖像尺寸非常小了,其計(jì)算量并不大了。一個(gè)階段的人臉檢測(cè)器沒(méi)有圖像金字塔了,但是有一個(gè)以上的分類輸出層。輸出層的輸入是不同尺寸的特征圖,一個(gè)階段的人臉檢測(cè)器基于特征金字塔,是克服人臉大小未知的另外一種方法。兩個(gè)尺度之間跨度比較大,容易漏檢特征金字塔中間大小的人臉。為了避免這種現(xiàn)象,設(shè)計(jì)了Inception模塊。其設(shè)計(jì)特點(diǎn)為不同分支,分支卷積核大小不一致,最終連和不同分支。不同卷積核大小的分支構(gòu)造不同大小的感受野,構(gòu)造不同尺度的特征圖。連續(xù)三次使用Inception模塊,構(gòu)造非常多的卷積核大小的組合,非常好地客服了人臉大小未知的問(wèn)題。
下圖中顯示的人臉檢測(cè)器不關(guān)注運(yùn)行速度,但爭(zhēng)取更高的準(zhǔn)確率。代價(jià)是幾百倍的計(jì)算量,我們這關(guān)注的是網(wǎng)絡(luò)架構(gòu)。高準(zhǔn)確率人臉檢測(cè)器也屬于一個(gè)階段的檢測(cè)器,基于特征金字塔,總共有六個(gè)尺寸層次。與以前的模型相比,特征金字塔不直接當(dāng)成網(wǎng)絡(luò)輸出層的輸入,但是還加上特征增強(qiáng)模塊。特征增強(qiáng)模塊考慮到兩個(gè)相鄰的特征圖,對(duì)尺寸小的特征圖進(jìn)行上采樣,構(gòu)造跟尺寸大的特征圖同樣的尺寸。用乘法融合兩個(gè)相鄰的特征圖,再加上基于inception思想的模塊,這才是分類輸出層的輸入。
如下圖所示,準(zhǔn)確率高的人臉檢測(cè)器對(duì)不良因素的魯棒性非常強(qiáng),可以檢測(cè)出尺寸更小的人臉、模糊人臉、光照情況復(fù)雜、曝光、很暗的人臉、被局部遮擋的人臉,還有反光、姿態(tài)奇特或者化妝的人臉。抓拍系統(tǒng)不會(huì)使用計(jì)算量龐大的高準(zhǔn)確率人類檢測(cè)器,而調(diào)用上述提到的快速人臉檢測(cè)器。當(dāng)然,對(duì)不利情況下的檢測(cè)率有一些折扣。假設(shè),遠(yuǎn)處的人臉尺寸小、非常模糊,快速人臉檢測(cè)器漏檢了。但是十幾幀之后人移動(dòng)到離攝像頭更近的位置,不顯得那么小和模糊,檢測(cè)出的概率大大提高。以人為單位的快速人臉檢測(cè)器的檢測(cè)率可以超過(guò)99%。
人臉檢測(cè)速度快,但是每幀都做人臉檢測(cè),滿足不了一個(gè)GPU實(shí)時(shí)處理數(shù)十路視頻的數(shù)據(jù)。另外這種方法也放棄了幀與幀之間的關(guān)聯(lián)性。假設(shè),在幀1檢測(cè)出四個(gè)人臉。在幀2出現(xiàn)4個(gè)人臉的概率很高,甚至4個(gè)人臉的位置跟前一幀的位置非常相似。從前一幀到當(dāng)前幀人臉具體平移量是多少,這就是人臉跟蹤的命題,請(qǐng)看下圖。人臉跟蹤在目標(biāo)周?chē)秶紤]問(wèn)題,人臉檢測(cè)在整個(gè)場(chǎng)景圖范圍考慮問(wèn)題,與全局的檢測(cè)相比,跟蹤屬于局部算法,可以大量節(jié)省整個(gè)抓拍系統(tǒng)的計(jì)算量。
接下來(lái),給大家分享一下一個(gè)屬于傳統(tǒng)算法領(lǐng)域的跟蹤算法。其特點(diǎn)是運(yùn)行速度非常快,數(shù)學(xué)模型和求解非常瀟灑。下圖的第一個(gè)數(shù)學(xué)公式是空間域中的數(shù)學(xué)模型,優(yōu)化對(duì)象是相關(guān)核h,使得對(duì)在幀1的圖像數(shù)據(jù)f進(jìn)行濾波的話,得到跟標(biāo)簽g盡可能接近的值,其中*代表循環(huán)卷積。標(biāo)簽g經(jīng)常選擇為高斯函數(shù)。正則化系數(shù)lambda控制過(guò)度適應(yīng)現(xiàn)象。利用傅里葉變換和相應(yīng)的一些數(shù)學(xué)定理,可以把空間域建模問(wèn)題等價(jià)地描述在頻率域。大寫(xiě)字母符號(hào)代表小寫(xiě)字母符號(hào)的傅里葉變換。卷積定理把耗時(shí)的循環(huán)卷積操作改成快速的乘法。頻率域的解析式形式很簡(jiǎn)單,只有乘法、加法和除法的操作。在幀2,對(duì)空間域的圖像數(shù)據(jù)z應(yīng)用傅里葉變換,跟在幀1學(xué)到的模板H進(jìn)行乘法,得到頻率域的響應(yīng)Y,再用逆傅里葉變換回到空間域,得到空間域的響應(yīng)y。最終跟蹤效果為響應(yīng)y最大值的對(duì)應(yīng)的位置。
雖然基于相關(guān)濾波的跟蹤算法在CPU上非常快,但是利用不起來(lái)GPU并行計(jì)算資源,因?yàn)榭焖俑道锶~變換由很多零散的計(jì)算步驟組成,其GPU并行計(jì)算加速效果很差。接下來(lái),給大家分享基于深度學(xué)習(xí)的跟蹤算法,可以充分利用GPU并行計(jì)算資源。下圖顯示SIAMESE網(wǎng)絡(luò)的跟蹤器的流程。在幀1以目標(biāo)位置為中心稍微擴(kuò)充,構(gòu)造參考圖,用深度學(xué)習(xí)映射phi構(gòu)造尺寸非常小的特征圖(6x6)。在幀2擴(kuò)充范圍更大,構(gòu)造搜索圖,用同樣的映射phi計(jì)算出尺寸比較大的特征圖(22x22)。SIAMESE網(wǎng)絡(luò)的特點(diǎn)是其輸出層,所謂的相關(guān)層。6x6的特征圖當(dāng)作卷積核,掃描22x22的特征圖,構(gòu)造17x17大小的輸出圖。跟蹤的效果就是輸出圖最大值的對(duì)應(yīng)的位置。因17x17尺寸比較粗糙,經(jīng)常對(duì)輸出圖進(jìn)行上采樣操作,獲取更大分辨率的跟蹤效果。SIAMESE網(wǎng)絡(luò)屬于離線學(xué)習(xí)的跟蹤器,因?yàn)橛成鋚hi與原始圖像無(wú)關(guān),需要大量的人臉訓(xùn)練樣本在GPU上學(xué)習(xí)映射phi的參數(shù)。然而,上述介紹的相關(guān)濾波跟蹤器是在線學(xué)習(xí)的跟蹤器,模板H依賴于原始圖像,關(guān)鍵在于模板H的訓(xùn)練過(guò)程極快。
從現(xiàn)在開(kāi)始,內(nèi)容不會(huì)給大家介紹那么詳細(xì),限于概括性的介紹。下一步給大家介紹一下人臉屬性與深度學(xué)習(xí),如圖所示:前幾層設(shè)計(jì)所有任務(wù)共享的卷積層和欠采樣層。后來(lái)幾個(gè)網(wǎng)絡(luò)分支對(duì)應(yīng)不同標(biāo)簽類別,比如局部、全局標(biāo)簽,有序標(biāo)簽、類別性標(biāo)簽等等。需要大量的標(biāo)注好的人臉屬性訓(xùn)練樣本,在GPU上訓(xùn)練共享的參數(shù)和分支的參數(shù)。
接下來(lái)簡(jiǎn)單介紹一下人臉識(shí)別的應(yīng)用,如下圖:
下面討論一下深度學(xué)習(xí)與人臉識(shí)別的未來(lái),如下圖:
最后提到的是,對(duì)算法研究和算法工程感興趣的朋友,可以關(guān)注澎思科技,感謝大家的聆聽(tīng)。