王 博,宋 丹,王洪玉
1.大連理工大學 信息與通信工程學院,遼寧 大連116024
2.國家電網有限公司 東北分部,沈陽110180
輸電線路是電力傳輸的基本載體,承擔安全穩定輸送電能的重要任務。文獻[1]指出,“十三五”期間電網規模仍將快速發展,2016至2020年將新增110千伏及以上線路40.1 萬公里(較“十二五”末增長45%)。隨著電網規模的增長,傳統的人工巡檢輸電線路無論從人數還是技術上都無法實現同步增長。隨著無人機技術的發展,無人機經濟性、靈活性、不受地形限制等特點使其成為電力巡檢中的研究熱點[2]。人工操控無人機巡檢對飛手要求極高,難度較大,亟需發展智能化的無人機自主巡檢。
無人機飛行中其空間位置可通過定位設備或傳感器信息獲得,根據空間信息設計飛行路線可使無人機自主飛行至精確的拍攝位置并采集圖像用于故障檢測。文獻[3]采用遺傳算法,優化了無人機的巡檢路徑及拍攝點,提升了巡檢效率。文獻[4]提出了基于GPS(Global Position System)和INS(Inertial Navigation System)的組合導航方法用于無人機巡線系統。文獻[5]提出了基于載波相位差分技術(Real-Time Kinematic,RTK)的巡檢方案,提升了定位精度。以上幾種方法依賴于GPS,有一定局限性。
單目視覺傳感器具有精度高、成本低、信息豐富等特點,無人機可搭載單目相機,并通過視覺同步定位與建圖(Visual Simultaneous Localization and Mapping,V-SLAM)技術進行位姿估計。文獻[6]和文獻[7]采用基于特征匹配的方法,對無人機采集的圖像進行基于單目視覺的迭代定位,但對圖像中特征點要求較高且匹配耗時。文獻[8]提出了一種半直接單目視覺里程計算法,不需提取大量特征點便可進行空間定位,但應用在無人機平視相機上效果不佳。文獻[9]提出了基于直接法的大范圍單目即時定位和地圖構建方法,該方法不需計算特征點并且能構建半稠密的地圖,但對場景要求較高。以上基于單目視覺的定位方法用于飛行路徑設計需要構建三維地圖且定位精度受環境及初始值影響較大。
本文提出一種基于單目視覺的無人機自主巡檢系統,基于深度學習技術對目標物(如絕緣子)進行識別檢測,利用尺寸已知的檢測目標與其在相機成像平面投影的對應關系,對其進行三維定位并優化定位精度,無需定位設備或視覺建圖。基于大疆SDK(Software Development Kit)開發的無人機飛控程序根據定位信息調整無人機的飛行姿態并自主導航,到達精確的拍攝位置可同步檢測出缺陷,實現無人機實時巡檢。
基于單目視覺的無人機自主巡檢系統組成如圖1所示,包括感知模塊、控制模塊、信息處理模塊。圖2所示為3個模塊對應的設備及數據流。

圖1 基于單目視覺的無人機自主巡檢系統組成
感知模塊為無人機,其上配有單目相機,通過無線鏈路將高清圖像傳送至控制模塊。
控制模塊由遙控器及終端(Android智能手機)上基于大疆SDK開發的APP(以下簡稱APP)組成,APP采用RTMP協議將圖傳信息推送至信息處理模塊,并將信息處理模塊回傳的定位信息轉換為控制信息,向無人機發送指令調整其飛行姿態。

圖2 各模塊設備及數據流
信息處理模塊為NVIDIA JETSON TX2(以下簡稱TX2),其是一款體積小,性能高的人工智能計算平臺。TX2 將控制模塊推送來的視頻流進行基于深度學習的目標檢測,同時對檢測出的目標進行基于單目視覺模型的位姿解算并優化,優化結果即為目標的空間信息,將該結果通過Socket回傳至控制模塊。
1.1.1 相機模型與去畸變
相機能夠將三維世界中的坐標點映射到二維圖像平面中的像素位置,小孔成像模型是最常用的理想相機成像模型。建立4個坐標系描述相機的成像過程,分別為世界坐標系、相機坐標系、圖像坐標系、像素坐標系,坐標系間能夠相互轉換。圖3為理想相機模型4個坐標系關系圖,M(Xw,Yw,Zw)是三維空間中的一點,M與相機光心Oc的連線交成像平面于m(x,y),m為空間點M的投影位置。為了簡化模型,本文將成像平面對稱到相機前方,與三維空間點一同出現在相機的正深度方向。

