任志偉, 陳松貴, 王收軍, 王佳偉,2
(1. 天津理工大學機電工程國家級實驗教學示范中心, 天津 300384; 2. 交通運輸部天津水運工程科學研究院 港口水工建筑技術(shù)國家工程實驗室, 天津 300456)
充分認識和了解波浪要素是人類進行海洋與海岸水動力基礎(chǔ)研究的必要條件,而波高和周期作為重要的波要素,緊密關(guān)聯(lián)著海岸工程的建設(shè),因此其測量方法和測量精度值得研究。傳統(tǒng)的實驗室波高測量方法主要包括兩類:一是利用各類波高傳感器等儀器類裝置與水體直接接觸測量;二是利用圖像處理手段針對視頻間接測量。上述測量方法優(yōu)、缺點:電容式波高傳感器通過電容值測量波高,然而,電荷數(shù)卻容易受電磁場環(huán)境干擾,致使傳感裝置采樣穩(wěn)定性下降[1];基于加速度計和陀螺儀結(jié)合的方法通過采集載體運動信息,利用姿態(tài)矩陣將陀螺儀輸出的姿態(tài)角信息轉(zhuǎn)換到地理坐標系并進行處理,去除原始加速度信號中的毛刺和直流分量后再對加速度信號進行二次積分[2],進而求出波高,但是每次進行積分過程時受儀器溫度變化和工作環(huán)境等因素的影響會產(chǎn)生趨勢項,從而影響測量結(jié)果的精度;超聲波測距儀依據(jù)聲波傳遞速度和發(fā)送與接收聲波的時間差值計算液位高度,但是超聲波在不同密度、壓力、溫度和濃度的傳播介質(zhì)中傳遞速度都不相同[3];基于光學的測量方法實現(xiàn)了非接觸式的測量[4],避免了因電子傳感裝置與水體的直接接觸而導致的測量誤差,但在強烈光照的工況下攝像機對波面的識別會受到影響;針對視頻圖像利用閾值分割的途徑也實現(xiàn)了非接觸式的測量,可通過測出水位值間接計算波高,但其不能分割光照強烈的視頻圖像,因而具有局限性;BP神經(jīng)網(wǎng)絡(luò)算法可用于波高的測量,但在對水位高度的預(yù)測中數(shù)值穩(wěn)定性表現(xiàn)較差[5];基于快速視覺的波高測量方法是用攝像機拍攝波浪運動過程,通過灰度化等圖像處理手段統(tǒng)計白色像素點數(shù)量[6],從而計算波高,但受其測量原理影響需向液體中添加藍色染料來突出水體,限制性很大。圖像處理中傳統(tǒng)的圖像分割方法主要有3種:基于閾值的分割方法、基于區(qū)域的分割方法和基于邊緣檢測的分割方法[7]。上述3種分割方式均存在著自身局限性。如閾值分割不考慮空間特征,因此對噪聲比較敏感,魯棒性不高;區(qū)域分割中的區(qū)域生長法計算緩慢且對噪聲較敏感,分裂合并法可能會破壞區(qū)域邊界;邊緣檢測不能保證邊緣的連續(xù)性和封閉性,對于較高細節(jié)區(qū)域的處理存在不足,容易產(chǎn)生碎邊緣[8-9]。
近年來隨著計算機技術(shù)的快速發(fā)展,基于深度學習的圖像分割成為了圖像處理中更加高效的方法,F(xiàn)CN、Seg-net、PSP-net和U-net等卷積神經(jīng)網(wǎng)絡(luò)通過對已有圖像數(shù)據(jù)的學習,可實現(xiàn)高品質(zhì)的分割,其中U-net因其網(wǎng)絡(luò)結(jié)構(gòu)和編解碼特點相較于其他3種網(wǎng)絡(luò)的表現(xiàn)更加出色,在此背景下,本文利用U-net卷積神經(jīng)網(wǎng)絡(luò)對波浪運動視頻進行圖像分割,進而測量波高和周期。本文主要包括以下幾部分:第一部分介紹了U-net卷積神經(jīng)網(wǎng)絡(luò)的研究方法;第二部分將測量結(jié)果與波高傳感器進行比較分析;第三部分進行了本研究方法的適用性分析;第四部分對研究結(jié)果進行了總結(jié)和展望。
U-net卷積神經(jīng)網(wǎng)絡(luò)是建立在全卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,實質(zhì)上屬于編碼-解碼模型[10-11],網(wǎng)絡(luò)架構(gòu)如圖1所示,整個網(wǎng)絡(luò)結(jié)構(gòu)由收縮路徑(見圖1左側(cè)部分)和擴展路徑(見圖1右側(cè)部分)2部分組成,其中收縮路徑即是編碼過程,也叫下采樣過程,擴展路徑即是解碼過程,也叫上采樣過程。在編碼過程中,每一次下采樣操作都通過2次same卷積進行圖像的特征提取,所用的卷積核尺寸為3×3×3,卷積后通過ReLU激活函數(shù)進行激活,之后接一個2×2的最大池化操作擴大全局感受視野并對特征進行壓縮及下采樣操作,每一步下采樣時特征通道數(shù)量加倍,特征圖尺寸減小到之前的一半,4次下采樣后開始進行編碼階段的上采樣,每次上采樣進行反卷積操作會使特征通道數(shù)量減少到之前的一半,特征圖尺寸為前一次上采樣的2倍,結(jié)構(gòu)中特征圖尺寸如卷積塊體(藍色矩形)左下角數(shù)字所示,特征通道數(shù)量如卷積塊(藍色矩形)上端數(shù)字所示。最后通過1個1×1的卷積核將特征通道的數(shù)量降為所需數(shù)量,并用sigmoid激活函數(shù)進行預(yù)測分類[12]。網(wǎng)絡(luò)的關(guān)鍵在于將編碼與解碼過程之間的跳躍層進行了特征融合,減少了在編碼過程中進行的最大池化操作所導致的底層特征信息的丟失,從而得到高品質(zhì)的分割結(jié)果。
(圖中紅色箭頭是指用3×3×3的same卷積核和Relu激活函數(shù)進行卷積與激活處理,黃色箭頭是下采樣操作中采取的最大池化操作,綠色箭頭為上采樣過程中反卷積處理,紫色箭頭是指通道降維和類別輸出。The red arrow in the figure refers to the convolution and activation processing with the 3×3×3 same convolution kernel and Relu activation function. The yellow arrow is the maximum pooling operation taken in the downsampling operation, and the green arrow is the deconvolution processing in the upsampling process. The purple arrow refers to channel dimensionality reduction and category output.)
數(shù)據(jù)主要來源于大比尺波浪水槽中的模型實驗。實驗布置如圖2所示,大水槽全長450 m、寬5 m、高8~12 m,水槽一端裝設(shè)造波機,最大造波能力下的波高為3.5 m,造波周期為2~10 s,可以模擬真實海洋中的波浪,內(nèi)置4個波高傳感器來測量波高,傳感器量程為5 m,測量精度1%,并在水槽一側(cè)的墻壁頂端每隔7 m裝設(shè)1個高清攝像機,共裝8個,攝像機和波高傳感器采集幀率都為25 幀/s,且二者位置都與攝像機對齊,攝像機鏡頭視角可以完全覆蓋對面波浪的運動,為避免標尺體積對實驗造成影響,所用標尺為水槽墻壁上噴涂的刻度尺,其分辨率為2 cm。本文針對表1所示的9種工況進行實驗并將錄制的視頻存儲到計算機,按幀制作成時間連續(xù)的2 048×1 536的高清照片并用張氏標定法[13]進行畸變矯正處理。
表1 實驗工況參數(shù)表
(1.刻度尺Scale; 2.水位線Water level line; 3.波高傳感器Wave height sensor; 4.攝像機Camera; 5.計算機處理系統(tǒng)Computer processing system; 6.造波機Wave maker; 7.消波材料Wave-absorbing material.)
通過python中的labelme工具對獲取的波面圖像進行標簽集制作,制作標簽如圖3(b)所示,其中黑色代表原圖中墻壁,白色代表水體區(qū)域。
深度學習中的數(shù)據(jù)集數(shù)量對神經(jīng)網(wǎng)絡(luò)模型優(yōu)良程度有著很大的影響,過少的數(shù)據(jù)集訓練易產(chǎn)生過擬合現(xiàn)象[14],現(xiàn)有數(shù)據(jù)集可通過旋轉(zhuǎn)、平移、鏡像等數(shù)據(jù)增強方式進行擴充[15],本文采用圖像鏡像的方式對數(shù)據(jù)樣本進行數(shù)據(jù)擴增,結(jié)果如圖3所示,得到波面原圖和標簽集的鏡像圖片。
圖3 數(shù)據(jù)增廣結(jié)果
在大比尺波浪水槽實驗中采集了1 200張波面圖像,經(jīng)對原始波面圖像進行數(shù)據(jù)增廣后,數(shù)據(jù)集增加為原來的2倍,隨機選擇其中80%的數(shù)據(jù)當作訓練集,另外20%作為驗證集,訓練次數(shù)(Epoch)50次,模型訓練1次迭代所使用的樣本量(Batch size)設(shè)置為2。訓練U-net神經(jīng)網(wǎng)絡(luò)模型的條件如表2所示。
表2 模型訓練條件
由于本實驗實質(zhì)上進行的是水體和背景的二分類問題,在二分類的情況下,模型最后需要預(yù)測的結(jié)果只有2種情況,對于每個類別本研究預(yù)測得到的概率為p和1-p,因此本文所用模型的損失函數(shù)選取為交叉熵損失函數(shù):
(1)
式中:N表示樣本總數(shù);yi表示樣本i的標簽,正類為1,負類為0;pi表示樣本i預(yù)測為正的概率。訓練時的損失值曲線變化如圖4所示,驗證集數(shù)據(jù)的損失值最終降為0.01以下。
(圖中黑線為訓練過程中數(shù)據(jù),紅線為驗證過程中數(shù)據(jù)。The black line in the figure is the data during the training process, and the red line is the data during the verification process.)
本文所用U-net卷積神經(jīng)網(wǎng)絡(luò)模型的評價指標為交并比(Intersection over Union,IoU)和正確率(Accuracy)。IoU是一個專用于評估分割性能的指標,計算公式如:
(2)
式中:A為真實標簽;B為實際分割結(jié)果。
正確率(Accuracy)是評價分割結(jié)果正確性的評價指標,正確率越高,分類器越好。
(3)
式中:TP為神經(jīng)網(wǎng)絡(luò)正確劃分正例的個數(shù);TN為神經(jīng)網(wǎng)絡(luò)正確劃分負例的個數(shù);P為正例總數(shù);N為負例總數(shù)[16]。由表3可知,數(shù)據(jù)增廣方式進一步提升了模型的分割精度。
表3 數(shù)據(jù)增廣前后模型指標
本文用訓練好的U-net卷積神經(jīng)網(wǎng)絡(luò)對表1所示的9種工況波面圖進行圖像分割,得到圖5(a)所示的分割結(jié)果及水位線數(shù)據(jù)信息,其中,水位線的數(shù)據(jù)信息是對每張圖像分割結(jié)果以列為單位,自上而下遍布所有像素點,當掃描到白色像素點時記錄其高度位置信息,從而得到每張圖像的水位信息,將分割結(jié)果的水位線數(shù)據(jù)映射到原圖中檢測分割結(jié)果的精度,可見分割結(jié)果的水位能夠與原圖水位重合,如圖5(b)所示。
圖5 分割結(jié)果
實驗對波高和周期要素的測量關(guān)鍵在于對波面圖像的分割,本文所利用的U-net卷積神經(jīng)網(wǎng)絡(luò)克服了光照波面對閾值分割測量法的影響,不會受到光照工況下的限制,相對具有更廣泛的使用空間,二者對光照波面的分割如圖6所示,其中閾值分割結(jié)果并不理想,這主要是因為當波面受到不均勻的光照影響時,水體局部區(qū)域的顏色與墻壁相近(見圖6(a)),閾值分割結(jié)果如圖6(c)所示,黑色表水體,白色代表墻體,因為閾值法無法準確的判斷其前景和背景,易將強光照射部分的水體錯誤識別成墻體,所以部分光照區(qū)域的水體被分割成白色,此現(xiàn)象在光照強烈區(qū)域表現(xiàn)尤為明顯,而U-net卷積神經(jīng)網(wǎng)絡(luò)在訓練的過程中可以對圖像的顏色、亮度等元素進行學習,從而可準確的實現(xiàn)對光照波面的圖像分割,分割效果如圖6(b)所示,其中,黑色代表墻體,白色代表水體。
圖6 兩種圖像分割法對光照波面的分割結(jié)果
對原波面圖像上的標尺每10 cm拾取一個像素點記錄高度信息,并將像素點高度與標尺上的實際刻度相對應(yīng),擬合像素高度和標尺實際高度的轉(zhuǎn)換關(guān)系。利用該轉(zhuǎn)換關(guān)系即可完成水位線數(shù)據(jù)從像素高度到實際高度的轉(zhuǎn)換。提取每張圖像標尺處的水位值,即可觀測水位的變化過程,繼而通過上跨零點法計算波高。
實驗針對表1所示的9種工況,用U-net卷積神經(jīng)網(wǎng)絡(luò)、波高傳感器及像素識別3種方式進行波形比較,其中,像素識別是通過手動對每一幀波面圖片識別水位高度,識別分辨率計算方法為
(4)
式中:Cy表示每個像素點代表的實際距離;Ymax表示垂直方向像素坐標最大值表示的實際高度;Ymin表示垂直方向像素坐標最小值表示的實際距離;Ny表示垂直方向像素點數(shù)量。計算表明像素識別分辨率可達2 mm/pixel,相較于傳感器的厘米級測量精度更精確,依靠人力手動識別每張波面圖像水位過程繁瑣耗時,不具實際應(yīng)用性,但測量結(jié)果可靠,因此可作為測量結(jié)果的基準值來比較U-net卷積神經(jīng)網(wǎng)絡(luò)的波浪測量方法的精度和波高傳感器的精度。觀察圖7可發(fā)現(xiàn)3種測量方法測得規(guī)則波和不規(guī)則波的波形曲線吻合度都較為一致,但在波峰處可發(fā)現(xiàn)U-net卷積神經(jīng)網(wǎng)絡(luò)測得的波高值和像素識別測量的更為接近,而傳感器測量的值相對偏大,這主要是由于波浪回落過程中形成的“掛水”現(xiàn)象導致的。
(圖中黑線為神經(jīng)網(wǎng)絡(luò)所測波高,紅線為波高傳感器所測波高,藍線為像素識別的波高。In the figure, the black line is the wave height measured by the neural network, the red line is the wave height measured by the wave height sensor, and the blue line is the wave height identified by the pixel.)
本文以像素識別結(jié)果為基準,針對規(guī)則波和JONSWAP譜不規(guī)則波各120個波高分別計算U-net卷積神經(jīng)網(wǎng)絡(luò)和傳感器測量的波高與周期的相對誤差,計算公式為:
(5)
式中:X指U-net卷積神經(jīng)網(wǎng)絡(luò)或傳感器的測定值;T指以像素識別為基準的真實值。計算結(jié)果如圖8(a)所示,U-net卷積神經(jīng)網(wǎng)絡(luò)測量結(jié)果的誤差均小于傳感器,其中1~6組為規(guī)則波測量結(jié)果,U-net卷積神經(jīng)網(wǎng)絡(luò)計算的誤差最大為2.25%、最小為1.72%,傳感器的誤差最大為4.15%、最小為2.06%,7~9組不規(guī)則波中U-net卷積神經(jīng)網(wǎng)絡(luò)計算的誤差最大為2.3%、最小為1.45%,而傳感器最大誤差為4.1%、最小為1.8%,可見,基于U-net卷積神經(jīng)網(wǎng)絡(luò)的波浪測量方法的測量精度比波高傳感器的測量精度更高。
(圖中白色矩形為波高傳感器的測量誤差,陰影矩形為U-net的測量誤差。The white rectangle in the figure is the measurement error of the wave height sensor, and the shaded rectangle is the measurement error of the U-net.)
U-net卷積神經(jīng)網(wǎng)絡(luò)對不同組次的測量誤差變化如圖9所示。在周期相同、波高不同的工況下,規(guī)則波的測量誤差都隨著波高的增大而增大,且波高越大,測量誤差越大。不規(guī)則波的測量誤差也隨波高增加而增加,且增加幅度更大,但都低于2.5%。此外,如圖8(b)所示,U-net卷積神經(jīng)網(wǎng)絡(luò)測得的平均周期相對誤差都在1%以內(nèi)。上述結(jié)果說明了U-net卷積神經(jīng)網(wǎng)絡(luò)測量方法的準確性良好。
(紅線是周期為6 s時的規(guī)則波,黑線是周期為3 s時的規(guī)則波,藍線是周期為3.4 s時的不規(guī)則波。The red line is a regular wave with a period of 6 s, the black line is a regular wave with a period of 3 s, and the blue line is an irregular wave with a period of 3.4 s.)
(1)卷積神經(jīng)網(wǎng)絡(luò)需要學習大量數(shù)據(jù)才能實現(xiàn)良好的圖像分割效果,網(wǎng)絡(luò)模型的高泛化能力離不開種類繁多,數(shù)量豐富的數(shù)據(jù)集,前期數(shù)據(jù)集的搜集和模型的訓練對本研究方法提出了一定的挑戰(zhàn)。
(2)本文提出的U-net卷積神經(jīng)網(wǎng)絡(luò)波浪測量方法建立在視頻圖像的基礎(chǔ)上,需要依靠波面圖像中的標尺計算水位實際高度,因此,使用范圍局限于能夠完成圖像坐標轉(zhuǎn)換的場景中。
(3)基于U-net卷積神經(jīng)網(wǎng)絡(luò)的圖像分割實質(zhì)為端至端的像素級預(yù)測分割,需對每個像素點都進行類別判定輸出,因此計算量較大,目前速度上還未實現(xiàn)實時測量,未來可進一步探索現(xiàn)場實時測量。
本文提出了一種基于U-net卷積神經(jīng)網(wǎng)絡(luò)的波浪測量方法,在保持非接觸式測量優(yōu)點的基礎(chǔ)上克服了光照波面對閾值圖像分割測量影響較大的不足。實驗結(jié)果表明,U-net卷積神經(jīng)網(wǎng)絡(luò)測量的相對誤差最大為2.25%,而傳感器誤差最大為4.15%,因此,U-net卷積神經(jīng)網(wǎng)絡(luò)的波浪測量方法比波高傳感器具有更高的波高測量精度,測量誤差隨波高的增大而增大,但平均波高相對誤差均在2.5%以內(nèi),測得的平均周期誤差都低于1%。上述結(jié)果證明了本研究方法的測量精度良好,為實驗室的波浪測量提供了一種新的方法。