陳亞晨, 韓 偉, 白雪劍, 陳友華,3*, 趙俊奇, 閻 潔
(1.中北大學信息與通信工程學院, 太原 030051; 2.山西省視光學生物診療設備工程研究中心, 太原 030051;3.生物醫學成像與影像大數據山西省重點實驗室, 太原 030051)
隨著計算機、人工智能的發展,人機交互(human-computer interaction, HCI)技術在軍事、工業等領域應用愈加廣泛[1]。人機交互的方式從打字、觸屏、語音到視覺,交互方式的發展給人們的操作帶來了便利,其中,視覺是獲取信息、感知外部世界最重要的途徑之一,這種交互方式具有直接性、自然性與雙向性的特點[2],可以在特定場合中解放雙手。因此,基于眼動信息的人機交互成為近些年人機交互領域的研究熱點。按硬件結構不同,可以將眼機交互系統分為桌面式和穿戴式兩類[3]。桌面式眼機交互系統對頭部轉動較為敏感,輕微的偏移都會導致系統精度顯著下降,需要復雜的補償算法進行頭動修正;穿戴式眼機交互系統[4]具有便攜性,系統與頭部相對位置固定,允許頭部自由運動,降低了對用戶的約束,更適合室外等環境。隨著應用場景的不斷變化及嵌入式技術的發展,智能化、嵌入式、可穿戴的眼機交互系統在實際應用領域受到越來越多研究者關注。
在眼機交互技術中,人眼定位精度對眼行為識別的結果有顯著的影響。傳統的人眼定位的方法有基于幾何特征、基于模板匹配、基于Hough變換等。文獻[5]提出了一種基于改進Hough變換的人眼定位方法,其定位精度達到92.5%,平均耗時為178.8 ms;文獻[6]提出了一種基于積分投影和模板匹配的人眼定位方法,其定位平均精度達95%,平均耗時55.78 ms;文獻[7]提出了一種灰度積分投影和圓形標記法結合的人眼定位方法,其定位精度達90%,平均耗時4.05 s。以上方法在準確率方面取得了較好的結果,但要滿足穿戴式眼行為的實時識別要求,定位速度和準確率都需要進一步提高。除此之外,傳統的人眼定位方法描述特征過程十分煩瑣,很難挖掘更深維度的圖像信息,導致傳統的人眼定位方法泛化性差,很難達到實時檢測的目的。
隨著深度學習的發展,卷積神經網絡(convolutional neural networks, CNN)已經具有較強的魯棒性,能夠較強地學習圖像的深層特征。文獻[8]中,將R-CNN算法應用于人臉的檢測,該算法的網絡復雜度過高,即使使用運算速度較高的GPU也仍然運行緩慢;而以YOLO-v2、YOLO-v3為代表的YOLO(you only look once)[9]系列的算法,它是通過回歸預測目標區域。該算法解決了網絡復雜度過高的問題。其中,YOLO-v3是在YOLO-v2[10]的基礎上提出的,是目前較為優秀的目標檢測算法,在檢測實時性方面表現突出。YOLO-v2已經成功應用于行人檢測[11]、皮膚診斷[12]等領域,作為YOLO-v2的改進版,YOLO-v3的檢測速度更快、檢測精度更高。
現通過對YOLO-v3網絡結構進行改進,并采用K-means聚類算法計算該模型的初始先驗框參數,提高模型的特征提取細粒度,以及模型檢測的速度,再結合人眼特征參數提取方法和眼行為識別算法構建了眼機交互模型并進行了實驗驗證。
由于穿戴式眼機交互系統需要具備實時性、高效等特點,現提出一種基于改進YOLO-v3的眼機交互模型,實現實時的眼行為識別。該方法的總體流程如圖1所示,其包括訓練和檢測兩個模塊,檢測模塊包括人眼檢測和眼行為識別兩部分。其中,訓練模塊是改進的YOLO-v3網絡在自制數據集上的訓練過程;檢測模塊是實現眼行為識別的過程。該模塊首先采用紅外攝像頭采集人眼區域圖像;之后將采集的圖像輸入到訓練好的模型中進行檢測,獲得人眼坐標參數及人眼圖像;然后通過人眼特征參數提取獲得人眼的寬和高,最后計算人眼開合度并與相對應的閾值進行判別,從而實現眼行為的識別。