圖3 理想相機模型下各坐標系關系圖
設點M在像素坐標系中的位置為(u,v),f為相機焦距,三維空間中一點映射至成像平面與二維像素坐標的轉換表示為齊次坐標與矩陣形式如公式(1)所示[10],M1表征相機的固有屬性,稱為相機的內參矩陣,fx,fy,u0,v0為相機的內部參數,單位為像素。M2稱為外參矩陣,由3×3 的正交矩陣R及3×1 的平移向量t組成。

實際應用中,會在相機前加入透鏡以獲得更好的成像效果。然而引入透鏡會使直線投影變彎曲,這種現象稱為徑向畸變。相機標定可以獲得相機參數建立成像幾何模型及校正鏡頭畸變,本文采用張正友標定法[11]進行標定。正常圖像中一點在畸變圖像中的對應像素值可能為非整數,可采用雙線性內插法[12]去畸變恢復原圖。本文提出一種計算方法,通過畸變圖像中一點(ud,vd)解算出正常圖像的位置(u1,v1)。u1,v1用于數值計算,可為非整數。

公式(2)中,k1、k2為徑向畸變系數。本文使用的相機其畸變系數k1、k2較小,用rd代替r1的近似計算誤差可忽略不計。
1.1.2 空間信息解算與誤差修正
單目視覺定位是基于幾何成像模型建立三維空間目標特征與二維圖像對應特征的變換關系,從而確定目標的空間位姿信息[13]。若空間中一目標物的大小已知,選取通過該目標中心點的豎直高度線作為特征直線,利用特征直線在成像平面的已知信息及幾何圖形的相似關系,可求得目標中心相對于相機的空間坐標。
電力巡檢中,絕緣子是十分重要的檢測目標[14],對絕緣子進行視覺定位,可將通過其中心點的豎直高度線作為特征直線。如圖4所示,d3為已知的絕緣子高度,f3為成像平面中絕緣子的高度,單位為像素,f、f1、f2為成像平面中絕緣子中心在相機坐標系的位置,通過三角形的相似性可求得空間中絕緣子在相機坐標系的坐標(d1,d2,d)。公式(3)中,由于相機掛載在無人機上,角度α為無人機在水平方向對準目標中心所需旋轉的偏航角。


圖4 三維空間與成像平面的相似關系
實際應用中,相機光軸線與理想相機坐標系的Zc軸并不完全重合,如圖5 所示,角度β表示相機光軸線與Zc軸在豎直方向上的夾角。由實際相機求出的空間三維信息與理想情況存在一定的誤差,并且隨著相機與目標物之間距離的增加,Xc和Yc方向上的定位誤差會越來越大,影響了定位精度。圖5中,M為目標物的中心位置,A、B、C為相機光心在Zc軸上的三個位置,A、B、C處的相機光軸線與過M點的平面垂直并且與該平面分別相交于a、b、c三點。

圖5 定位誤差修正
由單目視覺模型求得的相機坐標系中目標物中心點的高度值為dy,深度值為dz,而真實的高度值應為Dy,深度值應為Dz,需要對定位誤差進行修正。由dz×tanβ+dy=MN可知tanβ=△dy-△dz,dy與dz線性相關,故可在Zc軸上平移相機拍攝多張照片,并對解算出的dy和dz進行線性擬合,求出角度β,最后通過公式(4)修正目標點的空間坐標從而獲得真實位置。角度γ表示相機光軸線與Zc軸水平方向的夾角。

