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