1. 程式人生 > 其它 >OCR - 2 - PP-OCRv2: Bag of Tricks for Ultra Lightweight OCR System - 1 - 論文學習

OCR - 2 - PP-OCRv2: Bag of Tricks for Ultra Lightweight OCR System - 1 - 論文學習

 

PP-OCRv2: Bag of Tricks for Ultra Lightweight OCR System

Abstract

光學字元識別(OCR)系統已廣泛應用於各種應用場合。設計OCR系統仍然是一項具有挑戰性的任務。在以前的工作中,我們提出了一個實用的超輕量級OCR系統(PP-OCR),以平衡準確度和效率。為了提高PP-OCR的準確性和保持高效率,本文提出了一種更健壯的OCR系統,即PP-OCRv2。我們介紹了一系列技巧來訓練更好的文字檢測器和文字識別器,包括 Collaborative Mutual Learning (CML), CopyPaste, Lightweight CPU Network (PP-LCNet), Unified-Deep Mutual Learning (U-DML) 和 Enhanced CTCLoss。實際資料實驗表明,在相同的推理代價下,PP-OCRv2的精度比PP-OCR高7%。它還可以與PP-OCR的server模型相媲美,後者使用ResNet系列作為backbone。程式碼、模型可見https://github.com/PaddlePaddle/PaddleOCR

 

1 Introduction

如圖1所示,OCR(光學字元識別)在過去二十年中得到了很好的研究,並有各種應用場景,如文件電子化、身份驗證、數字金融系統和車輛牌照識別。

在實際構建OCR系統時,不僅要考慮精度,還要考慮計算效率。在之前的研究中,我們提出了一種實用的超輕量級OCR系統(PP-OCR)(Du等人,2020年),以平衡準確度和效率。它由文字檢測、檢測框校正和文字識別三部分組成。Differentiable Binarization(DB)(Liao et al.2020a)用於文字檢測,CRNN(Shi、Bai和Yao 2016)用於文字識別。該系統採用19種有效策略來優化和縮小模型的大小。為了提高PP-OCR的準確性和效率,本文提出了一種更健壯的OCR系統,即PP-OCRv2。它引入了一系列技巧來訓練更好的文字檢測器和文字識別器。

圖2展示了PP-OCRv2的框架。大多數策略遵循PP-OCR,如綠色框所示。橙色框中的策略是PP-OCRv2中的附加策略。在文字檢測中,引入了Collaborative Mutual Learning(CML)和CopyPaste。CML利用兩個student網路和一個teacher網路來學習更強大的文字檢測器。CopyPaste是一種新的資料增強技巧,已被證明能有效提高目標檢測和例項分割任務的效能(Ghiasi et al.2021)。我們表明,它也適用於文字檢測任務。在文字識別中,引入了輕量級CPUNetwork(PP-LCNet)(Cui等人,2021年)、Unified-Deep Mutual Learning(U-DML)和CenterLoss。PP LCNet是一種新設計的基於Intel CPU的輕量級backbone,它是從MobileNetV1(Howard et al.2017)改進而來的。U-DML利用兩個student網路學習更準確的文字識別器。CenterLoss的角色是放鬆相似字元的錯誤。我們進行了一系列消融實驗來驗證上述策略的有效性。

此外,圖2灰色框中的策略在PP-OCR中被證明是有效的。但本文並未對此進行驗證。未來,我們將採用它們來加速PP-OCRv2-tiny中的推理。
論文的其餘部分組織如下。在第二節中,我們將詳細介紹新新增的增強策略。第三節討論了實驗結果和第四節得出結論。

 

2 Enhancement Strategies 

2.1 Text Detection 

Collaborative Mutual Learning (CML) 我們提出了CML方法(Zhang et al.2017)來解決文字檢測蒸餾的問題。蒸餾有兩個問題:1.如果teacher模型的精度接近student模型的精度,則一般蒸餾法帶來的改進是有限的。2.如果teacher模型的結構和student模型的結構有很大不同,那麼一般蒸餾法帶來的改進也非常有限。

該框架是由多個模型組成的超級網路,分別命名為student模型和teacher模型,如圖3所示。CML方法在文字檢測中可以達到蒸餾後student的準確度超過teacher模型的準確度的效能。
在CML中,兩個sub-student模型使用DML方法相互學習(Zhang等人,2017)。同時,有一個teacher模式來指導兩個student模式的學習。teacher模型使用ResNet18作為backbone,student模型使用scale為0.5的MobinenetV3大型模型作為backbone。

 CML旨在優化sub-student模式。teacher模型的引數被凍結,只有sub-student模型按照設計的損失進行訓練。一般來說,sub-student模型的監督資訊包括三部分,包括ground truth標籤、另一個student模型的後驗熵和teacher模型的輸出。相應地,有三個損失函式,包括ground truth損失Lgt、student模型中的peer損失Ls和teacher模型中的distill損失Lt

