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