李 帆,胡維平,劉北北,2,劉雨戈
1.廣西師范大學(xué) 電子工程學(xué)院,廣西 桂林 541000
2.中國(guó)科學(xué)院 自動(dòng)化研究所 蘇州研究院,江蘇 蘇州 215000
隨著人民生活水平的提高,人們對(duì)食品藥品安全的把控越來(lái)越嚴(yán)格,生產(chǎn)日期、產(chǎn)品批號(hào)等信息作為消費(fèi)者唯一判斷的標(biāo)準(zhǔn),其作用尤為重要。大部分生產(chǎn)廠家都是通過(guò)字符噴印技術(shù)將信息打印到產(chǎn)品的外包裝上,由于噴印機(jī)機(jī)械震動(dòng)、噴頭堵塞、缺墨等因素,噴印字符時(shí)不可避免的會(huì)出現(xiàn)字符漏噴、缺失或重疊等現(xiàn)象,嚴(yán)重影響產(chǎn)品的質(zhì)量問(wèn)題。近年來(lái),一些公司嘗試采用機(jī)器視覺(jué)檢測(cè)方案,極大地提高了商品生產(chǎn)的質(zhì)檢速率。但由于商品背景顏色各異、噴碼信息復(fù)雜多樣、形態(tài)大小不一,且常含有相似的干擾字體,極大地增加了噴碼字符的檢測(cè)難度。
噴碼質(zhì)檢行業(yè)中廠家需求各不相同,有的廠商只要求檢測(cè)噴碼的有無(wú),這類任務(wù)可采用目標(biāo)檢測(cè)算法,將噴碼字符區(qū)域看作一個(gè)待檢的整體。此方法準(zhǔn)確率高,檢測(cè)速度快,但是無(wú)法滿足高質(zhì)量的字符級(jí)質(zhì)檢要求,因此基于字符識(shí)別的檢測(cè)算法逐漸被應(yīng)用于噴碼質(zhì)檢行業(yè)中[1]。
傳統(tǒng)的字符檢測(cè)算法主要過(guò)程是:圖像預(yù)處理,提取目標(biāo)區(qū)域,字符區(qū)域二值化,水平投影行分割,垂直投影字符分割,最后使用SVM、AdaBoost等分類器進(jìn)行字符分類[2]。傳統(tǒng)算法存在理論性強(qiáng)、訓(xùn)練及推理速度快等特點(diǎn),但是需要手工設(shè)計(jì)特征,無(wú)法應(yīng)對(duì)復(fù)雜的背景環(huán)境,魯棒性不強(qiáng)。隨著深度學(xué)習(xí)技術(shù)在視覺(jué)檢測(cè)方向的普遍應(yīng)用,基于深度學(xué)習(xí)的字符識(shí)別算法也相繼被提出[3]。
目前,基于深度學(xué)習(xí)的字符識(shí)別技術(shù)普遍采用字符檢測(cè)加字符識(shí)別的方法。其中字符檢測(cè)算法主要有連接文本提議網(wǎng)絡(luò)CTPN[4]和目標(biāo)檢測(cè)網(wǎng)絡(luò)(如YOLO、SSD、R-CNN 系列等)。CTPN 算法將檢測(cè)區(qū)域拆分成細(xì)窄的檢測(cè)框,引入RNN提取序列特征,同時(shí)設(shè)計(jì)Siderefinement 來(lái)提升預(yù)測(cè)邊界框的精確度,但對(duì)于傾斜文本的檢測(cè)效果不好,且網(wǎng)絡(luò)推理速度較慢,無(wú)法滿足嵌入式端實(shí)時(shí)檢測(cè)的需求。兩階段目標(biāo)檢測(cè)算法先生成候選區(qū)域再進(jìn)行目標(biāo)檢測(cè),準(zhǔn)確率很高但網(wǎng)絡(luò)推理速度較慢。單階段的目標(biāo)檢測(cè)算法雖然精度略低,但檢測(cè)速度快,其中YOLO[5]系列的v5版本不僅在速度上優(yōu)勢(shì)明顯,而且模型體積小,部署方便,但應(yīng)用于噴碼字符定位時(shí),其目標(biāo)邊界框回歸精度仍不能完全滿足字符識(shí)別的要求,同時(shí)為了在嵌入式端完成實(shí)時(shí)檢測(cè)效果,模型推理速度也有待提高。
字符識(shí)別的算法主要包括分割的單字符識(shí)別和不分割的文本識(shí)別等方法。其中分割的單字符分類識(shí)別將字符串切割成單個(gè)字符,再使用圖像分類網(wǎng)絡(luò)對(duì)其進(jìn)行分類識(shí)別[6],但每個(gè)字符的切割效果會(huì)直接影響字符識(shí)別的準(zhǔn)確率,噴碼字符點(diǎn)狀不連續(xù)的特征,無(wú)疑是字符分割的最大障礙,另外背景復(fù)雜,字符較小,噴印不清晰等因素都會(huì)影響分割效果。不分割的文本識(shí)別一般用Seq2Seq[7]+Attention[8]和CRNN+CTC[9-10]兩種方法,Seq2Seq+Attention 的算法包括encoder 和decoder 兩部分,encoder 網(wǎng)絡(luò)通過(guò)CNN 提取圖片特征,BLSTM 得到橫向序列,decoder解碼部分采用LSTM和注意力機(jī)制。CRNN 算法將序列標(biāo)注算法嵌套在深度卷積神經(jīng)網(wǎng)絡(luò)中,支持端到端的梯度反向傳播,在IIIT5K、SVT 以及ICDAR系列標(biāo)準(zhǔn)數(shù)據(jù)集中取得了優(yōu)于現(xiàn)有算法的結(jié)果。
在分析研究現(xiàn)有算法的基礎(chǔ)上,本文提出采用基于YOLOv5+CRNN的字符識(shí)別技術(shù),免去字符分割步驟,直接實(shí)現(xiàn)對(duì)定位后的整行噴碼字符識(shí)別,提高整體系統(tǒng)的噴碼識(shí)別準(zhǔn)確率。文字檢測(cè)網(wǎng)絡(luò)采用改進(jìn)的YOLOv5網(wǎng)絡(luò),字符識(shí)別網(wǎng)絡(luò)采用CRNN 網(wǎng)絡(luò),其主要?jiǎng)?chuàng)新和貢獻(xiàn)包含以下內(nèi)容:對(duì)YOLOv5文字檢測(cè)網(wǎng)絡(luò)增加注意力機(jī)制[11],改進(jìn)損失函數(shù),進(jìn)行模型剪枝壓縮[12-13],以提高字符定位精度和檢測(cè)速度;針對(duì)噴碼字符區(qū)域背景復(fù)雜且字符存在傾斜的問(wèn)題,進(jìn)行背景擦除和透視變換等預(yù)處理任務(wù)后再送入CRNN字符識(shí)別網(wǎng)絡(luò)。此外,為了提高深度學(xué)習(xí)算法的推理速度,方便嵌入式等邊緣設(shè)備的算法部署,本系統(tǒng)還對(duì)訓(xùn)練后的模型進(jìn)行了模型量化和裁剪。實(shí)驗(yàn)表明,本文所采用的方法具有高精度、高速度和良好的魯棒性,對(duì)噴碼字符的檢測(cè)有著重要的意義和應(yīng)用價(jià)值,并且可實(shí)際應(yīng)用于工業(yè)生產(chǎn)線部署。
噴碼字符檢測(cè)系統(tǒng)由硬件和軟件兩部分組成。硬件系統(tǒng)主要包括工業(yè)相機(jī)及支架、環(huán)形光源、嵌入式設(shè)備、顯示器等。針對(duì)噴碼識(shí)別需求,選擇海康MV-CA003-21UC 工業(yè)相機(jī),最高幀率可達(dá)814.5 frame/s,最短曝光時(shí)間40 μs,可滿足噴碼圖像的采集。嵌入式平臺(tái)采用NVIDIA TX2,共2 塊CPU 和1 塊有256 個(gè)CUDA 核心的GPU,8 GB 的運(yùn)行內(nèi)存,32 GB Flash 存儲(chǔ)器。工作在最大性能時(shí)功耗不超過(guò)15 W,可在有限的條件下實(shí)現(xiàn)高性能的并行計(jì)算。
軟件系統(tǒng)采用Ubuntu18.04 操作系統(tǒng),為了加快模型推理速度,更好地適配嵌入式底層硬件,選取Tengine嵌入式輕量級(jí)AI 推理框架。該框架將程序體積壓縮至3 MB 左右,并且支持嵌入式端NPU、GPU(CUDA/TensorRT)等加速。
本文所設(shè)計(jì)的噴碼字符檢測(cè)系統(tǒng)主要應(yīng)用于噴碼生產(chǎn)線噴碼機(jī)后端,是一種在線實(shí)時(shí)檢測(cè)系統(tǒng),其工作流程是流水線商品觸發(fā)工業(yè)相機(jī)采集單張圖片信息,系統(tǒng)完成噴碼字符質(zhì)檢任務(wù)并剔除噴碼有缺陷的商品,整體工作流程如圖1所示。
圖1 噴碼檢測(cè)系統(tǒng)流程圖Fig.1 Flow chart of coding inspection system
對(duì)于噴碼字符的識(shí)別,首先要定位商品圖像中噴碼字符的位置,因此識(shí)別任務(wù)需要包括兩個(gè)步驟,即字符檢測(cè)(字符定位)和字符識(shí)別,并將輸出字符與欲噴印字符進(jìn)行對(duì)比。噴碼檢測(cè)任務(wù)如圖2所示。
圖2 噴碼檢測(cè)任務(wù)圖Fig.2 Inkjet inspection task map
2.1.1 YOLOv5算法原理
YOLOv5結(jié)合了大量計(jì)算機(jī)視覺(jué)相關(guān)技術(shù),網(wǎng)絡(luò)模型小、推理速度快。網(wǎng)絡(luò)結(jié)構(gòu)主要改進(jìn)了Backbone 與Neck部分,同時(shí)對(duì)輸入端的數(shù)據(jù)預(yù)處理也做了大量細(xì)節(jié)的改進(jìn)。網(wǎng)絡(luò)采用了Mosaic數(shù)據(jù)增強(qiáng)的方法,隨機(jī)選取4張圖像縮放其比例并重新組合成一張圖像,提高了小目標(biāo)的識(shí)別效果,還有助于減少對(duì)顯卡內(nèi)存的需求,提高模型訓(xùn)練效率。YOLOv5使用CSP-Darknet作為特征提取網(wǎng)絡(luò),在很大程度上避免了網(wǎng)絡(luò)中梯度重復(fù)的問(wèn)題,在特征圖中融合梯度信息,既提高了檢測(cè)速度,又保證了準(zhǔn)確率。Neck特征金字塔結(jié)構(gòu),增強(qiáng)了不同大小目標(biāo)的檢測(cè)效果。YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)主要包含以下三部分:
(1)Backbone主干網(wǎng)絡(luò)提取圖像的高維特征信息;(2)Neck融合圖像不同維度的特征信息;
(3)Head是預(yù)測(cè)層,生成邊界框并預(yù)測(cè)類別。
本文選擇YOLOv5 網(wǎng)絡(luò)寬度最小、復(fù)雜度最低、檢測(cè)速度最快的YOLOv5s 版本并加以改進(jìn),YOLOv5s 網(wǎng)絡(luò)檢測(cè)流程如圖3所示。
圖3 YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 YOLOv5s network structure
2.1.2 結(jié)合注意力機(jī)制的YOLOv5s模型
注意力機(jī)制(attention mechanism)是一種資源分配機(jī)制,其思想是在原始數(shù)據(jù)中找到內(nèi)在的相關(guān)性,突出關(guān)聯(lián)性強(qiáng)而忽略掉一些關(guān)聯(lián)性弱的特征信息。本文希望網(wǎng)絡(luò)只關(guān)注點(diǎn)狀的噴碼區(qū)域特征,因此在特征提取網(wǎng)絡(luò)中加入注意力機(jī)制,可有效提高字符檢測(cè)算法的準(zhǔn)確率。
本文采用輕量級(jí)的注意力模塊ECA-Net[14],它只涉及少量的參數(shù),在降低復(fù)雜度的同時(shí)能保持較高的檢測(cè)性能,既避免了特征維度的縮減,又增加了通道間信息的交互。ECA-Net的注意力權(quán)重計(jì)算過(guò)程分為兩步:首先通過(guò)對(duì)特征圖進(jìn)行全局平均池化產(chǎn)生向量,再通過(guò)一維卷積來(lái)完成跨通道間的信息交互,得到每個(gè)通道的權(quán)重。在計(jì)算通道特征yi的權(quán)重wi時(shí),只需考慮和它相鄰的k個(gè)值之間的信息,計(jì)算公式如下:
本文采用的注意力模塊參數(shù)確定為k=5,C=8,其結(jié)構(gòu)如圖4所示。
注意力模塊的作用在于對(duì)信息進(jìn)行細(xì)化分配和處理,所以本文在YOLOv5s 的特征提取網(wǎng)絡(luò)Backbone 之后、Head之前添加ECA-attention模塊,讓網(wǎng)絡(luò)更加關(guān)注點(diǎn)狀字符特征的提取。改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如5所示。
2.1.3 損失函數(shù)的改進(jìn)
Yolov5s 作為字符定位算法,其邊界框回歸區(qū)域的正確率直接影響到字符識(shí)別的正確率。YOLOv5s的回歸損失采用GIoU 損失函數(shù),雖然考慮到了預(yù)測(cè)框和真實(shí)框的非重合區(qū)域,但如果標(biāo)注的真實(shí)框完全包圍預(yù)測(cè)框時(shí),此時(shí)損失函數(shù)無(wú)法回歸,使得網(wǎng)絡(luò)收斂速度變慢。因此,本文采用CIoU 損失函數(shù)[15]計(jì)算邊界框回歸損失,不僅考慮了中心點(diǎn)之間的距離,還添加了寬高比因子,能夠更準(zhǔn)確地回歸預(yù)測(cè)框。CIoU 損失函數(shù)的值用LCIoU表示,計(jì)算公式如式(6)所示:
原始的YOLOv5s 模型權(quán)重大小為21 MB,本文經(jīng)過(guò)稀疏訓(xùn)練、裁剪部分卷積核后模型大小11 MB 左右。模型參數(shù)量越少,計(jì)算所需的時(shí)間越短,因此裁剪后的模型在嵌入式等低算力平臺(tái)可以有更快的推理速度。
CRNN 首先由卷積神經(jīng)網(wǎng)絡(luò)(CNN)提取圖像卷積特征,再利用長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)進(jìn)一步提取圖像卷積特征中的序列特征,最后使用CTC 算法[17]代替Softmax解決樣本無(wú)法對(duì)齊的問(wèn)題。
CRNN 網(wǎng)絡(luò)由卷積層、循環(huán)層和轉(zhuǎn)錄層三部分組成,網(wǎng)絡(luò)結(jié)構(gòu)框架如圖6所示。輸入圖像分辨率為100×32,網(wǎng)絡(luò)首先采用CNN 提取圖片中噴碼字符區(qū)域的特征,轉(zhuǎn)換為特征序列后再由循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)進(jìn)行單幀預(yù)測(cè),最后由轉(zhuǎn)錄層將預(yù)測(cè)結(jié)果翻譯為字符序列,輸出識(shí)別結(jié)果。
圖6 CRNN網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.6 CRNN network structure diagram
2.1.4 稀疏訓(xùn)練
對(duì)于一個(gè)訓(xùn)練好的模型,通常會(huì)存在部分卷積核參數(shù)值趨近于零的情況,這部分卷積核的貢獻(xiàn)實(shí)質(zhì)上是很小的,倘若裁剪這些卷積核后再進(jìn)行微調(diào)是可以恢復(fù)到之前的檢測(cè)精度[16]。如果對(duì)權(quán)重參數(shù)加以限制,如L1正則化,訓(xùn)練得到的參數(shù)結(jié)果就會(huì)比較稀疏,更加利于裁剪。本文選擇BN 層的尺度因子作為裁剪channel 的衡量指標(biāo),在訓(xùn)練時(shí),對(duì)BN 層的尺度因子添加L1 正則化,達(dá)到稀疏化的作用,這樣就可以通過(guò)BN層的尺度因子是否趨于零來(lái)識(shí)別不重要的channel。引入一個(gè)尺度因子γ,與每一個(gè)channel的輸出相乘,聯(lián)合訓(xùn)練權(quán)重和尺度因子,對(duì)尺度因子稀疏正則化,最后裁剪掉較小的尺度因子及其對(duì)應(yīng)的channel。訓(xùn)練的損失函數(shù)如下:
噴碼字符識(shí)別相較于其他文本識(shí)別任務(wù),不同之處在于噴碼定位區(qū)域背景復(fù)雜,且由于噴碼機(jī)噴頭的震動(dòng),傳送帶的運(yùn)動(dòng)導(dǎo)致部分待檢字符存在傾斜現(xiàn)象。針對(duì)此問(wèn)題,本文在對(duì)定位后的噴碼區(qū)域進(jìn)行背景擦除和透視變換處理后,再送入CRNN字符識(shí)別網(wǎng)絡(luò)。
透視變換(perspective transformation)是指將透視面繞透視軸旋轉(zhuǎn)某一角度,即將原始圖片按照指定的坐標(biāo)規(guī)則變換到新的位置,在保證固定區(qū)域變換的過(guò)程中,可以忽略整幅圖像其他位置的形狀和坐標(biāo)信息。變換規(guī)則通過(guò)標(biāo)注原圖上任意四個(gè)坐標(biāo)點(diǎn)和與之相對(duì)應(yīng)的預(yù)設(shè)位置坐標(biāo)計(jì)算得到一個(gè)變換矩陣,再通過(guò)變換矩陣將原圖變換成新的圖片,通用的變換公式為:
本文將送入噴碼識(shí)別的照片進(jìn)行坐標(biāo)信息的判斷,當(dāng)坐標(biāo)相差一定的閾值(旋轉(zhuǎn)超過(guò)3°),則視為字符傾斜過(guò)度,采用透視變換,將定位到的傾斜字符區(qū)域拉升回正確位置,圖7是透視變換的結(jié)果。
圖7 透視變換矯正字符Fig.7 Perspective transformation to correct characters
實(shí)驗(yàn)采用的數(shù)據(jù)集為桂林金雞嶺德君旺食品有限公司生產(chǎn)的12類糕點(diǎn)盒子,其中每類200張,共2 400張包含點(diǎn)狀生產(chǎn)日期信息的.jpg格式圖片,均為MV-CA003-21UC工業(yè)相機(jī)在生產(chǎn)流水線并且環(huán)形補(bǔ)光燈環(huán)境下拍攝,并進(jìn)行手工標(biāo)注。本文將2 000張作為訓(xùn)練集,字符定位數(shù)據(jù)集通過(guò)隨機(jī)裁剪、色彩空間調(diào)整和馬賽克增強(qiáng)等方式擴(kuò)充得到4 000張。字符識(shí)別數(shù)據(jù)集通過(guò)批量提取噴碼字符區(qū)域,對(duì)其增加Alpha 透明通道,然后設(shè)定區(qū)域范圍后隨機(jī)粘貼組合產(chǎn)生不同生產(chǎn)日期字符,最終擴(kuò)充得到6 000張訓(xùn)練集。
為了在短時(shí)間內(nèi)得到好的訓(xùn)練效果,本實(shí)驗(yàn)訓(xùn)練和測(cè)試過(guò)程均在電腦端完成。利用GPU加速訓(xùn)練和推理,硬件上搭載GTX1060 MAX GPU,英特爾i7 8700處理器,使用Ubuntu18.04系統(tǒng),配置PyTorch1.8+python3.8的虛擬環(huán)境,最后將訓(xùn)練好的模型部署到NVIDIA TX2上測(cè)試,并進(jìn)行工廠生產(chǎn)線實(shí)測(cè)。PC 端和NVIDIA TX2的配置對(duì)比如表1所示。
表1 PC和NVIDIA TX2配置對(duì)比Table 1 Comparison of PC and NVIDIA TX2 configuration
對(duì)YOLOv5s字符定位網(wǎng)絡(luò)和CRNN字符識(shí)別網(wǎng)絡(luò)分別訓(xùn)練,并進(jìn)行相關(guān)測(cè)試。部署時(shí)利用字符定位網(wǎng)絡(luò)輸出的字符區(qū)域坐標(biāo)在原圖上進(jìn)行裁剪,再將裁剪后只包含字符區(qū)域的圖片送入CRNN網(wǎng)絡(luò)進(jìn)行字符識(shí)別。
字符定位網(wǎng)絡(luò)實(shí)驗(yàn)優(yōu)化算法采用Adam優(yōu)化器,初始化學(xué)習(xí)率設(shè)置為1E?4,batch size為16,epoch為100;所有權(quán)重初始化均值為0,標(biāo)準(zhǔn)差為0.01的高斯分布,訓(xùn)練過(guò)程如圖8 所示。字符識(shí)別網(wǎng)絡(luò)實(shí)驗(yàn)優(yōu)化算法采用Adam 優(yōu)化器,初始化學(xué)習(xí)率設(shè)置為1E-4、batch size 為64,epoch為5 000。
圖8 訓(xùn)練參數(shù)曲線Fig.8 Training parameter curves
為了驗(yàn)證本文提出的YOLOv5s+CRNN 的噴碼字符檢測(cè)方法,在500 張測(cè)試數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),并分別對(duì)各網(wǎng)絡(luò)的字符定位效果和字符識(shí)別效果進(jìn)行性能評(píng)價(jià)。字符定位準(zhǔn)確率表示在信度閾值為0.6 時(shí),正確檢測(cè)出噴碼字符區(qū)域的個(gè)數(shù)除以檢測(cè)總數(shù)。字符識(shí)別率的評(píng)價(jià)指標(biāo)采用字符準(zhǔn)確度(char accuracy)來(lái)表示。字符準(zhǔn)確度指預(yù)測(cè)的字符串與真實(shí)字符串相比得到的準(zhǔn)確率,對(duì)于英文單詞“g-o-o-d”來(lái)說(shuō),如果預(yù)測(cè)序列為“g-o-a-d”,則在評(píng)估的時(shí)候逐字對(duì)照,4個(gè)字符預(yù)測(cè)對(duì)了3 個(gè),因此該字符串預(yù)測(cè)序列的準(zhǔn)確率為75%。模型推理時(shí)間表示測(cè)試一張照片所耗時(shí)間,單位為毫秒(ms),實(shí)時(shí)檢測(cè)速度采用幀率來(lái)表示,即每秒檢測(cè)圖片的張數(shù)。實(shí)驗(yàn)的檢測(cè)速度均是各模型在PC端利用1060 GPU設(shè)備加速檢測(cè)得到。
表2 展示了YOLOv5s 定位算法改進(jìn)部分的消融實(shí)驗(yàn)結(jié)果。本文對(duì)其增加ECA注意力模塊和改進(jìn)損失函數(shù),分別能提升2.8 個(gè)百分點(diǎn)和1.2 個(gè)百分點(diǎn)的檢測(cè)精度;再對(duì)網(wǎng)絡(luò)進(jìn)行稀疏訓(xùn)練和通道剪枝后模型減小了6.7 MB,檢測(cè)時(shí)間縮短了6.5 ms。表3 對(duì)比了在CRNN模型前加入透視變換矯正和背景擦除等預(yù)處理后,對(duì)字符識(shí)別精度的影響。
表2 改進(jìn)定位算法消融實(shí)驗(yàn)Table 2 Ablation experiments with improved positioning algorithms
表3 改進(jìn)識(shí)別算法消融實(shí)驗(yàn)Table 3 Ablation experiments with improved recognition algorithms
表4 對(duì)比了幾種常見(jiàn)的不分割字符檢測(cè)方案。其中將字符定位和識(shí)別網(wǎng)絡(luò)合在一起的端到端算法最常見(jiàn)的是ABCNet 和FOTS 檢測(cè)算法,特點(diǎn)是網(wǎng)絡(luò)模型復(fù)雜,雖然檢測(cè)精度很高但是推理速度極慢,不適合低算力設(shè)備的部署。目前常用的CPTN+CRNN 字符檢測(cè)方法在定位時(shí)采用連接文本提議網(wǎng)絡(luò)CPTN,將文字沿文本方向切割成更小且寬度固定的Proposal,極大地提高了檢測(cè)定位的精度,在本文所用數(shù)據(jù)集上達(dá)到了99.8%的定位準(zhǔn)確率,但由于其網(wǎng)絡(luò)模型復(fù)雜,導(dǎo)致參數(shù)量很大,推理時(shí)間極慢,在搭載1060 顯卡的PC 端檢測(cè)速度只有每秒4.5幀左右。
表4 不同方案的效果對(duì)比Table 4 Comparison of Effects of different programs
本文提出將YOLOv5s目標(biāo)檢測(cè)網(wǎng)絡(luò)與CRNN網(wǎng)絡(luò)相結(jié)合,在未作任何改進(jìn)的情況下,驗(yàn)證其檢測(cè)精度和速度,結(jié)果如表4 所示,定位精度與CPTN 相比下降了3.6 個(gè)百分點(diǎn),由于定位區(qū)域的偏差不同影響導(dǎo)致了字符識(shí)別率下降了4.4 個(gè)百分點(diǎn),但是模型參數(shù)量減小了173 MB,檢測(cè)速度高達(dá)每秒32幀。最后,針對(duì)噴碼字符檢測(cè)的特定任務(wù),本文從網(wǎng)絡(luò)結(jié)構(gòu)、特征提取以及模型裁剪等地方加以改進(jìn),并對(duì)定位后的字符區(qū)域做相應(yīng)的透視變換矯正處理,提高了CRNN字符識(shí)別精度。最終在PC 端測(cè)試結(jié)果,字符定位精度和識(shí)別率分別為99.6%和95.5%,總模型大小僅有21 MB,在大大降低了模型參數(shù)量的情況下還提高了識(shí)別率。
為了節(jié)省硬件成本,加速算法的快速落地,解決工廠生產(chǎn)線的實(shí)際檢測(cè)需求,本系統(tǒng)將改進(jìn)后的算法進(jìn)一步量化與裁剪,利用Tengine嵌入式端的深度學(xué)習(xí)框架,結(jié)合QT5 利用C++編寫端側(cè)推理代碼,部署至NVIDIA TX2嵌入式平臺(tái),并利用TensorRT7.1加速推理計(jì)算。
在移動(dòng)設(shè)備上計(jì)算sigmoid 函數(shù)的代價(jià)要比ReLU等線性激活函數(shù)更大,因此使用線性的激活函數(shù)分段近似,使計(jì)算更容易,可以大大提高推理效率。YOLOv5s采用Swish激活函數(shù),計(jì)算公式如下:
雖然這種非線性激活函數(shù)可以提高計(jì)算精確度,但是它在低算力的嵌入式環(huán)境中耗時(shí)嚴(yán)重,因此本文使用hard-Swish代替Swish激活函數(shù),再部署至嵌入式平臺(tái),可以大大提高模型推理運(yùn)算速度。
為了驗(yàn)證改進(jìn)算法的有效性和可行性,系統(tǒng)采用??倒I(yè)相機(jī)在桂林某食品加工包裝廠實(shí)際環(huán)境中進(jìn)行實(shí)時(shí)測(cè)試,并在TX2 平臺(tái)利用TensorRT 調(diào)用GPU 進(jìn)行推理,檢測(cè)效果如圖9所示。
圖9 在線識(shí)別效果Fig.9 Online recognition effect
本文在工廠流水線自然環(huán)境下,固定光源與相機(jī),真實(shí)噴印場(chǎng)景下測(cè)試1 000 個(gè)商品,統(tǒng)計(jì)得到的檢測(cè)性能數(shù)據(jù)如表5所示。
表5 TX2平臺(tái)測(cè)試結(jié)果Table 5 TX2 platform test results
測(cè)試結(jié)果表明,本文所提方法最終可在NVIDIA TX2嵌入式平臺(tái)實(shí)現(xiàn)了每秒28幀的檢測(cè)速度。對(duì)比PC端的檢測(cè)效果,由于部署前再次裁剪和替換了一些網(wǎng)絡(luò)結(jié)構(gòu),但對(duì)檢測(cè)性能影響不大,其定位精度僅下降了0.2個(gè)百分點(diǎn),識(shí)別率降低了0.5 個(gè)百分點(diǎn)。經(jīng)在某食品加工廠測(cè)試,噴碼流水線的速度大約在160 m/min,每秒噴印20 個(gè)商品左右,因此在嵌入式設(shè)備上的實(shí)時(shí)檢測(cè)速度(每秒檢測(cè)28 個(gè))能夠滿足工廠的實(shí)際檢測(cè)需求,并且所使用的嵌入式設(shè)備在功耗、體積以及成本上與工控機(jī)、電腦、顯卡等昂貴的設(shè)備相比都具有巨大的優(yōu)勢(shì)。
本文結(jié)合深度學(xué)習(xí)中的字符識(shí)別方法,提出了一種基于嵌入式平臺(tái)的不分割的噴碼字符檢測(cè)算法,提高了字符檢測(cè)的精準(zhǔn)度與速度。將YOLOv5 與注意力機(jī)制相結(jié)合,有利于點(diǎn)狀字符特征的提取,有效地提高了噴碼字符區(qū)域的定位精度,對(duì)定位后的圖像區(qū)域采用透視變換和擦除背景等處理,提高了字符識(shí)別率。最后裁剪掉對(duì)嵌入式端不友好的結(jié)構(gòu)后,利用Tengine AI推理框架實(shí)現(xiàn)了算法在嵌入式設(shè)備NVIDIA TX2 上的部署。算法檢測(cè)速度可達(dá)到28 frame/s,滿足了實(shí)時(shí)性的要求,最終在噴碼工廠流水線實(shí)測(cè)字符識(shí)別率可達(dá)95%。下一步將繼續(xù)優(yōu)化算法,提升噴碼字符的識(shí)別率,同時(shí)嘗試訓(xùn)練更多的噴碼字符數(shù)據(jù)集,以滿足在更多不同類型字體的噴碼字符產(chǎn)品上的應(yīng)用,使得算法更具有普適性。