曾笑
(四川大學視覺合成圖形圖像技術國防重點學科實驗室,成都 610065)
計算機視覺的任務是為了讓計算機能夠像人眼一樣理解圖像里的內容,而目標檢測一直是計算機視覺的熱門內容。目標檢測技術是通過算法判斷圖片中需要檢測的物體,同時在圖片中標記出該物體的位置,用計算出的邊框將其圈起來,并返回分類類別。傳統的目標檢測技術是通過人工特征描述算子對圖像進行描述后,再依據描述特征來對圖像進行查找[1]。而近年來,隨著深度學習在計算機視覺上的發展,利用卷積神經網絡的相關知識在解決如目標檢測任務上也開始普及了起來,在識別準確率和魯棒性上都優于傳統檢測算法。然而與目標檢測相關的主流交互設備仍然是傳統的鍵盤、鼠標和觸摸屏,這些設備在進行目標檢測與人機交互方面具有很大的局限性。
混合現實技術是一種將虛擬對象與真實世界巧妙融合的技術。虛擬對象與真實世界通過計算機的實時計算,可以實現無縫疊加,從而達到虛實融合的目的,給用戶帶來極強的真實感受。而混合現實技術的發展,可以將應用場景應用在教育、工業、醫療等行業。目前大多數的領域還停留在探索和發展的階段。
Microsoft HoloLens2 是微軟在2019 年發布的第二代混合現實眼鏡,其處理器使用了一塊Intel 32bit CPU和一個定制的高性能混合現實運算單元HPU(Holo?graphic Processing Unit)。相比于其他AR 設備,Holo?Lens2 采用新的交互模式和三維注冊算法,不需要額外輔助定位的器件,就能夠計算虛擬對象與現實場景之間的空間位置關系,將物理世界與數字世界相融合,完全解放雙手,實現虛實疊加、人機交互等技術。通過全息影像的方式,將數字內容展現出來,同時還可以通過注視、手勢、語音來與全息影像進行交互。
通過將混合現實以及目標檢測的相關技術進行整合,能夠提供一種新的人機交互方式,為學習培訓、可視化展示等行業所存在的問題提供了理論與技術上的支持,從而使得設計并開發出可交付的解決方案成為可能。
在本文工作中,我們開發了一個目標檢測系統,通過通信的方式,能夠在用戶端使用Microsoft HoloLens2對目標進行檢測和識別,在服務器端通過YOLO 作為深度學習算法處理來自客戶端的數據。客戶端與服務端之間通過TCP/IP 進行通信,服務器端可以處理需要進行檢測的對象,并將處理過的數據傳回客戶端。本文主要分為以下幾個部分,第一節介紹了基于深度學習的目標檢測算法,第二節介紹了我們設計的目標檢測系統,具體描述了目標檢測算法是如何在HoloLens2上進行實現的。第三節對于我們的實驗結果進行分析與討論。最后第四節提出我們所做工作的總結以及對于未來的展望。
YOLO(You Only Look Once)是Redmon 提出的目標檢測算法[2],它基于一個單獨的end-to-end 網絡,將物體分類和位置識別全部統一到神經網絡的一次檢測當中。輸入圖像經過網絡,便能得到圖像中所有物體的位置和其所屬類別及相應的置信概率,使得檢測速度大幅提升。雖然YOLOv1 在當時成功實現了實時的目標檢測,但是圖像中包含多個重疊物體時還是會出現偏差,同時在復雜的環境中還易出現邊界框不準的情況。
針對上述問題,在2017 年,Redmon 在YOLOv1 的基礎上提出YOLOv2 和YOLO9000[3],能夠檢測超過9000 類物體。與YOLOv1 相比,它加入了Batch Nor?malization[4],能夠提升模型收斂速度,降低模型的過擬合;同時能夠接受不同分辨率的輸入圖片,引入不同尺度特征融合,從而提高了訓練速度和分類效果。
緊接著在2018 年,Redmon 提出了YOLOv3[5]。相比于YOLOv2,YOLOv3 具有以下幾個變化:調整了新的網絡結構,使用了殘差模塊[6]的DarkNet-53 模型;采用FPN 結構實現多尺度特征提取,實現目標檢測;對象分類用Logistic 取代了Softmax。通過形成更深的網絡層次以及多尺度檢測,提升了mAP 及物體的檢測效果。在YOLOv3 中定義的損失函數由三個部分組成,具體公式如下所示:

