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