本文提出的單目視覺定位模型首先需要對投影圖像中的目標物進行識別檢測,檢測結果用于空間信息解算,其誤差直接影響無人機動作的精度。
近年來,隨著深度學習的快速發展,基于深度學習的目標檢測逐漸成為主流[15]。本文采用YOLOv3[16]作為檢測框架。YOLOv3基于回歸思想,能夠實現端到端的目標檢測與識別,其借鑒了多種先進思想,包括構建特征金字塔、多尺度預測、優化損失函數等,在保證速度的前提下提升了檢測精度。
輸電線路的巡檢在室外進行,由于便攜式的GPU性能較弱,考慮對檢測網絡進行壓縮,在保證一定網絡性能的同時盡可能提升檢測速度。Google團隊2017年提出的輕量級網絡MobileNetV1[17]采用深度可分離卷積代替標準卷積,深度可分離卷積由深度卷積和逐點卷積組成,如圖6 所示,深度卷積是將單個輸入通道與單個卷積核進行卷積,而后逐點卷積用1×1卷積核組合深度卷積的輸出。

圖6 深度可分離卷積
深度可分離卷積與標準卷積的計算量之比為:

其中,DK×DK×M為深度卷積的卷積核尺寸,DW×DH×N為輸出特征圖的尺寸。引入超參數α∈(0,1]可降低模型的通道數,此時,深度可分離卷積計算量可繼續下降至接近公式(5)的α2倍,本文α取0.25。
將MobileNetV1 的1 個卷積層和13 個深度可分離卷積層作為特征提取網絡,對特定層數特征圖進行處理,分為3 個尺度送入YOLOv3 的多尺度檢測結構,組成MobileNetV1-YOLOv3 網絡模型,如圖7 所示。本文系統的檢測網絡需要在無人機距絕緣子較遠時檢測出絕緣子并且在接近絕緣子后對絕緣子缺陷進行檢測。為了提升對小目標的檢測性能,本文將輸入圖片尺寸預處理為608×608,輸出的3 個特征層尺度分別為19×19、38×38、76×76,YOLOv3 將深層特征的高語義和淺層特征的高分辨率融合后進行最終的預測。
YOLOv3 網絡將圖像劃分成S×S個網格,目標中心所在的網格負責預測該目標。每個網格預測B個邊界框,每個邊界框對應5+C個值,包括邊界框的4個偏移坐標,1 個置信度得分和C個分類預測,本文中B為3,C為2(絕緣子和缺陷)。對數據集標注框通過K-means 聚類計算錨框,均分到每個尺度的特征圖上。預測時,在每個尺度目標中心存在的網格使用3個錨框預測3個邊界框,使用非極大值抑制算法篩選邊界框并分類識別。
YOLOv3 輸出的bounding box 包含預測框左上角和右下角的像素坐標,計算檢測框的寬高和中心坐標并縮放至輸入圖像尺寸(本文為1 920×1 080),將結果代入公式(2)去畸變后得到圖4 中的f1、f2、f3,代入1.1.2小節的公式可解算出空間定位信息。

圖7 MobileNetV1-YOLOv3網絡模型
本文選用功能完備并支持二次開發的大疆系列無人機,其上掛載一體化或可拆卸的高清相機。DJI Mobile SDK是大疆向開發者提供的移動端開發者套件,開發者可為無人機量身定制APP 并部署在移動終端如智能手機或平板電腦上,移動終端連接遙控器可對無人機進行智能化的遠程操控。
DJI Mobile SDK中的VirtualStick(虛擬搖桿)方法可模擬飛手操控左右搖桿的動作,包括無人機的升降、偏航、前后移動、左右移動,如圖8所示。