圖1 模型總體流程圖Fig.1 Overall flow chart of the model
1.1.1 網絡結構
網絡結構如圖2所示。其骨干模型框架使用由一系列3×3和1×1的卷積層組成的Darnet-53結構。該網絡結構劃分了大小為104×104、52×52、26×26的特征圖,刪減了大型尺度特征。其中包括20個殘差模塊,分別為4×、4×、4×、8×殘差塊的4組網絡,與原YOLO-v3中1×,2×,8×,8×,4×殘差塊的5組網絡相比,增加了殘差連接結構的數量,提升了深層網絡的細粒度,通過深層網絡通道向上采樣,豐富淺層的特征信息,提升人眼目標檢測的精度。

圖2 改進YOLO-v3網絡結構Fig.2 The improved network structure of YOLO-v3
1.1.2 優化初始先驗框
YOLO-v3在目標檢測過程中引入初始先驗框(anchor box),其性能優劣直接影響到目標框位置的精度。為了得到最優的初始先驗框參數,采用K-means聚類算法在自制數據集上計算初始先驗框。K-means 聚類算法是以距離作為數據對象間相似性度量的標準, 從而實現數據劃分的聚類算法。其中,典型的是以歐式距離作為相似度測度。該算法首先在數據集中隨機選取k個聚類中心;之后遍歷數據集中所有數據與每個聚類中心點的距離,將每個數據分別劃分到距離最近的中心點所在的集合中[13];然后求每個聚類集合的所有數據各個維度[14],求得的值為新的聚類中心;重復上述過程直到聚類中心位置不再發生改變或者到達設定的迭代次數。
而在YOLO-v3算法中,從數據集的標注框中聚類出的初始候選框并不是使用歐式距離獲得,而是通過交并比(intersection over union,IOU)計算標注框之間的距離,IOU越大代表標注框之間的距離越小。計算公式為
d(box,centroid)=1-IOU(box,centroid) (1)
由K-means聚類算法得到平均IOU與錨點框(anchor)個數的關系,如圖3所示。

圖3 平均交并比與錨點個數的關系Fig.3 The relationship between the average IOU and the number of anchor points
由圖3可見,平均交并比隨錨點個數(k)增大而增大。在錨點框個數大于9之后,曲線增長趨勢相對平緩,考慮網絡的計算成本,將初始先驗框個數設置為9。經計算,初始候選框分別為(247,102)、(247,110)、(249,125)、(253,118)、(258,134)、(259,112)、(264,124)、(275,115)、(277,128)。
1.1.3 模型訓練
1)訓練環境配置及數據集制作
本文模型訓練環境配置如表1所示。制作數據集的具體步驟如下:①使用外接USB紅外攝像頭實時拍攝,獲得基礎圖象,共1 600張。②對其中采集的1 200張基礎圖象采用翻轉、縮放、亮度變換等方法進行數據增強[13],生成1 800張圖像。③使用LabelImg工具按VOC格式對基礎圖像進行標記,生成XML文件。④讀取XML文件,計算經過數據增強的圖像的標注數據。⑤將生成的所有的數據按照90%、10%的比例分割為訓練集和驗證集;將剩余的400張基礎圖像作為測試集。人眼數據集如表2所示。

表1 模型訓練實驗環境配置Table 1 Configuration of model training experimental environment

表2 人眼目標檢測數據集
2)訓練過程
由于目前公開的不同眼行為數據集較少,故在數據增強的基礎上使用遷移學習提高算法的泛化性。現將YOLO-v3在COCO數據集上訓練獲得的預訓練權重模型加載到改進的YOLO-v3網絡中并在自制數據集上進行訓練。在訓練過程中,以416×416的圖像作為輸入,經多次實驗分析,設置batch size為4,初始學習率為0.001,權重衰減正則項為0.005,最優化動量參數為0.9。首先凍結前228層進行訓練,迭代500次。經過一段時間訓練后,損失值降到15附近。然后在此基礎上解凍所有層繼續訓練,進行微調,再迭代50次。當迭代到520次時,如圖4所示,Loss曲線降到7附近并趨于平緩。

