基于matlab的MTCNN(多任務卷積神經網絡)人臉檢測算法
關鍵詞:Matlab;深度學習;多任務卷積神經網絡;人臉檢測;
背景
在不受約束的環境中,由于個體姿勢的多樣性、光照條件的變化以及潛在的遮擋問題,人臉檢測和對齊任務面臨諸多挑戰。近期的研究表明,深度學習技術在這些任務上展現出了卓越的性能。本文提出了一種基于深度學習的級聯多任務框架,旨在通過檢測與對齊任務間的內在聯系來提升整體性能。具體而言,本框架采用由三個階段組成的深度卷積網絡,以自底向上的方式預測人臉及其關鍵點的位置。此外,本文還提出了一種在線硬樣本挖掘策略,以進一步提高實際應用中的性能。本方法在FDDB和WIDER FACE等具有挑戰性的人臉檢測基準測試以及AFLW人臉對齊基準測試中,均實現了比現有技術更高的準確性,同時保持了實時性能。
多任務卷積神經網絡(MTCNN)
MTCNN是由中國科學院深圳研究院于2016年提出的,用于人臉檢測任務的深度學習模型。該模型能夠在同一框架內集成人臉檢測與人臉關鍵點檢測任務。MTCNN網絡結構由三個階段組成,即P-Net、R-Net和O-Net,形成一個級聯網絡。該模型采用候選區域加分類器的方法,兼顧了檢測速度與精度,實現了快速高效的人臉檢測,如圖1所示。
圖1 MTCNN效果展示說明
方法原理
MTCNN是一種用于人臉檢測的深度學習算法。它由多個階段組成,每個階段都執行特定的任務,例如區域提議、特征提取和邊界框回歸。下面是一個簡化的流程圖,描述了使用MTCNN進行人臉檢測的一般步驟:
輸入圖像:將待檢測的圖像輸入到MTCNN模型中。
階段1:快速區域提議:使用一個卷積神經網絡(CNN)來快速生成人臉候選區域。這個階段通常使用P-Net,它能夠快速地從圖像中提取出可能包含人臉的區域。
生成多個候選區域:P-Net輸出多個候選區域,這些區域是可能包含人臉的矩形框。
階段2:特征提取:對于每個候選區域,使用另一個CNN(通常稱為R-Net)來提取特征并進一步篩選候選區域。
特征表示:R-Net輸出每個候選區域的特征表示,這些特征將用于后續的邊界框回歸。
階段3:邊界框回歸:使用第三個CNN(通常稱為O-Net)來細化每個候選區域的邊界框,包括位置和大小。
細化候選區域:O-Net輸出細化后的邊界框,這些邊界框更準確地定位了人臉的位置。
階段4:邊界框細化:對細化后的邊界框進行進一步的調整,以確保最終的人臉檢測結果的準確性。
最終的人臉檢測結果:輸出最終的檢測結果,包括人臉的位置和大小。
MTCNN通過這種多階段的級聯方法,能夠在保持高準確率的同時,提高檢測速度。每個階段都專注于不同的任務,從而實現對人臉的精確檢測。
圖2 MTCNN方法流程圖
實驗結果
筆者基于上述的方法編寫了MATLB代碼,圖片經過P-Net處理后,會得到特征圖,并通過分類和非極大值抑制(NMS)篩選掉大部分非人臉候選區域。剩余的候選區域在原圖中裁剪后輸入到R-Net,進一步篩選并去除錯誤的候選。最后,剩余的候選區域再次裁剪并輸入到O-Net,此時能夠輸出精確的邊界框和關鍵點坐標,如圖3所示。
圖3 MTCNN檢測結果
MTCNN人臉檢測器在速度和準確性方面表現出色。在WIDE人臉基準測試中的評估顯示,與非深度學習方法相比,性能有顯著提升。預測速度取決于圖像大小、分辨率、金字塔尺度和硬件配置(如CPU或GPU)。在典型的CPU上,對于VGA分辨率的圖像,幀速率可達到約10 fps。與MATLAB內置的人臉檢測器相比,MTCNN在面部姿勢的適應性上更為強大,實時檢測結果如下圖所示。
最后,如有相關需求,歡迎通過公眾號“320科技工作室”與我們聯系
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