圖8 VirtualStickControl模式
通過單目視覺定位模型得到的空間信息主要包括目標物中心位置相對于相機的修正后的高度值Yq,修正后的深度值Zq及修正前的偏航角αq,這里取修正前的偏航角是因為直接調整角度αq與先校正相機光軸再調整修正后的偏航角度得到的結果是相同的。
實際飛行中,機載相機的實時畫面通過信息處理模塊得到的定位信息存在滯后性,延遲接近1 s(傳輸過程和處理過程)。本文設計一種卡爾曼濾波[18]方法,融合機載傳感器信息與滯后的單目視覺定位信息,更新無人機的實時位置。
狀態變量X=[Zm Vm Ym αm],其中,Zm、Ym、αm分別為目標物相對無人機的深度值、高度值、偏航角,Vm為無人機在水平方向的速度。
觀測量Z=[Zq Yq αq Vn Yn αn],其中,Zq、Yq、αq分別為通過單目視覺定位模型得到的目標物相對無人機的深度值、高度值、偏航角,Vn、Yn、αn分別為通過機載傳感器得到的無人機在水平方向的速度,無人機的高度和無人機的航向角。
傳感器輸出隨著時間推移會累計誤差,而基于單目視覺模型的觀測量有滯后性,本文采用以上兩種觀測量交替更新狀態變量,如圖9所示。
設基于單目視覺模型量測的滯后時間為Tdelay,在t時刻的輸出實際對應t-Tdelay時刻的輸出,通過卡爾曼濾波方程可更新t-Tdelay時刻的狀態變量X(t-Tdelay),t-Tdelay至t之間的狀態變量變化可由傳感器輸出獲得,由此可更新t時刻的狀態變量。
預先設定目標物相對無人機的深度值Zp,高度值Yp,偏航角αp,即無人機最終的精確位置。將通過信息融合得到的深度值Zm、高度值Ym、偏航角αm分別同Zp、Yp、αp相比較,開發飛控程序將比較結果分別轉換為無人機前后飛行的速度,升降速度及偏航角速度,VirtualStick將信息發送至無人機機載控制模塊,可實現無人機自主飛行至精確的拍攝位置。以水平方向位姿調整為例,本文中Zp設置為10 m,表1 所示為根據Zm與Zp距離差設置VirtualStick 指令調整速度的對應關系,閾值th設置為0.05 m。

圖9 卡爾曼濾波融合信息更新狀態

表1 水平方向距離差對應VirtualStick指令調整速度值
基于單目視覺的無人機自主巡檢系統任務流程如圖10 所示,首先系統各模塊通過數據流建立連接并預設目標物相對無人機的精確位置,待無人機檢測出完整的絕緣子后,APP 上的自主控制線程接管無人機的控制權,發送指令直至無人機到達最終位置檢測目標物并拍照。

圖10 基于單目視覺的無人機自主巡檢系統任務流程
具體步驟如下:
步驟1預設無人機相對目標物的深度值Zp,高度值Yp,偏航角ap。
步驟2APP將無人機圖傳信息推流至TX2。
步驟3運行TX2上的腳本對視頻流進行目標檢測并定位,將定位信息回傳至APP。
步驟4 無人機由飛手操控或根據其他信息接近目標物直至目標物被完整的檢測出。
步驟5APP啟動自主控制線程,根據定位信息轉化的控制信息實時調整無人機位姿。
步驟6無人機自主飛行至精確位置并拍攝目標物,若檢測算法包含缺陷檢測,可對目標物實時巡檢。

圖像去畸變后需要修正相機光軸不完全水平引起的誤差。如圖5所示,在理想相機坐標系的Zc軸上移動相機在不同位置進行拍攝,對圖像中目標物的中心點進行計算求得其坐標信息(x,y,z)。分別對z-x、z-y進行線性擬合,如圖11所示,通過直線斜率可計算出角度β與角度γ。本文中β=-1.157 8°,γ=-1.590 7°。

圖11 線性擬合
將β與γ代入公式(4)得到修正后的定位誤差,與真值進行對比,部分結果如表2所示。
由表2可以看出,修正后的定位數據明顯更接近真值,計算值代表去畸變后修正前的定位數據。計算值的誤差與修正值的誤差對比如圖12所示,X、Y、Z方向的修正值誤差均小于計算值誤差,X、Y方向的修正值誤差下降明顯。計算值誤差與測量值誤差在三個方向上均隨著距離的增大而增加,在距離相機10 m 左右的位置上,X、Y方向的修正值誤差在厘米級,而Z方向的誤差在0.25 m 左右。本文中無人機的拍攝距離設置為10 m,無人機的GPS 定位在正常工作時,其空中的懸停精度在±0.5 m左右,故修正后的定位信息可作為單目視覺定位系統的輸出結果。