圖4 網絡訓練損失曲線Fig.4 Network training loss curve
在上述訓練好的模型的基礎上,將采集的圖像作為模型的輸入進行檢測,獲得人眼圖像。基于圖像灰度特征的特點,采用矩陣遍歷法提取人眼特征參數。該方法通過掃描二值圖像的每個像素點獲取人眼邊界點,并利用邊界點計算人眼的寬和高。其中,二值圖像是對上述人眼圖像采用最大類間方差和腐蝕運算的預處理方法獲得[15]。
如圖5所示,具體步驟如下。

圖5 提取人眼特征參數流程圖Fig.5 Flowchart for extracting eye feature parameters
(1)將所述圖像矩陣設為A(m,n)。遍歷圖像矩陣A(m,n)的行時,計算行和,組成新的列矩陣H(h);遍歷圖像矩陣A(m,n)的列時,計算列和,組成新的行矩陣V(w)。
(2)根據列矩陣H(h)得到其逆矩陣q(h),根據行矩陣V(w)得到其逆矩陣p(w),分別遍歷矩陣H(h)、q(h)、V(w)和p(w)。
(3)遍歷過程中,作如下判斷:
當H(h)≠0,則Ymin=h;
當q(h)≠0,則Ymax=m-h+1;
當V(w)≠0,則Xmin=w;
當p(w)≠0,則Xmax=n-w+1。
此時,可以獲得人眼的邊界坐標Ymin、Ymax、Xmin、Xmax。
根據上述坐標及式(2)計算人眼寬和高,即

式(2)中:H為人眼上下眼瞼垂直距離,即為人眼的高;W為人眼兩個眼角間的水平距離,即人眼的寬。
將人眼行為分為睜眼、瞇眼和閉眼三種,并將其特征抽象成開合度(RHW),以便進行量化處理。采用眼行為識別算法對不同眼行為特征進行識別,具體過程如下。
(1)閾值T1、T2的選取。通過系統剛打開時采集連續若干幀圖像,統計所有的睜眼的開合度和閉眼的開合度,計算其最小值與最大值,T1、T2的計算方法為

式(3)中:L1為睜眼的開合度的最小值;L2和L3為瞇眼的開合度的最小值和最大值;L4為閉眼狀態的開合度的極大值。
(2)開合度的計算。根據上述所獲得的人眼的寬(W)和高(H)計算人眼的寬高比,即開合度(RHW),計算方法如式(4)所示。

