馮曉晨,葛 彤,王小丹
(1. 上海交通大學 船舶海洋與建筑工程學院,上海 200240;2. 自然資源部北海局,山東 青島 266061)
作為水下資源探索的一個重要工具,水下機器人需要承擔各種各樣的科研任務。由于自身攜帶能源的限制以及對數據傳輸的要求,需要及時回到母船補充能源,這種方式需要花費大量的人力和物力[1]。而且,目前大多數的AUV作業(yè)在各個流程操作方面,基本都是依賴于人員的操作。而水下對接技術能夠實現對水下機器人進行充電,數據傳輸和擴大活動范圍的功能,減少人力物力,因此如何發(fā)展自主的水下對接回收技術成為關鍵。
目前,在水下對接過程中,水下機器人所采用的傳感器方式主要分為4種:1)電磁傳感方式,2)聲學傳感方式,3)光學傳感方式,4)視覺傳感方式[2]。對于聲學和電磁學導引方式,一般是用于距離較長、精度要求不是特別高的過程。光學和視覺的導引方式相對于上述2種傳感器,作業(yè)的范圍有限,通常在幾十米的距離之內,但視覺的導引精度很高,抗外界干擾能力、魯棒性較強,適用于多變的水下環(huán)境,常常用于短距離的水下對接[3]?;谝曈X的水下對接系統主要包括對接站、安裝在水下機器人上的攝像機和對接算法。國內外已經有很多科研機構對自主航行器視覺引導進行了研究、試驗:1)Li et al.(2015)在一個圓錐體形狀的對接臺邊緣放置了4個540 mm的綠燈,實現了良好的水下綠燈傳播[4]。2)Maki等(2015)利用3盞綠燈和1盞紅燈的三維地標進行水下對接。
水下對接引導算法主要承擔檢測和位置估計的作用[5],傳統的水下對接檢測算法主要分為兩大類:1)基于二值化。Park等首先通過預先定義的固定閾值對圖像進行二值化,然后使用卷積去除噪聲;2)基于特征。Li等[6]以基于特征的檢測方法為例,首先采用Meanshift算法提取光源面積,然后利用該算法對輪廓特征進行識別。相對于上文提到的手動或者依賴先驗知識的算法,基于深度學習的目標檢測算法相較于其他算法適用性更廣,效果更好。所以提出一種基于卷積神經網絡的目標檢測算法用于水下對接,相對于傳統方法,具有準確度高、魯棒性強的優(yōu)點,對對接效率來講也有一定性的提升。水下對接引導算法的創(chuàng)新性如下:
1)設計一個基于神經網絡的目標檢測框架,用于水下對接過程。首先使用神經網絡目標檢測算法檢測物體,獲取物體的大致位置,得到感興趣區(qū)域,然后通過分割算法得到特征點的位置,最后通過位姿估計獲得對接站與水下機器人之間的相對位姿。
2)改進了YOLOv3算法的特征提取網絡以及檢測層,能夠提高計算精度,以及準確度。
設計的水下對接引導算法流程如圖2所示。
圖2 水下對接算法流程圖Fig. 2 Underwater docking algorithm flow chart
YOLO算法是通過將檢測任務看作是回歸問題來進行處理[7]。這種思想的好處是對物體的檢測速度很快,算法效率高,而且能夠有效的區(qū)分背景、學習物體的泛化特征。所以本文設計了一種基于YOLOv3改進的水下中繼器目標檢測算法,作為水下對接導引的目標檢測模型。
在神經網絡訓練過程中,由于卷積和降采樣操作的存在,特征信息會丟失,借鑒DenseNet[10]的思想,在DarkNet-53的基礎上將ResNet替換成DenseNet,可以緩解由于層數過多而導致的梯度消失問題,提升網絡性能。DenseBlock結構如圖3所示。
圖3 DenseBlock結構Fig. 3 The structure of DenseBlock
圖中,X0是 輸入特征,第n層的輸入不但和它前一層的輸出相關,而且將前面的所有輸出作為這一層的輸入,公式表示為:
式中:[]表 示將第0 層到第n-1層 輸出的X0到Xn-1特征進行通道拼接作為第n層的輸入;非線性變換Yn表示將得到的特征輸入進行批量歸一化操作、ReLU激活函數和卷積操作;最后得到Xn。這種方法相比ResNet結構可實現特征重用。采用DenseNet網絡的改進目標檢測算法模型如表1所示。
由表1可以看出,改進的算法首先將輸入的416×416×3 的圖片進行2次卷積,得到1 04×104的特征圖,然后利用DenseBlock和Transition層交替進行提取特征,密集塊的增長率設置為32,密集塊中每一層的操作為:BN+ReLU+conv1×1+BN+ReLU+conv3×3,其中1 ×1卷 積層的卷積核數量為 4 ×32 , 3 ×3卷積層的卷積核數量為32。1 ×1卷積層的作用在于降低特征數量,提高效率。Transition層的具體操作為BN+ReLU+1×1conv+2×2average pooling,該層的作用主要是降低特征圖的尺寸。
表1 改進的YOLOv3神經網絡Tab. 1 Improved YOLOv3 neural network
通過特征網絡后,分別得到1 3×13 和 2 6×26的特征圖,以及 53×53特征圖,3個檢測層,能夠很好的檢測大中小物體,對中繼器從遠到近的對接過程有更好的保障。例如,對于分辨率為1 3×13的特征圖,采用2倍上采樣的方式,與提取出的 26×26特征圖進行融合,更好地提取特征,增強特征表達能力[11]。預測方法與YOLOv3相似,回歸來生成每個類的邊界框坐標和概率。以1 3×13特征圖為例,網絡首先將輸入圖片分為1 3×13個單元格,如果帶檢測目標的中心落在某個單元格,那么該單元格負責預測這個目標,每個單元格預測B個邊界框,根據與真實框交并比的值選擇邊界框,選擇交并比最大的邊界框。
B邊界框:邊界框由 (xi,b,yi,b,wi,b,hi,b) 組成,i表示第i個網格,b表示第B個邊界框,其中(xi,b,yi,b)表示中心點的坐標值表示所預測邊界框的寬度值以及高度值。
改進的YOLOv3的損失函數為:
損失函數主要包括坐標誤差和置信度誤差,主要可以為3部分,第1部分為坐標誤差,具體公式為:
式中G2代表網格單元的個數,B為每個單元格所預測的邊界框個數,的取值為1或0,即表示第i個單元格的第b個邊界框是否存在檢測目標,是則取值為1,否則取值為0。其中 (xi,b,yi,b,wi,b,hi,b)表示預測的邊界框中心坐標、高度和寬度,是指實際的邊界框大小。
第2部分和第3部分為置信度誤差:
式中:l2(θ) 和l3(θ) 為置信度誤差;Ci表示是否含有目標的真實值;表示預測值;表示邊界框中含有物體表示邊界框中不含有物體。因為對于采集到的中繼器圖像來說,大部分的區(qū)域中是不含有中繼器目標物的,所以為了能夠更好地表示每部分的重要性,需要設置比例系數。λ1, λ2, λ3分別表示3部分所占的不同權重。檢測模塊的流程如圖4所示。
圖4 目標檢測算法流程圖Fig. 4 Flow chart of target detection algorithm
在第1部分中,解釋了如何利用改進的YOLOv3算法得到對接站在二維圖像中的位置。在這一部分,提供一種方法用來恢復水下機器人和對接站之間的三維位置,實現對水下機器人的定位。
第1部分利用目標檢測算法可以得到感興趣區(qū)域,在提取出中繼器的大致位置之后,為了進一步進行位姿估計,需要得到導引燈的坐標位置,為此采用基于閾值分割的方法進行特征點提取,閾值分割法是圖像分割中最常用的辦法,它是通過設定特定的閾值把圖像中的像素分為若干個等級,利用需要提取的目標與背景之間的閾值差異,來進行提取目標的方法[12]。由于點光源的中心灰度值較高,其他位置的灰度值隨點光源的距離增大而減少。如果圖像進行分割后,恰好有4個連通域,說明滿足要求。如果閾值過小,會使得連通域小于4,然后可逐步增大閾值,使條件滿足。流程如圖5所示。
圖5 自整定分割[13]Fig. 5 Adaptive threshold segmentation
利用自適應分割方法成功的得到了4個連通域。但進行下一步位姿轉換時,需要用到導引燈圓心坐標。基于形態(tài)學的角度來分析導引燈,可以得到結論:從特征點(導引燈中心)向外延伸的導引燈連通域,基本是成圓形。所以為了準確的得到圓心位置,可以把邊界的統計矩作為檢測邊界,利用形態(tài)學方法求取[14]。
將特征點由圖像坐標系轉換到世界坐標系的過程,需要用到3個坐標系:1)圖像坐標系,2)相機坐標系,3)世界坐標系。轉換關系為:式中: (u,v)為圖像坐標系原點在像素坐標系中的坐標;dx和dy是像素在圖像平面x,y方向上的物理尺度。
相機坐標系{c}:坐標原點建立在攝像機的光心處,攝像機固定在水下機器人身上,只考慮剛體運動。用(Xc,Yc,Zc)表示。
世界坐標系{t}:(Xt,Yt)建立在引導燈對接口確定的平面上,Zt軸垂直于該平面向外,Xt指向對接站右 舷,Yt向 下。用(Xt,Yt,Zt)表 示。
接下來,解釋在相機坐標系和目標坐標系之間的轉換,圖像坐標和相機坐標之間的轉換關系為:
圖6 坐標系Fig. 6 Coordinate system
即
其中:kx=ax f為X軸方向的放大系數;ky=ay f為Y軸方向的放大系數。(u0,v0)為相機的光軸中心點,也稱相機鏡頭的光心。相機坐標系與目標坐標系的轉換關系為:
其 中R為 3 ×3 的 旋 轉 矩 陣,有RTR=RRT=I和det(R)=+1的性質。
所以圖像坐標到世界坐標之間的轉換關系為:
求解姿態(tài)矩陣 [R,t],有相機標定可以得到內參數矩陣,所以上式中有9個未知量,所以根據前文求得的4個導引燈的坐標信息可以得到8個方程,又因為是旋轉矩陣,所以便求得姿態(tài)矩陣。根據本文設計的目標檢測與分割算法,可以提取出位于4個導引燈的二維圖像坐標信息以及已知的導引燈所在的世界坐標信息,從而轉換為共面的P4P問題,所以采用PnP問題中的L-M迭代算法求解位姿矩陣[15]。求解后便能夠根據特征點在二維圖像中的坐標進行轉換,進而估計中繼器的位姿[16]。
為了對水下對接引導算法進行驗證,設計了標定板以及引導光源作為對接裝置的模擬,并在此基礎上制作了DOCK數據集,用于對目標檢測算法的訓練、驗證。按照VOC格式制作數據集。數據集分為訓練集和測試集,其中訓練集816張,測試集200張。如表2所示。
表2 數據集Tab. 2 Date set
對接模擬裝置如圖7所示,在矩形板4個角上布置LED燈模擬引導燈方案[16]。對改進的YOLOv3目標檢測網絡進行訓練,軟件配置為:GTX1050Ti,intel i5CPU,64GB內存,操作系統win10。模型訓練的超參數為:批次大小為6,本次訓練的迭代輪數為1 500。通過選定λ1, λ2, λ3等參數值,觀察損失函數訓練曲線,并參考原始YOLOv3網絡參數,得到訓練效果如圖8所示。
圖7 對接模擬裝置Fig. 7 Docking simulator
由圖8可知,在訓練過程中,一開始損失值(loss)較高,不斷波動,隨著訓練過程進行,損失值不斷減小。到了200個epoch的附近,損失值趨于收斂,中間有小部分波動,最后loss值趨于穩(wěn)定。
圖8 改進的神經網絡訓練過程Fig. 8 Improved Neural network training process
表3 實驗結果Tab. 3 Experimental result
選取200張模擬水下環(huán)境的模擬對接版的照片,進行檢測,可以看出提出的改進YOLOv3模型檢測準確率達到了91.5%,能夠較好完成水下對接導引過程中的檢測任務。而且,從圖9的檢測結果可以看出,檢測算法對于對接模擬板有很好的檢測結果。
圖9 目標檢測結果Fig. 9 Target detection results
為了驗證水下對接引導算法的可行性,以及改進后的目標檢測算法的有效性,通過模擬水下機器人與中繼器從遠到近的對接過程,采集模擬標定板的圖片,進行自整定閾值分割算法處理,并進行與傳統算法的特征點提取準確率對比。
自整定分割的效果圖如圖10和圖11所示??梢钥闯瞿軌蜉^準確分割出特征點在圖像中的位置,進而進行坐標轉換,從而減少后續(xù)位姿估計的誤差,并選取20張照片進行特征點提取準確率試驗驗證。由表4的特征提取準確率可以看出,基于YOLOv3改進的水下對接視覺引導方案能夠更好減少背景信息的干擾,在準確性方面能夠很好完成任務,提高特征點提取的準確率。所以設計的水下對接引導算法能夠很好的應用到水下對接。
圖1 水下對接方案Fig. 1 Underwater docking system
圖10 自整定閾值分割Fig. 10 Adaptive threshold segmentation
圖11 形態(tài)學求取坐標Fig. 11 Calculate the coordinates
表4 特征點提取成功率Tab. 4 Accuracy of feature point extraction
圖12 特征點提取效果圖Fig. 12 Feature point extraction effect drawing
為了更好減少無關的背景信息干擾,完成近距離水下對接,設計一種基于神經網絡的水下對接引導算法。改進的YOLOv3目標檢測算法很好地完成了對中繼器在二維圖像中的目標定位,準確分割了背景信息與感興趣區(qū)域,具有更好的魯棒性、準確性。然后通過特征點提取,坐標轉換完成對對接板的位姿估計。實驗以對接板模擬中繼器,通過選取不同距離的參考點來驗證方案的有效性。實驗結果表明:1)基于神經網絡的目標檢測算法可以準確完成對中繼器在二維圖像中的目標提取。2)位姿估計方案能夠有效準確完成特征點提取,坐標轉換。未來的研究方向是基于提出的算法框架進行水下實際對接實驗,并進行數據分析及算法改進,將該技術應用到實際工程中去。