MTCNN工作原理
論文地址:https://kpzhang93.github.io/MTCNN_face_detection_alignment/paper/spl.pdf
MTCNN是什么
MTCNN,Multi-task convolutional neural network(多任務(wù)卷積神經(jīng)網(wǎng)絡(luò)),將人臉區(qū)域檢測(cè)與人臉關(guān)鍵點(diǎn)檢測(cè)放在了一起,它的主題框架類似于cascade。總體可分為P-Net、R-Net、和O-Net三層網(wǎng)絡(luò)結(jié)構(gòu)。
它是2016年中國科學(xué)院深圳研究院提出的用于人臉檢測(cè)任務(wù)的多任務(wù)神經(jīng)網(wǎng)絡(luò)模型,該模型主要采用了三個(gè)級(jí)聯(lián)的網(wǎng)絡(luò),采用候選框加分類器的思想,進(jìn)行快速高效的人臉檢測(cè)。這三個(gè)級(jí)聯(lián)的網(wǎng)絡(luò)分別是快速生成候選窗口的P-Net、進(jìn)行高精度候選窗口過濾選擇的R-Net和生成最終邊界框與人臉關(guān)鍵點(diǎn)的O-Net。和很多處理圖像問題的卷積神經(jīng)網(wǎng)絡(luò)模型,該模型也用到了圖像金字塔、邊框回歸、非最大值抑制等技術(shù)。
MTCNN實(shí)現(xiàn)流程
構(gòu)建圖像金字塔
首先將圖像進(jìn)行不同尺度的變換,構(gòu)建圖像金字塔,以適應(yīng)不同大小的人臉的進(jìn)行檢測(cè)。
P-Net
全稱為Proposal Network,其基本的構(gòu)造是一個(gè)全卷積網(wǎng)絡(luò)。對(duì)上一步構(gòu)建完成的圖像金字塔,通過一個(gè)FCN進(jìn)行初步特征提取與標(biāo)定邊框,并進(jìn)行Bounding-Box Regression調(diào)整窗口與NMS進(jìn)行大部分窗口的過濾。
P-Net是一個(gè)人臉區(qū)域的區(qū)域建議網(wǎng)絡(luò),該網(wǎng)絡(luò)的將特征輸入結(jié)果三個(gè)卷積層之后,通過一個(gè)人臉分類器判斷該區(qū)域是否是人臉,同時(shí)使用邊框回歸和一個(gè)面部關(guān)鍵點(diǎn)的定位器來進(jìn)行人臉區(qū)域的初步提議,該部分最終將輸出很多張可能存在人臉的人臉區(qū)域,并將這些區(qū)域輸入R-Net進(jìn)行進(jìn)一步處理。
這一部分的基本思想是使用較為淺層、較為簡單的CNN快速生成人臉候選窗口。
R-Net
全稱為Refine Network,其基本的構(gòu)造是一個(gè)卷積神經(jīng)網(wǎng)絡(luò),相對(duì)于第一層的P-Net來說,增加了一個(gè)全連接層,因此對(duì)于輸入數(shù)據(jù)的篩選會(huì)更加嚴(yán)格。在圖片經(jīng)過P-Net后,會(huì)留下許多預(yù)測(cè)窗口,我們將所有的預(yù)測(cè)窗口送入R-Net,這個(gè)網(wǎng)絡(luò)會(huì)濾除大量效果比較差的候選框,最后對(duì)選定的候選框進(jìn)行Bounding-Box Regression和NMS進(jìn)一步優(yōu)化預(yù)測(cè)結(jié)果。
因?yàn)镻-Net的輸出只是具有一定可信度的可能的人臉區(qū)域,在這個(gè)網(wǎng)絡(luò)中,將對(duì)輸入進(jìn)行細(xì)化選擇,并且舍去大部分的錯(cuò)誤輸入,并再次使用邊框回歸和面部關(guān)鍵點(diǎn)定位器進(jìn)行人臉區(qū)域的邊框回歸和關(guān)鍵點(diǎn)定位,最后將輸出較為可信的人臉區(qū)域,供O-Net使用。對(duì)比與P-Net使用全卷積輸出的1x1x32的特征,R-Net使用在最后一個(gè)卷積層之后使用了一個(gè)128的全連接層,保留了更多的圖像特征,準(zhǔn)確度性能也優(yōu)于P-Net。
R-Net的思想是使用一個(gè)相對(duì)于P-Net更復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)來對(duì)P-Net生成的可能是人臉區(qū)域區(qū)域窗口進(jìn)行進(jìn)一步選擇和調(diào)整,從而達(dá)到高精度過濾和人臉區(qū)域優(yōu)化的效果。
O-Net
全稱為Output Network,基本結(jié)構(gòu)是一個(gè)較為復(fù)雜的卷積神經(jīng)網(wǎng)絡(luò),相對(duì)于R-Net來說多了一個(gè)卷積層。O-Net的效果與R-Net的區(qū)別在于這一層結(jié)構(gòu)會(huì)通過更多的監(jiān)督來識(shí)別面部的區(qū)域,而且會(huì)對(duì)人的面部特征點(diǎn)進(jìn)行回歸,最終輸出五個(gè)人臉面部特征點(diǎn)。
是一個(gè)更復(fù)雜的卷積網(wǎng)絡(luò),該網(wǎng)絡(luò)的輸入特征更多,在網(wǎng)絡(luò)結(jié)構(gòu)的最后同樣是一個(gè)更大的256的全連接層,保留了更多的圖像特征,同時(shí)再進(jìn)行人臉判別、人臉區(qū)域邊框回歸和人臉特征定位,最終輸出人臉區(qū)域的左上角坐標(biāo)和右下角坐標(biāo)與人臉區(qū)域的五個(gè)特征點(diǎn)。O-Net擁有特征更多的輸入和更復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),也具有更好的性能,這一層的輸出作為最終的網(wǎng)絡(luò)模型輸出。
O-Net的思想和R-Net類似,使用更復(fù)雜的網(wǎng)絡(luò)對(duì)模型性能進(jìn)行優(yōu)化。
集成架構(gòu)及系統(tǒng)思想
MTCNN為了兼顧性能和準(zhǔn)確率,避免滑動(dòng)窗口加分類器等傳統(tǒng)思路帶來的巨大的性能消耗,先使用小模型生成有一定可能性的目標(biāo)區(qū)域候選框,然后在使用更復(fù)雜的模型進(jìn)行細(xì)分類和更高精度的區(qū)域框回歸,并且讓這一步遞歸執(zhí)行,以此思想構(gòu)成三層網(wǎng)絡(luò),分別為P-Net、R-Net、O-Net,實(shí)現(xiàn)快速高效的人臉檢測(cè)。在輸入層使用圖像金字塔進(jìn)行初始圖像的尺度變換,并使用P-Net生成大量的候選目標(biāo)區(qū)域框,之后使用R-Net對(duì)這些目標(biāo)區(qū)域框進(jìn)行第一次精選和邊框回歸,排除大部分的負(fù)例,然后再用更復(fù)雜的、精度更高的網(wǎng)絡(luò)O-Net對(duì)剩余的目標(biāo)區(qū)域框進(jìn)行判別和區(qū)域邊框回歸。
下面是整個(gè)系統(tǒng)的工作流圖
技術(shù)細(xì)節(jié)
FCN(全卷積網(wǎng)絡(luò))
全卷積網(wǎng)絡(luò)就是去除了傳統(tǒng)卷積網(wǎng)絡(luò)的全連接層,然后對(duì)其進(jìn)行反卷積對(duì)最后一個(gè)卷積層(或者其他合適的卷積層)的feature map進(jìn)行上采樣,使其恢復(fù)到原有圖像的尺寸(或者其他),并對(duì)反卷積圖像的每個(gè)像素點(diǎn)都可以進(jìn)行一個(gè)類別的預(yù)測(cè),同時(shí)保留了原有圖像的空間信息。
同時(shí),在反卷積對(duì)圖像進(jìn)行操作的過程中,也可以通過提取其他卷積層的反卷積結(jié)果對(duì)最終圖像進(jìn)行預(yù)測(cè),合適的選擇會(huì)使得結(jié)果更好、更精細(xì)。
IoU
對(duì)于某個(gè)圖像的子目標(biāo)圖像和對(duì)這個(gè)子目標(biāo)圖像進(jìn)行標(biāo)定的預(yù)測(cè)框,把最終標(biāo)定的預(yù)測(cè)框與真實(shí)子圖像的自然框(通常需要人工標(biāo)定)的某種相關(guān)性叫做IOU(Intersection over Union),經(jīng)常使用的標(biāo)準(zhǔn)為兩個(gè)框的交叉面積與合并面積之和。
Bounding-box regression
解決的問題:
當(dāng)IOU小于某個(gè)值時(shí),一種做法是直接將其對(duì)應(yīng)的預(yù)測(cè)結(jié)果丟棄,而Bounding-Box regression的目的是對(duì)此預(yù)測(cè)窗口進(jìn)行微調(diào),使其接近真實(shí)值。
具體邏輯:
在圖像檢測(cè)里面,子窗口一般使用四維向量(x,y,w,h)表示,代表著子窗口中心所對(duì)應(yīng)的母圖像坐標(biāo)與自身寬高,目標(biāo)是在前一步預(yù)測(cè)窗口對(duì)于真實(shí)窗口偏差過大的情況下,使得預(yù)測(cè)窗口經(jīng)過某種變換得到更接近與真實(shí)值的窗口。
在實(shí)際使用之中,變換的輸入輸出按照具體算法給出的已經(jīng)經(jīng)過變換的結(jié)果和最終適合的結(jié)果的變換,可以理解為一個(gè)損失函數(shù)的線性回歸。
NMS(非極大值抑制)
顧名思義,非極大值抑制就是抑制不是極大值的元素。在目標(biāo)檢測(cè)領(lǐng)域里面,可以使用該方法快速去掉重合度很高且標(biāo)定相對(duì)不準(zhǔn)確的預(yù)測(cè)框,但是這種方法對(duì)于重合的目標(biāo)檢測(cè)不友好。
Soft-NMS
對(duì)于優(yōu)化重合目標(biāo)檢測(cè)的一種改進(jìn)方法。核心在于在進(jìn)行NMS的時(shí)候不直接刪除被抑制的對(duì)象,而是降低其置信度。處理之后在最后統(tǒng)一一個(gè)置信度進(jìn)行統(tǒng)一刪除。
PRelu
在MTCNN中,卷積網(wǎng)絡(luò)采用的激活函數(shù)是PRelu,帶有參數(shù)的帶有參數(shù)的Relu,相對(duì)于Relu濾除負(fù)值的做法,PRule對(duì)負(fù)值進(jìn)行了添加參數(shù)而不是直接濾除,這種做法會(huì)給算法帶來更多的計(jì)算量和更多的過擬合的可能性,但是由于保留了更多的信息,也可能是訓(xùn)練結(jié)果擬合性能更好。
我的思考
對(duì)于Soft-NMS來說,在進(jìn)行非極大值抑制的時(shí)候,可以結(jié)合實(shí)際應(yīng)用場景將部分重合的窗口的置信度與其重合度進(jìn)行線性或者非線性變換來進(jìn)行更富有邏輯意義的濾除,而不是簡單的降低置信度之后進(jìn)行統(tǒng)一濾除。
在進(jìn)行卷積的時(shí)候,是否能夠使用不同大小的卷積核使得卷積網(wǎng)絡(luò)更加敏捷,同時(shí)保留、突出的特征更多,從而進(jìn)一步提高算法的精度與效率。
參考文獻(xiàn)
總結(jié)
- 上一篇: python3.0 数据类型、万恶的编码
- 下一篇: getLocationOnScreen不