朱素杰
(1. 黑龍江科技大學(xué) 信息工程學(xué)院,黑龍江 哈爾濱 150000;2. 河南科技職業(yè)大學(xué)信息工程學(xué)院,河南 周口 466100)
卷積神經(jīng)網(wǎng)絡(luò)作為船舶紋理識別中一種較為常見的排障網(wǎng)絡(luò)模型,可以借助噪聲圖像對船舶外形進(jìn)行色彩通道分離,并針對船體的每處紋理在各色彩通道上進(jìn)行卷積,最后經(jīng)過特征識別,對噪聲加以分類,從而借助網(wǎng)絡(luò)提取出船舶存在的安全隱患,并據(jù)此進(jìn)行針對性的維護(hù)[1–3]。
而在識別分類的細(xì)節(jié)上,卷積神經(jīng)網(wǎng)絡(luò)會基于不同的識別步驟形成不同的排障模型。目前最為常見的2 種模型分別為One-stage 和Two-stage。其中Twostage 算法有著較高的精確度與時間復(fù)雜度,但是在對船舶紋理圖形進(jìn)行分類的過程中,對計算機(jī)硬件也有著較高的要求。而One-stage 算法雖然沒有形成預(yù)選框的步驟,導(dǎo)致其在精度上會稍遜于Two-stage,但在算法時間的占用上卻較短,可以及時協(xié)助技術(shù)人員找出船舶存在的裂紋隱患,從而加快維修效率,縮短維修時間。本文從One-stage 算法入手,以民用工程船為例,通過結(jié)合實景拍攝搜集相關(guān)數(shù)據(jù),并導(dǎo)入系統(tǒng)進(jìn)行計算,搭建一個較為完整的船舶紋理圖形排查模型[4–5]。
隨著信息技術(shù)的發(fā)展,船舶行業(yè)在發(fā)展過程中也在“互聯(lián)網(wǎng)+”的時代背景上進(jìn)行產(chǎn)業(yè)升級,其中引入的深度學(xué)習(xí)框架,在對船舶進(jìn)行檢修的過程中可以為其提供豐富的函數(shù)庫,從而協(xié)助維修人員更為高效地完成相關(guān)安全檢查作業(yè)。目前關(guān)于深度學(xué)習(xí)框架的網(wǎng)絡(luò)搭建,主要有Caffe,Tensorflow,Keras,Pytorch 四類,極大地豐富了船舶紋理的檢測,讓操作人員在使用的過程中可以從多元的模型里挑選出更適合針對性故障識別的工具[6]。
其中Caffe 在使用中,如果需要引入新變量,則需相適應(yīng)的加入C++語言進(jìn)行編程,從而增大了操作人員的工作量;Tensorflow 在功能上只支持靜態(tài)計算圖,因此要想對民用工程船進(jìn)行紋理識別,必須先被編譯才可正常運行;而Keras 在運行的過程中需要占用一定的內(nèi)存,并且速度較慢,因此本文考慮深度學(xué)習(xí)框架的功能性、易操作性、效率性等綜合因素,最終選擇其中的Pytorch 框架來構(gòu)建YOLOv5 卷積神經(jīng)網(wǎng)絡(luò)及改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)。
改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)在實際應(yīng)用中具有很強的現(xiàn)實意義,真正起到識別民用工程船的船舶紋理效果,因此需求在進(jìn)行操作之前先構(gòu)建一個民用工程船紋理的可用數(shù)據(jù)庫。搜集了2239 張民用工程船紋理圖形樣本,并將船舶紋理進(jìn)行了樣本分類。最終得到了正樣本1121張,負(fù)樣本1118 張,并錄入數(shù)據(jù)庫作為本次研究的依據(jù)。
借助能夠兼容Python 版本的LabelImage 對其中正樣本中含有噪聲的圖像進(jìn)行標(biāo)注,并由操作人員親自編輯名稱,從而保證標(biāo)注的可靠性。待標(biāo)注完成后,將相關(guān)信息以VOC 數(shù)據(jù)格式生成,并錄入XML 文件,注明其原始圖片尺寸、邊界框坐標(biāo)以及噪聲類別等信息。
最后,將1121 張民用工程船正樣本紋理圖形按照9∶1 進(jìn)行訓(xùn)練集與測試集的分類,創(chuàng)建Annotations 文件夾保存以上標(biāo)記語言,創(chuàng)建JPEGImages 文件夾保存以上原始船舶紋理圖像,創(chuàng)建ImageSets 文件夾保存訓(xùn)練集與測試集。
為了可以更好地體現(xiàn)改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)在船舶領(lǐng)域的應(yīng)用功能,提升船舶紋理的識別準(zhǔn)確度,采用Mosaic 方法對本次搜集的船舶紋理素材按照隨機(jī)縮放、剪裁、排布等方式進(jìn)行擴(kuò)充。一方面,是為了可以豐富樣本數(shù)據(jù)庫,提升網(wǎng)絡(luò)魯棒性;另一方面,則起到平衡大小噪聲比例的作用,使其更適用于不同網(wǎng)絡(luò)的訓(xùn)練。
對船舶紋理進(jìn)行了灰度化處理后,考慮到船舶紋理會受到諸如氣候、光線、建筑遮擋等因素的影響,而致使收集的圖像在灰度值上呈現(xiàn)出如圖1(a)所示的集聚現(xiàn)象,因此通過灰度線性變換,對船舶紋理圖像進(jìn)行如圖1(b)所示的處理,通過改變其灰度參數(shù),從而防止在后續(xù)識別中因船舶紋理過亮或過暗,而干擾訓(xùn)練結(jié)果。
圖 1 處理前后灰度值分布Fig. 1 Distribution of grayscale values before and after processing
在以上操作中,為了可以保持船舶紋理樣本的特征,方便提取以及最終結(jié)果的表達(dá),在紋理線性變換上,實施如下計算:
式中:Out(x,y)為輸出船舶紋理像素,In(x,y)為輸入船舶紋理像素,W為船舶紋理寬度,H為船舶紋理高度。參數(shù)a負(fù)責(zé)調(diào)節(jié)輸出船舶紋理的對比度,參數(shù)b負(fù)責(zé)調(diào)節(jié)輸出船舶紋理的亮度,并將以上計算結(jié)果按照歸一化方法進(jìn)行數(shù)據(jù)分析。
本文采用的原始船舶圖片由于外部光線等原因?qū)е略肼暸c背景的灰度十分接近,很難明確噪聲位置與自身的輪廓。圖2(a)和2(c)為原始圖片,經(jīng)過圖像增強后的圖像如圖2(b)和(d)所示,灰度集聚問題得到了改善。
圖 2 圖像增強前后對比Fig. 2 Comparison of images before and after enhancement
為探討其他算法在本次收集的數(shù)據(jù)庫與訓(xùn)練參數(shù)中可以呈現(xiàn)出相同的結(jié)果,分別選取了Faster R-CNN與SSD 兩組模型對本次收集的船舶紋理展開分別訓(xùn)練。
在關(guān)于Faster R-CNN 的識別中,設(shè)計區(qū)域生成網(wǎng)絡(luò)(region proposal networks,RPN),并通過卷積操作對船舶紋理的特征進(jìn)行篩選分析,最終形成候選區(qū)。分析可知,F(xiàn)aster R-CNN 在操作流程上較精簡,因此不僅可以縮短排障的時間,并且還能提升船舶裂紋的識別效率。按照以上研究思路,通過卷積的特征進(jìn)行圖形分割改進(jìn),將數(shù)據(jù)庫中的船舶紋理識別分為2 條路徑:1)按照區(qū)域生成網(wǎng)絡(luò),得到候選區(qū)域;2)直接向后傳播并整合船舶紋理特征,進(jìn)行回歸分析與分類。
依據(jù)前文創(chuàng)建的相關(guān)數(shù)據(jù)庫進(jìn)行測試,采用Tensorflow 作為本次深度學(xué)習(xí)框架,為保證輸入圖像的格式統(tǒng)一,將數(shù)據(jù)庫中錄入的相關(guān)圖片尺寸統(tǒng)一按比例調(diào)整為240 mm×240 mm,并通過鏡像、旋轉(zhuǎn)等方式對數(shù)據(jù)庫進(jìn)一步擴(kuò)充。待完成以上流程,再借助Faster R-CNN 對本次的船舶紋理圖形數(shù)據(jù)庫實施ImageNet預(yù)訓(xùn)練,并基于觀察結(jié)果進(jìn)行相關(guān)的指標(biāo)評價。在網(wǎng)絡(luò)收斂完成后識別結(jié)果,如表1 所示。借助Faster R-CNN進(jìn)行的船舶紋理識別,因為焊接節(jié)點失誤而造成船舶裂紋的識別精度(AP)僅有0.487,由于結(jié)構(gòu)設(shè)計不精細(xì),識別的平均精度僅有0.498,損失值為0.102。
表 1 Faster R-CNN 識別結(jié)果Tab. 1 Faster R-CNN identification results
此外,按照深度學(xué)習(xí)框架選擇優(yōu)劣對比可知,該檢測識別耗時較長,也極大地拖慢了操作人員對船舶紋理的排障時間。由此看出,基于Faster R-CNN 的船舶紋理識別可行性不高,需要展開進(jìn)一步的改進(jìn)。
本文基于One-stage 算法,采取SSD(single shot multibox detector)對YOLO 算法進(jìn)行改進(jìn),得出如下改進(jìn)算法:
式中:Pi為計算出下一個聚類中心的概率,D(xi)為聚類中心的最短距離,n為本次收集的船舶紋理樣本量。
通過對其進(jìn)行淺層特征的融合,并對目標(biāo)像素坐標(biāo)進(jìn)行求值,替換卷積方式并修改損失函數(shù)。最鄰近元法計算示意如圖3 所示。
圖 3 最鄰近元法計算示意Fig. 3 Calculation diagram of nearest neighbor element method
得出IoU 系列的損失函數(shù):
其中,R為預(yù)測框與目標(biāo)框的懲罰項,Boxgt為實際框。
按照SSD300 模型,隨機(jī)抽取特征網(wǎng)絡(luò)中6 層的特征圖像,并將生成的default boxes 數(shù)據(jù)通過非極大值抑制(NMS)展開篩選,得出理想的預(yù)測框。
結(jié)果分析中,采取的是SSD 算法對之前搜集的船舶紋理進(jìn)行識別測試。通過最終的結(jié)果呈現(xiàn)可知,因為焊接節(jié)點失誤而造成船舶裂紋的識別精度(AP)為0.621,由于結(jié)構(gòu)設(shè)計不精細(xì)而進(jìn)水,導(dǎo)致表面腐蝕的識別精度則為0.578,平均損失值為0.0626。借助Onestage 算法得出的識別精度具有明顯的優(yōu)勢,并且SSD 算法作為One-stage 算法,在操作人員的排障用時上要明顯短于Faster R-CNN 模型的Two-stage 算法。可知,基于SSD 模型的One-stage 算法,無論是精準(zhǔn)度還是排障時間,都得到了一個顯著的提升,其應(yīng)用效率得到了一定的改進(jìn),因此可以在后續(xù)的船舶紋理識別中使用。
民用工程船一旦出現(xiàn)裂紋,如不對其進(jìn)行及時修補,將會給海上作業(yè)帶來不可估量的危害,因此不斷嘗試更為先進(jìn)的排障策略,降低安全隱患。因此,本文針對焊接節(jié)點以及結(jié)構(gòu)腐蝕導(dǎo)致的船舶紋理,提出一種基于改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)的識別方法,并在實例結(jié)果測試中驗證了其先進(jìn)性及可行性。本文提出的改進(jìn)措施在船舶紋理的識別過程中,與其他常用識別算法相比有著明顯優(yōu)勢,其在應(yīng)用的過程中不僅可以有效節(jié)約人力物力的運維成本,同時也可以提高民用工程船設(shè)備的安全性和穩(wěn)定性。然而由于收集的相關(guān)數(shù)據(jù)量較小,因此在精準(zhǔn)度上依舊存在一定提升的空間。