ground truth損失,簡稱GTLoss,是為了確保訓練由真實標籤監督。我們使用DB演算法(Liao等人,2020b)來訓練sub-student模型。因此,ground truth損失Lgt是一種組合損失,包括概率lap lp的損失、二進位制map lb的損失和閾值map lt的損失。GTLoss的公式如下所示,其中lp、lb和lt分別是二進位制交叉熵損失、Dice損失和L1損失。α、 β是超級引數,預設值分別為5和10。

sub-student模型參考DML方法相互學習(Zhang等人,2017)。但與DML的不同之處在於,sub-student模型在每次迭代中同時進行訓練,以加快訓練過程。KL散度用於計算student模型之間的距離。student模型之間的peer損失如下:

 

distill損失反映了teacher模型對student模型的監督。teacher模型可以為student模型提供豐富的知識,這對效能改進非常重要。為了獲得更好的知識,我們擴充套件了teacher模型的響應概率map,以增加目標區域。此操作可以略微提高teacher模型的準確性。distill損失如下所示,其中lp和lb分別為二進位制交叉熵損失和Dice損失。γ是超級引數,預設值為5。fdila是以矩陣[[1,1],[1,1]]為核的擴張函式。

 最後,在訓練PP-OCR檢測模型的CML方法中使用的損失函式如下所示。

 CopyPaste是一種新的資料增強技巧,已被證明能有效提高目標檢測和例項分割任務的效能(Ghiasi et al.2021)。它可以合成文字例項來平衡訓練集中正負樣本的比例,而傳統的影象旋轉、隨機翻轉和隨機裁剪無法實現這一點。由於前景中的所有文字都是獨立的,所以CopyPaste在隨機選擇的背景影象上貼上文字時不會重疊。圖4是CopyPaste的一個示例。

 

2.2 Text Recognition 

Lightweight CPU Network (PP-LCNet) 為了在英特爾CPU上獲得更好的準確度和速度權衡,我們設計了一個基於英特爾CPU的輕量級backbone,它提供了一個更快、更準確的OCR識別演算法,並啟用了mkldnn。整個網路的結構如圖5所示。與MobileNetV3相比,由於MobileNetV1的結構使得在英特爾CPU上啟用MKLDNN時更容易優化推理速度,因此網路是基於MobileNetV1(Howard et al.2017)的。為了使MobileNetV1具有更強的特徵提取能力,我們對其網路結構進行了一些修改。改進策略將從以下四個方面進行說明。

 

 1.更好的啟用函式。為了提高MobileNetV1的擬合能力,我們用H-Swish替換了網路中的原始ReLU啟用函式,這可以在只稍微增加推理時間的情況下顯著提高準確性。

2.在適當位置安裝SE模組。SE(Hu、Shen和Sun 2018)模組自提出以來已被大量網路使用。這是一種對網路channel進行加權以獲得更好特徵的好方法,並被用於許多輕量級網路,如MobileNetV3(Howard et al.2019)。然而,在英特爾CPU上,SE模組增加了推理時間,因此我們無法將其用於整個網路。事實上,通過大量實驗,我們發現越靠近網路的尾部,SE模組就越有效。所以我們只需將SE模組新增到網路尾部附近的塊中。這會使速度平衡更精確。SE模組中兩層的啟用函式分別為ReLU和H-Sigmoid。

3.較大的卷積核。卷積核的大小通常會影響網路的最終效能。在mixnet(Tan和Le 2019)中,作者分析了不同大小的卷積核對網路效能的影響,最後在網路的同一層中混合了不同大小的核。然而,這種混合會減慢模型的推理速度,因此我們嘗試在儘可能少的推理時間增加的情況下增加捲積核的大小。最後,我們將網路尾部卷積核的大小設定為5×5。

4.GAP後的更大維度的1x1 卷積層。在PP-LCNet中,GAP後網路的輸出維數很小,直接連線到最終的分類層會丟失特徵的組合。為了使網路具有更強的擬合能力,我們將1280維大小的1x1 卷積連線到最終的GAP,這將在不增加推斷時間的情況下增加模型大小。
通過這四個變化,我們的模型在ImageNet上表現良好,表4列出了與英特爾CPU上其他輕量級模型相比的指標。

 

Unified-Deep Mutual Learning (U-DML) 

Deep mutual learning (Zhang et al.2017)是一種兩個student網路相互學習的方法,知識蒸餾不需要一個具有預訓練權重的更大teacher網路。在DML中,對於影象分類任務,損失函式包含兩部分:(1)student網路和ground truth之間的損失函式。(2) 學生網路輸出soft標籤中的Kullback–Leibler散度(KL-Div)損失。

