PP-OCRv2:超輕OCR系統的萬能包

PP-OCRv2:超輕OCR系統的萬能包

摘要

光學字符識別(OCR)系統已廣泛應用于多種場景,但設計兼顧精度與效率的OCR系統仍具挑戰性。我們此前提出的超輕量OCR系統PP-OCR在平衡兩者方面取得進展。本文進一步提出PP-OCRv2,通過五項關鍵技術提升性能:

  1. 檢測模型優化
    • 協同互學習(CML):結合教師-學生蒸餾與學生間互學習,提升檢測魯棒性。
    • CopyPaste數據增強:合成文本實例平衡樣本分布,驗證對檢測任務有效。
  1. 識別模型優化
    • 輕量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大型版本
  • 訓練流程
    1. 固定教師模型參數,僅優化學生模型
    2. 學生模型通過三重監督信號學習:
      • 真實標注(Ground Truth)
      • 同伴模型后驗熵(基于DML方法)
      • 教師模型輸出知識

損失函數設計

  1. 真實損失(GTLoss)
    基于DB算法(Liao等,2020b)的復合損失:

其中:

  • (概率圖損失):二元交叉熵
  • (二值圖損失):Dice損失
  • (閾值圖損失):L1損失
  • 超參數

  1. 同伴損失(DML Loss)
    通過KL散度衡量雙學生模型輸出分布差異:

相比原始DML,本方案采用同步訓練加速收斂

  1. 蒸餾損失(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具有更強的特征提取能力,我們對其網絡結構進行了改進,具體改進策略將從以下四個方面進行說明。

  1. 更好的激活函數。為提升MobileNetV1的擬合能力,我們將網絡中的激活函數由ReLU替換為H-Swish。該改進在推理時間僅輕微增加的情況下,可顯著提升模型精度。
  2. 在適當位置添加 SE 模塊。SE模塊(Hu等,2018)自提出以來已被眾多網絡采用,能通過通道加權獲取更優特征。但考慮到Intel CPU上SE模塊會增加推理耗時,我們通過大量實驗發現:越接近網絡末端,SE模塊效果越顯著。因此僅在網絡尾部區塊添加SE模塊,其內部兩層分別采用ReLU和H-Sigmoid激活函數,實現了精度與速度的最佳平衡。
  3. 更大的卷積核。雖然MixNet(Tan等,2019)證明混合尺寸卷積核能提升性能,但會降低推理速度。我們選擇 在網絡尾部將3×3卷積核替換為5×5卷積核,擴大感受野以捕獲更全局的特征, 在最小化速度損耗的前提下提升性能。
  4. 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),經改進適配序列識別任務。具體定義如下:

關鍵參數說明

  1. 特征對齊
    • :時間步

      的特征向量
    • :類別

      的中心向量
    • 標簽對齊難點:CRNN算法(施等,2016)存在特征與標簽不對齊問題,xt 無直接對應標簽
  • 解決方案:采用貪婪解碼策略獲取偽標簽:
    yt=argmax(W?xt)(12)
    (W 為CTC-Head參數矩陣)
  1. 實驗參數
    • 平衡系數

      經實驗驗證最優
    • 中心損失約束使相似字符特征空間分離

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)
      • 合成圖像特征:聚焦長文本、多向文本及表格內文本
    • 驗證集: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)以提升穩定性。

訓練參數配置
  1. 文本檢測模型
    • 總訓練輪次:700輪
    • 預熱輪次:2輪
    • 單卡批量大小:8
    • 硬件配置:單張NVIDIA T4 GPU
  1. 文本識別模型
    • 總訓練輪次: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實用模型及其對應的大規模數據集,為工業落地提供了完整解決方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87923.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87923.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87923.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

常見的軟件版本開源協議

開源軟件許可證核心指南 一、許可證基礎分類 1. 寬松型許可證(Permissive) 核心特征:允許閉源衍生,僅保留版權聲明適用場景:商業集成、快速開發代表協議: 📜 MIT 📜 Apache 2.0 &…

基于FPGA的一維序列三次樣條插值算法verilog實現,包含testbench

目錄 1.前言 2.算法運行效果圖預覽 3.算法運行軟件版本 4.部分核心程序 5.算法仿真參數 6.算法理論概述 7.參考文獻 8.算法完整程序工程 1.前言 三次樣條插值是一種在數據擬合和信號處理中廣泛應用的技術,它通過構造分段三次多項式來逼近給定的離散數據點&a…

RAG 之 Prompt 動態選擇的三種方式

“如果我有5個prompt模板,我想只選擇一個每次都自動五選一能做到嗎怎么做?” 完全可以做到。這在復雜的RAG或Agentic工作流中是一個非常普遍且關鍵的需求,通常被稱為“條件路由(Conditional Routing)”或“動態調度&am…

【ROS2 自動駕駛學習】02-安裝ROS2及其配套工具

目錄 一、設置語言環境 二、添加存儲庫 三、添加軟件源 四、安裝ROS2 五、配置環境 六、測試ROS2 七、安裝一些工具 7.1 terminator 7.2 colcon工具 7.3 tf工具 7.4 joint-state-publisher工具 7.5 urdf 八、安裝三方庫 8.1 Eigen 8.2 yaml-cpp 8.3 matplotl…

系統學習Python——并發模型和異步編程:基礎知識

分類目錄:《系統學習Python》總目錄 并行是并發的一種特殊情況。**所有并行系統都是并發的,但不是所有并發系統都是并行的。**在21世紀初,我們可以使用單核設備在GNU Linux上同時處理100個進程。一臺擁有4個CPU核的現代筆記本計算機&#xff…

