喬延軍,饒錦蒙,王駿星,杜清運(yùn),任 福
(武漢大學(xué) 資源與環(huán)境科學(xué)學(xué)院,湖北 武漢 430079)
增強(qiáng)現(xiàn)實(shí)(Augmented Reality,AR)是一種借助虛擬現(xiàn)實(shí)技術(shù)來增加對(duì)現(xiàn)實(shí)世界認(rèn)知的熱門技術(shù),它將各種電子計(jì)算機(jī)存儲(chǔ)的虛擬信息疊加到現(xiàn)實(shí)世界中,這些虛擬信息主要是由繪制的虛擬物體、虛擬場(chǎng)景和提示信息組成。傳統(tǒng)增強(qiáng)現(xiàn)實(shí)應(yīng)用采用基于標(biāo)志(Marker)的方法實(shí)現(xiàn)跟蹤注冊(cè),使用場(chǎng)景局限于可控環(huán)境(如室內(nèi)環(huán)境等),難以應(yīng)用于戶外大范圍地理場(chǎng)景中。隨著全球定位系統(tǒng)(Global Positioning System,GPS)、傳感器技術(shù)和計(jì)算機(jī)視覺(Computer Vision,CV)技術(shù)的發(fā)展,針對(duì)戶外場(chǎng)景的戶外增強(qiáng)現(xiàn)實(shí)(Outdoor Augmented Reality,OAR)技術(shù)得到了長足的進(jìn)步。早期的戶外增強(qiáng)現(xiàn)實(shí)系統(tǒng)通過GPS定位和慣性、磁性傳感器等輔助確定位置和姿態(tài)來實(shí)現(xiàn)戶外場(chǎng)景中的跟蹤注冊(cè)[1-2],但受制于精度與誤差,效果一般,并且功能有限。如今,更多的戶外增強(qiáng)現(xiàn)實(shí)系統(tǒng)采用計(jì)算機(jī)視覺技術(shù)與傳感器技術(shù)相結(jié)合的思想來實(shí)現(xiàn)混合跟蹤注冊(cè),取得了不錯(cuò)的效果[3-4]。隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,戶外增強(qiáng)現(xiàn)實(shí)系統(tǒng)有越來越多的使用場(chǎng)景,如社交、購物、娛樂等。典型的案例是2016年春節(jié)期間支付寶的“掃福”和QQ的“天降紅包”活動(dòng)。增強(qiáng)現(xiàn)實(shí)的關(guān)鍵點(diǎn)是設(shè)計(jì)跟蹤注冊(cè)算法[5],主要是采用混合跟蹤注冊(cè)算法,而基于視覺識(shí)別的算法是其核心,以提取特征點(diǎn)為核心的視覺識(shí)別算法存在計(jì)算量大且精度不高等問題,而以卷積神經(jīng)網(wǎng)絡(luò)為核心的圖像識(shí)別算法能夠較大地提高圖像識(shí)別與目標(biāo)檢測(cè)的效率和精度[6]。
在計(jì)算機(jī)視覺領(lǐng)域中,深度學(xué)習(xí)的工作應(yīng)用領(lǐng)域有圖像分類、目標(biāo)識(shí)別、姿態(tài)估計(jì)、圖像分割和人臉識(shí)別等,眾多研究已經(jīng)嘗試設(shè)計(jì)深度學(xué)習(xí)模型(CNN模型)來實(shí)現(xiàn)圖像識(shí)別與目標(biāo)檢測(cè)[7-8],并提高了計(jì)算機(jī)識(shí)別的精度和效率,優(yōu)化的深度學(xué)習(xí)模型也越來越豐富。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡稱CNN)[9]是通過訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)來識(shí)別輸入為多維信號(hào)的信息,在圖像分類、目標(biāo)檢測(cè)等機(jī)器學(xué)習(xí)難題中發(fā)揮著重要作用[10],本文嘗試結(jié)合CNN模型來設(shè)計(jì)增強(qiáng)現(xiàn)實(shí)系統(tǒng)中視覺識(shí)別的算法。CNN是一個(gè)由多個(gè)神經(jīng)元組成的感知機(jī),不同網(wǎng)絡(luò)間的局部連接和權(quán)值共享降低過擬合風(fēng)險(xiǎn),并減少了權(quán)重的數(shù)量,降低了復(fù)雜度使得網(wǎng)絡(luò)更容易優(yōu)化[11],簡化結(jié)構(gòu)圖如圖1所示。
圖1 CNN的簡化結(jié)構(gòu)Fig.1 A simplified structure of CNN
在2012年ImageNet,深度學(xué)習(xí)開始初露鋒芒,AlexNet首次用于解決大規(guī)模圖像分類問題,并比傳統(tǒng)的提取特征點(diǎn)算法(如SIFT)降低了接近一半的錯(cuò)誤率。在2013年ILSVRC,在AlexNet的基礎(chǔ)上,引入反卷積網(wǎng)絡(luò),并可視化卷積層來獲取特征,從而降低了錯(cuò)誤率。在2014年ImageNet,GoogleNet模型基于Network in network 思想提出了Inception模型,用稠密組件替代最優(yōu)局部稀疏結(jié)構(gòu),從而有效降維并降低過擬合的影響,其錯(cuò)誤率降低到了最佳紀(jì)錄的一半。2015年,一種改進(jìn)激活函數(shù)的PReLU-Nets在ILSVRC數(shù)據(jù)集上做分類測(cè)試,top-5錯(cuò)誤率降低到4.94%,首次超過人眼識(shí)別效果。在2015年ImageNet,一種基于深度殘差的學(xué)習(xí)模型,通過加深結(jié)構(gòu)(152層),達(dá)到更好的效果。在2016年ImageNet,多種模型在以往優(yōu)秀模型的基礎(chǔ)上進(jìn)行了組合優(yōu)化,并提升了各項(xiàng)評(píng)判指標(biāo),從而推進(jìn)了深度學(xué)習(xí)思想的應(yīng)用[12]。
隨著深度學(xué)習(xí)思想的迅速發(fā)展,基于CNN的模型被用于解決圖像中復(fù)雜的目標(biāo)檢測(cè)問題[12]。Ross Girshick等提出R-CNN深度學(xué)習(xí)模型,嘗試?yán)肅NN解決目標(biāo)檢測(cè)難題。微軟亞洲研究院研究人員將SPPNet(空間金字塔網(wǎng)絡(luò))解決目標(biāo)檢測(cè)難題。Ross Girshick在R-CNN的最后一層網(wǎng)絡(luò)優(yōu)化,設(shè)計(jì)了Fast R-CNN模型,加入了Region of Interest(RoI)池化層。Ren Shaoqing等對(duì)候選區(qū)域做了進(jìn)一步改進(jìn),提出了Faster R-CNN。YOLO(You Only Look Once)[13]和SSD(Single Shot Detector)[14]嘗試用線性回歸思想找到與圖像中目標(biāo)最為接近的預(yù)測(cè)框,并提高了計(jì)算速度,準(zhǔn)確率也能夠滿足使用要求。
Google Research收集與研究解決圖像分類與目標(biāo)檢測(cè)問題的CNN模型[15],有Faster R-CNN、R-FCN、SSD、YOLO,并設(shè)計(jì)了多種使用場(chǎng)景,如車輛行駛,利用海量數(shù)據(jù)進(jìn)行了實(shí)驗(yàn),并且從效率、精度等上做了分析。實(shí)驗(yàn)結(jié)果表明,SSD模型效率比Faster R-CNN、R-FCN更高,精度相近,SSD模型與YOLO模型的效率相近,但精度更高。
本文所研究的對(duì)象主要是一些具有空間特征的地理實(shí)體,顯著特點(diǎn)是目標(biāo)大、結(jié)構(gòu)棱角明顯,SSD模型對(duì)于大目標(biāo)有良好的識(shí)別效率和精確度,但原模型由于前置網(wǎng)絡(luò)計(jì)算量較大,因此,在SSD模型的基礎(chǔ)上做了簡化,主要是前置網(wǎng)絡(luò)更換為具有18層的殘差網(wǎng)絡(luò)(ResNet-18)、調(diào)整SSD網(wǎng)絡(luò)結(jié)構(gòu)與卷積層選擇,最終針對(duì)每個(gè)輸入圖像生成3682個(gè)檢測(cè)框(類別置信度和邊框坐標(biāo))。具體地,我們將ResNet-18網(wǎng)絡(luò)的全局平均池化層和全連接層去掉后,接入SSD網(wǎng)絡(luò)結(jié)構(gòu)中以替換其原本的VGG-16基礎(chǔ)分類網(wǎng)絡(luò)。ResNet-18網(wǎng)絡(luò)中每一層的卷積濾波器數(shù)量都減少了一半,以達(dá)到降低計(jì)算量、加速計(jì)算的目的。我們從ResNet-18網(wǎng)絡(luò)中選取Conv3_2、Conv4_2和Conv5_2卷積層中計(jì)算出的不同空間分辨率的特征映射(feature map),連同原有的SSD附加卷積層計(jì)算出的特征映射一并作為目標(biāo)檢測(cè)的特征輸入,從而實(shí)現(xiàn)在單一圖片上進(jìn)行多尺度目標(biāo)檢測(cè)。受益于殘差神經(jīng)網(wǎng)絡(luò)的特征提取能力,我們的簡化版模型得以在網(wǎng)絡(luò)參數(shù)極大減少的情況下仍能夠?qū)崿F(xiàn)高精度的識(shí)別與檢測(cè)。同原版SSD模型相同,我們使用VOC2007和VOC2012的訓(xùn)練數(shù)據(jù)集進(jìn)行訓(xùn)練,并在VOC2007的測(cè)試數(shù)據(jù)集上進(jìn)行精度與速度評(píng)估。結(jié)果表明,我們的簡化版模型在NVIDIA GTX750Ti GPU上能夠達(dá)到33FPS的運(yùn)行速度,遠(yuǎn)遠(yuǎn)快于原版模型,同時(shí)也能保持58.2% mAP(mean Average Precision)的高檢測(cè)精確度。簡化版模型結(jié)構(gòu)如圖2所示。
圖2 簡化的SSD結(jié)構(gòu)Fig.2 The simplified structure of SSD
本文的數(shù)據(jù)集是參考了ImageNet與Pascal VOC 2007的數(shù)據(jù)集設(shè)計(jì)規(guī)則,建立了戶外地理實(shí)體的數(shù)據(jù)集,分為6個(gè)類別:資源與環(huán)境科學(xué)學(xué)院大樓、3S雕像、教學(xué)實(shí)驗(yàn)大樓、校門牌坊、梅操舞臺(tái)和櫻頂老圖書館,設(shè)置對(duì)應(yīng)的英文編碼為SRES、3SM、TEB、GT、MCS、LIBO。數(shù)據(jù)采集在上午9-11點(diǎn)進(jìn)行,天氣狀況良好。數(shù)據(jù)采集工作共由3人同時(shí)進(jìn)行,使用手機(jī)從多個(gè)角度、距離來對(duì)上述6類目標(biāo)進(jìn)行拍攝,每類目標(biāo)拍攝有約300張照片,共得到約1800張采樣圖片,采樣圖片樣例如圖3所示。圖像采集完成后,經(jīng)過數(shù)據(jù)預(yù)處理再對(duì)數(shù)據(jù)組織真實(shí)目標(biāo)項(xiàng)信息獲取目標(biāo)類別與位置,并生成對(duì)應(yīng)的xml文件。
圖3 采集圖像樣例Fig.3 Samples of the collected images
我們結(jié)合第三方深度學(xué)習(xí)開源工具M(jìn)XNET實(shí)現(xiàn)網(wǎng)絡(luò)的構(gòu)建,MXNET的核心代碼由C++語言編寫,并提供Python接口。系統(tǒng)核心代碼有前置網(wǎng)絡(luò)的構(gòu)建、激活函數(shù)的構(gòu)建、檢測(cè)層實(shí)現(xiàn)、訓(xùn)練網(wǎng)絡(luò)的構(gòu)建、測(cè)試網(wǎng)絡(luò)的構(gòu)建等。利用MXNET提供的函數(shù)接口,我們得以快速實(shí)現(xiàn)網(wǎng)絡(luò)中的大量卷積操作、Softmax分類函數(shù)、損失函數(shù)、ReLU激活函數(shù)等。先前獲取的圖片可以作為輸入來訓(xùn)練網(wǎng)絡(luò),每迭代一次,網(wǎng)絡(luò)越趨近于收斂,直到模型的精度不再變化,訓(xùn)練過程結(jié)束。
訓(xùn)練過程歷時(shí)24個(gè)小時(shí),共迭代500次,模型達(dá)到收斂。通過在測(cè)試圖片上進(jìn)行評(píng)估,我們發(fā)現(xiàn)模型達(dá)到了98%的mAP,在NVIDIA GTX750Ti GPU上處理一張圖片的時(shí)間約為0.03s,模型的參數(shù)文件大小約為20MB。對(duì)訓(xùn)練后的模型進(jìn)行識(shí)別的結(jié)果如圖4所示,能獲取到地理目標(biāo)的邊框、類別及置信度,置信度達(dá)到97%以上。本模型參數(shù)文件體積相對(duì)較小,再加上處理圖片速度較快,可以移植到移動(dòng)設(shè)備中實(shí)現(xiàn)輕量級(jí)近實(shí)時(shí)目標(biāo)檢測(cè)。
圖4 測(cè)試圖片及其檢測(cè)結(jié)果Fig.4 The tested images and their corresponding detection results
針對(duì)戶外地理實(shí)體,本文主要使用混合跟蹤注冊(cè)方法[16],利用安卓相機(jī)獲取圖像輸入源,將SSD模型導(dǎo)入手機(jī)中用于目標(biāo)檢測(cè),實(shí)時(shí)計(jì)算出邊框和類別信息,實(shí)現(xiàn)視覺識(shí)別,利用Canvas 2D繪圖繪制邊框。3D增強(qiáng)信息為基于OpenGL ES開發(fā)的有紋理可旋轉(zhuǎn)的3D圖形,我們通過虛擬3D圖形與視頻流的疊加達(dá)到增強(qiáng)現(xiàn)實(shí)展示的效果[17]。
原型系統(tǒng)采用純客戶端的技術(shù)架構(gòu)模式,SSD檢測(cè)模型打包后存儲(chǔ)在本地,所有地理目標(biāo)的空間、屬性信息以及增強(qiáng)信息存儲(chǔ)在本地?cái)?shù)據(jù)庫Sqlite3中。原型系統(tǒng)主要包括4個(gè)模塊,即圖像處理、位置姿態(tài)計(jì)算、空間數(shù)據(jù)查詢、增強(qiáng)信息[18-19]。圖像處理模塊包括獲取圖像、運(yùn)行SSD模型、輸出檢測(cè)結(jié)果,位置姿態(tài)計(jì)算模塊包括獲取GPS和計(jì)算姿態(tài),空間數(shù)據(jù)查詢模塊包括查詢周邊及計(jì)算方位,增強(qiáng)信息模塊包括顯示屬性信息、顯示虛擬物體信息及實(shí)現(xiàn)人機(jī)交互,如圖5所示。
圖5 原型系統(tǒng)總體設(shè)計(jì)Fig.5 The overall design of the prototype system
圖像處理模塊是整個(gè)原型系統(tǒng)的關(guān)鍵,功能主要是3個(gè):獲取圖像、運(yùn)行SSD模型、輸出檢測(cè)結(jié)果。過程如圖6所示。利用安卓相機(jī)捕獲場(chǎng)景圖像,主要用于兩部分,一是用于將此圖像輸出到組件上,二是作為SSD引擎的輸入信息,檢測(cè)完成后利用Canvas繪制2D圖形顯示檢測(cè)信息。在3D模型的注冊(cè)與顯示過程中,我們將預(yù)先存儲(chǔ)于手機(jī)端本地?cái)?shù)據(jù)庫的、基于OpenGL ES開發(fā)的有紋理可旋轉(zhuǎn)的3D圖形作為增強(qiáng)信息提取出來,通過建立OpenGL ES的XY坐標(biāo)系與手機(jī)屏幕的UV坐標(biāo)系之間的轉(zhuǎn)換算法,依據(jù)檢測(cè)框坐標(biāo)來將其注冊(cè)到OpenGL ES坐標(biāo)系中,從而繪制出來,實(shí)現(xiàn)增強(qiáng)現(xiàn)實(shí)的展示效果。
圖6 圖像處理過程Fig.6 The procedure of image processing
本文的戶外增強(qiáng)現(xiàn)實(shí)原型是在安卓平臺(tái)下實(shí)現(xiàn),基帶版本是4.4.2,SDK為25版本,JDK為Java7版本,IDE是Android Studio,數(shù)據(jù)庫為SQLite3。流程圖如圖7所示,從圖像處理、獲取手機(jī)信息、關(guān)聯(lián)空間數(shù)據(jù)、信息增強(qiáng)4個(gè)過程逐步實(shí)現(xiàn)。
圖7 原型系統(tǒng)流程圖Fig.7 The prototype system process flow chart
考慮到不同的光照條件對(duì)跟蹤注冊(cè)的影響,我們?cè)谝惶靸?nèi)的不同時(shí)間段下做了測(cè)試,記錄當(dāng)前時(shí)間、檢測(cè)出的類別及概率和檢測(cè)所用時(shí)間等,統(tǒng)計(jì)見表1。我們?cè)O(shè)計(jì)了一個(gè)數(shù)據(jù)表來存儲(chǔ)測(cè)試信息,每檢測(cè)一次就存儲(chǔ)測(cè)試信息,最后分時(shí)間段進(jìn)行統(tǒng)計(jì)。
表1 測(cè)試結(jié)果統(tǒng)計(jì)表Tab.1 The statistics of the test results
記錄信息統(tǒng)計(jì)后見表1,實(shí)驗(yàn)結(jié)果表明,在不同的時(shí)間段下,平均置信度在90%左右,平均檢測(cè)時(shí)間在1.5s以內(nèi),簡化后的SSD模型在移動(dòng)端上的圖像分類與目標(biāo)檢測(cè)置信度依然很高,速度也很快,光照條件對(duì)結(jié)果影響較小。系統(tǒng)運(yùn)行的效果如圖8、圖9所示。
圖8 多個(gè)目標(biāo)的檢測(cè)結(jié)果Fig.8 The detection results of multiple objects
圖9 地理信息的疊加Fig.9 Superposition of geographic information
本文使用計(jì)算機(jī)視覺技術(shù)來對(duì)地理實(shí)體進(jìn)行檢測(cè),將深度學(xué)習(xí)模型SSD應(yīng)用在戶外增強(qiáng)現(xiàn)實(shí)中的跟蹤注冊(cè)上,提出了一種不同于傳統(tǒng)算法進(jìn)行圖像識(shí)別與目標(biāo)檢測(cè)的新思路。在安卓手機(jī)平臺(tái)上,實(shí)現(xiàn)了戶外移動(dòng)增強(qiáng)現(xiàn)實(shí)原型系統(tǒng),采用純客戶端模式,提高了實(shí)時(shí)性和準(zhǔn)確性。相比于傳統(tǒng)的圖像識(shí)別與目標(biāo)檢測(cè)技術(shù),我們采用的深度學(xué)習(xí)模型能夠達(dá)到更高的識(shí)別與定位精度,在戶外場(chǎng)景復(fù)雜的視覺光照條件下始終能夠保持良好的魯棒性,并且對(duì)網(wǎng)絡(luò)依賴少;然而,由于深度學(xué)習(xí)模型計(jì)算量較大,手機(jī)端的計(jì)算能力往往不足,導(dǎo)致運(yùn)行速度比較有限。因此,我們將在深度學(xué)習(xí)模型優(yōu)化、目標(biāo)檢測(cè)算法與高速跟蹤算法相結(jié)合等方向展開進(jìn)一步的研究。