余先濤,秦 巖
(武漢理工大學 機電工程學院,湖北 武漢 430070)
QR碼(quick response code)是一種二維條碼,目前廣泛應用于身份驗證、安全防偽、電子商務等領域。如圖1所示,QR碼圖案由深、淺兩色的單位模塊排列組成,分為編碼區域和功能區域。編碼區域用于存儲數據信息,包括數據碼字與糾錯碼字。功能區域用于輔助識別,主要包括位置探測圖形與校正圖形等。QR碼識別過程包括圖像預處理、定位、校正、解碼等流程,其中定位算法的性能對QR碼識別率的影響最為顯著,是識別過程中至關重要的一步。

圖1 QR碼結構
廣義的QR碼定位包括QR碼區域分割與QR碼坐標計算兩個過程。區域分割將QR碼圖案從背景圖案中分離出來,從而縮小后續識別流程的作業區域。坐標計算確定QR碼關鍵點在圖像中的坐標,后續識別流程據此坐標對QR碼圖案進行校正后,確定QR碼編碼區域內數據的排列,進而按解碼規則完成解碼。為方便表述,將QR碼區域分割記為粗定位,將QR碼坐標計算記為精定位。
在粗定位算法中,根據神經網絡自動提取特征檢測QR碼。這種基于深度學習的算法[1-2],較基于LBP(local binary pattern)、SIFT(scale invariant feature transform)、HOG(histogram of oriented gradient)等人工紋理特征的算法[3-5]在復雜條件下的定位效果更穩定。但現有算法所使用的網絡結構一般較為龐大,參數量大,不適用于運算能力有限的計算機系統。對此,筆者基于YOLOv3[6](you only lock once vesion 3)深度學習模型,設計了一種輕巧的QR碼檢測模型,使算法在復雜條件下取得較好定位效果,同時保持在運算能力有限的計算機上運行的實時性。
常用精定位算法有基于角點檢測的算法[7-8]、基于包圍關系的算法[9]與基于比例關系的算法[10-11],其中基于比例關系的算法以其計算簡單、實時性好、魯棒性好的特點應用最為廣泛。但算法的定位比例關系(1∶1∶3∶1∶1)較為嚴格,要求位置探測圖形結構保持較好的完整性,在污損情況下應用能力較差。對此,筆者對算法作出改進,放寬定位比例關系(1∶1∶3或3∶1∶1),并通過評分系統抑制誤檢,在保證定位精度的情況下提高了算法定位污損位置探測圖形的能力。
YOLOv3是一個端到端的目標檢測模型,是當前目標檢測領域最優秀的算法之一。YOLOv3通過全卷積網絡Darknet-53在輸入圖像中提取特征,依據輸出特征映射的尺寸將輸入圖像劃分為多個單元格,在每個單元格上預測目標種類、邊框與置信度。通過在不同大小的單元格上進行預測,YOLOv3實現了對目標的多尺度檢測。YOLOv3面向多目標種類的復雜應用場景,網絡層數深,檢測能力強,對計算機的運算能力要求高。而在QR碼的部分應用場景中,粗定位算法運行于運算能力有限的計算機系統中,YOLOv3無法滿足其實時性要求。另一方面,在QR碼粗定位中,檢測目標單一,QR圖案特征明顯,且僅需確定QR碼的大致位置區域,因此對算法的特征提取能力與定位精度要求較低。因此,筆者在YOLOv3的基礎上,精簡卷積網絡層數與通道數,建立了既能滿足粗定位精度需求又能在運算能力有限的計算機上保證定位速度的卷積神經網絡模型-YOLO-QR。
(1)網絡層數大量減少。YOLO-QR僅使用9層卷積層提取特征,并且卷積層的通道數量較YOLOv3大量縮減,減少了網絡參數量,降低了計算量。
(2)單尺度預測。由于模型的檢測對象僅為QR碼一個種類,即使考慮到圖案采集距離的變化,QR碼在輸入圖像中的面積占比變化仍然有限。因此,在網絡設計時舍棄了YOLOv3的多尺度預測,僅使用一個尺度。
(3)使用最大池化層實現張量尺寸變化。不同于YOLOv3中通過增大卷積步長實現張量尺寸變化,YOLO-QR由最大池化操作實現張量尺寸變化。池化層卷積核大小均為2×2,步長為1。經5次最大池化操作后,張量尺寸縮小為初始輸入的1/32。

