胡敏
中船第九設計研究院工程有限公司 上海 200090
船舶行業是傳統制造行業,為了識別相應的管件,并且在管件加工流程中有效跟蹤記錄。對此本文提出一種新的方式,在每一段管件上刻上鋼印作為對此管件的唯一標識,通過開源的計算機視覺庫(Open Source Computer Vision Library,OpenCV)進行圖像預處理,然后通過機器視覺領域的文字識別(optical character recognition,OCR)相關技術,識別出此零件上的數字序號標識,以此與數據庫現有數據匹配。該方法可有效識別各管件信息,跟蹤管件生產加工狀態,提高車間管理效率。
本文根據船廠生產制造特點,通過現場采集管件表面鋼印信息,將這些樣本數據劃分為測試集與訓練集,上傳到上層的船舶管件智能識別系統,進行模型的深度遷移學習。訓練好的模型部署應用后可通過船廠日常數據進一步學習和優化。該系統框架如下:
圖1 船舶管件智能識別系統總體設計
在船舶行業管件制造過程中,管件的施工過程﹑搬運過程,以及鋼鐵的自然氧化生銹都會對管件表面帶來一定的磨損,因此我們在現場拍攝,采集圖片的過程中,我們往往很難得到一個完全無雜質的高清圖片,即使我們能取得船舶管件鋼印的高清圖像,但在現實的施工過程中,可能隨時需要對船舶管件鋼印信息進行現場識別讀取管件信息,因此我們無法保證管件在施工全過程中都是處于無磨損﹑無氧化生銹的高清圖像。在船舶管件鋼印圖像分析中,圖像質量的好壞直接影響識別算法的設計與效果的精度,因此在船舶管件鋼印圖像分析(特征提取﹑分割﹑匹配和識別等)前,需要進行預處理。綜上分析,我們需要一定的圖像預處理技術去解決這一問題。
結合船舶行業管件的生產過程,我們對鋼印圖像以下:去噪處理﹑二值化處理﹑傾斜矯正﹑邊緣檢測,消除圖像中無關的信息,恢復有用的真實信息,增強有關信息的可檢測性﹑最大限度地簡化數據,從而改進特征提取﹑圖像分割﹑匹配和識別的可靠性。
現實中的船舶管件行業圖像在數字化和傳輸過程中常受到成像設備與外部環境噪聲干擾等影響,稱為含噪圖像或噪聲圖像,噪聲是圖像干擾的重要原因。降低管件圖像噪聲不僅可以使圖像更加清晰,而且可以突出圖像的感興趣區域,易于識別。本文采用OpenCV技術實現降噪處理。
鋼印圖像為彩色船舶管件圖像,為了將目標區域背景分類,需要進行二值化處理。分類后圖像變為黑白,分辨圖像中的圖形和文本,便于后續將文本信息提取出來[1]。圖像中每個像素可以由0(黑)到255(白)的亮度值表示。0-255之間表示不同的灰度級。本文對管件鋼印圖像的二值化處理,采用圖像二值化算法中的全局閾值方法與局部閾值方法。
船舶管件在輸送帶上運動或者倉庫儲存時,經過高速攝像機拍攝照片可能會遇到管件放置不規范的問題,導致拍攝的照片歪斜,不平行于水平線。因此預處理時需要將扭曲的原始圖片進行校正。本文采用的傾斜角度方法為基于投影的方法。
基于投影的矯正方法利用管件鋼印圖像水平方向和垂直方向的投影特征來進行傾斜判斷。主要用到投影的方差和均方差﹑投影特征矢量﹑梯度方向場等統計特性。在管件鋼印圖像投影中,一條直線沿著它的發現方向投影最長,沿著水平方向投影最短,此稱之為Radon變換[2]。
因為船舶管件子圖像的邊緣包含了用于識別的有用信息,所以邊緣檢測是船舶管件圖像分析和模式識別的主要特征提取手段。邊緣具有方向和幅度兩個特征,沿邊緣走向像素值變化比較平緩;而垂直與邊緣走向則像素值變化比較劇烈,而這種劇烈可能呈現階躍狀,也可能呈現斜坡狀。邊緣上像素值的一階導數較大;二階導數在邊緣處值為零,呈現零交叉。
Marr和Hildreth[3]提出的零交叉邊緣檢測是一種十分有效的方法。該方法認為圖像強度的突變將在一階導數中產生一個峰或等價于二階導數中產生一個零交叉(Zero - Crossing)且圖像中的強度變化是以不同的尺度出現的,故應該用若干大小不同的算子才能取得良好的檢測效果。本文采用此方法對管件鋼印圖像邊緣檢測。
考慮到船舶行業現場施工環境復雜,采集的圖片質量容易受到影響,我們必須選擇合理的模型方法來提高圖像特征提取的精度。生產管件堆放在一起﹑在管件的搬運過程中管件鋼印都很容易受到磨損,使得我們在現場識別過程中容易造成編碼模糊的情況,除此之外,在圖像采集時,圖片的質量也會受到周圍光線或者拍攝人自身的因素影響,導致圖片質量較差不夠清晰影響特征提取的精度,最終給我們的預測算法模型識別帶來阻礙。因此我們再選擇特征提取算法時必須要選擇模型泛化能力強,遷移能力好的算法模型。
本文選擇基于CNN(Convolutional Neural Networks)的神經網絡作為圖像的特征提取算法,得益于CNN強大的學習能力,配合大量的數據可以增強特征提取的魯棒性,使得模型的泛化能力大大提升,即使管件上的個別編碼字符被磨損或者圖片呈現模糊不清的情況,也能起到很好的預測結果[4]。
傳統文字識別方法都是通過識別每個單字符以實現全文的識別,這一過程導致了上下文信息的丟失。因此引入上下文的信息成為提升條目準確率的關鍵。從深度學習的角度出發要引入上下文這樣的序列信息,循環神經網絡和長短期記憶等依賴于時序關系的神經網絡是理想的選擇[5]。這種算法的優點在于,假如我們的船舶管件鋼印是由13位數字組成,但在施工搬運過程中,使得其中兩位編碼符號磨損而變得模糊不清,此時傳統的文字監測與識別方法就無法識別正確的管件信息進而影響施工作業。而依賴于時序關系的神經網絡則可以根據編碼的前后字符排列順序以及去過管件鋼印的習慣去預測出磨損的字符,這樣即使管件鋼印中有部分字符磨損,我們依然可以最大限度地預測出該管件的真實編碼信息,從而對管件進行正確的標記和作業。因此本文在Tesseract OCR技術基礎上,結合基于神經網絡的帶有時序關系的算法,作為船舶行業管件鋼印檢測與識別算法。
該系統框架中測試集與訓練集模塊均包含了前文中所提到的船舶管件鋼印圖像預處理技術。經過預處理的船舶管件鋼印圖像才最終稱為我們的樣本數據,將樣本數據按照7︰3的比例劃分為訓練集與測試集。通過訓練集,能夠使模型學習數據的規律,最終訓練出模型的最佳參數狀態,在此參數狀態下觀察模型在未知數據即測試集上的表現結果。模型在測試集上的準確率接近在現實船舶行業管件生產制造過程中的管件鋼印識別準確率。
船舶管件鋼印識別系統設計時采用msSQL 2016作為數據庫服務器,并使用ABP開發框架進行服務端開發,以此提高服務端的穩定性和功能完整性。系統模塊功能如表1所示。
本文基于船廠提供的128張有效船舶管件鋼印圖片進行測試。字符識別的正確率受前期圖片處理的程度和字符庫的影響,訓練集中包含英文﹑數字兩種字符,為了驗明兩種字符的單獨測試效果,本文從英文字符正確率﹑數字字符正確率和全部字符正確率三個方向進行驗證。
通過測試顯示,英文字符的識別準確率達到96.5%,數字字符的準確率為97.4%,全部字符構成的鋼印識別準確率達到了97.1%。這說明我們的系統,從船舶管件鋼印圖片樣本采集到數據預處理,再到特征提取以及最終的字符監測與識別都是成功的,也證明了我們結合船舶管件生產場景后,在系統各個環節中所選用的算法符合實際情況,具有較強的現實意義。
本文為了提高船舶制造過程中管件的管理效率,設計實現了船舶管件智能識別系統。首先采用 OpenCV技術對鋼印圖像進行必要的預處理,如色彩空間轉換﹑鋼印圖像的降噪以及鋼印圖像閾值化處理等操作,在此基礎上運用Faster RCNN﹑RNN﹑LSTM﹑Tesseract OCR技術,對船舶管件進行鋼印識別。該系統較好的地實現了船舶管件鋼印的智能識別,極大地減少了工作人員的工作負擔,為船舶管件的智能管理在船廠的實際應用探明解決路徑。