Heo提出的OverHaul(Heo等人,2019年),其中蒸餾過程使用了student網路和teacher網路之間的特徵map距離。在student網路特徵map上進行變換,以保持特徵map對齊。
為了避免teacher模型訓練過程過於耗時,本文在DML的基礎上,提出了U-DML,在蒸餾過程中對特徵map進行監督。圖6顯示了U-DML的框架。

 

蒸餾過程有兩個網路:student網路和teacher網路。它們具有完全相同的網路結構和不同的初始權重。其目標是,對於相同的輸入影象,兩個網路可以得到相同的輸出,不僅對於預測結果,而且對於特徵map。
總損失函式由三部分組成:(1)CTC損失。由於這兩個網路都是從零開始訓練的,所以CTC損失可以用於網路的收斂;(2) DML損失。預計兩個網路的最終輸出分佈相同,因此需要DML損失來保證兩個網路之間分佈的一致性;(3) feature損失。這兩個網路的結構是相同的,因此它們的特徵map應該是相同的,feature損失可以用來約束兩個網路的中間特徵map距離。

CTC loss. CRNN是本文中 文字識別的基礎架構,它集成了特徵提取和序列建模。它採用了Connectionist Temporal Classification (CTC)損失(Graves等人,2006年),以避免預測與ground truth之間的不一致。由於這兩個sub-student是從頭開始訓練的,所以這兩個子網採用CTC損失。損失函式如下所示。

  

其中Shout表示student網路的head輸出,Thout表示teacher網路的head輸出。gt表示輸入影象的GroundTruth標籤。
DML loss. 在DML中,每個子網路的引數分別更新。這裡,為了簡化訓練過程,我們計算兩個子網路之間的KL發散損失,並同時更新所有引數。DML損失如下所示。

 其中KL(p | | q)表示p和q的KL散度。Spout和Tpout可計算如下:

 

 Feature loss.  在訓練過程中,我們希望student網路的backbone輸出與teacher網路的backbone輸出相同。因此,與Overhaul類似,feature損失用於蒸餾過程。損失的計算方法如下:

 

 其中Sbout表示student網路的backbone輸出,Tbout表示teacher網路的backbone輸出。這裡使用了均方誤差損失。值得注意的是,對於特徵損失,不需要進行特徵map變換,因為用於計算損失的兩個特徵map完全相同。

最後,U-DML訓練過程的總損失為如下所示:

在訓練過程中,我們發現piece-wise學習率策略是更好的蒸餾選擇。當使用特徵損失時,模型需要更長的時間才能達到最佳精度,因此本文使用800個epochs和piece-wise策略來進行文字識別蒸餾過程。
此外,對於標準的CRNN體系結構,CTC-head只使用了一個FC層,這對於資訊解碼過程來說有點弱。因此,我們修改了CTC-head部件,使用兩個FC層,這將導致精度提高約1.5%,而無需額外的推斷時間成本。

Enhanced CTCLoss 中文識別任務中存在大量相似字元。他們在外表上的差異非常小,常常被認錯。在PP-OCRv2中,我們設計了一個增強的CTCLoss,它結合了原始CTCLoss和度量學習中的CenterLoss(Wen等人,2016)思想。對其進行了一些改進,使其適用於序列識別任務。增強型CTCLoss的定義如下:

 其中,xt是時間戳t的特徵。cyt是類yt的中心。由於CRNN(Shi、Bai和Yao 2016)演算法中的特徵和標籤之間的錯位,我們沒有明確的xt的標籤yt。我們採用貪婪解碼策略得到yt

 W是CTC head的引數。實驗表明:λ=0.05是一個很好的選擇。

 

3 Experiments 

3.1 Experimental Setup 

DataSets  我們在之前的PP-OCR工作(Du等人,2020年)中使用的相同資料集上進行實驗,如表1所示。

對於文字檢測,有97k個訓練影象和500個驗證影象。訓練影象由68K真實場景影象和29K合成影象組成。真實場景影象收集自百度影象搜尋以及公共資料集,包括LSVT(Sun等人2019)、RCTW-17(Shi等人2017)、MTWI 2018(他和Yang 2018)、CASIA-10K(他等人2018)、SROIE(Huang等人2019)、MLT 2019(Nayef等人2019)、BDI(Karatzas等人2011)、MSRA-TD500(Yao等人2012)和CCPD 2019(Xu等人2018)。合成影象主要關注長文字、多方向文字和表格中文字的場景。驗證影象均來自真實場景。
對於文字識別,有1790萬張訓練影象和18.7K驗證影象。在訓練影象中,190萬張是真實場景影象,來自一些公共資料集和百度影象搜尋。使用的公共資料集包括LSVT、RCTW-17、MTWI 2018和CCPD 2019。剩下的16M合成影象主要關注不同背景的場景、旋轉、透視變換、噪聲、垂直文字等。合成影象的語料庫來自真實場景影象。所有驗證影象也都來自真實場景。
此外,我們為不同的實際應用場景收集了300張影象,以評估整個OCR系統,包括合同樣本、車牌、銘牌、火車票、測試表、表格、證書、街景影象、名片、數字儀表等。圖7和圖8顯示了測試集的一些影象。

 文字檢測和文字識別中使用的資料合成工具由text render(Sanster 2018)修改而來。

