何盛琪,李其超,宋 巍*,王文娟,高 松,畢 凡
(1.上海海洋大學 信息學院,上海 201306; 2.國家海洋局北海預報中心,山東 青島 266061)
中國是擁有1.8萬公里海岸線的海洋大國,沿海地區一直深受海洋災害問題的困擾。2019年的《中國海洋災害公報》指出:海浪災害造成的直接經濟損失達到0.34億元,造成死亡22人。可見,海浪災害已成為威脅中國近海民眾生命財產安全突出的海洋災害。因此,近岸海浪的檢測對近岸工程設計、淺海生產作業以及保障中國沿海人民生命財產安全等方面具有十分重要的意義。
目前,中國近海海浪觀測采用波浪浮標與人工觀測相結合的方式,浮標是對“點”觀測,對于港灣復雜地形的準確海浪測量需要高密度部署,運行和維護成本高;人工觀測是有一定經驗的預報員通過目測的方式估計海浪高度,觀測頻率和精度難以保障[1-2]。近年來,國內外學者提出了一些對海浪要素進行檢測的新方案,文獻[3]使用基于視覺的波傳感方法檢測水波的斜率、高度和頻率等相關特性,且在戴維森實驗室測試了水波相關特性,所得浪高數據與測波計基本相同,但是該方法不適用于存在較大噪點的視頻圖像。文獻[4]提出視差法和高程法,用于評估10米到100米較大空間尺度上的海洋表面位移,這兩種方法都已經在來自海上平臺的真實視頻數據上進行了測試,結果表明,兩種方法都提供了相似的測量結果,但是高程法的結果與理論模型沒有良好的一致性。文獻[5]提出了一種基于雙目立體視覺估計波浪高度和周期的方法,使用雙目視覺在海浪高度上測量近岸水域的海浪變換,從基準中提取波浪的垂直高度,并據此估計波高和波周期。基于攝影測量的方法計算復雜度較高、成本高。文獻[6]提出了適用于海洋領域海浪等級深度學習模型架構(Wave-CNNs),將海浪高度分為三個等級,但其識別精度僅為66.6%,無法滿足海浪預報對浪高檢測精度的要求。文獻[7]設計使用多層局部感知卷積神經網絡(network in network,NIN)[8]和支持向量回歸模型(support vector regression,SVR)[9]對海浪視頻進行浪高檢測,該方法彌補了人工設計特征的不完備性,浪高檢測平均相對誤差≤20%,有著較好的實用性。現有研究在海浪要素檢測算法上取得了一定的成果,但鮮見將研究成果應用于浪高預警預報實際業務中。
在海洋監測或預警系統方面,已有大量工作可以借鑒。文獻[10]結合政府部門、科研人員和用海企業等各方用戶的需求,構建了集冰情數據查詢、事故應急響應和海冰災害風險分析等主要功能于一體的海冰預警監測綜合信息服務平臺。文獻[11]針對海洋管理部門監測預警的需求,研發了海洋放射性環境監測預警信息系統,實現了放射性監測數據的管理、核事故的預警和應急響應模擬等。事實上,基于視頻的智能檢測系統已經廣泛應用于安防、交通等領域。文獻[12]采用螺旋視頻摘要及其相應交互技術,研發了面向監控視頻內容的可視分析系統,該系統結合運動目標檢測結果與螺旋摘要的展示優勢,從多角度對視頻目標統計信息進行可視化,輔以導航定位及草圖交互等方式,從而快速有效獲取監控視頻內容。文獻[13]利用分布式系統架構Hadoop、分布式實時計算框架Spark Streaming以及視頻關鍵幀提取,設計實現了基于Hadoop的客車超載監測系統,對平臺中所有運行客車的海量視頻進行實時檢測和預警超載。
該文依托國家海洋局黃海區域海洋環境監測站的實際數據,設計并實現了一個近岸海面視頻監控下的浪高實時檢測預測系統。與中國目前浪高檢測手段相比,該系統具有部署簡單、易擴展、實時檢測、準確率高以及經濟實用的優點,對豐富近海浪高檢測手段以及保障沿海地區人民生命財產安全具有重要意義。
系統總體框架如圖1所示。

