?

基于Retina-Face的人眼關鍵點檢測算法研究

2023-10-29 01:32亮,鄭
計算機仿真 2023年9期
關鍵詞:人眼關鍵點人臉

陳 亮,鄭 偉

(1. 北京交通大學電子信息工程學院,北京 100044;2. 北京交通大學國家軌道交通安全評估研究中心,北京 100044;3. 北京交通大學軌道交通安全協同創新中心,北京 100044)

1 引言

近年,機器學習和深度學習正日漸成為人工智能領域的研究熱點和主流發展方向,得益于此,計算機視覺技術取得了巨大進展,廣泛應用于生產生活的各個場景,利用計算機視覺技術檢測人體疲勞就是其中重要應用。

檢測人體疲勞可采用公認較為準確的方法之一:PERCLOS P80[1]。PERCLOS指的是眼睛閉合時間占某一特定時間的百分率,它可以實現非接觸式檢測,對被監測人員不產生影響,通常采用在單位時間(1min)內測量眼睛閉合程度超過80%的時間所占的比例(用P80表示)。因此,應用PERCLOS P80方法時,需要對人臉部,尤其是眼部的關鍵點進行準確而快速的定位[2,3]。因此,如何準確、實時、低運算成本地檢測人眼關鍵點,是疲勞檢測的基礎之一。

在實際生產工作中,疲勞檢測系統往往需要運行在功耗、計算能力有限的小型系統中,對人眼關鍵點檢測算法要求更高效、更輕量化。目前常用的檢測算法主要有:單階段(Single-stage)目標檢測算法,以YOLO算法[4]和SSD算法[5]為代表,將圖像分成多個小區域,通過引入特征圖金字塔(FPN,Feature Pyramid Networks)的方式,在不同尺寸的特征圖上面設置規格不同的錨點框,從而完成各種尺寸目標的檢測任務,單階段算法的特點是直接完成從特征到分類、回歸的預測,檢測速度非???也正是因為從同一全連接層或卷積層實現目標檢測,其網絡精度方面相較于兩階段算法稍低一些;兩階段(Two-stage)目標檢測算法,以R-CNN系列算法為代表,先提取檢測物體的區域,再對物體的區域進行分類和回歸,兩階段算法精度高但網絡推理時由于分為兩個階段進行,因此推理速度較慢。

Retina-Face模型是專門為檢測人臉而設計的單階段多任務(Single-Stage Multitask)深度學習模型,其特點是輕量化、速度快、準確性較高[6],對各層級、多尺寸特征圖信息利用較好。本文基于Retina-Face算法,設計了一種對眼部關鍵點進行回歸的檢測算法,采用輕量化主干網絡提取特征,在保證算法精度的前提下,網絡體量較小、推理速度較快,適合在低算力小型計算機上完成人眼關鍵點檢測任務。

2 基于Retina-Face的人眼關鍵點檢測算法設計

2.1 Retina-Face原理概述

Retina-Face[7]是Insight Face在2019年提出的人臉檢測模型,其網絡模型特點包括:單階段目標檢測、采用特征圖金字塔[8,9]、上下文特征模塊(SSH,Single Stage Headless Face Detector)[10]、多任務[11]、錨點框機制[12](Anchors)以及采用輕量級主干網絡等等。

圖1 Retina-Face網絡結構圖[4]

Retina-Face為了解決多尺寸人臉檢測問題引入了FPN結構、SSH特征模塊、錨點機制,在不增加網絡運算參數前提下,提高了小尺寸人臉的檢測能力。

Retina-Face采用多任務損失函數,包括:人臉分類、人臉框回歸、人臉關鍵點回歸、人臉密集點回歸等4個損失函數,如式(1)所示。

(1)

圖2 人臉5個關鍵點[4]

2.2 基于Retina-Face的人眼關鍵點檢測算法設計

1)臉部關鍵點設計

