宮鵬涵
(陸軍工程大學石家莊校區, 石家莊 050000)
槍身號碼作為槍支的身份標識,不僅是槍械生產與管理過程中的重要內容,更是輕武器信息智能化管理的重要組成部分。為了方便武器的質量把控和信息管理,在槍械的生產過程中,往往會采用壓印或激光刻字的方法在槍身及其他主要金屬部件上標注相應的生產編號。壓印字符通過字符模具對鋼板壓印所產生,具有不易磨損,可長期保存的優點,因此在工業制作上得到廣泛使用。此外,在槍支的生產銷售、出庫入庫管理、退役報廢等環節中都必須登記槍號,而傳統的人工記錄方法需要大量的勞動力,不但耗時耗力,而且容易出現記錄錯誤等問題。因此,研究鋼印字符智能識別方法對于提高壓印字符的實時識別速率有著積極的意義。
與手寫字符和印刷字符等普通字符不同,壓印字符是對物體表面施壓生成,其顏色與背景顏色一致,兩者的對比不明顯,并且環境、光照條件等元素的影響會進一步加大對鋼印字符識別的難度。因此,對鋼材壓印字符采用傳統的字符識別技術,如模板匹配,所得到的識別準確率難以保證。近年來,在計算機視覺(Computer Vision)領域中,目標檢測是其中備受人們關注的問題,通過應用目標檢測算法,可學習每個對象的可視模型,并找到合適的邊界區域和對象類別。在早期,主要的目標檢測算法是通過特征描述算法,如HOG算法等,對圖像進行特征提取,并應用各種分類器,如支持向量機SVM等,對得到的圖像特征進行分類。基于HOG和SVM圖像分類的算法被提出時,運用該算法對自然場景中的行人進行檢測,取得了較好的效果。但傳統目標檢測算法在進行特征設計時需要人工設定,對于多樣性的變化并不能表現出良好的魯棒性。而且算法過程繁瑣,消耗時間長,并不能滿足實際生活中要求的實時性。
為了解決傳統目標檢測算法中存在的問題,Girshick等提出區域卷積神經網絡算法(R-CNN),將候選區域(Region proposal)與卷積神經網絡結合起來,以替換傳統目標檢測中使用的滑動窗口與手工設計特征的結合,在此基礎上設計了R-CNN框架,該算法推動了在深度學習基礎上發展目標檢測的進展。然而,作為最早的基于深度學習的目標檢測算法,R-CNN框架存在訓練繁瑣,耗時長,占用磁盤空間大和速度慢的缺點。針對速度慢問題,何凱明等提出了SPP-NET,采用空間金字塔采樣,提高了目標檢測的速度。2015年Girshick提出了快速區域卷積神經網絡(Fast R-CNN),該算法將多任務損失函數引入其中,并提取了R-CNN和SPP-NET二者的優點,算法的訓練和測試過程更加快捷。但是,候選區域的提取方法依然為選擇性搜索算法,目標檢測時間絕大多數都耗費于此,依舊無法進行實時的應用。為了解決Fast R-CNN存在的問題,2017年Ren和Girshick提出了超快區域卷積神經網絡(Faster R-CNN),該網絡使用卷積神經網絡直接產生候選區域,將之前算法中一直處于分離中的卷積神經網絡和候選區域融合在一起,使該網絡變為端到端的網絡,目標檢測的速度和精度都得到了顯著的提升。然而令人遺憾的是,Faster R-CNN依然無法滿足實際需求,無法對目標進行實時性檢測,Faster R-CNN需要提前獲得候選區域,并且在對每個候選區域進行分類時,同樣會消耗很多時間于計算上。2016年Redmon 等提出了YOLO (You Only Look Once)網絡,該算法將圖像檢測視為一個回歸問題。在訓練過程中,YOLO可以查看整個圖像,在目標檢測中更關注目標檢測中的全局信息。YOLO的核心思想是將整張圖片作為檢測網絡的輸入,并在輸出端直接返回到邊界框的方位和其屬于的類別。因此相對于前述的目標檢測算法,YOLO算法的檢測速率得到了極大的提升,使其更加接近實際生活中需要的實時性。但是在提高檢測速率的同時YOLO的檢測精度并不是很高。在之后的研究中,基于YOLO算法,YOLOv2、YOLOv3、YOLOv4、YOLOv5等算法被依次提出,準確率和檢測速度均得到了顯著提高。
近年來,關于鋼印字符識別的方法也被提出。文獻[13]中提出一種基于改進的EAST深度學習文本檢測器和CNN的鋼材表面字符檢測與識別方法。文獻[14]中提出了一種基于MobileNet模型的鋼材表面字符檢測識別算法。文獻[15]中提出了基于YOLOv2算法的鋼材壓印字符識別方法。
本研究中提出了一種基于YOLOv5網絡的鋼材識別方法,對標注著生產編號的鋼材部件圖像進行預處理,再通過YOLOv5網絡對經過處理后的數據集訓練,學習各類字符的特征,對字符進行分類的同時得到字符的位置信息,利用圖像中各個字符所得的位置信息進行排序操作,即可得到鋼材部件的生產編號,實現實時、快速、準確地一步式識別鋼材部件的生產編號。
由于沒有公開的鋼印字符數據集,本研究根據槍支編碼的編制要求,制作了相應的帶有字符編號的試驗部件,并用相機對整塊部件拍攝圖片。所獲取的鋼材壓印字符有3種規格,如圖1所示。

