











摘要:高水頭船閘在泄水過程中,若船舶位置越過閘室警戒線,則可能會導致泄水時船舶碰撞到閘室門檻,造成不安全事件。文章應用卷積神經網絡進行深度學習的方法,通過建立實際訓練網絡、收集現場數據進行驗證,研討一種船舶越線的識別方式,對船舶是否越線進行檢測。實驗結果表明,該方式能有效克服水位的影響,具有較高的識別正確率,證明基于卷積神經網絡的識別技術對比傳統特征提取識別技術具備一定的先進性。
關鍵詞:卷積神經網絡;船舶越限;識別
U641.7+8A581864
0 引言
高水頭船閘在船閘閘室充水完成后,閘首門檻被閘室內上升的水位淹沒,進閘船舶無法通過目視確定閘首門檻具體位置,只能通過警戒線來判斷閘首門檻大概位置。在船閘泄水時,若船舶尾部位置越過閘室警戒線,則在閘首門檻露出水面時,船舶尾部會碰撞閘室門檻,造成船舶損壞、影響船閘通航能力等不安全事件發生。船舶位置是否越過閘室警戒線目前多數靠船閘值班調度員通過攝像頭觀察確定,隨著船閘控制系統的集約化發展,船閘值班調度員監控的船閘數量不斷增加,一般情況下船閘值班調度員會在船閘人字門關門時通過攝像頭觀察閘室船舶是否越過警戒線,在泄水過程中不會對船舶是否越過警戒線進行持續性觀察,存在一定的安全隱患。
由于人員精力有限,依靠人工監控船舶是否越過警戒線存在一定的不足,對于提高整個船閘的安全性與過閘效率有著一定的制約。船閘常用船舶越限檢測技術手段一般通過激光器進行檢測,但在高水頭船閘中,水質比較渾濁、水面有雜物等因素,將極大干擾激光的測量數據,導致檢測結果不準確。隨著圖像算法技術的不斷發展,使用攝像頭圖像檢測船舶越線亦開始應用于現場。圖像識別常用的技術手段為特征提取識別和神經網絡識別。本文通過建立實際訓練網絡、收集現場數據進行驗證,對比傳統特征提取識別技術和神經網絡識別技術的識別效果,證明基于卷積神經網絡的識別技術對比傳統特征提取識別技術具備一定的先進性。
1 傳統特征提取識別技術介紹
統計學習方法在20世紀90年代大放異彩,1995年統計學家Vapnik提出了SVM算法,其具備完備的理論基礎(凸優化和統計學),并且在分類任務領域取得了卓越的成就[1]。SVM支持向量機(support vector machines,SVM)是一種二分類模型,而船舶越限行為本質上也是一個二分類問題:警戒線附件有沒有船,所以SVM算法在船舶越限識別中具有良好的適應性。但實際船閘運行情況復雜多變,SVM算法適用于中小型數據樣本、非線性、高維的分類問題,通過OpenCV建立的SVM算法在面對上萬張船舶越限樣本的識別率并不高,需要不斷增大訓練模型。SVM算法是人工監督學習,增大訓練模型需要人工不斷提取特征進行修正,工作量巨大,所以SVM算法在大型數據樣本的分類問題上存在一定程度的缺陷。
2 神經網絡識別技術介紹
基于人工神經網絡的目標識別算法是基于生物神經元連接,模擬人腦信息機制抽象出一種非語言非邏輯的人工智能算法。2013年基于候選區域的卷積神經網絡目標檢測模型被Girshick等提出,使用神經網絡完成自動抽取特征,解決了需要人工對特征進行構造的問題[2]。由此,神經網絡識別技術進入快速發展時代。卷積神經網絡(Convolutional Neural Network,CNN)是處理網格結構的一種專用網絡,多用于圖像處理。卷積網絡的特別之處在于神經網絡結構中至少有一層網絡運算為卷積操作[3]。卷積結構可以減少深層網絡占用的內存量,其有三個關鍵的操作,其一是局部感受視野,其二是權值共享,其三是pooling層,有效地減少了網絡的參數個數,緩解了模型的過擬合問題。
由于船閘現場對比公路汽車識別問題屬于處理數據量相對較輕的,故使用輕量級網絡進行訓練能節約訓練時間及識別時間。CNN網絡常用的輕量級網絡模型有:VGG16、GoodLetNet、ResNet。考慮船閘現場場景的相對簡化,并且是二分類問題,故本文使用GoodLetNet作為主要訓練網絡。
3 GoodLetNet網絡介紹
GoodLetNet網絡參數為500萬個,AlexNet網絡參數個數是GoodLetNet的12倍,VGG16參網絡數又是AlexNet的3倍,因此在有限算力資源下,GoodLetNet的性能也更加優越,識別速度更快,可以滿足實際應用需要。
3.1 損失函數
每一個樣本經過模型后會得到一個預測值,然后得到的預測值和真實值的差值就成為損失(損失值越小證明模型越是成功)。損失函數的使用主要是在模型的訓練階段,每個批次的訓練數據送入模型后,通過前向傳播輸出預測值,然后損失函數會計算出預測值和真實值之間的差異值,也就是損失值。得到損失值之后,模型通過反向傳播去更新各個參數,來降低真實值與預測值之間的損失,使得模型生成的預測值往真實值方向靠攏,從而達到學習的目的。GoodLetNet為了防止梯度消失,在層內增加了兩個損失函數:softmax0和softmax1,正是這兩個損失函數導致了GoodLetNet雖然擴展性差,但在分類領域還是具有非常高的識別率,這也是本文選擇GoodLetNet作為訓練網絡的原因。
3.2 Softmax損失函數
Softmax的表達式為:
Softmax(s)=esk∑jejk(1)
式中,sk表示的是輸入到Softmax函數的數據。 Softmax函數能將輸入到它的數據轉換為介于0和1的數值,因此通過Softmax函數可以將輸入的數據解析成為概率。
3.3 交叉熵損失函數
經過Softmax函數之后的是概率,那么最根本的想法是使正確類別的概率最大。交叉熵損失函數出現的目的就是使正確類別概率最大。
交叉熵是用來衡量兩個概率之間的差別。深度學習中使用Softmax輸出的概率擬合真實概率,并使得這兩個概率之間的交叉熵最小。
假設交叉熵損失函數為L,那么單個樣本的損失定義為:
Li=-YilogPi(2)
該式表示樣本是Xi的情況下,使用概率分布Pi擬合真實概率分布Yi的誤差。將(1)式代入(2)式得:
Li=-YilogeXi∑jeXj(3)
多個樣本時,損失函數表達為:
L=1N∑Li(4)
式中,Y=(y1,…,yi)是真實概率,在二分類問題上yi要么為0要么為1;X=(x1,…,xi)是神經網絡輸出的概率。
3.4 GoodLetNet網絡模型
GoodLetNet網絡模型的特點是引入了Inception結構(見圖1),并且使用1×1的卷積核進行降維以及映射處理。
GoodLetNet使用的降維Inception結構見圖2。
圖1是Inception初始版本。從圖1可以看出,卷積層之間、卷積層和池化層之間是串聯結構。而圖2增減了三個1×1的卷積核,使得特征矩陣的深度降低,極大地減少了參數,進而減少了計算量。
GoodLetNet整體計算過程如圖3所示。
由圖3可知,原始圖片為224×224×3,最后輸出1 000數據特征,將三維數據(224×224×3)降維到一維數據(1 000個數據特征)。
4 基于卷積神經網絡的船舶越限識別網絡訓練
實驗平臺是裝有英特爾i7-13700KF 3.4 GHz,顯卡為RTX3060,內存為32 GB,操作系統為Windows 11。利用tensorflow2.0和python 3.9搭建卷積神經網絡,將前預處理的圖片送進網絡進行訓練,最后進行優化和驗證。總體流程如圖4所示。
4.1 獲取數據
數據獲取來自長洲四線船閘固定攝像頭。數據獲取從4月開始一直到8月結束,涵蓋洪水期、雷雨天氣、陰雨天氣、晴朗天氣、高水位、低水位等多個工況,總圖片數約為1萬張(見圖5)。
4.2 數據預處理
在1萬張圖片中,提取感興趣區域(警戒線附近),進行人工進行圖片分類(有船或沒有船兩類),然后在所有圖片中隨機生產訓練集和測試集(見圖6)。
4.3 網絡模型搭建
使用tensorflow2.0和python 3.9搭建GoodLetNet網絡模型。為了以減少通道數,減少模型訓練參數,從而降低模型的復雜性,第四條路徑使用3×3最大匯聚層,然后使用1×1卷積層來改變通道數。這四條路徑都使用合適的填充來使輸入與輸出的高和寬一致,以保證輸出特征能在通道維度上進行拼接。最后將每條線路的輸出在通道維度上連結,并構成Inception塊的輸出(見圖7)。
第一條路徑:1×1卷積層提取信息。
第二條路徑:1×1卷積層減少通道數,3×3卷積層提取信息。
第三條路徑:1×1卷積層減少通道數,5×5卷積層提取信息。
第四條路徑:3×3最大匯聚層提取信息,1×1卷積層改變通道數。
4.4 訓練網絡
訓練集圖片統一轉換為224×224大小,并歸一化處理,進行分類標簽設置,通過數據增強(圖片旋轉、圖片裁剪等)增強數據的多樣性,選取50%樣本作為訓練集,另外的50%樣本作為測試集,最后輸入網絡。網絡進行自適應訓練,由模型自動調整參數,訓練周期為20個訓練周期。
4.5 測試網絡
對訓練好的模型進行測試,聯合測試后,出現過擬合情況,測試次數增加,識別率不提高。
4.6 修正網絡
根據網絡測試的結果,修正學習率,學習次數。
4.7 重新訓練
根據新的參數,再次訓練網絡。
4.8 最優輸出
經過重新訓練,最終在測試網絡時,達到最優輸出。
5 識別效果討論
5.1 神經網絡訓練識別效果
按照上述流程對數據進行預處理、訓練網絡、測試網絡等步驟,訓練網絡的識別結果如圖8、圖9所示。圖8~9網絡的損失函數在第7次迭代后梯度不再下降,相應的識別準確率也在第7次迭代后達到98%后不再顯著增加,在第12次迭代訓練后準確率保持在99%以上,證明識別正確率數據良好,所設計的網絡可以順利識別任務。
5.2 實際識別效果對比
本次實驗以正確識別和識別時間作為2種方法檢測效果的評價指標,正確識別可以反映算法對船舶越限檢測的情況,識別時間作為現場應用的重要技術指標。表1反映了實際測試下兩種識別方法的檢測效果。
由表1可知,GoodLetNet網絡能夠順利完成完成識別任務,SVM算法在識別上存在一定的錯誤識別。由于GoodLetNet網絡運行中使用了tensorflow的張量并行加速,充分發揮GPU的計算性能,識別時間上相較于傳統的SVM算法運行有了大幅提高,具備應用于現場的運行性能。
為了驗證訓練好的卷積神經網絡在實際中的識別準確率,進行了準確率識別試驗,識別正確率為識別正確的圖片數量對比測試圖片總樣本數量。試驗圖片隨機從現場攝像頭中提取,以500張圖片為測試基數,每次增加500張測試圖片,并計算訓練好的卷積神經網絡識別正確率,具體數據如表2所示。
由表2可知,隨著試驗的圖片增加,識別正確率有一定的下降,這主要是隨著測試樣本數量的增加,隨機挑選的夜間圖片數量增加,夜間圖片正確識別率相對降低。但該網絡總體上保持了較高的識別正確率,隨著測試樣本的繼續增加,識別正確率趨向穩定。
6 結語
通過實際搭建卷積神經網絡進行訓練及測試,在固定攝像頭位置的情形下,卷積神經網絡識別船舶越限的正確率相比于傳統的特征提取算法具有更高的識別正確率,并可以充分利用GPU的運算性能,提高網絡運行速度,實現工業級別的運算性能。同時,在現實應用中,情形是多變的且復雜的,卷積神經網絡在夜間情形下識別正確率仍舊不高,需要通過紅外攝像頭或輔助激光雷達輔助進行綜合判定,以提高識別正確率。
參考文獻:
[1]陳 壯.基于卷積神經網絡的內河船舶檢測與識別研究[D].大連:大連理工大學,2020.
[2]曲穎麗.基于卷積神經網絡的船舶識別[D].大連:大連海事大學,2020.
[3]羅文慧.智慧交通背景下道路交叉口交通流控制模型與算法研究[D].北京:北京交通大學,2019.