葛永杰,王麗丹,陳定喜,段書凱,6,干秀靈
(1.西南大學電子信息工程學院,重慶 400715;2.智能傳動和控制技術國家地方聯(lián)合工程實驗室,重慶 400715;3.類腦計算與智能控制重慶市重點實驗室,重慶 400715;4.重慶市腦科學協(xié)同創(chuàng)新中心,重慶 400715;5.美的集團,廣東佛山 528311;6.西南大學人工智能學院,重慶 400715)
工廠商品包裝外箱制作是工業(yè)生產(chǎn)流程中的重要環(huán)節(jié),外箱的產(chǎn)品批號和生產(chǎn)日期信息具有重要意義,出廠前須確保字跡清晰完整,不能出現(xiàn)漏印、錯印、空白箱等現(xiàn)象,否則會影響商品的流通與銷售。目前,工廠中商品包裝外箱上字符檢測的相關方法和應用產(chǎn)品較少,且實時性與效果不佳,主要處于人工檢查階段,未實現(xiàn)實時自動化全覆蓋檢測。商品包裝外箱上的字符檢查,可以利用光學字符識別(Optical Character Recognition,OCR)方法實現(xiàn)生產(chǎn)線智能化字符識別判斷與商品全覆蓋。
OCR[1]一般包含文本檢測和文本識別兩個階段。傳統(tǒng)OCR的文本檢測以圖像處理方法為主進行文字定位,處理的對象往往局限于成像清晰、排列規(guī)整的文檔圖像,無法很好地處理背景復雜的圖像。隨著深度學習技術的發(fā)展,在OCR的文本檢測領域中相繼出現(xiàn)了一系列基于深度學習的文本檢測算法,如CTPN 算法[2]借助anchor回歸機制并使用滑動窗口來檢測目標所在區(qū)域,SegLink算法[3]通過引入Segment和Linking兩個概念實現(xiàn)了對具有一定旋轉角度文本的檢測,EAST 算法[4]實現(xiàn)了對各個方向文本的檢測。同時,由于文本檢測可以被視為一種目標檢測,因此也可以利用主流的目標檢測算法進行文本檢測與定位。文獻[5]基于R-CNN(Region-Conventional Neural Network)和Fast RCNN[6]目標檢測算法提出Faster R-CNN 算法,實現(xiàn)了區(qū)域建議網(wǎng)絡和檢測網(wǎng)絡共享卷積特征,使運行速度獲得大幅提升。文獻[7-9]提出的YOLO 系列算法,將候選框提取、特征提取、目標分類與定位統(tǒng)一到一個神經(jīng)網(wǎng)絡中,具有運行速度快和檢測準確率高的優(yōu)勢。OCR 文字識別階段以長短期記憶網(wǎng)絡(Long Short-Term Memory,LSTM)[10]和CTC[11](Connectionist Temporal Classification)的組合為主,同時也有實現(xiàn)端到端文字檢測與識別的方法,如文獻[12]通過共享訓練特征、監(jiān)督的方法完成文本檢測和識別。目前OCR 在車牌、票據(jù)、手寫體等方面有很多方法和應用產(chǎn)品。文獻[13]針對手寫體數(shù)字識別提出一種基于融合卷積神經(jīng)網(wǎng)絡的字符識別模型。文獻[14]對票據(jù)文本字符識別進行了研究,從光學系統(tǒng)、硬件結構和深度學習算法等方面進行優(yōu)化,設計一個基于CCD的票據(jù)圖像實時文本檢測機器視覺系統(tǒng)。文獻[15]針對車牌識別速度慢的問題,提出一種自然交通場景下車牌定位和識別的端到端深度學習模型。此外,文獻[16]基于卷積神經(jīng)網(wǎng)絡對汽車零件編碼字符進行識別,文獻[17]基于幾何特征對IC芯片字符分割識別,文獻[18]基于改進卷積神經(jīng)網(wǎng)絡對鋁輪轂背腔字符識別,文獻[19]針對字符質(zhì)量低的文本提出一種圖像增強算法和卷積循環(huán)神經(jīng)網(wǎng)絡字符識別模型。目前,許多企業(yè)都在開展各種場景下字符識別的研究,并逐步對外提供各場景下的商用服務。
在計算機技術和人工智能應用不斷發(fā)展的背景下,研究基于深度學習的工業(yè)視覺方法具有重要意義。本文結合工廠生產(chǎn)需求和產(chǎn)業(yè)升級改造要求,提出基于深度學習的工業(yè)視覺箱體字符識別與判斷方法。通過使用具體的工業(yè)商品外觀信息數(shù)據(jù)集,利用深度學習方法實現(xiàn)箱體字符的檢測與識別,從而提升生產(chǎn)線自動化和智能化水平。
本文檢測識別的目標文本即商品外觀信息,具體指箱體的產(chǎn)品批號和生產(chǎn)日期。本文使用工業(yè)相機在生產(chǎn)線上共采集20 000 幅商品外觀信息圖像,制作工業(yè)場景商品外觀信息數(shù)據(jù)集,其中圖像分辨率為1 600 像素×1 200 像素。
OCR 的首要任務便是文本檢測,文本字符的變化和應用場景的復雜性,對檢測方法的性能有很大的影響。因此,本文從文本、圖像和應用場景等多方面考慮,制作了工業(yè)場景商品外觀信息數(shù)據(jù)集,采集圖像的特點和應用要求如下:
1)字符文本長度存在變化,如圖1(a)和圖1(b)所示,工廠生產(chǎn)線的產(chǎn)品批號種類不一,導致圖像上的產(chǎn)品批號字符文本長度存在變化。目前需要識別的產(chǎn)品批號種類近30 種,而且每年每季度會有相應的更新,其為數(shù)字、字母、符號組合文本,所包含字符數(shù)量從13 到25 不等。
2)字符文本內(nèi)容存在變化,如圖1(a)和圖1(b)所示,工廠生產(chǎn)線生產(chǎn)商品的批號具有隨機性,并且產(chǎn)品批號在不斷變化更新,同一條生產(chǎn)線,一天之內(nèi)可能生產(chǎn)多個批號商品。
3)字符文本字體存在變化,如圖1(c)和圖1(d)所示,工廠各生產(chǎn)線生產(chǎn)的商品日期文本的形式相對固定,但日期文本字符粗細存在明顯變化。
4)圖像表面光線分布不均勻,如圖1(e)~圖1(g)所示,工廠生產(chǎn)線光線環(huán)境較差,雖然利用補光燈進行光照增強,但相機拍攝到的圖像成像質(zhì)量依然不佳,同一幅圖像上光線不均的情況十分普遍。同時通過圖1(h)的直方圖可知,圖像的灰度值集中分布在75 以內(nèi),成像整體偏暗。
5)圖像存在遠近變化,如圖1(e)和圖1(f)所示,前者為近景,后者為遠景。工廠生產(chǎn)線生產(chǎn)商品是一個運動的過程,且相機對同一商品箱體兩側拍照。圖像的遠近變化影響了圖像表面光線強度和箱體字符大小的變化。
6)基于該方法的系統(tǒng)應用環(huán)境存在變化,如圖1(e)~圖1(g)所示,其中,圖1(e)、圖1(f)為同一生產(chǎn)線,圖1(g)為另一條生產(chǎn)線。工廠環(huán)境復雜,不同生產(chǎn)線物理環(huán)境變化較大,例如箱體大小、光線強度、拍攝角度、生產(chǎn)線運行速度等,導致成像質(zhì)量不一,同時字符格式也存在相應變化。
圖1 生產(chǎn)線實拍圖、切割圖及直方圖Fig.1 Real pictures,cutting diagrams and histogram in production line
7)基于該方法的系統(tǒng)需要滿足不同生產(chǎn)線可以使用同一個網(wǎng)絡模型的要求,網(wǎng)絡要具有優(yōu)良的魯棒性,能夠適應生產(chǎn)線環(huán)境變化。
利用圖像標注工具手動地對工業(yè)商品外觀信息數(shù)據(jù)集進行標注,設置產(chǎn)品批號(model)和生產(chǎn)日期(date)兩個類別。
字符識別與匹配判斷包含3 個模塊,即目標檢測模塊、字符識別模塊和匹配判斷模塊。目標檢測模塊利用CNN 對圖像中的產(chǎn)品批號和生產(chǎn)日期文本區(qū)域進行檢測定位,然后依據(jù)定位文本框裁剪圖像并送入字符識別模塊進行字符識別,將字符識別結果輸送到匹配判斷模塊,利用模板組合字符文本對字符識別結果進行分段全匹配,輸出相應的結果提示。字符識別與判斷流程如圖2所示。
圖2 字符識別與匹配判斷流程Fig.2 Procedure of character recognition and matching judgment
2.1.1 目標檢測算法
商品外觀信息的文本格式較為固定,不存在較大的角度旋轉問題,因此,本文利用目標檢測算法進行文本檢測??紤]對速度和精度的高要求,選取YOLO系列的算法,在源碼YOLOv3基礎上將卷積層與批量歸一化層合并,并將GIoU[20](Generalized Intersection over Union)作為回歸目標框的損失函數(shù),稱為G-YOLOv3。將工業(yè)商品外觀信息數(shù)據(jù)集以6∶2∶2的比例分為訓練集、驗證集和測試集,對YOLOv2、YOLOv3和G-YOLOv3分別進行訓練,網(wǎng)絡共迭代10 000次,每1 000次保存1個模型,初始學習率為0.001,權值衰減率和動量分別為0.000 5和0.9。在CPU 為i7-4720HQ、GPU 為GTX 950M、內(nèi)存為8 GB 的計算機上進行測試,設置IoU[21](Intersection over Union)閾值為0.75,測試結果如表1所示??梢钥闯?,G-YOLOv3對字符文本的檢測性能要優(yōu)于YOLOv2和YOLOv3,在運行速度方面,YOLOv2性能出色,但其綜合性能不如G-YOLOv3。
表1 目標檢測性能測試結果Table 1 Performance test results of object detection
利用工業(yè)商品外觀信息數(shù)據(jù)集訓練,并繪制損失函數(shù)曲線,圖3(a)為YOLOv3 的損失函數(shù)曲線,圖3(b)為G-YOLOv3的損失函數(shù)曲線。可以看出,G-YOLOv3的訓練效果比較理想。選取G-YOLOv3 的損失函數(shù)曲線趨于平緩的區(qū)間內(nèi)保存的模型進行測試,即在函數(shù)值8 000~10 000 內(nèi)保存的模型,檢測定位的效果如圖4所示??梢钥闯?,模型能夠準確定位同一商品箱體兩側的產(chǎn)品批號和生產(chǎn)日期字符文本區(qū)域,也能夠適應不同生產(chǎn)線的物理環(huán)境,處理不同類型的文本字符以及不同的字符字體。
圖3 損失函數(shù)曲線Fig.3 Loss function curve
圖4 實時檢測定位圖Fig.4 Real time detection and positioning map
2.1.2 邊界框優(yōu)化
G-YOLOv3 經(jīng)過工業(yè)商品外觀信息數(shù)據(jù)集的訓練,對多數(shù)圖像的目標文本區(qū)域能夠實現(xiàn)精準檢測定位,但出現(xiàn)了部分圖像文本定位存在少量偏差的問題。由于對目標區(qū)域的切割是依據(jù)邊界框來進行的,少量的偏差會導致切割字符不準確,致使識別時出現(xiàn)錯誤,因此必須對目標文本實現(xiàn)精準定位,即邊界框包含完整的字符文本。在未進行邊界框優(yōu)化的情況下,G-YOLOv3 對于大部分圖像能夠實現(xiàn)精確定位和準確切割,最終正確識別,如表2 中第1 行所示;但在部分圖像中,切割后的圖像未能實現(xiàn)包含完整字符文本,一側或者兩側會出現(xiàn)切割文本字符的情況,導致字符殘缺或者整個字符缺失,造成誤識別,如表2 中第2 行和第3 行所示。
表2 邊界框的影響Table 2 Influence of bounding box
從生產(chǎn)線實時獲取箱體兩側的圖像存在遠近的變化,即目標文本存在大小的變化,但定位邊界框在高度上總能很好地適應這一變化。因此,可以借助邊界框的高度變化來調(diào)整起始位置及其寬度,實現(xiàn)對G-YOLOv3 邊界框的改進優(yōu)化。
邊界框有4 個參數(shù),即x、y、w、h,其中,x、y為邊界框的左上頂點坐標,w為邊界框的寬度,h為邊界框的高度。任意時刻t的邊界框參數(shù)為(xt,yt,wt,ht),上一時刻邊界框參數(shù)為(xt-1,yt-1,wt-1,ht-1),通過參數(shù)h的變化來調(diào)整邊界框的定位區(qū)域,使其完全包含目標文本區(qū)域。對于起始位置,即邊界框的左上頂點,只需調(diào)整橫軸坐標x的值即可,計算方法如式(1)所示:
同時,對邊界框的寬度w進行自適應變化并消除因對起始位置的調(diào)整而給邊界框寬度帶來的影響,其計算方法如式(2)所示:
通過對G-YOLOv3 邊界框的改進優(yōu)化,使邊界框能夠覆蓋各種長度的字符文本,準確定位目標區(qū)域,包含目標文本的全部字符,為之后的字符識別奠定基礎,改進優(yōu)化后效果如圖5 所示。
圖5 邊界框優(yōu)化后測試結果圖Fig.5 Test results after optimization of bounding box
字符識別模塊利用Tesseract[22]進行識別,同時端到端識別的卷積遞歸神經(jīng)網(wǎng)絡(Convolutional Recurrent Neural Network,CRNN)[23]對該場景下的文本進行調(diào)優(yōu)訓練,并對比性能,該部分框架如圖6 所示。
圖6 字符識別模塊框架Fig.6 Framework of character recognition module
2.2.1 Tesseract 識別引擎
利用Tesseract 自帶的權重,出現(xiàn)混淆字符的種類較多,頻率較高,后續(xù)易混處理繁瑣,為滿足工廠生產(chǎn)線對實時性的高要求,必須進行調(diào)優(yōu)訓練。
1)調(diào)優(yōu)訓練
依據(jù)項目字符文本制作待訓練文本數(shù)據(jù)集,在ubuntu 16.04 版本下對Tesseract 進行調(diào)優(yōu)訓練,經(jīng)過近百萬次迭代訓練形成項目權重。
利用10 000 張圖像對自帶權重和項目權重進行測試,測試結果如表3 所示??梢钥闯觯谧詭嘀氐幕A上調(diào)優(yōu)訓練形成的項目權重性能更加優(yōu)越,其減少了混淆字符出現(xiàn)的種類,大部分易混字符的出現(xiàn)頻率顯著下降,下降率集中在50%以上,但個別字符也存在其他情況,例如:字母“B”易混頻率雖然取得顯著下降,但出現(xiàn)易混的次數(shù)不容忽視,仍然維持在較高值;數(shù)字“0”的易混頻率雖然出現(xiàn)了上升,但出現(xiàn)次數(shù)不足1%。對于這些情況,后期的易混處理要求較高。
表3 權重測試統(tǒng)計表Table 3 Statistical table of weight test
利用部分產(chǎn)品批號文本對自帶權重和項目權重進行測試,并統(tǒng)計各個產(chǎn)品批號字符文本的置信度,測試結果如表4 所示。可以看出,自帶權重中的字符置信度集中分布在0.75~0.8 之間,項目權重中的字符置信度分布在0.9 左右,實現(xiàn)了至少10%的性能提升。
表4 部分批號置信度Table 4 Confidences of some batch numbers
2)圖像預處理
通過圖4 和表2 的直觀分析,可以得知工廠生產(chǎn)線拍攝的圖像質(zhì)量較差。為了提高Tesseract 的識別正確率,需要對切割之后的圖像進行優(yōu)化增強。切割后得到的文本區(qū)域圖像亮暗不均,總體偏暗,需要對其進行二值化處理,但不宜采用固定閾值的二值化方法,否則會出現(xiàn)大量噪音,如圖7 所示。本文采用自適應閾值的二值化處理,即通過圖像的局部特征自適應地設定閾值進行二值化處理來避免出現(xiàn)這種情況。將二值圖以白底黑字的形式呈現(xiàn),然后使用中值濾波算法去除二值圖中的噪聲點。經(jīng)過圖片測試并且二值化處理后的圖像質(zhì)量相接近,此處的中值算法的濾波器的大小選用5×5。
圖7 二值化圖Fig.7 Binary graph
由于切割后得到的文本區(qū)域圖像質(zhì)量存在差異,因此在進行自適應閾值二值化時,需要對計算區(qū)域閾值中的區(qū)域大?。˙lockSize)進行動態(tài)調(diào)整,其數(shù)值只能為奇數(shù)。BlockSize 值動態(tài)調(diào)整方式如圖8 所示。
圖8 BlockSize 值調(diào)整流程Fig.8 Procedure of adjusting Blocksize value
在同一條生產(chǎn)線采集圖像對不同的BlockSize 值進行測試,測試結果如表5 所示??梢钥闯?,同一圖像在不同BlockSize 值條件下,二值化圖像會有變化,識別結果也有不同。同一圖像,若BlockSize 值過小,二值化圖像中的部分字符信息損失嚴重,導致出現(xiàn)誤識別;若BlockSize 值過大,二值化圖像中的字符出現(xiàn)粘連現(xiàn)象,出現(xiàn)誤識別的可能性會提升。同一生產(chǎn)線含有相同產(chǎn)品批號的不同圖像在相同BlockSize 值條件下,二值化圖像中字符信息保存完整程度不同,導致識別結果不同;同一生產(chǎn)線含有不同產(chǎn)品批號的不同圖像對BlockSize 值的要求也不同。
表5 BlockSize 值對識別結果的影響Table 5 Influence of Blocksize value to recognition result
通過大批量圖像測試,本文將BlockSize 的初始值設為35值。BlockSize必須為奇數(shù),但動態(tài)調(diào)整要適中,避免出現(xiàn)二值化圖像中字符信息損失嚴重和字符間粘連的現(xiàn)象,因此,在算法中對BlockSize 值的調(diào)整,設置了5次調(diào)整限制,并依據(jù)式(3)來改變BlockSize的數(shù)值,實現(xiàn)動態(tài)調(diào)整:
2.2.2 CRNN 識別引擎
利用經(jīng)過數(shù)據(jù)集訓練和邊界框優(yōu)化的G-YOLOv3模型,對從生產(chǎn)線采集的圖像進行批量處理切割,形成文本區(qū)域圖像,并選取產(chǎn)品批號圖像120 000 張,生產(chǎn)日期圖像30 000 張組成訓練集,制作相應文本進行訓練形成相應模型。選取8 000張產(chǎn)品批號圖像和2 000張生產(chǎn)日期圖像對CRNN 進行測試,生產(chǎn)日期字符文本識別可達到100%的正確率,但產(chǎn)品批號存在部分易混字符,統(tǒng)計結果如表6 所示??梢钥闯觯贑RNN 的測試中出現(xiàn)易混字符的頻率集中出現(xiàn)在5%以下,并且易混種類較少。同時結合表3~表5可知,訓練之后的CRNN字符識別性能要優(yōu)于Tesseract。CRNN 識別字符無需對圖像進行預處理,減少了時間損耗,同時可以使用GPU加速,但Tesseract識別字符需要預處理圖像進行增強,無法使用GPU 加速,因此,在字符識別速度上Tesseract要弱于CRNN。在內(nèi)存為16 GB 和顯卡為GTX 1060的計算機上進行測試,結果表明,在字符識別模塊中,CRNN 每次耗時45 ms 左右,Tesseract 每次耗時150 ms左右。綜合運行速度和識別字符性能,字符識別模塊中選用CRNN 進行字符識別。
表6 CRNN 測試結果Table 6 CRNN test result
字符識別模塊完成對目標文本區(qū)域的字符識別,其將識別結果輸入字符匹配模塊綜合判斷,然后輸出判別結果。字符匹配模塊流程如圖9 所示。
圖9 字符匹配模塊流程圖Fig.9 Flow chart of character matching module
生產(chǎn)日期為純數(shù)字文本,且長度較短(一般為7 個字符),形式固定,無需對其進行分段,可對識別文本直接匹配判斷輸出相應判別結果。產(chǎn)品批號是復雜的數(shù)字、字母、標點符號組合字符文本,文本長度存在變化且過長,文本內(nèi)容也在變化更新,存在容易出現(xiàn)易混字符的文本,對其進行分段全匹配。本文針對產(chǎn)品批號字符文本,依據(jù)表6 設計容錯字符生成算法,進而提升系統(tǒng)的整體性能。
1)掃描商品包裝外箱上的一維條形碼從生產(chǎn)管理系統(tǒng)獲取正確的產(chǎn)品批號字符文本,將文本中的標點符號剔除,統(tǒng)計剔除后字符文本的長度為L,設置分段數(shù)為5,則前4 小段各為個字符,第5 小段為個字符。對每小段進行容錯字符生成,產(chǎn)生模板組合字符文本。例如,小段“KFR”,經(jīng)過容錯字符生成算法處理后生成“KFRKFP”模板組合字符文本。若為相同條形碼,上述容錯處理算法只執(zhí)行一次。
2)對字符識別模塊輸入的識別結果進行標點符號剔除,和剩余字符相應的分段處理,形成小段文本。
3)將識別結果的小段文本與其對應的模板組合字符文本進行全字符匹配,輸出相應小段判別結果。
4)綜合各個小段判別結果,輸出整個識別文本判別結果。
字符匹配模塊中對易混字符的處理尤為重要,在保證系統(tǒng)滿足生產(chǎn)線實時性要求的條件下,依據(jù)表6 設計的容錯字符生成算法既能降低系統(tǒng)出現(xiàn)誤判的可能性,又能對外觀信息文本存在印刷質(zhì)量問題的商品進行及時報警提醒,保障了工廠生產(chǎn)線的正常運行。
將基于本文方法的系統(tǒng)在工廠生產(chǎn)線上進行實測,實現(xiàn)商品全覆蓋、實時監(jiān)測、自動統(tǒng)計、異常處理,生產(chǎn)線系統(tǒng)裝置示意圖如圖10 所示。
圖10 生產(chǎn)線系統(tǒng)裝置示意圖Fig.10 Schematic diagram of production line system
生產(chǎn)線計算機配置為內(nèi)存16 GB、顯卡GTX 1060,系統(tǒng)從相機拍照到輸出判別結果耗時3 s 左右,其中算法部分運行時間在200 ms 以內(nèi),準確率可到達99.5%,對存在字符印刷異常的商品實時報警提示,檢測出的存在印刷質(zhì)量問題的產(chǎn)品批號和生產(chǎn)日期字符文本部分圖像如表7 所示。
表7 存在印刷質(zhì)量問題的部分圖像Table 7 Some images with printing quality problems
針對工廠商品包裝外箱字符檢測問題,本文制作數(shù)據(jù)集并提出一種基于深度學習的字符識別與判斷方法。該方法合并YOLOv3 網(wǎng)絡的卷積層與批量歸一化層,引入邊框損失函數(shù)GIoU,并利用邊框調(diào)整優(yōu)化方法,使邊界框完全包含文本區(qū)域,降低誤識別率。同時,將經(jīng)過場景文本訓練的CRNN 應用于識別捕獲的文本圖片內(nèi)容,保證快速和高準確識別,并設計字符模板匹配方法減少誤判,保證生產(chǎn)線的良好運行。實驗與生產(chǎn)線實測結果表明,本文方法能夠達到全覆蓋、實時監(jiān)測、高準確率的應用目標。后續(xù)將研究深度卷積網(wǎng)絡的優(yōu)化方法和邊界框損失函數(shù)的調(diào)整方法,減少圖像處理過程,進一步提升系統(tǒng)的運行速度與識別精度。