表2 修正后定位誤差統計

圖12 計算值誤差與修正值誤差對比
本文對電力巡線中的絕緣子進行檢測,需要用絕緣子數據集對深度學習網絡進行訓練。實驗中共有絕緣子圖像706張,包括國網巡檢機組采集的高清圖像及實地采集圖像,在圖片中標注絕緣子及絕緣子中缺陷位置并制作數據集。將數據集按7/3 劃分,其中訓練集占70%,測試集占30%。
實驗硬件配置中GPU 為NVIDIA GTX 1080Ti,輸入圖像大小為608×608,使用Pascal VOC數據集預訓練參數作為初始化權重,加快訓練收斂速度。
測試集采用平均精度均值(Mean Average Precision,mAP)和每秒幀率(Frame Per Second,FPS)作為評價指標,分別表征目標檢測網絡的準確度和速度。
表3 所示為基于不同特征提取網絡的YOLOv3 模型之間的網絡性能對比,可以看出本文輕量級Mobile-NetV1-YOLOv3 相比darknet-53 結構的YOLOv3,損失了6.4%Map 的同時提升處理速度近10 frame/s。由此說明采用深度可分離卷積和降低通道數有效地減少了參數和計算量,但壓縮網絡模型同時會降低網絡預測的準確性。

表3 不同網絡模型對比
將訓練好的網絡模型移植到TX2 上并對視頻流進行測試,如圖13所示。表4為不同網絡模型的速度對比,由于TX2上的GPU性能較弱,MobileNetV1-YOLOv3處理視頻流的速度為8.7幀/s,推流與檢測總時延為0.76 s,而darknet-53 結構的YOLOv3 僅為2.5 幀/s 且總時延大于1 s。本文在TX2 上選用輕量級網絡MobileNetV1-YOLOv3,平衡準確性與速度,后續可對受時延影響的實時位置進行修正。

圖13 視頻流中絕緣子的檢測效果

表4 TX2上不同網絡模型檢測速度對比
電力巡檢中的檢測目標絕緣子處于電力桿塔上的固定位置,距地面高度幾十米,定位信息真值的獲取較為困難。為了計算基于單目視覺的目標物定位精度,選取地面上易獲得真值信息的固定目標物代替絕緣子作為檢測目標,本節中選取人作為目標物。將TX2 中的目標檢測網絡參數設置為MobileNetV1-YOLOv3 在Pascal VOC 數據集下的預訓練權重,可實現對標簽為人的檢測框進行基于單目視覺的空間位置解算以獲得定位信息。
首先設計實驗驗證本文系統中融合單目視覺信息和傳感器信息的卡爾曼濾波實時定位效果。以水平方向狀態變量為例,觀測量與狀態變量均為無人機至目標物的距離和無人機水平方向的速度,初始狀態為:無人機距離目標物15 m,初始速度0.5 m/s。實驗過程為無人機根據定位信息飛至距目標物10 m處懸停。
無人機傳感器更新頻率為10 Hz,由2.2節可知單目視覺模型量測輸出為8.7 frame/s,實驗中設置時序間隔為0.1 s,讀取單目視覺模型量測輸出的時間間隔設置為0.5 s,滯后時間Tdelay設置為1 s,實驗結果如圖14 所示。由圖14(a)可以看出,單目視覺模型量測輸出的定位信息滯后于無人機的實時位置,t時刻單目視覺模型量測輸出實際對應t-1 時刻的輸出,本文融合t-1 至t之間的傳感器信息進行補償,卡爾曼濾波更新后的狀態變量能夠到達實時定位效果。當目標檢測網絡輸出的檢測框精度不高時,單目視覺定位模型量測輸出誤差較大,融合傳感器信息的卡爾曼濾波可對誤差進行修正,圖14(a)中存在誤差較大的量測點,卡爾曼濾波輸出的距離和速度均較穩定。