其中,lbox代表bounding-box 帶來的loss;lobj是置信度帶來的loss,置信度代表該bounding-box 是否含有物體的概率;lcls則是類別帶來的loss。通過實驗比較可以得知,在精確度相當的情況下,YOLOv3 的速度約是其他模型的3、4 倍,在準確性和實時性上均滿足系統要求,因此本文采取YOLOv3 神經網絡來實現對物體的檢測識別定位。
這一部分我們將描述所設計的系統整體架構,目的是為了使用目標檢測算法來對圖像中的物體進行識別檢測。我們主要采用了客戶端與服務器端進行通信的方式來實現交互。我們使用Microsoft HoloLens2 作為圖像采集的輸入,使用具有NVIDIA GeForce GTX 1070 Ti 的圖形處理單元的電腦作為服務器端,該服務器端用于執行目標檢測算法。開發人員能將客戶端攝像頭所采集到的圖像幀傳輸到服務器端,作為其算法輸入,算法執行輸出該物體的分類類別,并通過通信返回到HoloLens2 作為輸出顯示。同時,我們導入微軟的Mixed Reality Toolkit 軟件開發包來控制凝視、手勢識別、虛實交互。整個混合現實和深度學習的總體設計如圖1 所示。

圖1 系統總體設計圖
在客戶端創建階段,利用Unity 創建了項目,通過導入Mixed Reality Toolkit 組件在HoloLens2 上進行構建和部署獨立的應用程序。在檢測過程中,應用空間映射步驟,先用HoloLens2 的相機對物理環境進行解析,用戶可以通過手勢指令或者語音識別指令動態采集真實環境中的照片,并通過客戶端將其上傳到服務器端。在服務器端運行后,快速返回檢測對象的信息、分類類別以及置信度,并通過網絡傳輸返回到客戶端。服務器端將識別到的2D 坐標返回給HoloLens2,然后根據接收到的2D 數據在設備上計算物體的3D真實坐標。最后通過生成全息圖像將以上分類信息投射到用戶眼睛,實時顯示虛擬場景,從而實現高效的目標檢測和人機交互。

圖2 第二代HoloLens頭盔
在服務器端,我們使用YOLO 算法來對環境中的對象進行檢測和識別。當作為客戶端的HoloLens2 攝像頭進行拍照后,通過連接服務器IP 地址的形式,將得到的RGB 幀傳到服務器端,作為輸入。在得到接受幀后,服務器端啟用YOLO 神經網絡對其進行處理,從而得到所檢測到每個對象的分類、邊界框范圍以及框的顏色。完成對象檢測后,服務器將這些結果發送給客戶端,從而在頭盔上顯示檢測結果。

表1 服務器端開發工具
本文通過HoloLens2 實現目標檢測和識別,取得了良好的檢測效果。為了更好地判斷檢測效果,在實驗結果中,通過召回率(Recall)以及精確率(Precision)來判別檢測結果的好壞,其中,召回率表示返回的正樣本中預測正確的樣本數,占真正總的正樣本數的比例;精確率表示計算返回的正樣本中,預測正確的比例。同時再對比算法在測試集上的平均準確率(AP)以及所有類別的平均準確率(mAP)來判別算法的好壞。其中AP 需要通過召回率和準確率兩個值來衡量檢測模型的精確度,它將用作評估模型檢測性能的直觀標準,同時也可以用來評估單個類別的準確度。mAP 是所有AP 類別的平均值,值越高,代表在其所有類別中的模型檢測效果越好。整個計算過程如下:
(1)先按照置信度將n 個測試結果按從大到小的方式進行排序;
(2)定義TP 數組表示正類預測為正的例子,FN 數組表示被預測為負值的正樣例,FP 數組表示預測為正的負樣例。
(3)召回率、精確率分別用下列公式得出:

(4)計算某類別的AP:

(5)計算所有類別的AP 均值,即mAP:

最終訓練后得到的各類別的Recall 和Precision 的結果如表2 所示。

表2 各對象的召回率和精確率
本文通過將最新的增強現實設備HoloLens2 和先進的目標檢測算法YOLOv3 結合起來,通過TCP/IP 連接在客戶端和服務器端建立了聯系,設計并實現了支持對象檢測、可視化人機交互的增強現實系統。通過實驗結果表明,本文提出的方法在目標檢測上具有高召回率和高精確率,在測試集上的準確率和所有類別的平均準確率都具有較好的表現。同時,利用第二代HoloLens 增強現實頭盔,擺脫了傳統的人機交互手段,可以解放雙手,支持多種交互手段,為提供可視化展示提供了理論和技術支持。但本文在設計實驗時缺少對照實驗,且對算法本身的改動較少,在未來的工作中會繼續完善實驗。