Retina-Face原網絡的人臉關鍵點是5個,分別是左右雙眼、左右嘴角,以及鼻尖,因此需要重新設計臉部關鍵點。

通用的人臉關鍵點檢測有包含Retina-Face的5個關鍵點,還有如OpenCVDlib庫中的68個關鍵點[13]、WFLW[14]標注98個關鍵點的數據集等,如圖3所示。在計算PERCLOS P80數據時,需要用到的是眼部關鍵點數據,因此為了盡可能減少計算資源消耗,采用雙眼周圍的12個關鍵點。人臉關鍵點及眼部關鍵點示意圖如圖3所示。

圖3 人臉關鍵點及眼部關鍵點示意圖

2)損失函數設計

針對人眼關鍵點檢測,由于不需要對人臉密集點回歸,并且密集點回歸的計算量相對較大,因此損失函數中移除密集點回歸損失函數。

3)網絡結構設計

在原Retina-Face設計中,FPN特征圖金字塔結構是為了可以對小尺寸人臉有更好地檢測效果。但是通常情況下,工作場景中的疲勞檢測,例如:在司機駕駛、調度員指揮、值班員盯控站場計劃等場景中,采集圖像中的人臉面積在原圖中所占比例適中,因此,可以去除掉Retina-Face模型原有特征金字塔網絡的P2和P6層結構,有針對性地保證中尺寸人臉檢測結果的同時,減少不必要的網絡推理計算過程。

簡化后的特征金字塔網絡結構如圖4所示。

圖4 重新設計的網絡結構

4)圖像數據Gabor預處理設計

在實際疲勞檢測場景下,臉部易受復雜光照環境影響,從而影響算法檢測效果。在傳統圖像數據處理方法中,Gabor濾波器在頻域不同尺度、不同方向上提取相關的特征,經常用作紋理識別上,并取得了較好的效果,在一定程度可以突出眼部特征[15],另一方面,Gabor濾波器處理數據量少、速度快,因此本文采用Gabor濾波器對數據進行預處理,以達到提高算法準確率的目的。

3 基于Retina-Face的人眼關鍵點檢測算法實現

3.1 人臉關鍵點損失函數設計

優化后的人臉關鍵點損失函數包含人臉分類、人臉框位置回歸以及人臉關鍵點回歸損失函數

(2)

3.2 預訓練模型遷移學習

在傳統機器學習框架中,一個神經網絡進行特定任務的訓練時,需要充分的訓練數據,獲取足夠的數據并對其標注也是一個相對耗時的過程。遷移學習在計算機視覺領域中是一種通用的方法,因為它不僅可以建立完成具體任務的精確模型,其訓練耗時更短[16,17]。利用遷移學習,可以不用從零開始訓練網絡模型,而是從之前解決各種問題時學習到的模式開始,因為數據雖然不同,但是圖像特征是通用的。

Retina-Face包含三個任務:人臉分類、人臉框檢測、人臉關鍵點檢測,當使用預訓練網絡權重文件進行預測時,對于人臉分類、人臉框檢測無需再次進行訓練,本文通過對前兩者相關權重進行凍結,對眼部關鍵點檢測權重進行單獨訓練,不僅可以大幅提高訓練效率,由于預訓練權重對人臉檢測效果較好,還可以對關鍵點檢測的準確性起到積極作用。

3.2 網絡結構設計

1)采用MobileNet V1作為骨干網絡

輕量化的卷積神經網絡的研究目的和意義在于,參數計算較小的模型,其檢測準確率仍保持較高水平。MobileNet V1作為輕量化網絡的經典模型[18],其使用了深度可分離卷積(Depth-wise Separable Convolutions)來代替傳統的卷積,在訓練時參數的計算量和計算時間都得到很大程度的降低,較為適用于計算資源有限設備的深度學習網絡[19]。

3.3 圖像數據Gabor預處理

對原圖的Gabor預處理過程為,分別提取三個方向的特征圖[20]:0°、45°、90°,在每個方向上得到一張特征圖,并以每張特征圖為一個通道合成新圖片,最后進行灰度化處理。如圖5所示。

