陳 凱,祖 莉,歐 屹
(南京理工大學機械工程學院,江蘇 南京 210094)
虛擬演播室是近年來迅速發(fā)展起來的一種獨特的電視節(jié)目制作技術,它的實質是將計算機制作的虛擬三維場景與攝像機現(xiàn)場拍攝的人物活動圖像進行數字化的實時合成,使人物與虛擬背景能夠同步變化,基于此能夠以最小成本開發(fā)出各種拍攝環(huán)境,從而滿足觀眾的視覺要求[1]。
人臉識別技術隨著機器視覺理論的完善、計算機性能的提升,也同樣在近些年迅速發(fā)展,并在某些領域已有較為廣泛的應用。而將人臉識別技術與虛擬演播室技術相結合,提出一種能夠對人臉自動識別并進行追蹤的攝影機器人,這將徹底解放攝影師,且攝影機器人的鏡頭跟蹤相比于攝影師具備更高的畫面與速度穩(wěn)定性。同時,人臉識別技術將使得攝影機器人在面臨多個人時,仍然具備對所需目標跟蹤的能力,使得在單攝像機的情況下仍然能完成直播任務。
目前,傳統(tǒng)的人臉識別算法有幾何特征分析法(Geometry Feature Analysis)、特征臉(Eigenface)、彈性匹配(Elastic Matching)、局部特征分析(Local Feature Analysis)等[2],這些算法利用SIFT、HOG、LBP等描述子來表征人臉進而進行人臉識別[3-5]。然而,在虛擬演播室內,光照條件復雜,加上主持人工作時必要的移動與頭部的一定角度轉動,會出現(xiàn)部分人臉遮擋和陰影的情況。此時,傳統(tǒng)算法精度大大降低,攝影機器人將出現(xiàn)目標丟失或預測錯誤的情況,從而影響攝影機器人的正常工作。
卷積神經網絡(Convolutional Neural Network, CNN)是一種前饋神經網絡,它的神經元可以響應一部分覆蓋范圍內的神經元,并保存了問題的空間結構,在計算機視覺領域具有出色的表現(xiàn)[6]。它隨著層數的加深,層所提取的特征將越來越抽象。更高的層激活包含關于特定輸入的信息越來越少,而關于目標的信息越來越多,根據這些信息神經網絡完成對目標的識別[7]。
然而,在虛擬演播室內,人臉識別神經網絡的訓練需要主持人與其他人物的大量圖片,更關鍵的是,除主持人固定外,其他人物都具有很高的流動性,需要完成的人臉識別任務其實能夠抽象為測試集,即為開放集的識別任務。而對于開放集的人臉識別任務,被測試的人臉身份通常并不包含在訓練集中,這使得識別任務更具挑戰(zhàn)性。開放集人臉識別本質上是一個距離學習的問題,而解決這個問題最關鍵的是使得模型能夠學習到具有較大區(qū)別性的邊緣特征[8]。Wen等[9]提出了一種用于深度人臉識別的有判別力的特征學習方法,通過構造損失函數提高類間區(qū)分,增加類內緊湊性;Liu等[10]提出了A-Softmax損失使得模型學習到的特征最大類內距離小于最小類間距離,增強特征在開放集上的區(qū)別能力;Deng等[11]提出了一種累積角邊緣損失并在許多人臉識別標準上獲得最佳成績。這些學者通過對損失函數的研究,大大推進了在開放集上人臉識別精度的提升。此外,GoogLeNet與ResNet等框架的提出[12-13],進一步探索了深度學習網絡框架走向更深的可能,為人臉識別的高精度實現(xiàn)提供了更加優(yōu)秀的實現(xiàn)框架。
基于前人的以上研究,本文提出一個攝影機器人的人臉識別系統(tǒng),利用CASIA-FaceV5與PubFig數據集構建主持人的正負樣本集,大大提高了在開放集上的模型訓練的樣本量,同時構建二分類模型,基于ResNet50網絡完成聯(lián)合監(jiān)督模型的訓練,在不增加模型復雜度的情況下,使得模型充分學習開放集上的特征;通過快速目標檢測算法YOLOv3檢測鏡頭內人臉,并輸入人臉識別預測模型進行人臉識別;返回目標人臉坐標,通過云臺控制實現(xiàn)目標人臉的實時跟蹤。
在虛擬演播室下,攝影機器人的人臉識別主要分為2個部分:人臉檢測與人臉識別。本文提出的算法通過YOLOv3算法完成人臉檢測,構建ResNet50聯(lián)合監(jiān)督模型實現(xiàn)人臉識別。其中,YOLOv3人臉檢測模型在Wider-Face數據集上完成訓練,而人臉識別模型的訓練需要基于特定的主持人目標?;陬A訓練的Siamese網絡即可通過One-Shot學習使得模型學習到主持人的判別性特征[14]。但是,為使得模型在開放集上也能擁有優(yōu)異的識別能力,本文構造ResNet50聯(lián)合監(jiān)督模型,并在主持人樣本集上完成訓練。本章主要介紹人臉識別模塊訓練集的采集與預處理。
深度模型的訓練需要大量數據,且數據不能具備較大的相似性。本文中,主持人的圖片采集采用視頻采集的方法,在多個場景每0.2 s對視頻中主持人臉進行采集。同時,考慮到虛擬演播室內光照的復雜條件,每次采集主持人臉的同時對圖片的對比度與亮度進行隨機調整,如圖1所示。主持人樣本集共采集6000幅圖片,這里需要指出的是,為防止模型訓練在某些特征上的權重過大(例如眼鏡的特征),在樣本集的采集中應該存在部分沒有佩戴眼鏡的照片,以防止模型對目標的識別過分依賴眼鏡這種外部特征。
圖1 主持人樣本采集
本文將主持人的人臉識別轉化為二分類問題,構建主持人臉集為正樣本集,嘉賓人臉集為負樣本集,通過0、1標簽完成對模型的監(jiān)督,簡化模型訓練,如圖2所示。
圖2 模型訓練過程
圖2中,負樣本嘉賓的數據由于流動性大,不易收集。本文利用哥倫比亞大學公眾人物臉部數據庫(Public Figures Face Database, PubFig)[15]與亞洲人臉數據集(CASIA-FaceV5)進行負樣本提取。PubFig數據集包含200位公眾人物共58797幅圖片,CASIA-FaceV5數據集包含500個人的2500幅亞洲人臉圖片。2個數據集共取6000幅圖片構成負樣本集,如圖3所示,最大化豐富負樣本集上樣本量,提升模型訓練效果。
(a) Public Figures Face Database
(b) CASIA-FaceV5
人臉圖像若不經預處理直接輸入模型進行訓練,一些不相關數據或噪音會對網絡訓練造成消極影響,可能導致網絡不收斂。因此還需要對人臉圖像進行人臉對齊與歸一化等處理,增強圖像中的人臉信息[16]。
本文通過dlib庫提取人臉眼眶特征點,并據此求得左右眼中心位置(xl,yl)(xr,yr),如圖4(a)所示。根據兩眼中心位置,確定圖片偏轉角度α,計算公式如下:
(1)
利用仿射變換旋轉圖片,完成圖片歸一化處理,轉換公式如下:
(2)
最終,完成樣本集中樣本圖片的歸一化處理,歸一化前后樣本圖片如圖4所示。
(a) 歸一化前 (b) 歸一化后
YOLO(You Only Look Once)是現(xiàn)如今最先進的目標檢測算法之一[17]。YOLO識別速度快、精度高,且其端對端的訓練方式與預測手段使其具備較高的靈活性,適用于實際工程應用。YOLOv3是YOLO的最新版本,DarkNet-53網絡結構在保證YOLO檢測實時性的同時,通過加深網絡結構進一步提高了YOLOv3的識別精度[18]。本文以YOLOv3作為人臉檢測模塊的基本框架,并基于Wider-Face數據集完成模型訓練。
本文采用的網絡結構如圖5所示。輸入圖片首先經過一個沒有全連接層的DarkNet-53網絡,對輸入圖片進行特征提取。然后對特征圖分別進行2次上采樣與張量拼接,最終得到3個不同尺度上的輸出y1、y2、y3。利用多尺度對不同尺寸的目標進行人臉檢測,即使目標人臉很小也能成功檢測,提高了預測精度。
圖5 YOLOv3網絡框架
本文對邊界框的預測采用維度聚類設定模板框,通過網絡預測相關變量(tx,ty,tw,th),則邊界框中心點坐標與邊界框的寬與高分別為:
(3)
其中,(cx,cy)為網格偏移圖片左上角的位置坐標,pw、ph為模板框的寬與高,如圖6所示。
圖6 YOLOv3邊界框預測
邊界框預測在訓練期間采用平方和誤差損失進行監(jiān)督訓練。輸出邊界框后,采用Logistic回歸對框內部分進行目標性打分,根據分值選取得分最高的模板框進行預測,節(jié)省計算時間。
模型在Wider-Face數據集完成訓練,訓練過程中目標類別、置信度與目標位置中心坐標采用均二值交叉熵(binary_crossentropy)進行監(jiān)督,計算公式如下:
(4)
基于YOLOv3完成人臉檢測后,需要進行人臉識別確定目標人臉身份,即目標是主持人還是非主持人。由于在實際工程中,并非每個人臉都能出現(xiàn)在訓練集中,即攝影機器人的人臉識別是一個開放集上的人臉識別問題,其本質為度量學習。本文以ResNet50為基本框架并對其進行改進,采用Softmax損失與中心損失(Center Loss)對訓練過程進行聯(lián)合監(jiān)督,使得模型的識別具備較高類間可分性與類內緊湊性。
Softmax損失如公式(5)所示:
(5)
其中,xi∈Rd表示第i個深度特征,屬于第yi個類別。Wj∈Rd表示最后一層全連接層的權重W∈Rd×n的第j列,b∈Rn表示偏置項。m與n分別表示最小批量與類別個數。在Softmax損失函數監(jiān)督下,學習到的特征可分,但是仍會表現(xiàn)出較大的類內差異。而通過定義一個中心損失函數,在保持不同特征可分離的同時最小化類內變化,從而提升類間可分性。定義中心損失函數如下:
(6)
其中,cyi表示深度特征的第yi個類別中心,它隨著深度特征的變化而更新。然而,如果考慮整個訓練集在每次迭代中更新特征中心,這將增加大量計算且不易實現(xiàn)。本文基于小批量執(zhí)行中心特征的更新,在每次迭代中,中心特征由相應類的深度特征平均值計算得到。此外,為避免少數錯誤樣本導致的中心特征波動,設定標量α控制其學習率。綜合中心損失與Softmax函數可得總的損失函數如公式(7)所示:
L=LS+λLC
(7)
其中,標量λ(0<λ<1)表示中心損失參數,用來調節(jié)2種損失函數在總的損失函數中所占權重。如果僅使用Softmax損失函數監(jiān)督訓練,則深度學習得到的特征將包含大量的類內變化;若僅使用中心損失監(jiān)督訓練,所學到的特征與中心將退化為0[9]。因此,將兩者結合共同完成對神經網絡的監(jiān)督訓練是非常必要的,尤其是對于開放集上的人臉識別問題。
本文在ResNet50基本框架下,對結構進行改進,并通過Softmax損失與中心損失聯(lián)合監(jiān)督完成訓練,如圖7所示。為提高識別速度,改進ResNet50輸入結構為(64,64,3),保留ResNet50卷積層所獲得圖像特征,外接3個全連接層,通過訓練全連接層的參數完成主持人與非主持人的目標識別。
圖7 基于ResNet50的聯(lián)合監(jiān)督模型
ResNet50通過殘差連接構造出深度神經網絡,能夠避免深度連接導致的梯度消失與梯度爆炸。批標準化(Batch Normalization)是另一種有助于梯度傳播的層類型,它在訓練過程中內部保存已讀取每批數據均值和方差的指數移動平均值,使得即使在訓練過程中均值和方差隨時間發(fā)生變化,依然可以適應性地將特征數據標準化[19]。本文利用批標準化對全連接層的特征進行標準化處理,進一步改進模型結構,如圖8所示。
圖8 批標準化
網絡結構基于Python的Tensorflow庫實現(xiàn),正負樣本集各有5000個樣本,驗證集有2000個樣本。訓練過程中,為防止過擬合,本文采用L2正則化與數據增強[20]。數據增強主要采用圖像翻轉、裁剪、縮放與添加噪聲等方式,效果如圖9所示。通過大量實驗,本文確定最佳batch為64,每次訓練為10個epoch。
(a) 原圖 (b) 添加高斯噪聲 (c) 翻轉 (d) 放大+翻轉 (e) 縮小圖9 樣本數據增強
本實驗中硬件配置為GTX-1080Ti GPU,軟件配置為Tensorflow深度學習框架和CUDA9.2GPU并行計算庫。
第2章中,完成了人臉檢測與識別模型的搭建與訓練,模型在2000個樣本的測試集上預測精度達到99.95%。但是,在實際的拍攝過程中,由于光照環(huán)境的不同,實際精度與測試集精度存在必然差異。將人臉識別網絡嵌入YOLOv3,通過攝像機對主持人目標進行實時識別,結果如圖10所示。
圖10 YOLOv3+ResNet50人臉識別
觀察圖10可以發(fā)現(xiàn),主持人臉在一定角度內轉動時,該算法仍能有較好的識別性能。為排除識別網絡可能學到的眼鏡的外部特征,在不佩戴眼鏡的情況下進行測試,可以發(fā)現(xiàn)識別網絡仍能對主持人正確識別。當對人臉有較大面積遮擋或人臉有大角度轉移時,YOLOv3正確檢測到了人臉,但是ResNet50人臉識別網絡沒有正確識別,即此時一些作為識別依據的關鍵特征被遮擋,這也從側面驗證了網絡學習到了有效特征。為進一步對該算法進行評估,利用HOG+SVM進行人臉檢測[21],并同樣以本文建立的ResNet50人臉識別網絡進行主持人面部識別,結果如圖11所示。
圖11 HOG+SVM人臉檢測+ResNet50人臉識別
由圖11可以發(fā)現(xiàn),以HOG+SVM人臉檢測為基礎的ResNet50人臉識別,大體能實現(xiàn)主持人的面部識別;但當主持人面部具有部分遮擋,輕微轉動時,HOG+SVM并沒有正確檢測到人臉,即沒有給識別網絡提供人臉圖片,預測失敗;由于虛擬演播室內人臉識別可以抽象為開放集上的人臉識別,故這里選擇一位沒有出現(xiàn)在訓練集的嘉賓進行預測,可以發(fā)現(xiàn)本文構建的人臉識別模型在開放集上測試同樣有較好的預測精度。
基于OpenFace[22]的人臉識別開源項目face_recognition通過預訓練的網絡生成人臉128個測量值,并基于此外接一個簡單的SVM分類器實現(xiàn)One-Shot學習的人臉識別,結果如圖12所示。
圖12 face_recognition人臉識別
觀察圖12可得,face_recognition具備較好的人臉識別能力且在人臉具有一定角度轉動時,仍具備較魯棒的識別性能。但是,當選擇一位沒有在訓練集中出現(xiàn)的嘉賓進行判斷時,該算法沒能正確識別。可以發(fā)現(xiàn),face_recognition雖然能夠通過一幅主持人照片使得模型學習到辨別人臉的能力,但是當對不屬于訓練集中的人臉進行判別時,模型預測精度不高。
在虛擬演播室內,為實時地對目標進行跟蹤,攝影機器人對人臉的識別通常需要更低的時間成本。通過比較上文所提的3種算法處理一幀圖片的時間成本來對它們進行進一步的比較分析,如圖13所示。
(a) YOLOv3人臉檢測+ResNet50人臉識別
(b) HOG+SVM人臉檢測+ResNet50人臉識別
(c) 基于face_recognition人臉檢測和人臉識別圖13 各算法人臉識別時間成本比較
分析圖13可以發(fā)現(xiàn),本文提出的YOLOv3+ResNet50算法能夠在GTX-1080Ti GPU上達到17 fps的識別速度,其中,ResNet50識別網絡的時間成本僅為YOLOv3人臉檢測的四分之一,整個識別過程的時間成本能夠基本滿足攝影機器人的實時性要求;HOG+SVM+ResNet50算法在GTX-1080Ti GPU上達到14 fps的識別速度,前者比它識別速度快20%;face_recognition同樣采用HOG特征進行人臉檢測,并通過生成嵌入特征進行人臉識別,計算時間相對較長。綜合比較可以發(fā)現(xiàn),本文所提算法具有相對較低的計算時間。為進一步加快整個算法的識別速度,可以將人臉檢測與人臉識別分別置于2個GPU上計算。
通過本節(jié)對3種算法精度與速度的比較,可以發(fā)現(xiàn),YOLOv3+ResNet50有著能夠滿足攝影機器人拍攝條件的識別精度與實時性要求,且在開放集上測試仍具有較高的魯棒性。
攝影機器人由攝影機、云臺、升降系統(tǒng)、控制系統(tǒng)與移動底盤組成,如圖14所示。
圖14 攝影機器人
攝影機器人對主持人的目標跟蹤主要由小云臺實現(xiàn)。小云臺主要由外觀殼體、相機支撐結構與減速器組成,如圖15所示。殼體與升降系統(tǒng)相連,控制攝影機在水平方向轉動;相機支撐結構直接與相機固連,控制攝影機在垂直方向轉動。殼體與相機支撐結構分別由2個電機控制,上位機通過串口對電機發(fā)送指令實現(xiàn)小云臺的水平與垂直方向的運動。
圖15 小云臺結構
在對主持人進行跟蹤時,小云臺通過人臉識別模型返回的二維坐標,控制自身運動調整姿態(tài)實現(xiàn)目標跟蹤。首先,在視頻流采集圖片的中心,預設一個36×36大小的區(qū)域。在經過本文人臉識別算法確定主持人位置后,返回主持人人臉的中心點坐標,并對該點位置進行判別,若處于預設區(qū)域內,則攝影機器人位姿不做調整;若主持人臉超出預設區(qū)域,則根據超出預設區(qū)域的方位對小云臺運動方向進行判斷,控制云臺進行位姿調整,直至主持人臉重新返回預設區(qū)域??刂扑惴鞒倘鐖D16所示。
圖16 目標跟蹤控制算法流程圖
基于第3章的人臉識別算法與本章的控制運動算法,在攝影機器人上實現(xiàn)對主持人的實時目標跟蹤。實驗中,嘉賓與主持人同時存在,如圖17所示。
圖17 算法實現(xiàn)
圖17中,虛線框為后期方便觀察所添加的,代表實驗過程中預設區(qū)域范圍。實驗中,為避免因主持人移動太快或突然變向導致攝影機器人出現(xiàn)跟蹤目標丟失的情況,本文設定云臺速度調節(jié)頻率與算法識別頻率一致。從圖17中可以發(fā)現(xiàn),當攝影機器人在主持人與嘉賓中識別主持人后,對主持人位置坐標進行判斷,不在預設區(qū)域時,攝影機器人先對支撐結構進行調整,即使得主持人臉在垂直方向居中;再進行殼體姿態(tài)調節(jié),使得主持人臉水平方向居中,最終使得主持人臉進入預設區(qū)域內,攝影機器人完成目標跟蹤。實驗中,攝影機器人能夠準確地排除嘉賓的干擾,正確定位主持人,并在主持人工作中可能需要的動作下仍能具備較高的魯棒性。在實驗過程中,云臺的目標跟蹤有著基本可靠的精度與實時性,基本能夠滿足虛擬演播室下的拍攝要求。
本文介紹了一種基于YOLOv3與ResNet50的攝影機器人人臉識別跟蹤系統(tǒng),在PubFig與CASIA-FaceV5數據集上構建主持人樣本集,針對虛擬演播室下人臉識別開放集問題,在ResNet50基礎上構建深度殘差網絡模型并完成聯(lián)合監(jiān)督訓練,最終通過實驗驗證了該系統(tǒng)在虛擬演播室下對人臉識別跟蹤的魯棒性、準確性與實時性,擴展了攝影機器人在虛擬演播室下的應用前景。后續(xù)研究中,將繼續(xù)針對在虛擬演播室下開放集人臉識別的問題,通過改進網絡訓練的損失函數進一步提高攝影機器人在開放集上的識別精度。同時,也會在控制算法上做進一步探索,使得整個攝影機器人的多個自由度共同參與對主持人的人臉跟蹤,整個系統(tǒng)功能更加可靠完備并能實際應用于各類主持節(jié)目。