圖1 系統總體框架
近岸海面監控視頻通過視頻采集卡接入系統,系統對接入的視頻進行實時計算,根據業務需求輸出結果。該系統采用三層架構設計模式,從下至上依次為數據資源層、業務邏輯層和視圖層。
(1)數據資源層。
數據資源層是系統的重要組成部分,基于視頻的近岸浪高實時檢測系統有實時浪高檢測、歷史視頻管理和用戶管理三類需求,針對這三類需求設計了歷史浪高數據表、海浪視頻數據表和用戶信息表,并將其存儲在MySQL數據庫中。
(2)業務邏輯層。
業務邏輯層是系統的關鍵層,其主要工作是從數據資源層獲取數據進行處理,將結果返回給視圖層或保存至數據資源層,本系統的業務邏輯主要包括視頻預處理、浪高檢測、浪高預測、檢測站點切換和視頻流推送等。
(3)視圖層。
視圖層的主要功能是顯示數據和接受傳輸用戶的數據,為系統運行提供交互式操作界面,結合用戶需求,系統對實時海浪畫面、預測浪高畫面、歷史浪高數據和用戶信息管理進行了可視化。
在實際業務中,近岸浪高檢測主要是以浮標觀測為主,人工觀測為輔。波浪浮標運行和維護成本高,人工觀測頻率和精度難以保障[14-15],迫切需要一種更加經濟實用且可靠的觀測手段。為此,針對實際業務需求,該文設計并研發了本系統,其主要功能模塊包括視頻傳輸模塊、視頻預處理模塊、浪高檢測模塊、浪高預測模塊和浪高可視化模塊。
(1)視頻傳輸模塊。
從自動截斷保存到海浪畫面實時播放,再到浪高檢測結果展示,視頻傳輸貫穿整個系統,視頻傳輸模塊是保證系統正常運作的重要基礎,主要包含三個功能:①將各監控站點監控信號接入系統并自動截斷保存監控視頻;②將各監控站點的實時監控畫面推送到前端,供用戶觀看;③為多站點實時切換提供解決方案。
(2)視頻預處理模塊。
由于圖像編碼問題和監控視頻中遮擋物或礁石會對檢測精度產生影響,因此來自近海岸監控站點的監控視頻需要經一系列預處理后才可用于浪高檢測。為保證浪高的檢測精度,設計了視頻預處理模塊,主要包括抽取關鍵幀、關鍵幀裁剪縮放和歸一化等[16]。
(3)浪高檢測模塊。
近岸海浪浪高變化預測的基礎是準確的實時浪高檢測。浪高檢測模塊的主要作用是建立視頻中連續變化的圖像幀與當前浪高值之間的映射。為此,建立浪高檢測模型,使用NIN網絡提取視頻中的時間特征和空間特征,兩類高層特征融合后使用SVR模型進行回歸預測浪高值。訓練后的模型可以實現實時(30次/s)的自動檢測。
(4)浪高預測模塊。
基于WAVEWATCH Ⅲ第三代海浪數值模式[17],自然資源部北海局建立了業務化海浪預報模式,用于日常的預報業務。為豐富海浪預報手段,協助預報員進行浪高預報,該文設計了浪高預測模塊,使用長短期記憶網絡(long short term memory,LSTM)[18]根據最近36個小時的浪高信息預測未來12個小時或24個小時的浪高,為浪高預報業務提供參考。
(5)浪高可視化模塊。
近海與遠海區域浪高值一般不盡相同,應采用一種直觀的方式展示海浪面不同區域的浪高情況。因此,該文設計將浪高值映射為偽彩色,并以一定透明度疊加在原視頻幀上,使海浪面不同區域的浪高情況一目了然。
系統的關鍵技術包括視頻流接入、視頻預處理、浪高檢測、浪高可視化和浪高預測,其中視頻預處理、浪高檢測與浪高預測三個模塊是核心模塊。海浪監控視頻接入系統后,經關鍵幀提取、光照去除和歸一化等預處理后,進入浪高檢測模塊,檢測所得浪高數據輸入浪高預測模塊用于預測任務,其協作處理過程如圖2所示。

