曹獻爍,陳純毅,胡小娟,于海洋,李延風
(長春理工大學 計算機科學技術學院,長春 130022)
增強現(xiàn)實(augment reality,AR)這一概念最早是由Azuma[1]提出的,他認為增強現(xiàn)實必須包含三個方面的內(nèi)容:虛實結(jié)合、實時交互、三維注冊。其中,三維注冊部分受到自然圖像的識別能力和移動設備性能的限制,存在識別速度慢、準確率低的問題。隨著人工智能的飛速發(fā)展,現(xiàn)階段涌現(xiàn)大量優(yōu)秀的目標檢測算法,其中包括以Yolo[2]算法、SSD[3]算法為代表的one-stage目標檢測算法,單階段網(wǎng)絡流程簡單,直接產(chǎn)生物體類別率及位置情況,單次檢測即可完成,檢測速度較快[4];以RCNN[5]、Fast R-CNN[6]和Faster R-CNN[7]為代表的two-stage目標檢測算法,雙階段網(wǎng)絡首先產(chǎn)生區(qū)域候選框并提取特征,然后產(chǎn)生位置框并預測類。目前其他研究人員提出的基于深度學習的目標檢測算法,大都需要依賴強大算力的GPU,價格比較昂貴。針對類似問題,何雨等[8]在Yolov5s網(wǎng)絡的基礎上引入ShuffleNetv2特征提取機制來實現(xiàn)網(wǎng)絡的輕量化,同時采用加權雙向特征金字塔BiFPN獲取特征信息更為豐富的特征圖,來提升目標檢測精度,得到一種新的室內(nèi)目標檢測模型。Wang等[9]提出了DDH-YOLOv5目標檢測模型,采用雙IoU感知解耦頭,在不顯著增加FLOPS和參數(shù)的情況下,大幅提高了模型的定位精度。Naritomi等[10]開發(fā)了HoloLens應用程序以負責食品分類的信息增強,用戶可以選用不同可選類別的虛擬視頻注冊到真實食品表面上,外部服務器負責圖像分割的神經(jīng)網(wǎng)絡計算,全息透鏡本身僅負責視覺渲染的顯示。
為解決以上不足,將改進后的Yolov5s模型轉(zhuǎn)化為開放式神經(jīng)網(wǎng)絡(open neural network exchange,ONNX)格式移植到手機上,主要貢獻如下。
1) 針對在移動端部署目標檢測模型出現(xiàn)的模型參數(shù)量大、識別速度慢的問題,對Yolov5s進行改進。首先將MobileNetV3網(wǎng)絡作為Yolov5s主干網(wǎng)絡以降低模型參數(shù)量。為了更好地擬合非線性數(shù)據(jù)優(yōu)化模型收斂效果,將MobileNetV3網(wǎng)絡ReLU激活函數(shù)替換成Mish激活函數(shù)以避免梯度消失和梯度爆炸。其次將Neck部分原有的PANet[11]網(wǎng)絡替換成加權雙向特征金字塔網(wǎng)絡BiFPN[12],利用一種迭代式的特征融合方法提高檢測精度。此外,引入坐標注意力機制使得模型關注大范圍的位置信息以提高檢測性能。為了優(yōu)化模型訓練收斂速度,采用Focal-Loss EIoU[13]作為邊框回歸損失函數(shù)以解決低質(zhì)量樣本產(chǎn)生損失值劇烈震蕩的問題。
2) 針對部分手機應用需要通過連接Wi-Fi和在外部服務器進行復雜運算的問題,設計一種可以在手機移動端使用Pytorch訓練模型的目標識別方案,完全本地工作,不需要Wi-Fi連接與外部設備接入。
Yolov5[14](You only look once version 5)是Ultralytics公司于2020年提出的,是目前單階段目標檢測算法中檢測速度和識別精度比較優(yōu)秀的算法。由于將模型部署到手機移動端要求實時監(jiān)測的速度快、延時低,因此選擇檢測速度最快的Yolov5s模型,對Yolov5s算法進行改進。其網(wǎng)絡一共由4個部分組成,分別是輸入部分(Input)、主干網(wǎng)絡(Backone)、頸部網(wǎng)絡(Neck)和目標檢測頭(Head),網(wǎng)絡結(jié)構如圖1所示。
MobileNetV3[15]是谷歌提出的輕量級網(wǎng)絡模型,綜合了MobileNetV2和MobileNetV1的優(yōu)點,在MobileNetv2網(wǎng)絡基礎上進行改進的。其主干網(wǎng)絡Bneck如圖2所示。
圖2 MobilenetV3 網(wǎng)絡Bneck結(jié)構圖
MobileNetV3由1×1普通卷積和深度可分離卷積堆疊形成的倒殘差結(jié)構搭建而成,即先用逐點卷積(point wise convolution,PW)進行升維,之后在一個高維空間中使用深度卷積(depth-wiseconvolution,DW)來提取特征,然后用PW卷積進行降維,并將SE注意力機制插入其部分倒殘差結(jié)構以提升網(wǎng)絡的特征提取能力。網(wǎng)絡模型的構建采用了自動網(wǎng)絡架構搜索技術(neural architecture search,NAS)和NetAdapt算法,即先通過優(yōu)化每個網(wǎng)絡塊來搜索全局網(wǎng)絡結(jié)構,然后通過NetAdapt算法對各個模塊確定之后的網(wǎng)絡層進行微調(diào)。
實驗基于Yolov5s算法提出了改進網(wǎng)絡Yolov5-MCB。主干網(wǎng)絡采用輕量化的MobileNetV3,減少參數(shù)量,提高檢測速度。MobileNetV3的ReLU激活函數(shù)替換成Mish激活函數(shù),提高網(wǎng)絡的泛化能力,在Backbone部分引入CA模塊,增強獲取全面區(qū)域信息特征的能力,提高檢測精度。將原有的PANet網(wǎng)絡替換成加權雙向特征金字塔網(wǎng)絡BiFPN,實現(xiàn)自上而下與自下而上的深淺層特征的雙向融合,提高檢測精度。損失函數(shù)采用Focal-Loss EIoU損失函數(shù),解決樣本不均衡問題,加快網(wǎng)絡收斂速度。改進的網(wǎng)絡結(jié)構如圖3所示。
圖3 Yolov5s-MCB網(wǎng)絡結(jié)構圖
MobileNetV3原本使用ReLU激活函數(shù),為了提高網(wǎng)絡的泛化能力,將其替換為Mish激活函數(shù)。Mish激活函數(shù)是非單調(diào)函數(shù),其取值范圍為[≈0.31,∞),無上界避免了導致訓練速度急劇下降的梯度飽和,無下界有助于實現(xiàn)強正則化效果,適當?shù)臄M合模型有助于保持小的負值以及穩(wěn)定網(wǎng)絡梯度流。ReLU的函數(shù)表達式為f(x)=max(0,x),不能保持負值導致大多數(shù)神經(jīng)元得不到更新。
Mish是光滑函數(shù),具有較好的泛化能力和對結(jié)果的優(yōu)化能力。如圖4所示,ReLU和Mish之間的一個隨機初始化的神經(jīng)網(wǎng)絡在宏觀平滑度上的劇烈變化。平滑的激活函數(shù)允許更好的信息深入神經(jīng)網(wǎng)絡,從而得到更好的準確性和泛化性。
圖4 ReLU和Mish曲線
表1是改進后的Mobilenetv3網(wǎng)絡結(jié)構,共計6列。
表1 改進Mobilenetv3網(wǎng)絡結(jié)構
第1列Input代表輸入特征層的尺寸。3代表輸入特征圖的通道數(shù),640×640代表輸入特征圖的長寬尺寸。
第2列Operator代表卷積核的類型與大小。conv2d,n×n表示n×n大小卷積核的2D卷積操作;bneck全稱bottleneck,表示深度可分離卷積操作。
第3列Size代表bneck中的第一層1×1卷積升維操作后的通道數(shù)。
第4列SE代表是否使用SE注意力模塊。
第5列NL代表使用的激活函數(shù)類型。其中HS代表使用hard-swish激活函數(shù),Mish代表使用Mish激活函數(shù)。所提算法將原有的ReLU激活函數(shù)替換為Mish激活函數(shù),使得模型訓練時具有更好的收斂能力,提升了模型的泛化能力。
第6列Stride代表卷積核的步長。Stride=2時,輸出特征尺寸是輸入尺寸的一半。
傳統(tǒng)主流的注意力機制用于神經(jīng)網(wǎng)絡都可以帶來不錯的性能提升,例如使用Self-Attention[16],但是這種注意力的計算復雜度過大,對輕量化網(wǎng)絡而言是無法承受的,因此目前主流在輕量化網(wǎng)絡上主要使用SE[17](squeeze-and-excitation)和CBAM[18](convolutional block attention module)。但SE注意力機制不足之處在于僅重視通道間的特征信息,忽視了因位置信息確定生成空間選擇性帶來的影響[14]。CBAM通過在通道上進行全局池化捕獲位置信息,但只能捕獲局部的信息,大范圍相互依賴的信息容易被忽視。
坐標注意力是新加坡國立大學提出的一種應用于輕量級網(wǎng)絡的注意力機制。CA[19](coordinate attention)是一種新的高效注意力機制,其主要思想是將位置信息嵌到通道注意力中,使得輕量級網(wǎng)絡能夠獲取更加全面的區(qū)域信息特征,降低了計算的復雜度,避免了大量計算。
CA注意力機制全面考慮特征圖通道和空間的位置信息間的關系,在幾乎沒有額外消耗計算資源的情況下靈活地插入網(wǎng)絡,對于算法性能的提升效果更好。其結(jié)構如圖5所示。
圖5 CA注意力結(jié)構圖
CA模塊工作流程如下:首先將C×H×W的特征圖作為模塊的輸入,對于CA注意力模塊編碼高度H和寬度W,分別用H×1和W×1的池化核沿著X水平方向和Y垂直方向?qū)γ總€通道進行平均池化操作,寬度W平均池化與高度H平均池化的輸出定義分別如下:
(1)
(2)
CA模塊得到水平方向與垂直方向的特征圖后,經(jīng)過特征圖拼接、卷積、激活及拆分操作,y分解為yi和yj。之后對yi通過卷積和激活操作完成對W的加權,對yj通過卷積和激活操作完成對H的加權,相關定義為:
wi=σ(Fi(yi))
(3)
wj=σ(Fi(yj))
(4)
將輸入特征圖與上述2個注意力權重相乘,從而得到表達能力更強的特征圖。CA注意力機制的特征圖輸出定義為:
(5)
Yolov5s的特征融合網(wǎng)絡采用FPN+PAN網(wǎng)絡結(jié)構。FPN的網(wǎng)絡結(jié)構如圖6(a)所示。FPN只能自頂向下傳達強語義信息,深層特征圖上采樣后與淺層特征圖融合。但在深層的神經(jīng)網(wǎng)絡中,下采樣過程中丟失了目標的大部分信息,這種方式不能很好地進行特征融合。
圖6 FPN PAN BiFPN網(wǎng)絡結(jié)構圖
PANet的網(wǎng)絡結(jié)構如圖6(b)所示。該網(wǎng)絡包含從上到下和從下到上的2條特征融合路徑,縮小了表面特征與深層特征之間的距離,在一定程度上優(yōu)化了FPN網(wǎng)絡的特征融合方式,提高了目標檢測效果,但也增加了網(wǎng)絡的參數(shù)和計算量。
BiFPN的結(jié)構如圖6(c)所示。在PANet網(wǎng)絡中驗證了雙向特征融合的有效性,但結(jié)構較為簡單。2020年Tan等在EfficientDet網(wǎng)絡中提出BiFPN,進一步優(yōu)化了PANet網(wǎng)絡。
由于不同的輸入特征具有不同的分辨率,因此特征對網(wǎng)絡的影響也是不同的。無界融合、Softmax基礎融合和快速歸一化融合方法的比較結(jié)果表明:無界融合訓練是不穩(wěn)定的,需要權重歸一化約束才能穩(wěn)定;Softmax基礎融合能量表明每個輸入的重要程度,但會導致計算量的增加;快速歸一化融合與Softmax基礎融合類似,但不對參數(shù)應用Softmax函數(shù),因此其操作精度與Softmax基數(shù)融合相似,而計算速度比前者快。
為此,所提算法引入BiFPN加權雙向特征金字塔網(wǎng)絡來學習不同輸入特征信息的重要性,對重要的特征信息進行融合。BiFPN計算如下:
(6)
式中:ω為可學習的權重;Ii為特征圖。這種思想類似于Softmax將每個歸一化權重放縮到[0,1]之間,這種融合方法使得訓練速度快、效率高,所以研究選用這種帶權特征融合方法替換原有Yolov5s的特征融合模塊。
所提算法對原算法采用的CIoU Loss進行改進,實現(xiàn)目標監(jiān)測中預測框與真實包圍框更準確的定位損失計算。CIoU的定義如下:
(7)
式中:b為包圍框的中心點;ρ為2個中心點之間的歐氏距離;c為真實框和預測框最小閉包區(qū)域的對角線距離。v和α是分別為衡量長寬比的參數(shù)和權重參數(shù),其計算公式分別為:
(8)
(9)
其中的v使用的是寬和高的相對比例,不是實際值,存在低質(zhì)量樣本造成的損失劇烈震蕩的問題,因此所提算法采用Focal-Loss EIoU作為邊框的回歸損失函數(shù)。
損失函數(shù)包括IoU損失LIoU、中心距離損失Ldis和縱橫比損失Lasp:
(10)
式中:Cw和Ch分別為覆蓋2個包圍框的最小外接框的寬和高。由于存在邊界返回樣本比例失調(diào)問題,圖像中的目標物體稀少,與回歸誤差小的高質(zhì)量樣本的數(shù)量遠遠低于低質(zhì)量樣本的數(shù)量。異常值會產(chǎn)生過大的梯度,這對訓練過程是不利的,所以所提算法結(jié)合了Focal Loss[20]損失函數(shù),懲罰計算為:
LFocal-EIoU=IoUγLEIoU
(11)
式中,γ為一個控制曲線弧度的超參,減少了與目標框重疊部分IoU較小框?qū)吙蚧貧w的優(yōu)化貢獻,提高高質(zhì)量錨框的貢獻。
實驗所用的操作系統(tǒng)為Win10 64位;內(nèi)存大小為16 GB;顯存大小為8 GB;GPU為NVIDIA Quadro P4000;深度學習框架采用Pytorch1.7.0/cuda10.1/cudnn7.0;編譯環(huán)境為Pycharm/Python語言。
采用的數(shù)據(jù)集為VOC 2007+VOC 2012聯(lián)合數(shù)據(jù)集,總共20個小類。VOC 2007數(shù)據(jù)集和VOC 2012數(shù)據(jù)集兩者本身是互斥的,聯(lián)合起來的圖片量可以達到33 043張,目標個數(shù)可以達到 79 540個,訓練集和測試集的比例為9∶1。
Yolo系列算法中的anchor box作為目標箱的潛在候選箱,anchor box的選取會影響Yolo算法的準確性以及速度,因此要保證anchor box的長寬值接近真實的目標包圍框。由于Yolo網(wǎng)絡的目標檢測頭包含3種不同大小感受野的信息,每個感受野有3個anchor box,因此在模型訓練前要將目標的大小聚類成9類,替換初始的Yolov5的anchor box。常用的k-means方法,通過計算樣本之間的距離將較近的樣本聚為同一類別,由于初始的聚類中心點是隨機選取的,k-mean對初始的聚類中心和樣本順序敏感,因此算法收斂得到的是局部最優(yōu)解而非全局最小值。
研究采用基于k-means的改進算法k-means++,最后在80×80的網(wǎng)絡上聚類出anchor box為(10,13)、(16,30)、(33,23)。在40×40網(wǎng)絡上聚類結(jié)果為 (30,61)、(62,45)、(59,119)。在20×20網(wǎng)絡上聚類結(jié)果為(116,90)、(156,198)、(373,326)。實施過程如下。
1) 隨機選取一個樣本點作為第一聚類中心C1。
2) 對于剩下的樣本,計算每個樣本距離最近的簇中心的距離,用D(x)表示;這個值越大,表示被選取作為聚類中心的概率較大,概率P(x)計算公式如下:
(12)
3) 重復步驟2,直到選出k個聚類中心[C1,C2,…,Ck]。
4) 使用標準的k-means算法進行聚類。
實驗中使用的評價指標為FPS、平均精度均值(mean average precision,mAP)和lamr(log-average miss rate)。FPS用來評估目標檢測的速度,即每秒可以檢測的圖片數(shù)量,其計算過程主要考慮了模型前向計算、非極大值抑制、閾值篩選和檢測框繪制幾個步驟。各評價指標計算公式如下。
(13)
(14)
(15)
(16)
式中:FP(false positive)為樣本類別為負,預測類別為正;FN(false negative)為樣本類別為正,預測類別為負;TP(ture positive) 為樣本類別為正,預測類別為正;TN(true negative)為樣本類別為正,預測類別為負。P(precision)指的是查準率,視作模型找出來的數(shù)據(jù)的正確能力;R(recall)指的是查全率,是預測為正且實際為正占總體正樣本的比例,視作模型在數(shù)據(jù)集中檢測出目標類型數(shù)據(jù)的能力;AP是計算某一類P-R曲線下的面積;mAP計算所有類型P-R曲線下面積的平均值即所有類別的AP均值,其值越大表示該模型的定位與識別的準確率越高。
消融實驗分別對原Yolov5s網(wǎng)絡以及改進的輕量化網(wǎng)絡做出對比驗證。消融實驗如表2所示,其中“√”為使用該策略,“×”為未使用該策略。各個模型由第1列的序號表示。1代表了未經(jīng)改動的Yolov5s網(wǎng)絡;2代表了將MobileNetV3 網(wǎng)絡作為Yolov5s的主干特征提取網(wǎng)絡;3代表了將原有MobileNetV3網(wǎng)絡中的ReLU激活函數(shù)替換為Mish激活函數(shù);4代表了引入CA注意力機制;5代表了將原有的特征融合網(wǎng)絡替換為加權雙向特征融合網(wǎng)絡BiFPN;6代表了將Focal-EIoU Loss損失函數(shù)作為邊框回歸損失函數(shù)。
表2 消融實驗結(jié)果
對比實驗1和實驗2的模型大小與FPS可知,Yolov5s的模型大小為14.1 MB,該模型具有參數(shù)量大、計算量大、存儲量高以及推理速度相對較慢的問題。將原有的主干特征提取網(wǎng)絡CSP殘差結(jié)構換為MobileNetV3網(wǎng)絡,模型大小由原來的14.1 MB減小到7.53 MB,降低了46.6%;FPS由原來的84增加到116,增加了近35%;mAP由90.3%下降到85.5%,降低約5%,在犧牲了小精度的情況下?lián)Q來模型參數(shù)量的大幅縮減和推理速度的提高。
對比實驗2和實驗3的mAP和FPS可知,實驗2的mAP從85.5%增加到86.1%,增加了0.5%,FPS從116減小到112,僅減少約3.5%。模型的主干特征網(wǎng)絡MobileNetV3使用了Mish激活函數(shù),訓練的穩(wěn)定性和最終精度得到提高。
對比實驗3和實驗4的mAP和FPS可知,實驗3的mAP從86.1%增加到88.0%,增加了1.9%,FPS從112減少到104。模型引入CA注意力機制,學習特征圖通道和空間的位置信息間的關系,在幾乎沒有額外消耗計算資源的情況下提高了網(wǎng)絡識別的準確性。
對比實驗4和實驗5的mAP和FPS可知,實驗4的mAP從88.0%增加到89.4%,增加了1.4%,FPS從104減小到99,僅減少了4.6%。實驗5的Neck部分學習不同輸入特征信息的重要性,對重要特征信息進行加權融合,從而使得mAP增加了1.4%。
對比實驗5和實驗6的mAP和FPS可知,實驗5的mAP從89.4%增加到90.5%,增加了1.1%,該模型使用了Focal Loss損失函數(shù),將高質(zhì)量的錨框與低質(zhì)量的錨框分開,提升模型的識別精度。
在相同的基礎數(shù)據(jù)集上,Yolov5s-MCB算法的精度相比于Yolov5s、Yolov-x、SSD模型優(yōu)化效果更好。SSD作為一階段目標檢測的代表,雖然在保持高速度的基礎上目標檢測精度尚可,但低級特征卷積層相對較少,特征信息提取不充分,導致目標的漏檢率高。Faster-RCNN精度最高,但是由于網(wǎng)絡結(jié)構過于復雜,模型參數(shù)量大,因此達不到實時檢測的效果。Yolov5s-MCB相比于Faster-RCNN的FPS提高了94,相比于Yolov4提高了2.9倍,相比于原Yolov5s的FPS也提高了15,提升了約17%。在模型參數(shù)量方面,Yolov5-MCB也是最小的,相較于原Yolov5s算法模型參數(shù)量減小了6.47 MB,變?yōu)樵瓉淼?4.1%。
Yolov5s-MCB模型的體積是最小的,在不降低識別精度和推理速度的情況下,模型的參數(shù)量下降明顯,在Yolov5s的基礎上體積又降低了6 MB。綜上所述,Yolov5s-MCB模型相較于其余模型,其檢測精度、識別速度都有提升,這說明YOLOv5s-MCB模型更適用于部署在移動端設備。模型性能的對比如圖7所示。
圖7 網(wǎng)絡模型性能柱狀圖
為了直觀感受Yolov5-MCB的效果,選取了幾張多目標復雜背景且光照條件欠佳的場景圖片進行檢測效果對比,檢測結(jié)果如圖8和圖9所示。可以看出,Yolov5-MCB算法在光線不好、背景復雜、目標多的場景下能檢測出更多的目標,擁有更高的召回率,對目標的檢測置信度也高于原Yolov5s算法。這說明所提的Yolov5-MCB算法在識別精度和使用場景穩(wěn)定性方面都超過了原算法。
圖8 Yolov5s檢測結(jié)果
圖9 Yolov5s-MCB檢測結(jié)果
為了驗證Yolov5s-MCB模型的實時性、可移植性,根據(jù)Yolov5s-MCB網(wǎng)絡模型,在Android設備上構建了一個帶有目標識別的增強現(xiàn)實系統(tǒng),且在實際應用中表現(xiàn)良好。AR系統(tǒng)的目標識別模塊采用上述的Yolov5s-MCB,需要將訓練好的pth文件轉(zhuǎn)換成ONNX[21]格式的中間形式移植到手機上,使用Barracuda[22]庫進行推理,結(jié)合ARCore的環(huán)境理解和運動跟蹤功能開發(fā)一個帶有目標識別功能的AR應用。
實驗要求運行AR應用程序的手機系統(tǒng)為Android 7.0及以上,手機安裝系統(tǒng)apk文件時需要允許移動設備的相機訪問權限,以便獲取現(xiàn)實場景的視頻流和拍攝照片等數(shù)據(jù)。AR應用使用的實驗機型是三星的入門智能機Galaxy A51,硬件參數(shù)如表3所示。
表3 手機硬件測試環(huán)境
測試結(jié)果如圖10所示。實驗結(jié)果表明,移動手機到不同視角識別物體,虛擬3D標簽和物體相對位置不發(fā)生變化,具有較強的穩(wěn)定性。圖11為第三視角下用戶使用的示例圖。
圖10 移植手機的目標識別注冊結(jié)果
圖11 第三視角下的用戶使用示例圖
針對現(xiàn)有目標檢測算法存在模型存儲大、參數(shù)量大、檢測速度慢、不利于在移動端設備部署等問題,對Yolov5s算法進行輕量化改進。使用k-means++算法進行聚類,獲得更合適的錨框參數(shù);采用改進的MobileNetV3網(wǎng)絡作為主干特征提取網(wǎng)絡,減小模型體積、加快檢測速度;將BiFPN作為Neck的特征融合網(wǎng)絡,提高多尺度特征的融合效率;最后引用CA注意力機制更加精準地定位和識別感興趣的目標。通過實驗和系統(tǒng)測試可以看出,改進后的模型大小是原算法的54.1%,識別精度幾乎不變。所提模型仍有改進空間,具體包括在終端設備進行優(yōu)化,提高模型的處理速度和識別精度。