(3)不同眼特征行為的判別。根據(1)、(2)獲得的閾值及人眼開合度,做如下判斷:
①當RHW ②當T1 ③當RHW 另外,判別眼特征行為過程中,人眼的自然眨眼行為也會產生開合度的變化,從而對人眼特征產生干擾和誤判。因此,在人眼識別過程中,需要對眨眼行為進行檢測與剔除。眨眼被定義為上眼瞼的快速閉合和打開,在這個過程中人眼的開合度會發生明顯的變化。因此,通過相鄰3~4幀左右圖像的對比,即可進行剔除,最終實現眼行為的識別。 2.1.1 評價指標 在實驗中,采用平均檢測準確率(mean average precision,mAP)和檢測速度評判模型的檢測效果。 FPS是評估模型檢測速度的常用指標,FPS越大代表模型檢測速度越快,計算方法如式(5)所示。mAP是目標檢測中衡量檢測精度的常用指標[16],指多個類別的平均精確度的平均值,該值越大代表模型的總體檢測準確率越高,計算方法如式(6)所示。其中,AP指單個類別的平均精度。同時,AP是P-R(precision-recall)曲線圍成的面積,P-R曲線是以準確率(precision)和召回率(recall) 作為橫、縱坐標的二維曲線,計算方法如式(7)所示。 式中:c為分類個數;當c=1時,mAP=AP。 2.1.2 測試結果 為了測試改進YOLO-v3模型人眼檢測的效果,將原YOLO-v3模型作為對比模型,分別使用原YOLO-v3模型和改進YOLO-v3模型在自制人眼數據集上進行測試,測試結果如表3所示,在自制人眼數據集上的P-R曲線如圖6所示。其中,設置IOU閾值為0.5,置信度閾值為0.45。 表3 檢測對比結果 圖6 在數據集上的P-R曲線Fig.6 P-R curve on datasets 由表3可知,改進YOLO-v3在單目標檢測速度上提高了2.6 f/s,同時獲得99.9%的mAP,比YOLO-v3提高了7.19%。可以看出改進YOLO-v3模型在平均精度上和檢測速度上均有所提高,滿足實時性的要求。 隨后,輸入300幀640×480的視頻數據到本文模型中,對每幀圖像進行人眼檢測,部分檢測結果如圖7所示。 圖7 模型測試效果圖Fig.7 Model test effect diagram 完成上述模型性能評估,獲得性能較好的模型之后,穿戴式眼機交互設備采用基于RK3399嵌入式平臺的Linux操作系統,選用60°無畸變的外置USB紅外攝像機采集不同情況(是否佩戴眼鏡)的視頻數據,之后將圖像輸入訓練好的模型進行人眼檢測獲得人眼位置坐標以及人眼圖像,然后對人眼圖像進行眼行為特征識別。 識別眼特征行為過程中,由于人眼的自然眨眼行為也會產生開合度的變化,因此實驗過程中對眨眼行為進行檢測。圖8為其中連續100幀圖像的人眼開合度變化曲線,黃色的框表示發生了眨眼行為;開合度大于0.25的區域為睜眼狀態;開合度小于0.09的區域為閉眼狀態;當相鄰3~4幀圖像的開合度突然發生變化時,則發生了眨眼。圖8中發生了3次眨眼行為。 圖8 眨眼檢測結果Fig.8 Blink detection result 在上述實現眨眼檢測與剔除的基礎上,分別對正常人眼圖像和配戴眼鏡的人眼圖像進行識別。識別結果如表4所示。部分識別結果如圖9、圖10所示。圖9(a)、圖9(b)和圖9(c)分別代表睜眼、瞇眼、閉眼三種不同狀態下的眼行為的識別結果;圖10為被測者配戴眼鏡的情況下,對不同狀態的眼行為(睜眼、瞇眼、閉眼)的識別結果。藍色的方框表示識別到人眼區域。圖9、圖10體現了該眼機交互模型可以實現對佩戴眼鏡的人眼圖像和正常人眼圖像的不同的狀態的眼行為的識別。 表4 不同情況下識別準確率結果 圖9 不同狀態正常人眼的識別結果Fig.9 Recognition result of normal eye in different states 圖10 不同狀態佩戴眼鏡的識別結果Fig.10 Recognition results of glasses-wearing eye in different states 由表4可知,本文模型檢測不同情況下的睜眼狀態的識別準確率為96.93%;瞇眼狀態的識別準確率為87.09%;閉眼狀態的識別準確率為89.83%;總體識別準確率達到91.30%。綜上,該模型可以較好地識別不同眼行為。 研究了YOLO-v3網絡的特點,根據所檢測圖像特點,通過對其進行改進并進行訓練獲得改進YOLO-v3模型,再將其與人眼特征參數提取方法和眼行為識別算法結合,構建一種眼機交互模型并進行實驗。實驗結果表明,改進YOLO-v3模型的mAP為98.6%,識別速度達22.8 f/s,相比原YOLO-v3方法訓練時間縮短了11.4%。同時,該模型的總體識別準確率達到91.30%。本文模型為嵌入式眼-機交互設備提供了必要的算法保證。2 實驗結果及分析
2.1 模型檢測結果及分析






2.2 眼機交互模型檢測結果




3 結論