圖2 視頻預處理、浪高檢測與浪高預測協作過程
海浪監控視頻從接入系統到前端播放需要經過一系列的處理,視頻流接入在系統中扮演著重要角色。考慮到需要同時接入來自海岸多個監控站點的持續視頻流信號并進行實時處理,首先,基于多線程為每一個接入系統的監控站點創建獨立的線程,每個線程將海浪視頻拆分為連續的圖像幀,在進行浪高檢測前,將每一幀圖像封裝為flv格式的視頻流;其次,采用穩定、低延時的實時消息傳輸協議(real time messaging protocol,RTMP)[19]將視頻流推送至Nginx[20]服務器的不同地址,切換觀測站點時,Web前端根據所要切換的站點名稱從Nginx服務器獲取直播視頻流并播放;最后,為方便后續研究,系統對近海岸監控視頻進行自動截斷保存,接入與保存視頻方法如下:
(1)接入視頻:來自海岸各監控站點的視頻信號經高清晰多媒體接口(high definition multimedia interface,HDMI)輸出,通過視頻采集卡將視頻接入電腦,讀取電腦的攝像頭設備即可獲取監控站點的視頻信號。
(2)保存視頻:通過對圖像幀的計數,結合攝像頭的幀率,可以控制每個視頻文件的時長,從而實現對監控視頻的自動截斷保存。比如攝像頭的幀率為30幀每秒,若要對監控視頻每隔1個小時截斷保存,那么當圖像幀的計數達到108 000的整數倍時,對視頻進行截斷保存。
將來自近海岸監控攝像頭的視頻拆分為圖像幀,每隔n個幀抽取一個幀作為關鍵幀。在進行單點浪高檢測時,要從近海岸無礁石、遮擋物的視頻區域中選取一塊圖像做進一步處理,考慮到距離攝像頭較遠的地方會有一定的視覺信息丟失,靠近礁石會有白浪,因此在選取視頻區域時選擇圖像中部位置,然后根據模型輸入的要求進行裁剪縮放并歸一化[7]。在進行海浪“面”檢測時,設計使用累加幀差并結合形態學操作的方法來去除干擾物,具體方案流程如圖3所示。

圖3 干擾物去除流程
設視頻序列的連續兩幀源圖像分別為f(k)(x,y)和f(k+1)(x,y),其差分圖像D(k,k+1)可表示為:
D(k,k+1)=|f(k+1)(x,y)-f(k)(x,y)|
(1)
對連續n幀圖像幀差累加結果為:

(2)
為了除去由源圖像內在噪聲產生的幀差圖像的非零差值,需要選取閾值T對累積差分圖D進行二值化處理得到圖像D'。此時圖像D'中依然包含很多噪聲,需要對其進行去噪處理。閉運算是對圖像進行膨脹操作后再進行腐蝕操作,圖像膨脹公式如下:
A⊕B={x|(B)x∩A≠Θ}
(3)
圖像腐蝕公式如下:
A-B={x|Bx?A}
(4)
閉運算常用于填充前景中的空洞,因此對圖像D'進行閉運算以去除前景中的噪聲,從而生成掩碼圖,在浪高檢測前用于屏蔽含有干擾物的區域。
考慮到海浪視頻中蘊含豐富的時域信息和空域信息,為此使用差分幀和預處理后的視頻幀作為數據集,分別訓練了用于提取時域特征的NIN網絡和提取空域特征的NIN網絡,這兩個NIN網絡分別從時域和空域各提取20個高層特征,兩類高層特征融合后使用SVR模型回歸預測浪高值。
NIN網絡由多個多層感知卷積層(multilayer perceptron convolution layer,Mlpconv)和全局平均池化層組成,傳統的卷積層中對局部感受野的運算是一個簡單的卷積操作,卷積層通過線性卷積濾波器生成特征圖,隨后是非線性激活函數,以Relu激活函數為例,特征圖的計算公式如下所示:
(5)
式中,(i,j)是特征圖中像素的索引,xi,j是位置為(i,j)處的輸入,k是特征圖通道的索引。Mlpconv實際上是在卷積層后添加了兩層感知層,對每個局部感受野進行更加復雜的運算,因此Mlpconv具有更強的抽象能力,Mlpconv特征圖的計算公式如下所示:
(6)
(7)
式中,n是多層感知器的層數。與傳統的卷積神經網絡相比,NIN網絡能更充分地從每個局部感受野提取特征,因此更適用于從對比度低、細節豐富的海浪視頻提取特征。在本系統中,搭建并訓練了兩個NIN網絡模型,分別用于提取時域特征和空域特征,最后將兩類特征進行串行融合,得到融合后的特征F。
經NIN網絡提取海浪視頻中的時空特征后,使用回歸模型對浪高值進行回歸預測。普通的線性回歸模型計算速度快,但對于異常值敏感,而多項式回歸模型需要手動設置多項式次數,因此該文使用SVR模型進行浪高檢測。