圖2 YOLO-QR網絡結構
(1)數據集制作。采集7 000張QR碼圖像制作出QR碼數據集,用于模型訓練與測試。數據集中共包含7 000個背景雜亂、角度不一、光照不同、完整或污損的QR碼。將其中6 000張圖像以90:1:9的比例,劃分為訓練集、驗證集與測試集Ⅰ。將另外1 000張與前6 000張背景不同的圖像作為測試集Ⅱ,用于測試模型在陌生背景中的定位性能。
(2)模型訓練的軟硬件環境如表1所示。

表1 模型訓練的軟硬件環境
(3) 訓練結果。經10 000次迭代后,模型的損失值loss值穩定在0.2左右,平均交并比IOU穩定在0.85左右。以20次迭代為步長,取平均值,得到訓練過程中平均loss值及平均IOU值變化曲線,如圖3所示。

圖3 訓練過程的loss曲線與IOU曲線
在表1所示的軟硬件環境上對模型進行測試,結果如表2所示。由表2可知,在兩個測試集上,模型召回率均大于等于99%,平均IOU均大于0.8,說明算法取得了較好的QR碼圖案識別率與分割準確度。測試集Ⅱ的兩項評價指標都低于測試集Ⅰ,說明相較于已知背景,模型在陌生背景中的粗定位能力有所下降。但即使如此,99.00%的召回率與80.74%的平均交并比仍足以滿足粗定位分割QR碼大致位置區域的精度需求。

表2 YOLO-QR模型測試結果
部分測試樣本的定位效果如圖4所示,圖4中顯示了模型所分割出的QR碼位置區域及置信度??梢钥吹?,模型對多種背景、多種角度、多種尺寸、遮擋與污損破壞的QR碼都有較好的定位能力。
其中,1-(i/2K)為線性衰減系數,列表中位置越靠后的點對距離的貢獻越小,Ia(i)返回列表Oa中位于第i位的數據點P,例如圖1中Ia(0)返回點a。Rb(P)返回點P位于列表Ob中的位置,由于列表里只包含前K個最近鄰居,點P有可能不存在于Ob中,故Rb(P)為:

圖4 模型定位效果
在運算量上,YOLO-QR與YOLOv3的數據對比如表3所示。由表3可知,YOLO-QR的單幀定位時間約為YOLOv3的1.82%,YOLO-QR的權重文件大小約為YOLOv3的1.17%,反映了該模型結構的輕巧性。此外,由于測試平臺為普通PC,且無GPU加速,在測試中仍取得0.12 s的檢測時間,說明算法在計算能力有限的計算機上能夠滿足實時性要求。

表3 YOLO-QR與YOLOv3運算量對比
如圖5所示,QR碼位置探測圖形由3層同心的連通域組成,邊長大小分別為7、5、3個單位模塊。對于這樣的結構組成,任何穿過內層連通域邊緣對邊的直線,覆蓋在位置探測圖形各段的比例均為1:1:3:1:1,如圖6所示?;诒壤P系的傳統精定位算法即根據這一具有旋轉不變性的比例特征,在圖像中統計像素排列,將滿足比例關系的位置探測圖形從圖像中定位出來。
在惡劣的應用場景中,存在QR碼圖案被污漬、磨損等情況。此時,若污損位置處于QR碼編碼區域中,由于存在糾錯碼字,污損程度在糾錯范圍內的QR碼仍可由普通算法進行識別。而如圖7所示,若污損位于QR碼位置探測圖形上,并使其符號特征受到破壞不能滿足前述比例關系時,傳統算法則無法定位出位置探測圖形,進而造成QR碼識別失敗,限制了QR碼抵抗污損的能力。因此對傳統算法在特征檢測上作出了改進,降低定位條件,提高算法定位污損位置探測圖形的能力。

