(西南科技大學 信息工程學院,綿陽 621000)
近年來,無人機得益于傳感器技術(shù)的快速發(fā)展以及控制理論的日益成熟得以快速發(fā)展[1]。四旋翼無人機飛行穩(wěn)定性好,能夠在較低的飛行高度低速巡航,且在裝載攝像機與圖像處理平臺后,擁有更寬闊的視野空間,能夠自主完成多種任務(wù),方便無人機系統(tǒng)實現(xiàn)對目標的主動檢測、跟蹤、識別[2],對于提高我國的公共安全具有重要的科學和工程意義。
針對室外指定行人的目標識別,由于行人外觀容易產(chǎn)生變化,使用行人的外觀模型區(qū)分不同行人魯棒性不強,容易產(chǎn)生錯誤的結(jié)果[3]。而人臉具有很強的唯一性,且難以被復(fù)制、仿冒,所以可以使用人臉識別的方式對需要識別的目標進行確認。人臉識別具有非接觸性與非強制性,并且不需要特別的配合方式,適合多種場景下的應(yīng)用。近年來計算機技術(shù)迅猛發(fā)展,人臉識別技術(shù)更是得到了前所未有的發(fā)展,目前許多人臉識別算法的準確率已經(jīng)超過了人眼的準確率[4]。所以使用人臉識別的方式對需要識別的目標進行確認具有較強的魯棒性。
為實現(xiàn)對特定目標快速高效的識別,設(shè)計實現(xiàn)了一種兼顧速度與精度的融合方法。首先通過Tiny-YOLOv3檢測“行人”與“人臉”,返回人臉在圖像中的位置,并將人臉部分裁剪后對齊,然后利用FaceNet進行人臉識別。通過航拍構(gòu)建了不同場景不同高度和不同距離的大量視頻用以制作航拍行人和人臉數(shù)據(jù)集,對Tiny-YOLOv3模型進行訓練,得到用于檢測的權(quán)重文件,利用其中的人臉圖像訓練分類模型,用于人臉驗證。并通過實驗驗證了模型的有效性和目標驗證的準確性。
本文構(gòu)建的無人機系統(tǒng)主要包括四旋翼無人機、地面站系統(tǒng)和手持遙控器。其中四旋翼無人機搭載了飛行控制系統(tǒng)、圖像處理系統(tǒng)和視頻采集系統(tǒng)。機載圖像處理系統(tǒng)用于處理采集到的視頻,完成人臉及行人檢測功能。無人機平臺可將視頻及處理信息發(fā)送至地面站以供監(jiān)控。
無人機可使用地面站規(guī)劃路徑飛行,或使用遙控器控制飛行。在執(zhí)行檢測識別任務(wù)時,根據(jù)圖像處理平臺的指令,飛控系統(tǒng)執(zhí)行偏航、俯仰與橫滾等飛行要求,完成跟蹤任務(wù)。系統(tǒng)整體示意如圖1所示。
圖1 無人機系統(tǒng)方案示意圖
人臉識別可以分為三個步驟:人臉檢測、人臉對齊與人臉識別。人臉檢測是在一張圖片里找出所有的人臉位置,是人臉識別的基礎(chǔ)條件;檢測到人臉后進行人臉對齊,經(jīng)過人臉對齊后的圖像將更利于人臉識別。人臉識別包括特征提取與特征比對,基本思路就是抽取對齊后的人臉圖片特征,然后根據(jù)閾值進行比對,來判斷是否為同一個人。算法總體框架如圖2所示。
圖2 人臉識別框架圖
首先從機載相機獲取需要進行檢測的圖像,使用Tiny-YOLOv3對圖像中的“人”和“人臉”進行檢測,獲取返回的人臉位置,從原圖中裁剪出人臉區(qū)域,隨后使用梯度提升決策樹方法(Gradient Boosting Decision Tree,GBDT)進行人臉對齊。隨后使用FaceNet抽取向量特征,進而通過1:N相似度對比驗證獲取到的人臉是否為需要識別的目標,如果不是則繼續(xù)進行檢測與人臉驗證,如果人臉驗證通過,即找到了需要識別的目標,則通過人臉檢測框坐標和人臉大小與距離比例的先驗關(guān)系計算行人坐標,隨后將識別目標的相對GPS坐標發(fā)送給地面站。
人臉檢測是指從圖像中找出所有人臉,確定人臉在圖像中的位置、大小和數(shù)量。人臉檢測是人臉識別的第一步,其檢測結(jié)果直接影響了后續(xù)步驟的準確性[5]。
傳統(tǒng)目標檢測算法并沒有將特征提取與分類訓練結(jié)合起來,當提取的特征丟失了部分有用信息時,將無法再次從訓練中恢復(fù),導(dǎo)致目標檢測成功率降低,阻礙了傳統(tǒng)檢測方法獲得更加詳盡的特征描述。近年來基于深度學習的目標檢測方法相比較于傳統(tǒng)方法體現(xiàn)出了各方面的優(yōu)勢,其中YOLO目標檢測算法利用卷積神經(jīng)網(wǎng)絡(luò)回歸目標的位置并得到類別,實現(xiàn)了端到端的實時目標檢測,具有較快的速度與泛化性。
YOLOv3在YOLO早期版本的基礎(chǔ)上進行了多尺度檢測、多標簽分類等改進。Tiny-YOLOv3是YOLOv3的簡化版本,簡化后的網(wǎng)絡(luò)雖然檢測精度有所降低,但檢測速度有了很大的提高。人臉檢測部分使用Tiny-YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)如表1所示[6]。
相比較YOLOv3基礎(chǔ)版,Tiny-YOLOv3網(wǎng)絡(luò)層數(shù)由108層變?yōu)?3層,網(wǎng)絡(luò)層數(shù)減小,同時降低卷積層的維數(shù),并且將3個yolo層改為2個yolo層,盡管損失了一些檢測精度,但實時性效果極大提升。其中特征圖中的每個單元格cell都會預(yù)測3個邊界框,每個邊界框都會預(yù)測三部分:1)每個框的位置(4個值:預(yù)測框的中心坐標x、y及框的高度和寬度);2)一個目標預(yù)測值;3)N個類別數(shù),本文中N=2。因此對于本網(wǎng)絡(luò),網(wǎng)絡(luò)的輸出大小為3×(4+1+2)=21。
表1 人臉檢測網(wǎng)絡(luò)結(jié)構(gòu)
(表1)續(xù)
檢測出人臉后需要對圖片中的人臉進行裁剪、對齊。人臉對齊算法采用GBDT,GBDT是一種基于回歸樹的人臉對齊算法,通過建立一個級聯(lián)的殘差回歸樹來使人臉形狀從當前形狀一步一步回歸到真實形狀[7]。每一個GBDT的每一個葉子節(jié)點上都存儲著一個殘差回歸量,當輸入落到一個節(jié)點上時,就將殘差加到改輸入上,起到回歸的目的,最終將所有殘差疊加在一起,就完成了人臉對齊的目的。如圖2(d)所示為進行人臉對齊前后的對比,經(jīng)過GBDT算法進行人臉對齊后,將雙眼、鼻尖、雙嘴角(共五點)校準至同一位置,為人臉識別的預(yù)處理環(huán)節(jié)。
人臉識別的核心內(nèi)容就是人臉特征的提取與比對,基本工作流程是將人臉檢測后的人臉進行對齊,使用對齊后的人臉圖像進行特征提取,將提取到的特征與目標人臉的特征進行對比,根據(jù)閾值判斷是否為同一個人[8]。FaceNet是Google團隊開發(fā)的人臉識別算法,具有簡單直接的特點,且對多角度、多姿態(tài)以及局部遮擋具有一定的魯棒性,是目前針對人臉識別方向比較優(yōu)秀的算法之一[9]。
FaceNet最大的特點是沒有像許多人臉識別系統(tǒng)使用softmax函數(shù)作為損失函數(shù)進行學習然后提取特征,而是使用了三元損失函數(shù)(Triple loss)進行訓練,直接從原始像素值中學習特征表示,進行端到端的學習從圖像到歐式空間的編碼方法。FaceNet的網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 FaceNet網(wǎng)絡(luò)結(jié)構(gòu)圖
FaceNet使用了Inception和Zeiler&Fergus作為基礎(chǔ)網(wǎng)絡(luò)模型,使用三元損失函數(shù)進行訓練,取得了非常好的效果。三元損失函數(shù)的核心思想就是使待測樣本與正樣本盡可能的相似與負樣本盡可能不同。如圖4所示,三元組就是三個樣例,如Anchor、Positive與Negative三個樣例,Anchor與Positive為同一類,Anchor與Negative為不同類,訓練的目的就是使得三元組中,Anchor與Positive的距離要小于Anchor與Negative之間的距離,并獲得這種表示模型。
圖4 三元損失函數(shù)
假設(shè)xa代表參考圖像樣本(Anchor),xp是屬于同一類的其他圖像(Positive),xn為不同類的其他圖像(Negative),則三元組可以用式(1)表示。
其中,α表示正負樣本之間的邊界值,τ表示訓練集中可能的三元組集合,n為所有樣本數(shù)量,變換后可得到如下目標函數(shù)。
目標函數(shù)的作用在于調(diào)整不符合規(guī)則的三元組,網(wǎng)絡(luò)學習之前,Anchor和Positive的歐式距離可能很大,Anchor和Negative的歐式距離可能很小,在網(wǎng)絡(luò)的學習過程中,Anchor和Positive的歐式距離會逐漸減小,而Anchor和Negative的距離會逐漸拉大。即通過學習,使得目標類別更容易區(qū)分。將人臉圖像輸入訓練完成的FaceNet網(wǎng)絡(luò)中,將會得到一個128維的特征向量,比較不同特征向量之間的歐式距離就可得到對應(yīng)樣本的相似性[9]。本文對兩個圖像對應(yīng)特征向量之間的歐式距離根據(jù)整體訓練集進行歸一化,閾值取0.95。
對目標檢測與識別進行實驗分析,其中包括人臉識別模型與目標檢測模型的分開驗證,以及兩者算法結(jié)合后對于不同高度測試集的人臉識別準確度驗證,用以確定無人機在進行目標檢測識別時的最佳飛行高度。實驗主機配置為:Intel i5-6300HQ處理器,內(nèi)存8G DDR4,顯卡為NVIDIA GTX960M獨立顯卡。機載圖像處理系統(tǒng)采用英偉達TX2,裝配64位Ubuntu16.04操作系統(tǒng),使用OpenCV3.4.3。
為了分析無人機航拍人臉識別的可行性,使用無人機搭載攝像機在高度3米、4米以及5米拍攝行人由遠接近的過程,視頻分辨率為1280×720,使用OpenCV分割視頻讀取圖片,手動框選圖片中的人臉,通過程序計算人臉所占像素,分析人臉像素大小變化。
如圖5所示,第一行展示了無人機飛行高度為3米時畫面,行人在無人機8米遠處人臉像素大小約為39×53,人臉所占像素大小隨著行人的接近越來越大,當行人接近到距離無人機3米時,人臉像素值大小約為90×103。第二行展示了當無人機飛行高度為5米時,行人在無人機8米遠處人臉像素大小約為21×27,人臉所占像素大小隨著行人的接近越來越大,當行人接近到距離無人機4.0米時,人臉像素值大小約為62×76。
圖5 人臉像素大小
經(jīng)過無人機不同高度下航拍人臉像素值大小變化分析,人臉識別時無人機的飛行高度在3米~5米之間時,隨著無人機與行人的接近,人臉所占的像素大小逐漸增大,即使無人機處于5米時,在行人比較接近的情況下人臉所占像素大小仍有約62×76。人臉識別常用人臉庫AR與FERET中人臉圖像大小分別為50×40和80×80,所以無人機在飛行過程中能夠獲得足以進行人臉識別的圖像。
前期控制無人機在高度3~5米范圍內(nèi)進行視頻數(shù)據(jù)采集,通過后期人臉以及行人數(shù)據(jù)標注構(gòu)建航拍行人數(shù)據(jù)集,進行行人與人臉模型訓練。
采用訓練好的權(quán)重文件,機載TX2的GPU單張航拍圖片檢測耗時159ms,其中兩個行人的預(yù)測準確度均為99%,人臉預(yù)測準確度分別為96%和99%,其檢測效果圖如6所示,檢測框準確。
圖6 Tiny-YOLOv3檢測效果圖
實驗采用連接到TX2平臺的攝像頭采集視頻,使用預(yù)訓練模型進行人臉識別測試。如圖7所示,可知FaceNet對人臉局部遮擋具有較好的魯棒性。
圖7 FaceNet人臉識別效果圖
飛行器飛行高度不同,導(dǎo)致拍攝視頻的視角不同,將會對目標檢測和識別產(chǎn)生一定的影響,將Tiny-YOLOv3與FaceNet相結(jié)合,使用Tiny-YOLOv3檢測人與人臉,將檢測到的人臉使用dlib中對齊算法進行人臉對齊后使用FaceNet進行人臉驗證。其檢測識別示意圖如圖8所示,通過人臉確認目標后,將其標簽更改為target_people,并記錄坐標。
分別對高度3米、4米和5米的無人機拍攝的測試序列進行檢測識別,攝像機為斜向下45度視角,無人機與人水平距離為從3米外逐漸接近,每個高度使用100張圖片,實驗結(jié)果如表2和表3所示。
圖8 檢測識別后確認目標
表2 目標檢測實驗結(jié)果
表3 人臉驗證實驗結(jié)果
從表中可以看出無人飛行高度逐漸升高對于Tiny-YOLOv3的目標檢測影響較小。但是飛行高度對人臉驗證有著較大的影響,對驗證失敗的數(shù)據(jù)分析以及進一步測試發(fā)現(xiàn),在5米高度拍攝的圖像人臉過小導(dǎo)致人臉驗證成功率較低,而3米的成功率隨著水平距離的接近成功率逐漸升高??紤]到無人機在接近過程中可進行多次人臉驗證,同時考慮安全因素,設(shè)置飛行器檢測識別時的飛行高度為4米。
增加無人機4 米高度拍攝的數(shù)據(jù)集,對Tiny-YOLOv3權(quán)重文件與FaceNet人臉驗證模型進行再次訓練,選取無人機4米高度下不同距離目標圖像進行測試,每個距離選取50張圖像,測試結(jié)果如圖9所示。隨著目標的接近目標識別成功率逐漸上升,但是目標過于接近時,人臉俯視角度較大導(dǎo)致成功率開始下降,所以最佳識別距離在4米左右。
圖9 目標識別成功率
本文首先針對指定行人驗證問題進行了分析,介紹了人臉識別的基本框架流程。然后介紹了本文使用的Tiny-YOLOv3目標檢測方法與FaceNet人臉識別算法。然后針對面向無人機的航拍行人檢測與識別問題,首先通過航拍視頻構(gòu)建了不同高度的大量數(shù)據(jù)用以制作航拍行人和人臉數(shù)據(jù)集,對Tiny-YOLOv3網(wǎng)絡(luò)進行訓練,得到用于檢測的權(quán)重文件;然后將數(shù)據(jù)集中的人臉圖像進行檢測分割,訓練分類模型,用于人臉驗證;然后使用訓練好的Tiny-YOLOv3網(wǎng)絡(luò)檢測行人與人臉,并將人臉部分裁剪后對齊,利用FaceNet進行人臉識別。最后通過實驗驗證了本文方法的有效性。