(8)

(9)
式中,K(Fi,Fj)為核函數,鑒于NIN網絡提取的高層特征與浪高值呈高度非線性,因此使用具有強大非線性映射能力的高斯核函數。
浪高可視化的具體流程為:首先使用前文所述干擾物去除方法生成掩碼圖,然后將原視頻幀分割為若干個尺寸相同的區域。根據掩碼圖排除含有干擾物的區域,得到若干待檢測海浪圖片,對其預處理后輸入模型進行浪高檢測,并將所得浪高值存儲在與原視頻幀同樣大小的二維矩陣的對應位置,據此二維矩陣創建偽彩色圖層,最后將偽彩色圖層以一定透明度覆蓋在原圖像上。
LSTM網絡是循環神經網絡(recurrent neural network,RNN)的一種改進模型,每一個LSTM單元擁有一個記憶單元(cell),在t時刻的狀態記為ct,其值通過輸入門(input gate)、遺忘門(forget gate)和輸出門(output gate)更新,它們一般使用sigmoid或tanh函數進行激活。記憶單元的工作流程如下:在時刻t,記憶單元通過3個門接收當前狀態xt與上一時刻記憶單元的隱藏狀態ht-1,此外,每一個門還接收記憶單元的狀態ct-1。接收到輸入信息后,每一個門對不同來源的輸入進行計算,并且由其激活函數決定其是否激活。輸入門的輸入經非線性變換后,與經過遺忘門處理過的記憶單元狀態進行組合,產生新的記憶單元狀態ct。最后,記憶單元狀態ct通過非線性運算和輸出門的控制產生記憶單元的輸出ht。
對于不同的任務,LSTM具有不同的結構,在浪高預測任務中,使用多對多的LSTM結構,如圖4所示,LSTM框架設置為5個LSTM層和1個全連接層。使用各監控站點真實歷史浪高作為數據集,訓練了一個適用于多個監控站點的浪高預測模型,其輸入為過去36個浪高值,即過去36個小時的浪高值,輸出為24個浪高值,即未來24個小時的浪高預測值。

圖4 LSTM框架
根據《海洋預報和警報發布 第2部分:海浪預報和警報發布》將浪高分為10個浪高等級,并根據浪高發出警報[21],警報等級如表1所示。浪高值檢測頻率最高可達2次/秒,這里設置為每分鐘的平均浪高(一般傳統浮標每10分鐘向接收站發送一次數據[22])。

表1 海浪警報等級
根據前文介紹的浪高可視化方案,系統對監控視頻的每一幀添加偽彩色圖層,由于對整個海浪“面”檢測需要進行大量計算,耗時較高,因此,系統降低檢測頻率以保證直播視頻的流暢性。
根據用戶選擇的站點,系統自動調用訓練好的浪高預測模型,進行未來12個小時和24個小時的浪高預測,并根據預測浪高值發出預警。
歷史浪高頁面的窗口左側播放歷史監控視頻,右側是當前視頻的浪高數據,包括最大浪高、最小浪高和平均浪高,使用曲線圖展示每個時刻對應的浪高。
根據對多路攝像頭視頻進行實時檢測與預測浪高的需求,設計并實現了近岸海面視頻監控下的浪高實時檢測預測系統。在系統的設計實現過程中,主要解決了三個問題:(1)如何從近海岸監控視頻中提取實時浪高信息;(2)如何根據已有的浪高信息對未來一段時間的浪高進行預測;(3)對多個觀測站點并行檢測浪高的同時,如何實現站點實時切換。對于問題(1),設計使用卷積神經網絡從海浪視頻中提取海浪的高層特征,然后使用SVR模型對提取的高層特征進行回歸預測浪高值。對于問題(2),設計了基于LSTM的浪高預測方法,根據過去36個小時的浪高信息預測未來12個小時的浪高信息。對于問題(3),設計了多線程調度策略和觀測站點切換方案。最終,實現了一個穩定高效的近岸浪高實時檢測預測系統,該系統具有多觀測站點并行檢測、站點切換、自動截斷保存監控視頻和存儲浪高數據等功能,在滿足業務化檢測需求的基礎上,具有檢測頻率高、經濟實用等優點,能夠較好地協助浪高預報人員的工作,對節約浪高檢測成本以及豐富海浪觀測手段具有重要意義。