PP-OCRv2:超輕OCR系統的萬能包
摘要
光學字符識別(OCR)系統已廣泛應用于多種場景,但設計兼顧精度與效率的OCR系統仍具挑戰性。我們此前提出的超輕量OCR系統PP-OCR在平衡兩者方面取得進展。本文進一步提出PP-OCRv2,通過五項關鍵技術提升性能:
- 檢測模型優化:
- 協同互學習(CML):結合教師-學生蒸餾與學生間互學習,提升檢測魯棒性。
- CopyPaste數據增強:合成文本實例平衡樣本分布,驗證對檢測任務有效。
- 識別模型優化:
- 輕量CPU網絡(PP-LCNet):基于MobileNetV1改進,針對Intel CPU優化,速度提升38%。
- 統一深度互學習(U-DML):雙學生網絡互監督,無需預訓練教師模型,準確率提升4.6%。
- 增強CTC損失:引入Center Loss增大相似字符間距,準確率再提0.9%。
實驗表明,PP-OCRv2在同等推理成本下精度較PP-OCR提升7%,速度較服務器版(ResNet骨干)提升220%,總模型大小僅11.6M,支持移動端與服務器部署。代碼已開源(GitHub/PaddleOCR)。
1. 引言
OCR技術歷經二十年發展,廣泛應用于文檔電子化、身份認證、車牌識別等領域。PP-OCR(2020)作為實用化輕量系統,采用DB算法(檢測)和CRNN(識別),結合19項策略優化模型體積與性能。
圖2:PP-OCRv2的框架。綠色框中的策略與PP-OCR相同,橙色框中的策略為PP-OCRv2新增,灰色框中的策略將在未來被PP-OCRv2-tiny采用。
圖2展示了PP-OCRv2的系統框架。如綠色框所示,大部分策略沿用了PP-OCR方案。橙色框內為PP-OCRv2新增策略:
- 文本檢測:引入協同互學習(CML)和復制粘貼(CopyPaste)技術
- CML通過兩個學生網絡和一個教師網絡協同訓練,構建更魯棒的文本檢測器
- CopyPaste作為新型數據增強方法(Ghiasi等,2021),經證實能有效提升目標檢測與實例分割任務性能,本研究驗證其同樣適用于文本檢測任務
- 文本識別:采用輕量化CPU網絡(PP-LCNet)(Cui等,2021)、統一深度互學習(U-DML)及中心損失函數(CenterLoss)
- PP-LCNet是基于Intel CPU優化的輕量級主干網絡(由MobileNetV1改進而來)
- U-DML通過雙學生網絡協同提升識別精度
- CenterLoss用于緩解相似字符的誤判問題
我們通過系列消融實驗驗證了上述策略的有效性。
圖2灰色框內策略已在PP-OCR中被證實有效,但本文未作驗證。后續將應用于PP-OCRv2-tiny模型以加速推理。
全文結構如下:第2章詳述新增增強策略,第3章討論實驗結果,第4章給出結論。
2 增強策略
2.1 文本檢測
協同互學習(CML
為解決文本檢測蒸餾中的兩大問題:1)當教師模型與學生模型精度相近時,傳統蒸餾方法提升有限;2)二者結構差異較大時,傳統蒸餾效果顯著受限,我們采用CML方法(Zhang等,2017)。如圖3所示,該框架由多個學生模型和教師模型構成超級網絡,其創新性在于:蒸餾后學生模型的檢測精度可超越教師模型。
實現機制
- 模型架構:
- 教師模型采用ResNet18主干網絡
- 學生模型采用縮放系數0.5的MobileNetV3大型版本
- 訓練流程:
- 固定教師模型參數,僅優化學生模型
- 學生模型通過三重監督信號學習:
- 真實標注(Ground Truth)
- 同伴模型后驗熵(基于DML方法)
- 教師模型輸出知識
損失函數設計
- 真實損失(GTLoss):
基于DB算法(Liao等,2020b)的復合損失:
其中:
(概率圖損失):二元交叉熵
(二值圖損失):Dice損失
(閾值圖損失):L1損失- 超參數
,
- 同伴損失(DML Loss):
通過KL散度衡量雙學生模型輸出分布差異:
相比原始DML,本方案采用同步訓練加速收斂
- 蒸餾損失(Distill Loss):
對教師模型概率圖進行膨脹操作(核矩陣
)以增強知識遷移:
超參數
,膨脹操作
可提升教師模型響應區域準確性
最終,訓練PP-OCR檢測模型CML方法采用的總損失函數如下:
CopyPaste是一種創新的數據增強技術,已被證實能有效提升目標檢測與實例分割任務的性能(Ghiasi等,2021)。該技術通過合成文本實例來平衡訓練集中的正負樣本比例,這是傳統圖像旋轉、隨機翻轉和隨機裁剪等增強方法無法實現的。由于所有文本均位于前景且相互獨立,CopyPaste會將文本無重疊地粘貼到隨機選擇的背景圖像上。圖4展示了CopyPaste的典型示例
2.2 文本識別
圖5:PP-LCNet網絡結構。虛線框表示可選模塊。主干部分采用標準卷積層。DepthSepConv代表深度可分離卷積,DW表示深度卷積,PW表示逐點卷積,GAP表示全局平均池化。
輕量級CPU網絡(PP-LCNet) 為了在Intel CPU上獲得更好的精度與速度平衡,我們設計了一個基于Intel CPU的輕量級骨干網絡,該網絡在啟用MKLDNN的情況下提供了更快更準確的OCR識別算法。整個網絡結構如圖5所示。與MobileNetV3相比,由于MobileNetV1的結構在Intel CPU上啟用MKLDNN時更容易優化推理速度,因此本網絡基于MobileNetV1(Howard等,2017)。為了使MobileNetV1具有更強的特征提取能力,我們對其網絡結構進行了改進,具體改進策略將從以下四個方面進行說明。
- 更好的激活函數。為提升MobileNetV1的擬合能力,我們將網絡中的激活函數由ReLU替換為H-Swish。該改進在推理時間僅輕微增加的情況下,可顯著提升模型精度。
- 在適當位置添加 SE 模塊。SE模塊(Hu等,2018)自提出以來已被眾多網絡采用,能通過通道加權獲取更優特征。但考慮到Intel CPU上SE模塊會增加推理耗時,我們通過大量實驗發現:越接近網絡末端,SE模塊效果越顯著。因此僅在網絡尾部區塊添加SE模塊,其內部兩層分別采用ReLU和H-Sigmoid激活函數,實現了精度與速度的最佳平衡。
- 更大的卷積核。雖然MixNet(Tan等,2019)證明混合尺寸卷積核能提升性能,但會降低推理速度。我們選擇 在網絡尾部將3×3卷積核替換為5×5卷積核,擴大感受野以捕獲更全局的特征, 在最小化速度損耗的前提下提升性能。
- GAP 后更大的 1x1 卷積層維度。針對PP-LCNet在全局平均池化(GAP)后特征維度較小的問題,直接連接最終的分類層會丟失特征的組合信息。我們在最終分類層前增加1280維1×1卷積層。該設計在不影響推理速度的情況下,顯著增強了特征組合能力。
通過以上四項改進,我們的模型在 ImageNet 上表現出色,表 4 列出了在英特爾 CPU 上與其他輕量級模型的性能指標對比。
統一深度互學習 (U-DML)
深度互學習(Deep mutual learning, DML)(Zhang et al. 2017)是一種兩個學生網絡相互學習的方法,它不需要一個帶有預訓練權重的大型教師網絡來進行知識蒸餾。在 DML 中,對于圖像分類任務,損失函數包含兩部分:(1) 學生網絡與真實標簽(groundtruth)之間的損失函數;(2) 學生網絡輸出軟標簽之間的 Kullback–Leibler 散度(KL-Div)損失。
Heo 提出了 OverHaul(Heo et al. 2019),其中使用學生網絡和教師網絡之間的特征圖距離進行蒸餾過程。對學生網絡的特征圖進行變換以保持特征圖對齊。
為了避免過于耗時的教師模型訓練過程,本文在 DML 的基礎上提出了 U-DML,在蒸餾過程中也對特征圖進行監督。圖 6 展示了 U-DML 的框架。蒸餾過程涉及兩個網絡:學生網絡和教師網絡。它們具有完全相同的網絡結構,但初始化權重不同。目標是對于相同的輸入圖像,兩個網絡不僅預測結果相同,特征圖也應相同。
總損失函數由三部分組成:(1) CTC 損失。由于兩個網絡都是從頭開始訓練的,CTC 損失可用于促進網絡收斂;(2) DML 損失。期望兩個網絡的最終輸出分布相同,因此需要 DML 損失來保證兩個網絡之間分布的一致性;(3) 特征損失。兩個網絡結構相同,因此期望它們的特征圖也相同,特征損失可用于約束兩個網絡中間特征圖之間的距離。
CTC損失
本文采用CRNN作為文本識別基礎架構,該架構整合了特征提取與序列建模能力。通過連接時序分類(CTC)損失函數(Graves等,2006)解決預測結果與真實標簽的對齊問題。由于兩個子網絡均需從頭訓練,CTC損失同時作用于師生網絡:
其中:
表示學生網絡的頭部輸出
表示教師網絡的頭部輸出
為輸入圖像的真實標簽
DML損失
傳統DML方法需分別更新子網絡參數。為簡化訓練流程,本方案同步計算雙網絡間的KL散度損失并聯合更新參數:
:分布
與
的KL散度(Kullback-Leibler Divergence)
和
:學生和教師網絡的概率輸出(通過Softmax計算)
KL散度計算基于Softmax歸一化輸出:
特征損失
為使學生網絡的主干輸出與教師網絡對齊,參考Overhaul方法引入特征損失。該損失直接計算二者L2距離,無需特征圖變換:
式中:
為學生網絡主干輸出
為教師網絡主干輸出- 采用均方誤差(MSE)作為度量標準
總損失函數
最終,U-DML訓練過程的總損失函數定義如下:
訓練策略
實驗發現分段學習率策略更適用于蒸餾訓練:
- 由于特征損失的引入會延長模型收斂時間
- 采用800訓練輪次(epochs)與分段學習率策略
- 在文本識別蒸餾任務中取得最佳效果
CRNN架構改進
針對標準CRNN的CTC-Head部分:
- 原始結構僅使用單層全連接(FC),特征解碼能力較弱
- 改進為雙層FC結構
- 在推理零開銷的前提下,識別準確率提升約1.5%
增強型CTC損失
在中文識別任務中存在大量相似字符,其外觀差異極小,極易導致誤識別。PP-OCRv2為此設計了增強型CTC損失,該損失融合了原始CTC損失與度量學習中的中心損失思想(Wen等,2016),經改進適配序列識別任務。具體定義如下:
關鍵參數說明
- 特征對齊:
:時間步
的特征向量
:類別
的中心向量- 標簽對齊難點:CRNN算法(施等,2016)存在特征與標簽不對齊問題,xt 無直接對應標簽
- 解決方案:采用貪婪解碼策略獲取偽標簽:
yt=argmax(W?xt)(12)
(W 為CTC-Head參數矩陣)
- 實驗參數:
- 平衡系數
經實驗驗證最優 - 中心損失約束使相似字符特征空間分離
- 平衡系數
3. 實驗與結論
3.1 實驗設置
數據集
我們在與PP-OCR工作(Du等,2020)相同的數據集上進行實驗:
- 文本檢測:
- 訓練集:97K圖像(68K真實場景圖像 + 29K合成圖像)
- 真實圖像來源:百度圖片搜索及9大公開數據集
LSVT(Sun等,2019)
、RCTW-17(Shi等,2017)
、MTWI 2018(He等,2018)
CASIA-10K(He等,2018)
、SROIE(Huang等,2019)
、MLT 2019(Nayef等,2019)
BDI(Karatzas等,2011)
、MSRA-TD500(Yao等,2012)
、CCPD 2019(Xu等,2018)
- 合成圖像特征:聚焦長文本、多向文本及表格內文本
- 真實圖像來源:百度圖片搜索及9大公開數據集
- 驗證集:500張真實場景圖像
- 文本識別:
- 訓練集:1,790萬圖像
- 真實圖像:190萬(源自公開數據集及百度圖片搜索)
- 合成圖像:1,600萬(覆蓋背景/旋轉/透視變換/噪聲/垂直文本等場景)
- 語料來源:真實場景文本
- 驗證集:1.87萬張真實場景圖像
- 系統評估集:
- 300張實際應用場景圖像
- 涵蓋合同樣本、車牌、銘牌、火車票、試卷、表格、證書、街景、名片、數字儀表等
注:文本檢測與識別采用的數據合成工具基于text render(Sanster, 2018)改進
實現細節
本工作采用與PP-OCR(Du等,2020)相似的訓練策略(詳見圖2)。所有模型均使用Adam優化器進行訓練,初始學習率設為0.001。主要差異在于學習率調度策略:
- 文本檢測模型:采用余弦學習率衰減(cosine learning rate decay)
- 文本識別模型:采用分段衰減策略(piece-wise decay)
檢測與識別模型在訓練初期均進行預熱訓練(warm-up)以提升穩定性。
訓練參數配置
- 文本檢測模型
- 總訓練輪次:700輪
- 預熱輪次:2輪
- 單卡批量大小:8
- 硬件配置:單張NVIDIA T4 GPU
- 文本識別模型
- 總訓練輪次:700輪(初始學習率0.001) + 100輪(學習率衰減至0.0001)
- 預熱輪次:5輪
- 單卡批量大小:128
推理評估指標
- 文本檢測器性能:
使用調和平均值(Hmean)評估檢測框準確率 - 端到端OCR系統:
采用端到端Hmean(結合檢測與識別結果) - 文本識別器性能:
以整句準確率(Sentence Accuracy)作為核心指標
推理速度測試環境
- GPU推理:NVIDIA T4 GPU(單卡)
- CPU推理:Intel Xeon Gold 6148處理器
3.2 文本檢測
表2展示了文本檢測任務中DML(深度互學習)、CML(協同互學習)和CopyPaste數據增強策略的消融實驗結果。實驗以PP-OCR輕量級檢測模型為基線,測試階段將輸入圖像長邊縮放至960像素。結果顯示:
- DML策略:Hmean指標提升近 2%
- CML策略:Hmean指標進一步提升 3%(較基線累計提升 5%)
- CopyPaste數據增強:Hmean指標再提升 0.6%(最終累計提升 5.6%)
核心結論:
在模型結構不變的前提下,PP-OCRv2檢測模型較PP-OCR的Hmean指標實現 3.6% 的絕對提升(原文累計提升5.6%但基線為PP-OCR輕量模型,最終對比PP-OCR時凈提升3.6%),且推理速度保持不變。
?? 注:推理時間包含預處理與后處理全流程耗時。
3.3 文本識別
表3展示了PP-LCNet輕量骨干網絡、U-DML聯合互學習策略及Enhanced CTC損失的消融實驗結果:
- PP-LCNet替換MobileNetV3:
- 識別準確率提升 2.6%
- 模型體積增加3M,但因網絡結構優化,單樣本推理時間從 7.7ms降至6.2ms
- U-DML策略:準確率再提升 4.6%(顯著增益)
- Enhanced CTC損失:準確率進一步增加 0.9%
綜合效果:
所有策略聯合使識別準確率絕對提升 8.1%,模型體積增加3M,但平均推理時間加速 1.5ms。
PP-LCNet泛化性驗證:
在ImageNet-1k等挑戰性數據集上的測試表明(表4),PP-LCNet在速度與精度上均優于MobileNetV3等輕量網絡,成為兼顧高效與強表征的輕量化骨干網絡。
3.4 系統性能
表5對比了PP-OCRv2與PP-OCR輕量版/服務器版的性能:
- PP-OCR服務器版:
- 檢測骨干:ResNet18-vd
- 識別骨干:ResNet34-vd
- 特點:Hmean更高,但推理速度顯著慢于輕量版
- PP-OCRv2輕量版:
- 相同推理成本下,Hmean較PP-OCR輕量版提升 7.3%
- 性能與PP-OCR服務器版相當,但速度更快
圖9可視化展示了PP-OCRv2與PP-OCR輕量版/服務器版的端到端識別結果對比,印證上述結論。
4 結論
本文提出了一種更魯棒的超輕量級OCR實用系統PP-OCRv2。通過集成協同互學習(CML)、CopyPaste數據增強、輕量化CPU網絡(PP-LCNet)、統一深度互學習(U-DML)及中心損失函數等系列策略,顯著增強了前代PP-OCR模型的性能。實際場景測試表明:在同等推理成本下,PP-OCRv2的識別精度顯著超越PP-OCR(具體提升幅度見第三章實驗分析)。本文同步發布了多個超輕量級OCR實用模型及其對應的大規模數據集,為工業落地提供了完整解決方案。