杜 欣,王笑梅,沈成龍,王佳婧
(上海師范大學(xué)信息與機(jī)電工程學(xué)院,上海 201418)
民國紙幣蘊(yùn)含著重要的信息如地區(qū)、發(fā)行商、印刷機(jī)構(gòu)等。冠字號碼是民國紙幣的唯一標(biāo)識符。
民國紙幣冠字號碼是一串序列號,涉及文本檢測領(lǐng)域。目前用于文本檢測的算法有CTPN[1]、EAST[2]、SegLink[3]、TextBoxes[4]等。CTPN結(jié)合了CNN與雙向LSTM,能有效地檢測出復(fù)雜場景文字,Anchor按照比例設(shè)定,只能檢測橫向或縱向文本;EAST采用特征圖多尺度融合和帶角度的預(yù)測文本框,能夠檢測任意方向文本,由于感受野和Anchor大小的限制,無法檢測序列文本;SegLink將文字串切割成小文字塊,采用鄰近域?qū)⑿∥淖謮K連接成序列;TextBoxes是一種快速而精確的文本檢測器,但不能檢測任意方向的文本塊基于深度學(xué)習(xí)的目標(biāo)檢測算法可分為兩類:兩階段檢測算法和一階段檢測算法。兩階段檢測算法代表有AlexNet[5]、R-CNN[6]、Fast R-CNN[7]、Faster R-CNN[8]等。兩階段檢測算法由主干網(wǎng)絡(luò),候選區(qū)域模塊和頭部三個部分組成,采用SS(Selective Search)方法或RPN (Region Proposal Network)生成候選框,進(jìn)行邊框回歸,檢測的精度高,速度較慢。一階段目標(biāo)檢測算法主要有SSD[9]、Retinanet[10]和YOLO[11-14]等。一階段目標(biāo)檢測算法的核心是回歸。將作為模型輸入的整張圖像劃分為一定數(shù)目的網(wǎng)格,預(yù)測每個網(wǎng)格中的目標(biāo),提升檢測速度。
針對紙幣樣式繁多,圖案復(fù)雜的特點(diǎn),本文提出了一種融合異常值檢測、聚類和目標(biāo)檢測的序列檢測算法。
本文的民國紙幣冠字號碼檢測算法是基于推薦區(qū)域算法,整個檢測算法分為生成推薦區(qū)域、處理推薦區(qū)域。生成推薦區(qū)域部分包括檢測預(yù)處理和分割塊檢測,處理推薦區(qū)域部分主要是分割塊處理。在檢測預(yù)處理中實(shí)現(xiàn)紙幣圖像歸一化、圖像增強(qiáng)、冠字號碼標(biāo)注和冠字號碼分割;分割塊檢測采用深度學(xué)習(xí)模型對冠字號碼分割塊訓(xùn)練和檢測。在處理推薦區(qū)域中將分割塊生成隨機(jī)點(diǎn),篩選并消除異常數(shù)據(jù)點(diǎn),對經(jīng)過異常處理的隨機(jī)點(diǎn)聚合成完整的冠字號碼。最后輸出民國紙幣的冠字號碼。民國紙幣圖像冠字號碼檢測模型框架如圖1。
圖1 檢測模型框架圖
2.1.1 檢測預(yù)處理
針對民國紙幣圖像存在破損、尺寸差異、字跡不清等情況,對圖像進(jìn)行預(yù)處理。涉及圖像歸一化、圖像降噪和冠字號碼分割。
為提升計算的精度進(jìn)行圖像歸一化。經(jīng)過實(shí)驗(yàn)的對比發(fā)現(xiàn),將圖像的長度設(shè)置為1500 pixels效果較好。采用高斯濾波消除紙幣圖像噪聲。
經(jīng)過圖像標(biāo)注后,目標(biāo)檢測算法不能有效處理序列,本文將序列號檢測問題轉(zhuǎn)換為物體檢測問題。為實(shí)現(xiàn)對字符串的檢測,需對標(biāo)注框進(jìn)行分割??梢圆捎玫姆指钏惴ㄓ凶远x寬度劃分法和自適應(yīng)寬度劃分法。框是按照一個常量寬度設(shè)定。設(shè)標(biāo)注框的寬高分別為W、H,設(shè)定常量寬度為q,將每列以q分割。自定義寬度劃分定義如式(1)。設(shè)定a是自適應(yīng)寬度法的人工超參數(shù),則自適應(yīng)寬度劃分法的定義如式(2)。
(1)
(2)
經(jīng)過實(shí)驗(yàn)發(fā)現(xiàn),自適應(yīng)和自定義劃分的效果相差甚微,考慮算法簡便性,本文選擇自定義寬度劃分算法,通過多次實(shí)驗(yàn)和觀察,將q值設(shè)置為20 pixels。自定義寬度劃分效果如下圖2。
圖2 自適應(yīng)寬度劃分效果圖
2.1.2 YOLOv4模型檢測分割塊
相比于靈活性更強(qiáng)的YOLOv5,YOLOv4的可定制化程度很高,整體性能更高。選擇整體性能更優(yōu)的YOLOv4作為目標(biāo)檢測算法。
YOLOv4采用CSPDarknet53[15]代替Darknet-53作為網(wǎng)絡(luò)骨架,SPP[16]和PANet[17](path-aggregation neck)作為模型頸部,保留YOLOv3中高效的頭部。
數(shù)據(jù)輸入:在YOLOv4中,運(yùn)用Mosaic數(shù)據(jù)增強(qiáng)增加數(shù)據(jù)量。Mosaic數(shù)據(jù)增強(qiáng)方法借鑒了CutMix[23]數(shù)據(jù)增強(qiáng)的方法,將四張圖片隨機(jī)地縮放或裁剪后放入同一張圖像,可以有效地應(yīng)對小目標(biāo)分布不均勻的情況,達(dá)到豐富數(shù)據(jù)集的效果,減少GPU的工作。采用SAT對抗性訓(xùn)練方式,將訓(xùn)練分為兩個階段,在第一階段,神經(jīng)網(wǎng)絡(luò)通過對自身進(jìn)行對抗性攻擊來改變原圖像。在第二階段,訓(xùn)練神經(jīng)網(wǎng)絡(luò)更新權(quán)重去檢測目標(biāo)。
主干網(wǎng)絡(luò):CSPDarknet53網(wǎng)絡(luò)結(jié)構(gòu)是在Darknet53 基礎(chǔ)上結(jié)合CSPNet思想,采用CSP模塊將底層的特征映射劃分為兩部分:一部分經(jīng)過卷積運(yùn)算得到殘差結(jié)果; 另一部分越過卷積計算與上一部分得到的殘差結(jié)果跨層次融合,既降低計算量又可以保持較高的準(zhǔn)確率。
頸部:SPP解決了輸入圖像大小需要固定的問題。SPP將特征轉(zhuǎn)化為一維矩陣形式。PANet(path-aggregation neck)通過自底向上的通道解決底層特征向高層特征流動路徑中的信息流丟失問題,增強(qiáng)整個特征層次架構(gòu)。
YOLOv4在FPN后融入了由下到上的特征傳播路徑,在特征金字塔之中結(jié)合了雙重PAN[11,17]結(jié)構(gòu),上采樣與下采樣相結(jié)合的方式對頂層特征和底層特征聚合提取。
預(yù)測:傳統(tǒng)的目標(biāo)檢測模型的損失函數(shù)一般是由分類損失函數(shù)和邊框回歸損失函數(shù)兩部分表示。本文的損失函數(shù)采用LCIoU[25]表示代替最廣泛使用的邊框回歸損失函數(shù)IOU_Loss[24]。解決了當(dāng)兩個物體 (并交比)相同時的真實(shí)框和預(yù)測框的位置信息不明確問題。LCIoU定義如式(3)所示,
(3)
(4)
(5)
其中b,bgt分別代表了預(yù)測框和真實(shí)框的中心點(diǎn)。ρ代表的是計算兩個中心點(diǎn)間的歐式距離。c代表的是能夠同時包含預(yù)測框和真實(shí)框的最小閉包區(qū)域的對角線距離。是度量長寬比的相似性,定義為式(4),是權(quán)重函數(shù),其表達(dá)式如式(5)所示。
以一張冠字號碼為“4855215”的民國紙幣為例,經(jīng)圖像預(yù)處理后,采用YOLOv4檢測民國紙幣分割塊。其冠字號碼分割塊檢測結(jié)果如圖3所示。
圖3 分割塊檢測結(jié)果
2.2.1 隨機(jī)點(diǎn)生成
本文將對分割框的處理轉(zhuǎn)化為對相應(yīng)的數(shù)據(jù)點(diǎn)的處理,故將分割框轉(zhuǎn)化為相應(yīng)隨機(jī)點(diǎn)。在轉(zhuǎn)化為隨機(jī)點(diǎn)過程中需要考慮的核心是隨機(jī)點(diǎn)數(shù)量問題。由于每張民國紙幣圖像的冠字號碼數(shù)量和尺寸不固定,依據(jù)冠字號碼數(shù)量來確定隨機(jī)點(diǎn)數(shù)量不能處理冠字號碼長度過長或高度過高的情況,故采用寬高自適應(yīng)設(shè)置隨機(jī)點(diǎn)數(shù)量。設(shè)單個分割塊的高和寬分別為H、W,隨機(jī)點(diǎn)數(shù)的裝填因子為α,則采用依據(jù)寬高自適應(yīng)算法生成的隨機(jī)點(diǎn)數(shù)量Rc定義如式(6)。
Rc=α*(W*H)
(6)
選取合適的裝填因子并以一張雙冠字號碼的民國紙幣圖像為例,其采用依據(jù)寬高自適應(yīng)隨機(jī)點(diǎn)的方法轉(zhuǎn)化效果如圖4。
圖4 隨機(jī)點(diǎn)轉(zhuǎn)化前后效果圖
由圖4可知,兩邊隨機(jī)點(diǎn)分布較為均勻,兩個冠字號碼之間間隔清晰,能夠很好地描述冠字號碼的位置信息和寬高信息。
2.2.2 局部相關(guān)積分(LOCI)
依據(jù)數(shù)據(jù)維度和使用場景的不同,異常值檢測算法從種類上可以分為基于統(tǒng)計的檢測算法、基于密度的檢測算法、基于聚類以及基于鄰近度的檢測算法。
由于序列號附近的隨機(jī)點(diǎn)密集,誤檢框附近數(shù)據(jù)點(diǎn)稀疏。因此,采用基于密度的局部相關(guān)積分算法。在異常值檢測過程中,為了避免假正例和假負(fù)例的情況,使用雙重隨機(jī)點(diǎn)轉(zhuǎn)換。適當(dāng)增加隨機(jī)點(diǎn)數(shù)目可以避免刪除假負(fù)例對實(shí)驗(yàn)結(jié)果的干擾??紤]到異常值消除的效率和速度,將每個分割塊增加的隨機(jī)點(diǎn)數(shù)目設(shè)置為3。利用局部相關(guān)積分和鄰域計數(shù)函數(shù)估計MDEF值。對于N個數(shù)據(jù)集P={p1,p2,…,pi,…,pN},P的r-近鄰集Ν(pi,r)={p∈P|d(p,pi)≤r},對于任何pi,r和α將半徑(或標(biāo)度)r處的多粒度偏差因子(MDEF)定義為如下表達(dá)式(7)。
(7)
當(dāng)分割塊所在區(qū)域的數(shù)據(jù)點(diǎn)少于閾值T時,將該分割塊內(nèi)的所有隨機(jī)點(diǎn)消除。異常值消除效果如圖5。
圖5 異常消除效果圖
2.2.3 Mean Shift聚類
考慮到隨機(jī)點(diǎn)集合代替矩形框,深度學(xué)習(xí)檢測分割塊時漏檢分割塊和分割塊邊界定位偏差這兩種情況對序列號的整體區(qū)域界限的確定幾乎不產(chǎn)生影響。由于隨機(jī)點(diǎn)集中主要集中在冠字號碼區(qū)域,隨機(jī)點(diǎn)集合數(shù)量取決于紙幣冠字號碼的數(shù)量,因此本文選擇可自定義簇數(shù)量的聚類算法。
根據(jù)隨機(jī)點(diǎn)在冠字號碼區(qū)域分布密度高,在非冠字號碼區(qū)域分布密度小或無,且不同序列號形成的隨機(jī)點(diǎn)集合之間具有明顯的間隔,采用可設(shè)置帶寬的 Mean Shift算法,該算法是一種核密度估計算法(無需明確K值),它將每個點(diǎn)更新到密度梯度函數(shù)的局部極大值點(diǎn)處,通過不斷地更新局部極大值點(diǎn)的位置實(shí)現(xiàn)聚類的效果。
在給定n維空間的m個數(shù)據(jù)點(diǎn)的集合N,則MeanShift向量如式(8)。
(8)
其中,Sk表示距離n點(diǎn)在球半徑h的數(shù)據(jù)點(diǎn)集。通過Mean Shift向量不斷地更新球心的位置,使得球心向數(shù)據(jù)集密集的位置跟進(jìn)。最終的Mean Shift向量可以表示為式(9)所示。其中,X為中心點(diǎn),Xi為球半徑內(nèi)的數(shù)據(jù)點(diǎn),n為數(shù)量,g表示負(fù)的核函數(shù)的導(dǎo)數(shù)。
(9)
以本文中的其中兩張圖像識別結(jié)果為例,使用均值漂移聚類Mean Shift算法,設(shè)置合適的帶寬值,合并分割塊后效果如圖6。
圖6 聚類效果圖
由上圖可知,使用均值飄移(MeanShift)算法可以有效的合并深度學(xué)習(xí)檢測出的分割塊。不僅如此,對于檢測過程中出現(xiàn)的漏檢、重復(fù)檢測、邊界框偏差等有較好的魯棒性。
本實(shí)驗(yàn)訓(xùn)練環(huán)境是Ubuntu20.04系統(tǒng),使用Darknet深度學(xué)習(xí)框架,配置PyTorch和OpenCV環(huán)境,實(shí)驗(yàn)所用顯卡為NVIDIA 2080Ti,內(nèi)存11G,CUDA版本為CUDA11.0,配有interi9-10900k處理器,算法的測試和訓(xùn)練均在GPU中完成。
本實(shí)驗(yàn)數(shù)據(jù)集來自908張民國紙幣圖像,通過對原始數(shù)據(jù)圖像數(shù)據(jù)增強(qiáng),最終應(yīng)用于本實(shí)驗(yàn)的圖像共3502張圖像包括正面、反面以及橫版和豎版。訓(xùn)練集、驗(yàn)證集和測試集按照8∶1∶1的比例。
網(wǎng)絡(luò)模型參數(shù)設(shè)置如下:YOLOv4模型訓(xùn)練的MAX_batches設(shè)置為2000,subdivision=32。初始學(xué)習(xí)率learning_rate設(shè)置為0.00261,YOLOv4模型訓(xùn)練結(jié)果Loss值在batch達(dá)到1000以后基本穩(wěn)定在1.0%。經(jīng)過2000epoch迭代后模型逐漸收斂,Loss值在1%附近上下波動。訓(xùn)練的Loss圖如下圖7。
圖7 YOLOv4訓(xùn)練Loss變化圖
在目標(biāo)檢測中,將準(zhǔn)確率(P)和召回率(R)作為模型的評價標(biāo)準(zhǔn)。準(zhǔn)確率(P)評估模型返回相關(guān)實(shí)例的能力,召回率(R)評估模型識別所有相關(guān)實(shí)例的能力。由準(zhǔn)確率(P)和召回率(R)計算平均精準(zhǔn)度(AP),以平均AP值(mAP)作為檢測準(zhǔn)確度的綜合指標(biāo)。式(10)是準(zhǔn)確率計算公式,式(11)是召回率計算公式,式(12)是mAP計算公式。
(10)
(11)
(12)
檢測速度也是判定算法性能的重要指標(biāo)之一,本文采用單張圖片平均檢測時間(time)作為檢測速度的評價指標(biāo)。定義如式(13)。
(13)
其中,totaltime為檢測花費(fèi)總時間,num為檢測的圖片總數(shù)量。
模型參數(shù)設(shè)置:MAX_batches設(shè)置為2000,學(xué)習(xí)率learning_rate設(shè)置為0.001。
表1為YOLOv4、YOLOv5和本文的推薦區(qū)域算法在民國紙幣數(shù)據(jù)集上的檢測性能對比,由表可知,推薦區(qū)域檢測算法實(shí)驗(yàn)mAP達(dá)到99.7%,通過對比YOLOv4目標(biāo)檢測模型對冠字號碼的檢測結(jié)果發(fā)現(xiàn),本文算法準(zhǔn)確率提升了4.9%,圖像檢測的平均耗時0.83s,在提升準(zhǔn)確率的同時滿足實(shí)時性的要求。
表1 YOLO v4、YOLOv5與本文方法對比
圖8(1)、(2)、(3)分別為YOLOv4算法、本文推薦區(qū)域算法與YOLOv5算法檢測效果圖,可見本文檢測算法能夠較精準(zhǔn)的定位民國紙幣的冠字號碼區(qū)域。
圖8 檢測結(jié)果示例圖
本文提出了一種融合異常值檢測、聚類和目標(biāo)檢測的序列檢測算法,實(shí)現(xiàn)了民國紙幣的精準(zhǔn)定位,提升檢測的效率。
1)由于目標(biāo)檢測對序列號檢測的精準(zhǔn)度較低且文字檢測算法對非冠字號碼的無效定位,本文采用分割算法將冠字號碼的檢測轉(zhuǎn)換為冠字號碼塊的檢測;2)針對冠字號碼的精準(zhǔn)定位和矩形框合并的復(fù)雜度,本文運(yùn)用隨機(jī)點(diǎn)轉(zhuǎn)化算法將矩形框轉(zhuǎn)換為數(shù)據(jù)點(diǎn);3)針對到檢測分割塊過程中出現(xiàn)的漏檢、誤檢等問題,采用異常值檢測處理數(shù)據(jù)點(diǎn);4)采用聚類算法合并數(shù)據(jù)點(diǎn),實(shí)現(xiàn)分割區(qū)域的合并。最后輸出冠字號碼。
實(shí)驗(yàn)結(jié)果表明,相比于文本檢測算法如East模型,本文的推薦區(qū)域檢測算法消除了無效檢測且提高了精準(zhǔn)度。相比于目標(biāo)檢測模型如YOLOv4、YOLOv5,本文的算法準(zhǔn)確率更高,且能夠保持實(shí)時性。