圖5 Gabor特征圖

人眼的Gabor特征與原圖有一定的相似性,Gabor濾波器能夠保留圖像紋理變化特征的同時,用來提取圖像的邊緣信息,突出了眼部特征,降低了特征冗余。通過對圖像數據進行Gabor預處理,進一步保證了模型對眼部特征點回歸的準確率。

4 試驗驗證與結果分析

4.1 試驗環境及實驗數據集

本文算法實驗環境是:操作系統windows10,CPU為:IntelXeon 6230,內存32G,顯卡型號為NVIDIA Geforce GTX 2080Ti,顯存11G。編程環境和深度學習框架分別是python3.6和Pytorch。

目前,常用的人臉檢測質量評估的公開數據集有:Wider-Face[21]、300W、300VW、WFLW等數據集,由于公開數據集中包含許多不清晰的人臉圖片,且多為睜眼圖片,與應用PERCLOS方法檢測疲勞的實際使用場景較為不同,因此本文除在公開數據集中選取大小適中、清晰的人臉圖片以外,還采集戴眼鏡、不戴眼鏡、正面、側面和光照不均勻等多種情況,的數據,并從Eyelink8[22](眨眼數據集)中眨眼圖片進行標注,共計10000張圖片,共同作為本文的數據集。

4.2 試驗過程

采用帶動量的隨機梯度下降法(stochastic gradientdes-cent,SGD)優化器進行訓練,動量大小采取經驗數值0.9,采用交叉驗證方法,訓練集與驗證集比例為8∶2。

訓練時,設置真實人臉框和錨框的交并比(IoU,Intersection over Union)的正例樣本閾值為0.5(經驗值)、負例樣本閾值為0.3,但此時絕大部分樣本會被認為是負樣本,造成樣本不均衡,為了避免該問題,正負例樣本數量的比例控制為3:1。

數據增強可以有效提升模型魯棒性[23],本文按照隨機選擇0.3、0.45、0.6、0.8、1.0尺寸對原圖進行剪裁,并將圖像縮放到640×640,并以0.5概率進行隨機鏡像和顏色擾動,以達到增加更多人臉數據,提高模型表現能力的目的。

4.3 試驗結果分析

在公共數據集、自制數據集上劃分的測試集進行測試,通過歸一化平均誤差(NME,Normalized Mean Error)進行對比。NME是人臉關鍵點檢測常用的評價指標

x代表關鍵點真實位置,y代表網絡預測值,d代表兩個外部眼角的歐式距離。NME越小,代表模型預測的結果越好。

表1 與其算法在300W數據集的NME對比

表2 不同算法的模型大小和自制數據集預測速度

表3 在自制數據集上不同睜眼程度NME對比

5 結論

本文通過修改網絡結構、增加傳統圖像處理方法,提出了一種基于Retina-Face模型的人眼關鍵點檢測算法,在300W數據集和自采數據上,推理的速度是100ms、NME是3.58,同時,采用Gabor預處理方法相較于未采用Gabor語出方法,NME提高0.15%;在自制數據集的不同睜眼程度的推理方面,NME分別是3.20/3.25/3.21,模型參數量僅有1.8M。在保證時效性和關鍵點檢測準確率的同時,進一步減少了模型參數量,為基于計算機視覺的實時疲勞檢測打下了基礎。在下一步研究中,可以對數據集進一步擴充,采集覆蓋多個年齡段人群的人臉數據,提升算法的魯棒性和準確性。

猜你喜歡
人眼關鍵點人臉
聚焦金屬關鍵點
肉兔育肥抓好七個關鍵點
有特點的人臉
人眼X光
人眼為什么能看到虛像
三國漫——人臉解鎖
閃瞎人眼的,還有唇
看人,星光璀璨繚人眼
馬面部與人臉相似度驚人
醫聯體要把握三個關鍵點
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合