圖1 鋼印字符圖Fig.1 Steel embossing
本研究通過對已經打上字符編號的鋼材部件進行拍攝,得到422張圖像。但作為數據集,400余張圖像略顯單薄,且在對數據圖像進行采集時,拍攝條件均為同一角度和同一光照條件,這不太符合實際識別環境。因此為了保證樣本的多樣性,使其符合現實生產過程中采集到的圖像,對現有的數據集進行擴充。
本研究采用圖像模糊化,圖像加亮,圖像變暗,圖像加噪等方法對已有圖像進行處理,從而得到2 110張圖像,并將其作為數據集,其中1 855張作為訓練集,255張作為測試集。處理后得到的圖像如圖2所示。圖2(a)為圖像模糊化處理,圖2(b)為圖像加亮處理,圖2(c)為圖像變暗處理,圖2(d)為圖像加噪處理。

圖2 處理后的鋼印字符圖Fig.2 Steel embossing after treatment
2.3.1 YOLOv5網絡結構
2020年,YOLO的第5個版本被Utralytics提出,并命名為YOLOv5,該版本在速度和準確性方面超過了YOLO以前的所有版本。YOLOv5算法使用參數depth_multiple和width_multiple來調整主干網絡的寬度和深度,從而得到4個版本的模型,分別是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。YOLOv5s是最簡單的版本。它具有最小的模型參數和最快的檢測速度。其網絡結構如圖3所示,由以下部分組成:focus、Conv-Bn-Leakyrelu(CBL)和CSP1_、CSP2_和空間金字塔池化(SPP)模塊。Focus模塊主要包含4個平行切片層來處理輸入圖像。CBL模塊包含一個卷積層、批量歸一化層和hard-wish激活函數。CSP1_塊包含CBL塊和個剩余連接單元。CSP2_塊包含個CBL塊。SPP塊主要包含3個maxpool層。

圖3 YOLOv5網絡結構示意圖Fig.3 YOLOv5 network structure
YOLOv5s將模型分為3個部分:Backbone網絡部分、Neck特征增強部分和Prediction部分。每個部分都有不同的功能。
Backbone網絡部分用于提取圖像特征。首先,focus結構用于周期性地從高分辨率圖像中提取像素,并將其重建為低分辨率圖像。也就是說,將圖像的4個相鄰位置進行疊加,將(圖像寬度)(圖像高度)維度的信息集中到(圖像通道數)通道空間,以提高每個點的感受野,減少原始信息的損失。該模塊的設計主要是為了減少計算量,提高速度。然后,借鑒CSPNet的設計思路,設計了CSP1_x和CSP2_x模塊。該模塊首先將基礎層的特征映射分為兩部分,然后通過跨階段的分層結構進行組合,這樣既減少了計算量又保證了準確性。在Backbone網絡的最后部分,利用SPP網絡,該模塊可以進一步擴大感受野,有助于分離上下文特征。
Neck特征增強部分是用來進一步提高特征提取能力的。它采用了PANet的思想來設計FPN+PAN的結構。首先,它使用FPN結構傳遞強語義特征,然后使用PAN模塊構建的特征金字塔結構,從下到上傳遞強定位特征。通過這種方法,用于融合不同層之間的特征。
Prediction部分繼承了YOLOv3的Prediction結構,它有3個分支。預測信息包括物體坐標、類別和置信度。Prediction部分繼承了YOLOv3的Prediction結構,它有3個分支。預測信息包括物體坐標、類別和置信度。主要的改進是使用完全交并比損失(CIOU_Loss)作為邊界盒區域損失。
2.3.2 檢測過程
YOLOv5 采用-means 聚類方法對數據集中的人工標記框進行聚類分析。該方法對先驗框Anchor boxes 的數量和框的大小進行確認,最后在網絡的周邊生成一些具有一定比例的邊框。這樣,每個網格單元都會對邊界框和這些框的置信度分數進行預測。在這些邊界框中,每一個邊界框都包含了該區域中心點的位置,高度,寬度和置信度這5個信息。
置信度可表示為2個因子的乘積,即在邊界框中檢測對象的存在與否以及預測框的準確度,置信度計算公式為

(1)
式(1)中,()表示邊界框中是否包含檢測對象。
若包含檢測對象,則()取值為1,那么置信度就等于的值;若檢測對象在邊界框中不存在,則()=0,的值等于0。而表示預測邊界框與標記的真實邊界框的重合程度,其計算方式為