睿爾曼系列機器人——以創新驅動未來,重塑智能協作新生態(下)

在智能制造與人工智能深度融合的當下,機器人技術正經歷從 “功能替代” 到 “價值共創” 的深刻躍遷。睿爾曼,作為全球超輕量仿人機械臂領域的先行者,始終秉持 “讓機器人觸手可及” 的使命,憑借底層技術的突破性進展,…

表征工程(Representation Engineering, RepE)

表征工程(Representation Engineering, RepE) 近年來,表征工程(Representation Engineering, RepE)在提升AI系統透明度和可控性方面取得了顯著進展。 一、大模型可解釋性與可控性的突破 核心論文:《Representation Engineering: A Top-Down Approach to AI Transparen…

國產ARM+FPGA工業開發平臺——GM-3568JHF

一、引言 隨著物聯網和國產替代需求的快速發展,嵌入式系統面臨計算性能與硬件靈活性的雙重挑戰。GM-3568JHF開發板基于國產“ARMFPGA”異構架構,結合瑞芯微RK3568J處理器與紫光同創Logos-2 FPGA芯片,支持國產自主操作系統,滿足通…

RISCV Linux 虛擬內存精講系列一 Sv39

筆者認為,Linux 操作系統(Operating System)最核心的機制是虛擬內存(Virtual Memory)。因為,操作系統主要作用是將硬件環境抽象起來,給在其中運行的應用(Applications)提…

【apply from: “$flutterRoot/packages/flutter_tools/gradle/flutter.gradle“作用】

這行代碼的作用是將 Flutter 的 Gradle 構建腳本集成到 Android 項目中,具體細節如下:作用解析:引入 Flutter 構建邏輯 flutter.gradle 是 Flutter SDK 的核心構建腳本,它負責: 編譯 Dart 代碼為原生二進制文件&#x…

深入理解JavaScript設計模式之命令模式

深入理解JavaScript設計模式之命令模式 文章目錄深入理解JavaScript設計模式之命令模式定義簡單命令模式組合命令模式使用命令模式實現文本編輯器目標關鍵類說明實現的效果交互邏輯流程所有代碼:總結定義 命令模式也是設計模式種相對于變焦簡單容易理解的一種設計模…

CSS 網頁布局:從基礎到進階

CSS 網頁布局:從基礎到進階 引言 隨著互聯網的飛速發展,網頁設計已經成為了一個不可或缺的領域。CSS(層疊樣式表)作為網頁設計中的關鍵工具,用于控制網頁元素的樣式和布局。本文將為您全面解析CSS網頁布局,…

【人工智能】大語言模型(LLM) NLP

大語言模型(LLM)& NLP1.大語言模型(LLM)1.1 一句話解釋1.2 更形象的比喻1.3 為什么叫 “大” 模型1.4 它能做什么1.5 現實中的例子2.對比 NLP2.1 用 “汽車進化” 比喻 NLP → LLM2.2 為什么說 LLM 屬于 NLP2.3 LLM 的 “革命…

Unity HDRP + Azure IoT 的 Python 后端實現與集成方案

Unity HDRP Azure IoT 的 Python 后端實現與集成方案 雖然Unity HDRP本身使用C#開發,但我們可以構建Python后端服務支持物聯網系統,并與Unity引擎深度集成。以下是完整的實現方案: 系統架構 #mermaid-svg-qCDb0g9Ik287Cg8X {font-family:&qu…

小黑黑日常積累大模型prompt句式2:【以段落的形式輸出,不分點列舉】【如果沒有相關內容則不輸出】【可讀性強】【輸出格式規范】

以段落的形式輸出,不分點列舉 每個標題下直接接續段落內容,不編號、不分點。......標題下直接接續段落內容,不繼續進行分點列舉。如果沒有相關內容則不輸出 若某一部分無法從原文中提取有效信息,則跳過該部分內容,不做…

React Native 基礎組件詳解<一>

一、Text組件 1)numberOfLines:顯示行數 2)ellipsizeMode:超出隱藏的位置 clip->裁掉 head/middle/ tail->點的位置 3)selectable: 是否可以選中 4)selectionColor:選中后的顏色 5&#…

異步編程(Promise/Generator/async)

1、Promise 2、Generator 3、async/await

【Note】《Kafka: The Definitive Guide》 第8章: Cross-Cluster Data Mirroring

《Kafka: The Definitive Guide》 第8章: Cross-Cluster Data Mirroring 一、跨集群鏡像的場景與價值 多區域低延遲訪問 將業務數據從主集群實時復制到多個地理區域的集群,縮短消費者跨區讀取延遲。 災備切換 當主集群出現故障時,可快速將消…

「Windows/Mac OS」AIGC圖片生成視頻 ,webui + stable-diffusion環境部署教程

stable-diffusion webui 環境搭建目錄 一、Windows 環境部署 stable-diffusion-webui1、準備條件2、安裝Python 3.10.X(**較新版本的 Python 不支持 torch**)3、安裝Git 教程4、使用Git 下載 stable-diffusion-webui 存儲庫,4.1、顯示報錯 5…

【深度學習】 深度學習訓練配置參數詳解

深度學習訓練配置參數詳解 1. 啟動初始化參數說明CUDA_VISIBLE_DEVICES指定使用的GPU設備編號("0"表示單卡)seed隨機種子(1777777),保證實驗可復現性cuda是否啟用GPU加速(True)benchm…