圖5 QR碼位置探測圖形結構

圖6 直線的覆蓋比例

圖7 位置探測圖形污損的QR碼
圖8為兩個污損位置探測圖形,比例特征受到不同的破壞,在水平與垂直兩個方向上的黑白像素連續段的比例關系分別為:1∶1∶3與1∶1∶3∶1∶1、3∶1∶1與1∶1∶3∶1∶1,均未達到傳統算法的比例條件。但其仍保留著寬松的比例關系:1∶1∶3或3∶1∶1,因此若將定位比例條件放寬,仍然能夠將這些位置探測圖形從QR碼圖案中提取出來。

圖8 污損位置探測圖形的比例關系
在降低比例條件的同時,增加了將QR碼編碼區域的局部圖案誤檢為位置探測圖形的概率。如圖9所示,編碼區域的局域圖案與位置探測圖形的一部分組成的一個局部區域,在水平與垂直方向上同樣滿足寬松比例關系(3∶1∶1與1∶1∶3),若直接使用降低后的比例關系,會產生對編碼區域圖案的誤檢。在進一步對比分析后,發現污損位置探測圖形較滿足寬松比例關系的局部編碼區域具有更顯著的比例特征表達。

圖9 滿足低比例關系的QR碼編碼區域
(1)部分污損位置探測圖形仍保持嚴格比例關系。部分污損程度較低的位置探測圖形仍在一個或兩個方向上保持嚴格比例關系(1∶1∶3∶1∶1),而誤檢的QR碼局部區域通常僅滿足降低后的寬松比例關系(1∶1∶3或3∶1∶1)。
(2)部分污損位置探測圖形保持比例關系的像素行或列跨度大。由于污損程度不同,污損位置探測圖形維持比例關系的跨度不同,最高仍可達到3個單位模塊跨度,如圖10(a)所示。而滿足比例關系的編碼區域通常僅在一個單位模塊跨度上保持著比例關系,如圖10(b)所示。

圖10 滿足比例關系的像素跨度
(3)部分誤檢的圖案區域,比例關系的基本單位大于1個單位模塊,而實際位置探測圖形的比例單位均應為1個單位模塊。
根據上述特點,在算法中加入評分系統,依據比例特征的表達程度對候選區域進行評分,進而篩選出比例特征表達更顯著的位置探測圖形。
改進的精定位算法流程如圖11所示。

圖11 精定位流程圖
具體實施步驟如下:
(1)對候選區域進行評分。對QR碼位置區域進行掃描,統計當前區域內黑、白連續像素的數量關系,將滿足定位比例關系的區域記為候選位置探測圖形,按圖12所示評分機制計算其單次得分,并由像素的數量計算出中心坐標與單位模塊尺寸。

