黃怡蒙,易 陽
南京工業(yè)大學 電氣工程與控制科學學院,南京211816
隨著物聯網、機器人等領域的視覺處理技術的出現,人們對復合高效卷積神經網絡模型在資源受限的硬件設備上進行實時目標檢測與定位需求越來越大,如何在降低硬件成本的同時,保證目標檢測實時性并提高其檢測準確度,成為制約其實用性的重要因素[1-3]。
傳統的目標檢測一般使用滑動窗口的框架,主要包括三個步驟:首先在圖像上選取一些候選區(qū)域,然后對這些候選區(qū)域進行特征提取,比如人臉檢測常用的Harr特征,行人檢測和普通目標檢測常用的HOG特征等,最后使用訓練的分類器進行分類,比如常用的SVM模型[4-5]。
近年來基于深度學習的目標檢測方法大幅提高對圖像分類準確度,成為當前目標檢測領域主流算法,如R-CNN、Fast R-CNN、Faster R-CNN[6-8]。但檢測準確度往往依賴于復雜框架和高強度硬件加速器,不能直接移植于機器人平臺。YOLO 和SSD 等輕量級網絡對硬件要求比較低,檢測速度較快,處理速度可以達到45 幀/s,其Tiny版本甚至可以達到155 幀/s。這主要得益于其網絡設計是將分類和定位合二為一,而且這種統一的設計也使得訓練和預測可以端到端的進行,非常簡便[9-10]。不足之處是小對象檢測效果不太好,對邊框的預測準確度不是很高,總體預測精度略低于Fast-RCNN。主要是因為網格層結構比較稀疏,而且每個網格只預測兩個邊框,另外池化層也會丟失一些細節(jié)信息,對定位存在影響。
為了提高YOLO 模型的精度,Joseph Redmon 團隊先后又提出了YOLOV2和YOLOV3。YOLOV3將網絡深度推至106 層,其中引用殘差網絡結構思想,同時采用多尺度特征融合,使得YOLOV3 在小目標物體上的檢測效果更好[11]。由于YOLOV3的網絡結構比較復雜,因此在模型訓練時對電腦的CPU 要求比較高,相比于YOLOV3,Tiny-YOLOV3網絡層數少,是YOLOV3的簡化版本,并且在網絡中融合了金字塔特征和全卷積網絡技術,可使檢測的模型更加精簡,并且能提取更深層次的語義信息,使檢測精度更高[12-13]。而且Tiny 的網絡層數比較少,因此速度快,占內存小,被廣泛使用。然而將Tiny網絡應用于機器人目標檢測領域,其精度還需要進一步的提高。
針對實時目標檢測準確率與實時性難以兼顧的問題,本文改進了檢測算法Tiny-YOLOV3 模型的網絡結構與損失函數的設計。為了提高檢測精度,本文提出一類Tiny-YOLOV3 改進模型,調整YOLO 檢測網絡架構的損失結構層,以卷積層和特征圖的相關系數矩陣表征特征圖分布,設計損失函數優(yōu)化損失特征層分布,增強網絡特征的表達能力。采用三角函數定位將基于圖像的目標檢測位置轉換為機器人坐標系位置,實現NAO機器人對日常生活小物件的實時目標檢測與快速定位。
本文設計了實時目標檢測與定位系統,系統框圖如圖1。離線部分使用VOG 格式自制的數據集基于改進Tiny-YOLOV3 網絡模型進行訓練,更新迭代網絡權重矩陣。實時檢測部分使用NAO機器人的CMOS攝像頭,設置分辨率640×480 為圖片改進Tiny-YOLOV3 進行實時目標檢測,使用三角函數將圖片目標信息轉換為機器人的位置信息,通過運動規(guī)劃實現機器人手臂抓取實驗。
圖1 Tiny-YOLOV3改進模型的機器人實時目標檢測與定位系統框架
相比較YOLOV3,Tiny-YOLOV3將網絡進行壓縮,沒有使用殘差層,主干網絡采用的是一個7層的卷積層和池化層相結合的網絡提取特征[14-15]。具體結構如圖2所示。
雖然Tiny-YOLOV3 簡化了網絡結構,但是總體思想還是可以借鑒YOLOV3,其中maxpool 表示池化層,conv 代表卷積層,upsample 表示的是上采樣。在Tiny-YOLOV3 網絡中通過卷積層和池化層來對輸入的圖片提取特征和降采樣,再通過上采樣的方式,將不同通道的特征相拼接輸出三種不同尺度的特征圖,分別是13×13、26×26 和52×52。之所以輸出三種不同尺度的特征圖,是為了適應不同尺寸的目標。13×13 適合檢測大尺寸的目標,而52×52 其感受野比較小,適合檢測小尺寸的目標。因此Tiny-YOLOV3 中引入的特征金字塔網絡,可以利用多層融合后的特征進行檢測,能夠增強語義信息,有助于提升小目標的檢測率。
圖2 原Tiny-YOLOV3的網絡架構
為了提高Tiny-YOLOV3 網絡的精度,在不影響速度的條件下,在網絡中添加一層損失相關層,原始的Tiny 網絡沒有考慮當網絡同一層的卷積核的數量較多時,輸出的特征圖之間的差異性不能得到保障,從而會導致部分特征圖重復,降低模型的精度。而改進后的網絡由于新添加了損失相關層可以提高輸出特征圖的多樣性,并且在保證模型性能基本不變的情況下降低特征圖的數量,提高模型的檢測精度,改進后的模型圖如圖3所示。
損失特征層作為一個獨立的網絡層將其添加到第7個卷積層和池化層后面,改進后的網絡包含網絡特征提取、目標分類檢測對應的輸出和損失相關網絡對應輸出的系數矩陣。新添加的損失特征網絡層的作用主要是在模型訓練更新權重的過程中輸出第7 個卷積層和池化層后的特征圖的相關系數矩陣,具體過程為:將第7個卷積層和池化層后面的M個S×S的特征圖轉化為M個長度為S2的特征向量,然后計算兩兩特征向量之間的協方差和相關系數,最終得到一個S×S的相關系數矩陣K 。具體公式如公式(1)和公式(2)所示:
其中,Cov(Xp,Xq)表示的是第p和第q個特征向量之間的協方差,Var[Xp] 表示第p個特征向量的方差。Kpq表示第p和第q個特征向量之間的相關系數,相關系數的絕對值越大,意味著兩個特征向量的線性相關性越大;相關系數的絕對值越小,意味著兩個特征向量的線性相關性越小。
原始的損失函數主要分為三大部分:坐標損失,置信度損失以及分類損失。損失函數公式如公式(3)所示:
圖3 改進后Tiny-YOLOV3網絡架構
其中,xi,yi,wi,hi,Ci,pi為真實值,? 為預測值。表示第i個網格中負責預測該目標物體的第j個預測框是否含有檢測的物體,如果有,則進行這一項的計算,如果沒有,則進行這一項的運算。在所有的網格中,不包含物體中心坐標的網格占大多數,所以累計起來這一項的數值會很大,為了平衡相互之間的大小關系,這里取λnoobj為0.5。
改進后的損失函數是在原始的損失函數式子當中添加一項損失特征項,計算公式如式(4)所示:
其中,M表示特征圖的輸出個數,表示M維的相關系數矩陣K 在(i,j)處的值,表示M維單位矩陣在(i,j)處的值,β用來平衡檢測損失和相關性損失之間的誤差,實驗中β取0.3,Tb是一個以b為系數的分段函數,如公式(5)所示:
在相關系數矩陣中,Tb可以抑制小于閾值b,或者減弱大于閾值b所帶來的損失。當輸出的特征圖之間的相關性較低時,b值可以避免模型訓練好的參數被破壞。在本文實驗中,b取0.15,即不考慮相關系數小于0.15時產生的損失。最終的損失函數如公式(6)所示:
NAO擁有兩個攝像頭,可以跟蹤、學習并識別不同的圖像。NAO機器人根據檢測算法識別出要檢測的物體,在沒有發(fā)現目標時,NAO機器人按程序設定調整當前的朝向以及頭部的角度。在發(fā)現目標以后,不斷地調整身體的位置直到讓目標處于視野的中心。
在整個目標檢測的過程中,機器人為了保證目標檢測的穩(wěn)定性和準確性,身體朝向和頭部角度的調節(jié)均采用P控制。如公式(7)所示:
其中,k為比例系數,實驗中取0.8,θ為要檢測的圖像與視野中心的偏角,由目標在圖像中的位置和攝像機的張角決定。計算公式如式(8)所示:
其中,x和y代表圖像中目標的位置,yyaw和ypitch分別代表NAO攝像頭的仰角和張角,分別為60.97°和47.64°,w和h為圖片的寬和高,θyaw和θpitch分別表示目標的位置與視野中心位置形成的偏航角和俯仰角,如圖4所示。
圖4 目標圖像定位示意圖
在圖5空間定位示意圖中X方向為當前NAO機器人身體所正對的方向,Y方向為機器人身體的垂直方向,其中Θyaw由頭部相對于身體的偏航角和圖4中目標位置與視野中心位置形成的偏航角θyaw決定,Θpitch由頭部相對于水平方向的俯仰角和圖4 中目標位置與視野中心位置形成的俯仰角θpitch決定。其中NAO機器人在X和Y方向上的距離可由公式(9)計算得到:
其中,H1 為NAO 機器人的攝像頭到地面的高度,H2為目標距離地面的高度。
圖5 空間定位示意圖
模型的訓練機器是一臺配置型號為Intel i5-6600,內存為16 GB,GPU 為NVIDIA GTX 1070 的個人計算機,操作系統為Ubuntu16.04,實驗硬件平臺為NAO 機器人。
實驗的檢測類別為三類:足球(football)、杯子(cup)、筆(pen)。數據集主要是由自己拍攝和網上搜集的圖片組成,然后使用標注工具labelImg對數據集進行標注,并且將標注好的數據集制作成VOC 數據集的格式,如圖6所示。
圖6 VOC數據集格式
其中Annotations文件夾里放置標注好的xml文件,JPEGImages 文件夾里放置要訓練的圖片,Main 文件夾里會在后期網絡訓練過程中生成訓練、驗證、測試這三個文件夾。訓練模型時按照8∶2 的比例來劃分訓練集和測試集,測試集中又隨機抽取10%當作驗證集。數據集中的各個類別的數量信息如表1所示。
表1 數據集中各個類別的數量信息
模型訓練時使用GPU 加速,全程訓練時間大約為9 h,模型最終在遍歷訓練集第81 次時,達到“早?!睏l件。改進后的Tiny-YOLOV3模型訓練過程中的學習率和特征項損失函數曲線如圖7和圖8所示。
圖7 改進后的Tiny-YOLOV3學習率衰減曲線
從圖7中可以看出,模型訓練的初始階段學習率為0.000 1,在第60 次迭代時,學習率下降得非常快,在第70次迭代以后,學習率趨近于平穩(wěn),最終模型在遍歷訓練集第81 次時,學習率下降至0.000 000 1,使得模型能夠進一步收斂。
從圖8(b)改進后的損失曲線中可以明顯看出,模型在第0~10次遍歷訓練集時,損失值下降得非???,在第50次迭代以后,損失值趨近于平穩(wěn),說明在損失特征層的作用下,特征圖之間相關性在逐漸降低,通過對比圖8(a),圖8(b)的模型曲線下降得更快并且更加平穩(wěn),也進一步說明了在網絡層中增加一個損失特征層以及在損失函數中引入損失特征項能夠提高模型的輸出特征能力同時保證模型的收斂。
在自制的數據集上,本文改進的算法同原始的Tiny-YOLOV3算法進行對比,結果如表2所示。
圖8 改進前后的Tiny-YOLOV3損失函數曲線
表2 模型改進前后檢測精度與速度對比
從表2 中可以看出,改進后的模型準確率達到了72.11%,相比較原始的模型,準確率提高了4.08 個百分點。其中杯子和足球的AP 值提升得最明顯,約5 個百分點和6 個百分點。雖然在Tiny-YOLOV3 網絡中添加了一層損失特征層,但是檢測速度只下降了3 ms,因此對目標的檢測速度影響可以忽略不計。
為了驗證該算法的穩(wěn)定性,將機器人擺放在不同的角度,每個角度進行10次的抓取實驗,并與未改進前的算法進行比較,對比實驗如圖9和表3所示。
其中,x軸代表每個角度進行誤差實驗的次數,y軸代表真實值與測量值的絕對誤差,單位為mm,圖9中橙色的線表示期望誤差,藍色的線表示改進后的算法測得的誤差,綠色的線表示使用未改進的算法測得的誤差,每組實驗分別在白天光線較好和晚上光線較差的環(huán)境中進行,結合圖9和表3可以看出,改進后的模型在這五組實驗中的平均置信度都明顯高于原始模型,而檢測的速度和總花費的時間幾乎沒有受到影響。表明本文改進的模型可以在不影響檢測速度的前提下提高檢測的精度,而且相比較原始模型,機器人使用改進后的模型,抓取誤差更趨于穩(wěn)定,表明改進后模型的魯棒性也有所提高。
同時,當檢測物體的顏色相近時,原始模型會出現漏檢、誤檢的情況,而改進后的模型這兩種情況都得到了很大的改善,部分效果圖如圖10所示。
圖9 各角度下原始模型與改進模型的抓取誤差對比
表3 模型改進前后抓取實驗效果對比
機器人在接收到指令以后,啟動攝像頭拍攝圖片并檢測圖片中是否含有目標物體,其中筆在機器人視野中的變化過程如圖11所示。
從圖11中可以看出,NAO根據筆在視野中的位置,不斷調整自己的姿勢,讓筆慢慢調整到視野的中心。從圖12中可以看出,NAO機器人在檢測到物體后,不斷地定位,并且慢慢移動接近目標,最終在調整到合適的距離之后實現對筆的抓取。
圖10 原始模型與改進模型的檢測效果對比
圖11 筆在NAO視野中心的變化過程
圖12 NAO機器人檢測和抓取目標物體過程
本文以Tiny-YOLOV3 網絡為基礎,通過在原始的網絡中添加一層損失特征層、在損失函數中添加一項損失特征項來改進Tiny-YOLOV3。通過增加損失特征層,優(yōu)化了輸出特征圖在模型訓練過程中的分布,提高了模型的表達能力。改進后的損失函數,可以平衡檢測損失和特征損失之間的誤差,進一步促進模型的收斂。并且將改進后的算法應用在NAO 平臺,在保證檢測速度的前提下,機器人實時檢測精度有了很大提升。可滿足硬件約束下機器人在分揀、采摘、監(jiān)控、服務等多樣實時性目標檢測應用場景需求。在今后的研究中如果采用更深的網絡,檢測的精度將有更進一步的提升。