Implementation Details  我們採用了PP-OCR中使用的大多數策略(Du等人,2020年),如圖2所示。我們使用Adam optimizer對所有模型進行訓練,將初始學習率設定為0.001。不同之處在於,我們採用餘弦學習率衰減作為檢測模型訓練的學習率方案,而採用piece-wise衰減作為識別模型訓練的學習率方案。檢測和識別模型訓練都在最初幾個epochs 中使用了warm-up訓練。

在文字檢測方面,該模型總共訓練了700個epochs,其中進行了2個epochs的warm-up訓練。batch大小設定為8/per card。在文字識別方面,進行了5個epochs的warm-up訓練;然後訓練了700個epochs,初始學習率為0.001;再訓練100的epochs,學習率設定為0.0001。batch大小為128/per card。

在推理階段,Hmean用於評估文字檢測器和端到端OCR系統的效能。Sentence Accuracy用於評估文字識別器的效能。GPU推斷時間在單個T4 GPU上測試。CPU推斷時間在Intel(R)Xeon(R)Gold 6148上進行了測試。

 

3.2 Text Detection 

表2顯示了用於文字檢測的DML、CML和CopyPaste的消融研究。基線模型為PP-OCR輕量級檢測模型。在測試過程中,輸入影象的長邊調整為960。資料顯示,DML可以將Hmean度量提高近2%,而CML可以提高3%。最後,通過資料增強方法CopyPaste,最終的Hmean可以進一步提高0.6%。因此,在相同的速度下,PP-OCRv2檢測模型比PP-OCR檢測模型提高了3.6%,同時模型結構保持不變。推理時間是包括預處理和後處理在內的總時間。

 

3.3 Text Recognition 

表3顯示了PP-LCNet、U-DML和增強CTC損失的消融研究。與MV3相比,PP-LCNet的準確率可提高2.6%。儘管PP-LCNet的模型大小要大3M,但由於網路結構的合理設計,推理時間從7.7ms減少到了6.2ms。U-DML方法可以將準確度再提高4.6%,這是一個顯著的改進。此外,在使用CTC損失的情況下,準確度可提高0.9%。因此,使用所有這些策略,準確率提高了8.1%,模型大小增大了3M,但平均推理時間加快了1.5毫秒。

 

 Ablation study for PP-LCNet  為了測試PP-LCNet的泛化能力,我們在整個模型設計過程中使用了具有挑戰性的資料集,如ImageNet-1k。表4顯示了PP-LCNet和我們在ImageNet上選擇的其他不同輕量級模型之間的準確度-速度比較。很明顯,PP-LCNet在速度和準確性方面都取得了更好的效能,即使與MobileNetV3這樣有競爭性的網路相比也是如此。

 

3.4 System Performance 

在表5中,我們比較了提出的PP-OCRv2與之前的超輕量級和大規模PP-OCR系統之間的效能。大規模PP-OCR系統使用ResNet18_vd作為文字檢測器backbone,ResNet34_vd作為文字識別器backbone,與超輕量級版本相比,可以實現更高的Hmean,但推理速度較慢。可以發現,在相同的推理成本下,PP-OCRv2的Hmean比PP-OCR mobile模型高7.3%,與PP-OCR server模型相當。圖9顯示了提出的PP-OCRv2系統和之前的超輕量級和大規模PP-OCR系統的一些端到端識別結果。

 

 

4 Conclusions 

在本文中,我們提出了一個更加魯棒的超輕量級OCR系統PP-OCRv2。我們引入了一系列技巧來增強我們之前的工作PP-OCR,其中包括Collaborative Mutual Learning (CML), CopyPaste, Lightweight CPU Network (PP-LCNet), Unified-Deep Mutual Learning (U-DML) 和 CenterLoss。在真實資料上的實驗表明,在相同的推理代價下,PP-OCRv2的準確率高於PP-OCR。給出了相應的消融實驗。同時,一些實用的超輕量級OCR模型和一個大規模的資料集也已經發布了。