圖12 精定位評分機制
具體計算方法為:
①在橫向與縱向兩個方向上對當前區域進行評分,對于滿足嚴格比例關系(1∶1∶3∶1∶1)的區域與滿足寬松比例關系(1∶1∶3或3∶1∶1)的區域,分別計分為a與b(a>b),得到橫向得分Sx與縱向得分Sy。由此計算出單次得分Ss:
Ss=Sx+Sy
(1)
②若當前候選位置探測圖形N與完成檢測的候選位置探測圖形M二者中心坐標的直線距離小于1個單位模塊,且二者單位模塊尺寸的差值小于較小者的50%,則N與M為同一候選位置探測圖形,合并二者,仍記為M。其中:N的單次得分Ss與M的初始分St相加的和,記為M新的初始分St;N與M中心坐標連線的中點,作為合并后M的中心坐標;N與M的單位模塊尺寸平均值,作為合并后M的單位模塊尺寸;合并后M的定位次數t加1;新的初始分St除以定位次數t,得到M的平均得分Sa。
若不滿足上述條件,則當前候選位置探測圖形為首次檢出,取當前單次得分Ss作為其平均分Sa與初始分St,定位次數t記為1。記錄候選位置探測圖形的中心坐標(x,y),單位模塊尺寸m、定位次數t、初始分St、平均分Sa。
(2) 選取可靠性高的候選位置探測圖形,計算可靠模塊尺寸ma。掃描完成后,統計所有候選位置探測圖形的數量。若數量小于3,則無法進行后續步驟,算法無法實現當前QR碼的精定位。若數量大于或等于3,計算所有候選位置探測圖形的平均定位次數ta,并按下述方法選取可靠位置探測圖形。
記錄定位次數大于平均值且平均得分在(a+a)與(a+b)之間的候選位置探測圖形,統計其數量v的方法為:若0
記候選位置探測圖形的數量為n。取所有可靠位置探測圖形的單位模塊尺寸m,計算其平均值,記為可靠模塊尺寸ma:
(2)
(3)根據每個候選位置探測圖形的單位模塊尺寸與可靠模塊尺寸的偏差,計算其得分系數c。偏差越小,候選位置探測圖形與可靠位置探測圖形越相似,為真實位置探測圖形的概率越大,得分系數越高。
(3)
(4)通過得分系數,計算候選位置探測圖形的最終得分Sf。通過得分系數,可以降低單位模塊尺寸與可靠模塊尺寸偏差大的候選位置探測圖形的分值,進一步抑制誤檢。
Sf=c×St
(4)
(5)對最終得分Sf進行排序,選取最終得分最高的3個候選位置探測圖形作為QR碼的位置探測圖形。
以圖7所示污損QR碼為例,取分值a為3,b為1,對改進算法的可行性進行驗證。驗證過程中,算法掃描QR碼位置區域后,共得到7個候選位置探測圖形及其坐標、單位模塊尺寸、定位次數、初始分、平均分,結果如表4所示。然后取出3個可靠位置探測圖形,計算得到可靠單位模塊尺寸為7.8。最后,計算出各候選位置探測圖形的得分系數與最終得分,排序后取最終分最高的3個候選為當前QR碼位置探測圖形,即表4中序號2、3、6為候選。根據算法定位得到的位置探測圖形坐標及單位模塊尺寸,在Zxing[12]QR碼識別庫中完成后續解碼流程,得以成功輸出QR碼數據信息,驗證了改進比例關系算法的可行性。
表5為改進比較關系算法與傳統的基于比例關系算法在120張污損QR碼樣本上的測試數據。由表5可知,改進算法的定位成功率提高了28.3%,增長1.6倍;平均單張定位時間增加了0.17 ms,增長低于1%。

表4 改進比例關系算法的定位過程數據

表5 改進算法與傳統算法的性能對比
筆者基于卷積神經網絡與QR碼位置探測圖形的比例特征,對QR碼定位問題展開了研究。在粗定位方面,基于YOLOv3建立了一種輕巧的QR碼檢測模型。模型在已知背景、未知背景的兩個測試集上的召回率分別為99.81%與99.00%,平均IOU值分別為84.23%與80.74%,平均單幀檢測時間為0.12 s,表明其不僅滿足了粗定位識別率與準確度,而且保證了在運算能力有限的計算機上運行的實時性。在精定位方面,在基于比例關系的傳統算法基礎上,加入評分系統,將位置探測圖形的定位比例條件由1∶1∶3∶1∶1降低為1∶1∶3或3∶1∶1。在污損QR碼測試集上,改進算法以小于1%的定位時間增長,將定位成功率由傳統算法的17.5%提高為45.8%,表明其在較小的時間損失下,較大地提高了對污損QR碼的定位能力。