文/駱雙龍 孫慶峰 朱闖 王仁君
水路運(yùn)輸?shù)倪\(yùn)輸成本較低,運(yùn)輸量較大,在全球貿(mào)易中的占比不斷提高,內(nèi)河運(yùn)輸也在經(jīng)濟(jì)發(fā)展中占有重要地位。隨著經(jīng)濟(jì)發(fā)展與國家的支持,港口與船舶的建設(shè)都有了快速的發(fā)展,監(jiān)控?cái)z像頭的布置不僅有利于港口管理而且為機(jī)器視覺奠定了基礎(chǔ)。人工智能技術(shù)的大力發(fā)展帶動了基于神經(jīng)網(wǎng)絡(luò)的機(jī)器視覺活動的發(fā)展,其中對目標(biāo)檢測與識別的應(yīng)用比較廣泛,借鑒車牌識別的應(yīng)用,船舶舷號的檢測識別也具有一定的研究價值,但是,船舶舷號與車牌不盡相同,主要表現(xiàn)在船舶舷號涂裝方式不同,涂裝位置不固定,字體大小不統(tǒng)一,這導(dǎo)致清晰船舶舷號圖片獲取難度高、相關(guān)研究較少。文章使用基于CNN的Yolov5s模型對船舶舷號進(jìn)行檢測,通過對Yolov5s模型加入SE注意力機(jī)制以及與Transform er結(jié)合的BoTNet注意力機(jī)制,提高檢測準(zhǔn)確率。
1.1 Yolov5s模型介紹。Yolo最早是在2016年提出來的,隨著Yolo不斷改進(jìn),其檢測效果也逐漸提高。Yolov5模型[1-5]是由Ultralytics公司在2020年公開發(fā)布的,它是基于Yolov3[6]為基礎(chǔ)改進(jìn)而來,根據(jù)不同深度分為Yolov5s、Yolov5m、Yolov5l、Yolov5x四個模型。Yolov5s主要有四個部分,分別為輸入端、主干網(wǎng)絡(luò)、頸部以及輸出端。其中Yolov5s深度小,能更好地應(yīng)用在算力有限的移動設(shè)備和數(shù)據(jù)集較小的訓(xùn)練上。在輸入端為了提高對數(shù)據(jù)集小目標(biāo)檢測的準(zhǔn)確性,對圖片進(jìn)行隨機(jī)裁剪、排布達(dá)到數(shù)據(jù)增強(qiáng)的效果,另外使用自適應(yīng)圖片縮放與錨框計(jì)算對輸入圖片批量歸一化,還具有圖像數(shù)據(jù)預(yù)處理功能。主干網(wǎng)絡(luò)主要結(jié)構(gòu)有Conv模塊、C3模塊、SPP模塊,Conv模塊是對圖像卷積提取特征值,C3模塊提高特征值的提取能力通過增加網(wǎng)絡(luò)深度和感受野,SPP模塊是主干網(wǎng)絡(luò)引入頸部的池化層。頸部使用了FPN特征金字塔結(jié)構(gòu),通過上采樣和下采樣操作將不同層次的特征圖融合到一起,生產(chǎn)多尺度的金字塔,以提高目標(biāo)檢測準(zhǔn)確率。
1.2 Yolov5s-SE模型。SE[7-8]注意力機(jī)制主要包含兩部分操作,首先是壓縮,輸入特征圖為W×H×C時,通過全局平均池化對輸入的特征進(jìn)行壓縮,特征圖壓縮為1×1×C的向量。最后是激勵,通過一對全連接層和激活函數(shù),對壓縮后的特征進(jìn)行非線性映射和調(diào)整,學(xué)習(xí)特征之間的權(quán)重關(guān)系,這使得SE模塊能夠自適應(yīng)選擇和強(qiáng)調(diào)重要特征,提高對特征的辨別能力,對映入SE注意力機(jī)制的模型命名為Yolov5s-SE模型。
1.3 Yolov5s-BoTNet模型。YOLOv5s主干特征提取網(wǎng)絡(luò)為CNN網(wǎng)絡(luò),由于其具有平移不變性與局部性,因此缺乏全局建模長距離建模的能力,將自然語言處理領(lǐng)域的Transform er框架[9-10]與CNN進(jìn)行融合形成CNN+Transform er架構(gòu)即命名為Yolov5s-BoTNet,充分利用兩者的優(yōu)點(diǎn),提高目標(biāo)檢測效果。Yolov5s-BoTNet利用了Transform er架構(gòu)的多頭自注意力,使其應(yīng)用在圖像分類、目標(biāo)檢測和實(shí)例分割的計(jì)算機(jī)視覺任務(wù)中。其原理如圖1,是在ResNet的最后三個瓶頸模塊中用多頭自注意力(MHSA)替換空間卷積,使得目標(biāo)檢測方面顯著改善了基線,同時還減少了參數(shù)。然而Transform er架構(gòu)中的MHSA與Yolov5s-BoTNet中的MHSA是有些區(qū)別的,其表現(xiàn)在歸一化上,Transform er使用分層標(biāo)準(zhǔn)化,而Yolov5s-BoTNet使用批量標(biāo)準(zhǔn)化。非線性激活數(shù)量不盡相同,Transformer使用一個非線性激活,Yolov5s-BoTNet使用了3個非線性激活。
圖1 多頭注意力機(jī)制替換原理圖
2.1 船舶數(shù)據(jù)集構(gòu)建。本文采用的數(shù)據(jù)集來自不同渠道,主要由Seaship公開數(shù)據(jù)集以及龍船社區(qū)的船員朋友們“隨手拍”渠道構(gòu)建,篩選出具有舷號船舶圖片2023張,對數(shù)據(jù)集按照9:1的比例劃分訓(xùn)練集與驗(yàn)證集,使用Labelimg標(biāo)注工具標(biāo)注。
2.2 實(shí)驗(yàn)設(shè)置。本文實(shí)驗(yàn)硬件與開發(fā)環(huán)境在移動設(shè)備上進(jìn)行,實(shí)驗(yàn)環(huán)境為:(1)中央處理器(cpu):Intel core i7-7700,(2)顯卡類型:NVIDIAGTX1060(6G),(3)Cuda版本:11.3,(4)Pytorch版本:1.11.0。實(shí)驗(yàn)參數(shù)設(shè)置應(yīng)用普遍使用的學(xué)習(xí)率、循環(huán)率、學(xué)習(xí)率動量等,在訓(xùn)練輪次中設(shè)置為100輪,批量大小受到GPU顯卡的影響設(shè)置為8。
為驗(yàn)證Yolov5s模型對船舶舷號的檢測效果以及改進(jìn)后Yolov5s-SE模型、Yolov5s-BoTNet模型在船舶檢測方面的效果,使用準(zhǔn)確率(P)、召回率(R)對結(jié)果進(jìn)行評估。
其中,TP代表檢測正確的結(jié)果數(shù)量,F(xiàn)N表示撿漏的數(shù)量,F(xiàn)P表示誤檢測結(jié)果數(shù)量。測試結(jié)果如表1所示。
表1 三種模型對比結(jié)果
從準(zhǔn)確率與召回率衡量指標(biāo)來看,Yolov5s模型對船舶舷號檢測效果比較好,加入了SE注意力機(jī)制的Yolov5s-SE模型,在檢測準(zhǔn)確率上有所提升,而融合了Transformer架構(gòu)的Yolov5s-BoTNet模型在準(zhǔn)確率和召回率上表現(xiàn)最佳。
其中對船舶舷號檢測效果最佳的Yolov5s-BoTNet模型的指標(biāo)如圖2所示,檢測效果如圖3所示。
圖2 Yolov5s-BoTNet模型指標(biāo)
圖3 檢測效果圖
本文使用基于CNN的Yolov5s模型對船舶舷號進(jìn)行檢測,檢測效果比較好,并引入了不同的注意力機(jī)制對Yolov5s模型進(jìn)行改進(jìn),通過對比結(jié)果發(fā)現(xiàn)加入注意力機(jī)制對準(zhǔn)確率的提升有很大幫助。Yolov5s-BoTNet模型的精確度達(dá)到了93.95%,檢測效果較佳。該改進(jìn)模型對船舶舷號識別、建立船舶信息系統(tǒng)、船舶安全航行、依托機(jī)器視覺進(jìn)行船舶管理等方面有一定的幫助。