李凱鵬,王云葛,邵淵,吳星笑
(象山電力實(shí)業(yè)有限公司,浙江寧波 315700)
海底電纜,簡(jiǎn)稱海纜,主要為遠(yuǎn)距離島嶼提供電力。海上漁船拖網(wǎng)或錨泊會(huì)破壞海纜。拖網(wǎng)時(shí),漁網(wǎng)等漁具會(huì)刺入海床,拉斷淺埋的海纜;錨泊時(shí),錨容易將海纜鉤住,并在起錨時(shí)鉤斷海纜,甚至?xí)霈F(xiàn)船員直接下水將海纜砍斷等情況。為了保護(hù)海纜,相關(guān)部門派專門人員觀測(cè)海域情況。一般地,對(duì)于海纜監(jiān)控,將設(shè)置專門的相機(jī)來代替人工觀察。視頻監(jiān)控需要人工判斷輪船行為,沒有實(shí)現(xiàn)真正意義上的智能監(jiān)控。人工監(jiān)控存在缺陷,即在長(zhǎng)時(shí)間的工作后,人體會(huì)非常疲勞,此時(shí)容易忽略海纜出現(xiàn)的異常情況,而且人的主觀意識(shí)也會(huì)漏掉對(duì)海面異常情況的監(jiān)控。文中采用新方法對(duì)海面進(jìn)行實(shí)時(shí)監(jiān)控,該方法克服了人工監(jiān)控的缺陷,降低事故發(fā)生的概率,保障海纜安全穩(wěn)定運(yùn)行。
深度學(xué)習(xí)是一種人工智能模型,用較深的人工神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)樣本數(shù)據(jù)的內(nèi)在規(guī)律[1]。在計(jì)算機(jī)視覺領(lǐng)域,最常用的深度學(xué)習(xí)模型是卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[2]。CNN 是一種基于感受野的網(wǎng)絡(luò),由卷積層、池化層和全連接層構(gòu)成。卷積層的主要作用是提取特征。池化層的作用是保留主要特征、增大感受野、減少參數(shù)。全連接層主要對(duì)卷積層提取到的特征進(jìn)行分類。
目標(biāo)檢測(cè)的目的是找出畫面中所有感興趣的目標(biāo),確定目標(biāo)的類別及其在畫面中的位置[3]。工業(yè)上常用的目標(biāo)檢測(cè)算法基本都基于深度學(xué)習(xí)技術(shù),主要有Faster R-CNN[4]和YOLO[5]。Faster R-CNN 精度高但速度慢,而YOLO 速度快但精度低。文中需要實(shí)時(shí)監(jiān)控海面船只,因此YOLO 算法更適合。但是該項(xiàng)目的監(jiān)控場(chǎng)面巨大,輪船航速相對(duì)于整個(gè)監(jiān)控畫面顯得非常慢;Faster R-CNN 支持更高的分辨率,可防止小目標(biāo)丟失,因此也可以選擇使用Faster R-CNN。
Faster R-CNN 需要有一個(gè)強(qiáng)大的BackBone 負(fù)責(zé)特征提取,一般選用CNN 作為BackBone。目前在工業(yè)界最常用的CNN 是ResNet[6]、VGG[7]。ResNet 采用殘差結(jié)構(gòu)解決深度網(wǎng)絡(luò)的退化問題,并使用BottleNeck 結(jié)構(gòu)減少參數(shù)[8]。
多目標(biāo)跟蹤(Multi Object Tracking,MOT)是在一段視頻中同時(shí)跟蹤多個(gè)目標(biāo)[9]。海面上不止有一個(gè)輪船目標(biāo),有些存在違規(guī)行為,有些正常行駛,因此需要分別對(duì)待每一個(gè)輪船目標(biāo),并分析它們的行為,故使用多目標(biāo)跟蹤算法。
由于監(jiān)控場(chǎng)景巨大,因此遠(yuǎn)處輪船在畫面中顯得格外小,這對(duì)檢測(cè)過程帶來了巨大的困難。如何檢測(cè)小目標(biāo)一直都是CNN 的研究課題。在CNN 中存在著大量下采樣,這些下采樣增大了感受野,也同時(shí)降低了圖像的分辨率,但下采樣又是必須存在的。特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network,FPN)既可以保留下采樣,又可以保留分辨率[10]。C2、C3、C4、C5 分別是ResNet50 第二、第三、第四、第五個(gè)Block的特征圖。特征圖邊框粗細(xì)表示特征表達(dá)能力的強(qiáng)弱。如圖1 所示,特征圖M5 由C5 得到,M4 由M5 上采樣和C4 融合得到,M3、M2 和M4 獲取方式一致。
FPN 將強(qiáng)表達(dá)能力、低分辨率的深層特征圖和弱表達(dá)能力、高分辨率的淺層特征圖融合成強(qiáng)表達(dá)能力、高分辨率的特征圖。文中項(xiàng)目監(jiān)控區(qū)域較大,離相機(jī)較遠(yuǎn)的輪船在成像畫面中非常小,因此在檢測(cè)模塊中加入FPN。
卷積核的目的是提取特征。普通卷積的尺寸是固定的方形尺寸(例如3×3、5×5)。同一層普通卷積核的感受野尺寸相同,但是特征圖的不同位置對(duì)應(yīng)不同尺寸或不同形狀的特征,這些特征需要自動(dòng)調(diào)整尺寸和形狀的感受野。普通卷積對(duì)特征尺寸和形狀的變化適應(yīng)性差,泛化能力不強(qiáng)。
目前解決上述問題的方法是通過大量樣本訓(xùn)練,以提高卷積核的泛化能力。因?yàn)樵谠擁?xiàng)目的實(shí)際場(chǎng)景下,無法獲取大量數(shù)據(jù)樣本,所以考慮使用可變形卷積網(wǎng)絡(luò)(Deformable Convolution Network,DCN)[11]。
方形卷積不是最好的形狀,因此必須使網(wǎng)絡(luò)自身學(xué)習(xí)形狀,以適應(yīng)不同的特征。實(shí)際上完成上述操作并不需要改變卷積核形狀。卷積操作本質(zhì)上是卷積采樣點(diǎn)作用于對(duì)應(yīng)特征圖上的像素點(diǎn)。DCN 為每個(gè)卷積采樣點(diǎn)加上一個(gè)偏移量以達(dá)到改變形狀的效果。
一個(gè)常規(guī)的3×3 卷積有9 個(gè)采樣點(diǎn),其中(-1,-1)表示左下采樣點(diǎn),(-1,0)表示左采樣點(diǎn),依次類推。常規(guī)3×3 卷積的輸出用式(1)表示:
其中,pn∈R表示位置,w(pn) 表示pn的權(quán)重,x(p0+pn)表示pn對(duì)應(yīng)特征圖中的像素值。
如果需要改變卷積核形狀,本質(zhì)上只需要改變采樣的特征圖上的像素位置即可。
式(2)中,與x(p0+pn)相比,x(p0+pn+Δpn)表示采樣位置發(fā)生了改變,而w(pn)沒有發(fā)生改變。
最終的結(jié)果是只需采樣的像素位置發(fā)生偏移,就可以完成可變形卷積操作。
如圖2 所示,用一個(gè)額外的卷積層來學(xué)習(xí)offset。DCN 對(duì)特征圖的每個(gè)像素位置都生成一組偏移量。以3×3 卷積為例,需要生成3×3×2=18 個(gè)的offset,18表示該位置的9 個(gè)采樣點(diǎn)對(duì)該像素x方向和y方向的偏移量。然后將特征圖和offset 共同作為輸入,采樣點(diǎn)先發(fā)生偏移,再進(jìn)行卷積。
DCN 可以適應(yīng)特征的形狀和尺寸,無需大量樣本,也可以很好地學(xué)習(xí)特征,這對(duì)難以獲取樣本的場(chǎng)景相當(dāng)友好。
目前工業(yè)界最常用的跟蹤算法是Simple Online and Realtime Tracking(SORT)[12]算法。SORT 算法由目標(biāo)檢測(cè)、卡爾曼濾波預(yù)測(cè)[13]和匈牙利算法匹配[14]三部分組成,其總體框架如圖3 所示。使用目標(biāo)檢測(cè)獲取目標(biāo)位置,使用卡爾曼濾波(Kalman filter)預(yù)測(cè)并更新目標(biāo)位置,使用匈牙利算法匹配預(yù)測(cè)位置和檢測(cè)位置。
卡爾曼濾波是一種利用線性系統(tǒng)狀態(tài)方程,通過系統(tǒng)輸入、輸出觀測(cè)數(shù)據(jù),并對(duì)系統(tǒng)狀態(tài)進(jìn)行最優(yōu)估計(jì)的算法。卡爾曼濾波的預(yù)測(cè)過程如式(3)、(4)所示:
式(3)為狀態(tài)預(yù)測(cè)公式,-1表示t-1 時(shí)刻的物體狀態(tài);是t-1 時(shí)刻的控制量;F為狀態(tài)轉(zhuǎn)移矩陣,表示根據(jù)t-1 時(shí)刻的狀態(tài)推測(cè)t時(shí)刻的狀態(tài);B是控制矩陣,表示控制量如何作用于當(dāng)前狀態(tài)。是t時(shí)刻的物體狀態(tài)。式(4)表示不確定性在各個(gè)時(shí)刻的傳遞關(guān)系,Pt-1是t-1 時(shí)刻的噪聲,Q是預(yù)測(cè)模型本身的噪聲。整個(gè)過程表示對(duì)物體運(yùn)動(dòng)狀態(tài)的估計(jì),并做了預(yù)測(cè)。這種預(yù)測(cè)是不準(zhǔn)確的,因此需要根據(jù)觀測(cè)到的數(shù)據(jù)對(duì)預(yù)測(cè)值進(jìn)行更新。
卡爾曼濾波的更新過程如式(5)-(7)所示:
式中,Kt是卡爾曼系數(shù);Zt是觀測(cè)值;H為觀測(cè)矩陣,表示估計(jì)值與觀測(cè)值的轉(zhuǎn)換。整個(gè)更新過程表示根據(jù)觀測(cè)值來修正預(yù)測(cè)值,使預(yù)測(cè)值更加接近實(shí)際情況。
將n個(gè)卡爾曼預(yù)測(cè)邊界框指派給n個(gè)目標(biāo)檢測(cè)邊界框,使用匈牙利算法,匈牙利算法是一種快速使總匹配度最優(yōu)的算法。由于每對(duì)邊界框匹配程度不同,而匈牙利算法可以尋找匹配最優(yōu)解。
式(8)中,Xij表示第i個(gè)檢測(cè)框和第j個(gè)預(yù)測(cè)框的匹配結(jié)果,Cij表示第i個(gè)檢測(cè)框和第j個(gè)預(yù)測(cè)框的匹配度系數(shù)矩陣。
單應(yīng)性原理表示兩個(gè)平面之間的對(duì)應(yīng)關(guān)系,包括剛體變換、仿射變換、投影變換。剛體變換只改變物體位置,包括平移、旋轉(zhuǎn),無法改變物體形狀。仿射變換改變物體位置和形狀,如長(zhǎng)方形變成平行四邊形。投影變換徹底改變物體位置和形狀。文中項(xiàng)目監(jiān)控海面,海面上的物體在成像中的形狀發(fā)生了徹底的改變,因此使用投影變換。
式(9)中的矩陣為單應(yīng)性矩陣,有8 個(gè)未知量,需要至少求出8 個(gè)已知量,即4 組坐標(biāo)。(x',y')是海平面上的坐標(biāo),用經(jīng)緯度表示;(x,y)是圖像平面上的坐標(biāo)。單應(yīng)性矩陣就是它們之間的變換關(guān)系,已知海平面的坐標(biāo)就可以求出圖像平面坐標(biāo),反之亦成立。
緯度是地面上一點(diǎn)到地球球心的連線與赤道平面的夾角;經(jīng)度是地面上一點(diǎn)與兩極的連線所在平面與本初子午線所在平面的夾角。使用半正矢公式(式(10))計(jì)算1、2 兩點(diǎn)的圓心夾角α,利用式(11)計(jì)算兩點(diǎn)之間的實(shí)際距離d。
其中,N代表緯度,E代表經(jīng)度,EARTHRADIUS代表地球半徑。最后通過經(jīng)典的速度公式求取此時(shí)輪船航行的時(shí)間。根據(jù)輪船錨泊或捕撈時(shí)航速較低的特征,設(shè)置航速閾值為2 海里/時(shí),低于2 海里/時(shí)的航速判定為輪船違規(guī)。
實(shí)驗(yàn)所使用的數(shù)據(jù)集是使用LabelImg 軟件進(jìn)行人工標(biāo)注的698 張包含輪船的圖像數(shù)據(jù)集,標(biāo)注信息使用XML 保存。整個(gè)輪船數(shù)據(jù)集的格式與COCO數(shù)據(jù)集格式保持一致。隨機(jī)抽取其中600 張圖像作為訓(xùn)練集,剩下98 張作為測(cè)試集。為了提高模型的泛化能力,通常使用數(shù)據(jù)增強(qiáng)和遷移學(xué)習(xí)等方法。數(shù)據(jù)增強(qiáng)(Data Augmentation)是一種擴(kuò)充數(shù)據(jù)集的方式[15]。在訓(xùn)練過程中,每個(gè)Epoch 會(huì)隨機(jī)抽取訓(xùn)練集中50%的圖像進(jìn)行水平或垂直翻轉(zhuǎn)。
實(shí)驗(yàn)所使用的硬件平臺(tái)是Intel Core i7-9700 CPU 和NVIDIA RTX 2080 GPU,其中GPU 提供CUDA通用并行計(jì)算架構(gòu),極大地提高了CNN 的訓(xùn)練和推理速度。部署平臺(tái)是NVIDIA Jetson Xavier NX,ARM64 位架構(gòu)的邊緣計(jì)算設(shè)備,該設(shè)備提供高達(dá)21 TOPS 的加速計(jì)算能力。
優(yōu)化器采用SGD 加Momentum 的組合。學(xué)習(xí)率衰減方式為分段常數(shù)衰減。一共訓(xùn)練了15個(gè)Epoch,初始學(xué)習(xí)率是0.01,當(dāng)訓(xùn)練到第9個(gè)Epoch 時(shí),學(xué)習(xí)率降為之前的1/10,即0.001。當(dāng)訓(xùn)練到第13 個(gè)Epoch時(shí),學(xué)習(xí)率降為初始學(xué)習(xí)率的1/100,即0.000 1。
模型訓(xùn)練的batch size設(shè)置為1,由于批量太小,所以禁用Batch Normalization[16]。圖像尺寸統(tǒng)一縮放至800~1 333 pixel中的一個(gè)尺寸,即短邊最短為800 pixel,長(zhǎng)邊最長(zhǎng)為1 333 pixel,并保持原始寬高比不變。
遷移學(xué)習(xí)(Transfer Learning)[17-19]是將在某個(gè)領(lǐng)域中學(xué)到的知識(shí)應(yīng)用到其他相關(guān)領(lǐng)域中的技術(shù)。將在COCO 上訓(xùn)練過的參數(shù)遷移到文中模型,再?gòu)腃3層開始微調(diào)參數(shù)。
普通模型記作R_50_C4,F(xiàn)PN 記作R_50_FPN,DCN 記作R_50_FPN_DCN。由于ResNet50 的C5 層特征圖太小,不適合目標(biāo)檢測(cè)任務(wù),因此普通RCNN 一般使用C4 層的特征圖。而在FPN 中,C2-C5層的特征圖都會(huì)使用,使用控制變量法保證其他所有參數(shù)不變。
最后實(shí)驗(yàn)結(jié)果如圖4 所示。以IoU=0.5∶0.95 為指標(biāo),三個(gè)模型在第10 個(gè)Epoch 時(shí)趨于穩(wěn)定,此時(shí)可以認(rèn)為模型已經(jīng)得到充分訓(xùn)練。R_50_C4 的AP 值在0.45 左右;R_50_FPN 的AP 值在.48 左右;R_50_FPN_DCN 的AP 值在0.51 左右。可以看出,R_50_FPN_DCN 的檢測(cè)效果優(yōu)于R_50_FPN,R_50_FPN 優(yōu)于R_50_C4。在圖5 中,APsmall 是針對(duì)小目標(biāo)的評(píng)價(jià)指標(biāo),可見R_50_FPN_DCN 的檢測(cè)效果優(yōu)于R_50_FPN,R_50_FPN 優(yōu)于R_50_C4。三個(gè)模型的最高值對(duì)比如表1 所示,由表1 可知,R_50_FPN_DCN 各方面表現(xiàn)優(yōu)異。
表1 最高值對(duì)比
部署到邊緣處理設(shè)備NVIDIA Jetson Xavier NX之后,解除航速閾值,此時(shí)測(cè)試海面輪船的速度。船舶自動(dòng)識(shí)別系統(tǒng)(Automatic Identification System,AIS)可以顯示每艘輪船2 min 或5 min 之前,甚至30 min以前的信息。船載AIS可能出現(xiàn)損壞或被用戶直接關(guān)掉等情況,有些海域沒有被AIS 基站覆蓋,所以項(xiàng)目并沒有使用AIS。但是,AIS上的一些信息仍可以作為參考,正常行駛的輪船航速一般是13~17海里/時(shí)。文中系統(tǒng)測(cè)得錨泊在岸邊的輪船速度為0.08 m/s,航速基本為0;錨泊在海面上的工程船速度是0.6 m/s,這種超低航速或靜止的輪船都會(huì)嚴(yán)重威脅到海纜的安全;正常行駛輪船的航速是6.1 m/s 或7.9 m/s,與一般輪船的正常航速相符,證明了測(cè)速系統(tǒng)的準(zhǔn)確性。
一般情況下,輪船在有警告標(biāo)志的海纜海域低速航行或停止時(shí),基本上都是在捕魚或錨泊,但是也存在有些輪船出現(xiàn)故障,不得已在相關(guān)海域低速漂泊或停止。針對(duì)此類情況,文中方法會(huì)將它當(dāng)成違規(guī)行為一并處理。在后續(xù)的工作中,將增加3~4 個(gè)相機(jī),對(duì)目前相機(jī)監(jiān)控到的所有輪船進(jìn)行360 度放大監(jiān)控,利用圖像識(shí)別算法識(shí)別輪船的錨和漁網(wǎng)是否存在違規(guī)行為。