圖14 無人機在水平方向的實時狀態
接下來設計實驗計算本文系統的實時定位精度,作為對比,開發基于GPS操控無人機飛至指定位置的程序模塊,大疆SDK中的Mission動作序列可實現此功能。
實驗步驟如下:
步驟1人工操控無人機飛至目標物附近某確定位置,目標物距離無人機深度Zp為10 m,目標物中心距離無人機高度Yp為1 m,偏航角αp為0°,即無人機在水平方向正對目標物。記錄該位置的GPS 信息,用作基于GPS的無人機飛控程序的定位信息。
步驟2將深度值Zp、高度值Yp、偏航角αp作為預設值導入基于單目視覺的無人機自主飛控程序。
步驟3分別運行基于單目視覺與基于GPS的飛控程序,量測無人機最終位置相對目標物的空間信息并拍攝目標物。
經過多次實驗,無人機基于單目視覺與基于GPS的定位誤差絕對值的對比如表5 所示,可以看出,基于單目視覺的定位誤差均值及波動均小于基于GPS 進行定位的誤差。受檢測框精度及室外有風環境無人機懸停精度的影響,X方向的定位誤差對比其在理想無風環境中略有提高,但仍小于基于GPS進行定位的誤差。由圖15 可以看出,基于本文系統飛行的無人機能在水平方向正對目標物,故本文提出的基于單目視覺的無人機巡檢路徑的準確性和可行性得到了驗證。

表5 基于不同飛控程序的定位誤差對比 m

圖15 基于單目視覺與基于GPS導航飛行的結果圖像對比
將2.2節訓練好的檢測絕緣子的網絡權重導入TX2中的檢測網絡,驗證本文系統巡檢絕緣子效果。
實驗場地位于大連理工大學令希圖書館外某220 kV電力桿塔附近,絕緣子串長度2.34 m。預設目標物相對無人機的深度值Zp為10 m,高度值Yp為0 m,偏航角αp為0°,即無人機位于絕緣子正前方10 m 處。實驗流程如圖10所示。
圖16 所示為實驗中APP 運行界面的截圖,包括無人機相機的圖傳畫面,無人機在地圖中的位置,無人機自身的參數及功能按鈕。

圖16 基于大疆SDK開發的APP運行界面截圖
圖17為TX2上對實時視頻流進行絕緣子識別檢測的程序截圖,訓練中包含了絕緣子中的缺陷,故可同時對缺陷進行檢測,本文實驗中的絕緣子無缺陷。

圖17 實時視頻流進行絕緣子識別檢測的程序截圖
圖18 為無人機到達精確位置拍攝的絕緣子圖像,可以看出,通過基于單目視覺的無人機自主巡檢系統的位姿調整,無人機可以拍攝清晰的絕緣子圖像且絕緣子位于圖像正中位置。

圖18 基于單目視覺飛行的絕緣子拍攝圖像
針對圖18 中的懸垂絕緣子,后續可設定無人機的偏航角速度與左右方向的速度,實現無人機的繞飛動作,在多個角度對絕緣子進行檢測。
本文基于單目視覺成像關系,融合基于大疆SDK開發的無人機飛控程序及基于深度視覺的目標檢測模塊,實現無人機對目標物的自主導航及實時檢測。實驗結果表明,距離目標物10 m時,該系統在世界坐標系X、Y、Z 三個方向的定位誤差分別為0.31 m、0.06 m、0.24 m,處理速度0.76 frame/s,同時擺脫了對GPS 的依賴,可完成在復雜環境下的無人機電力巡檢任務。本文系統采用模塊化設計,通過訓練不同的目標檢測參數及設計不同的飛行路徑可實現電力桿塔的定制化檢測任務,有助于提升電力巡檢的智能化水平。