(2)
表示預測邊界框與標記的真實邊界框的交集與并集的比,當的大小與1相近時,預測邊界框與標記的真實邊界框的重合程度越高。
那么,預測邊框某一類別的置信分數就可以通過下式進行計算。


(3)
置信分數表征預測邊界框中含有某一類別的概率及邊框坐標的準確度。根據置信分數的大小,采用非極大值抑制()篩選獲得最終的檢測結果。
相較于之前的YOLO算法,YOLOv5使用完全交并比損失(_)作為邊界盒區域損失。其計算方法為

(4)

(5)

(6)
式中:_為標注框和預測框中心點的歐氏距離;_為最小外接矩形的對角線距離;?是權重函數;是度量寬高比的一致性;為預測框寬、為預測框的高、為標注框的寬、為標注框的高。
2.3.3 輸出改進
雖然經過算法檢測,可以得到鋼印字符的種類,但是所得到的結果是亂序的,只有種類而無序列。因此,為了得到與鋼印一致的生產編號,需要對檢測到的字符位置信息進行排序,本研究采用冒泡排序法,對位置信息按從小到大順序進行排序,從而把相對應的字符從左到右排列,從而得到準確的生產標號。
利用字符位置信息進行冒泡排序的方式比較簡單,對于保存有字符位置信息的數組而言,只需要對在數組中鄰近的兩個坐標數值進行大小的比較,如果排在前的坐標數值比排在后的坐標數值大,則交換2個坐標數值的位置,如果小就不用進行交換。同時位置信息對應的字符數組也進行相同的操作,最終得到位置信息從小到大的序列和按生產標號從左到右的字符序列。
實驗平臺為PC端,PC配置為AMD Ryzen 7 3700X 8-Core Processor,顯卡/GPU為NVIDIA GeForce RTX 3060,16G運行內存。cuda版本是11.2,集成開發環境是Pycharm,編程語言是Anaconda Python3.9。
YOLOv5x模型訓練參數的設置,批處理大小(batch Size)設為8,迭代次數(epochs)設為100次,學習率(learning_rate)設為0.001。
為了得到良好的識別效果,在字符識別前需要對YOLOv5網絡進行訓練,而經過訓練獲得的網絡模型的優劣程度將直接影響到識別的效果是否達到滿意的程度。本研究使用Labelmg軟件對訓練集中所有圖片上的字符打上各自相應的標簽,生成每一幅圖片對應的.xml文件,然后將每一個.xml文件生成txt文件,存儲標簽信息。并將YOLOv5網絡進行參數設置,而后應用該網絡對訓練集進行訓練。
在對訓練集進行訓練時,YOLOv5網絡通過計算損失函數CIOU_Loss來判斷訓練的效果。為了得到較好的訓練效果,所需求的CIOU_Loss值越小越好。
使用YOLOv5網絡進行訓練得到的loss函數曲線如圖4。

圖4 損失率曲線Fig.4 Loss rate curve
在訓練結束后,可得到包括最佳訓練權重、字符識別混淆矩陣、各類標簽個數等信息數據。混淆矩陣元素如圖5所示。各類標簽個數如圖6所示。

圖5 字符識別結果混淆矩陣元素圖Fig.5 Confusion matrix of the characteristic recognition

圖6 各類標簽個數直方圖Fig.6 Number of labels
可以看出,混淆矩陣中,對字符3和字符8的檢測效果并不算很好,在各類標簽個數圖中,字符間的分配并不均勻,3和8的個數最少,因此在之后的工作中可以嘗試平衡各類字符的個數,使其均勻分配,以達到更好的效果。
訓練結束后的-曲線如圖7,曲線圍起的面積即為值,可看到0~9每個類別的值均達到90以上,為所有類別均值,且達到974,這表明采用YOLOv5網絡分類得到的效果很好。

圖7 P-R曲線Fig.7 P-R curve
使用YOLOv5算法,對于3種不同的鋼印字符識別效果如圖8所示,YOLOv5基本能對0~9這10個數字進行分類,并能較為準確地標識出各個字符所在的位置。

圖8 識別效果圖Fig.8 Identification of the characteristic
同時,YOLOv5采用整張鋼材壓印字符生產編號圖像作為輸入,檢測時即能輸出一整串生產編號,比先分割字符輸入,識別輸出單個字符后再進行拼接的方法更加快速且便捷。
本文實驗均利用Pycharm軟件完成,結果顯示如圖9所示。該算法的檢測時間為0.016 s。

圖9 圖像檢測結果界面Fig.9 Image recognition process
采用數據增廣技術構建了槍支編碼鋼印字符數據集,將目標檢測領域最新算法YOLOv5應用于槍支編碼鋼印字符識別。實驗結果表明,所提出的方法在槍支鋼印字符識別中,處理時間較快,準確率較高,具有較強的實際應用價值。