效果提升7%、速度增加220%,OCR開源神器PaddleOCR再迎升級
論文地址:https://arxiv.org/abs/2109.03144
項目地址:https://github.com/PaddlePaddle/PaddleOCR
從效果上看,PP-OCRv2 主要有三個方面提升:
在模型效果上,相對于 PP-OCR mobile 版本提升超 7%;
在速度上,相對于 PP-OCR server 版本提升超過 220%;
在模型大小上,11.6M 的總大小,服務器端和移動端都可以輕松部署。
為了讓讀者了解更多技術細節,飛槳 PaddleOCR 原創團隊針對 PP-OCRv2 進行了更加深度的獨家解讀,希望可以對大家的工作學習有所幫助。
PP-OCRv2 五大關鍵技術改進點深入解讀
全新升級的 PP-OCRv2 版本,整體框架圖保持了與 PP-OCR 相同的 Pipeline,如下圖所示:
在優化策略方面,主要從五個角度進行了深入優化(如上圖紅框所示),主要包括:
檢測部分優化兩項:
采用協同互學習(Collaborative Mutual Learning, CML) 知識蒸餾策略
CopyPaste 數據增廣策略
識別部分優化三項:
LCNet 輕量級骨干網絡(Lightweight CPU Network)
UDML 知識蒸餾策略
Enhanced CTC loss 改進
下面展開詳細介紹。
檢測模型優化:采用 CML 知識蒸餾策略
如下圖所示,標準的蒸餾方法是通過一個大模型作為 Teacher 模型來指導 Student 模型提升效果,而后來又發展出 DML 互學習蒸餾方法,即通過兩個模型結構相同的模型互相學習。這兩種算法都是兩個模型之間,而最新在 PP-OCRv2 中使用的是三個模型之間的 CML 協同互蒸餾方法,既包含兩個相同結構的 Student 模型之間互學習,同時還引入了較大模型結構的 Teacher 模型。
這樣,CML 的核心思想結合了①傳統的 Teacher 指導 Student 的標準蒸餾與 ②Students 網絡之間的 DML 互學習,這種思想其實也是和實際學校里面鼓勵大家互相討論同時教師指導的模式比較相似,可以讓 Students 學的效果更好。
具體的網絡結構和精心設計關鍵的三個 Loss 損失函數如下圖所示:
① DML Loss:對于一張輸入訓練圖片,分別送到兩個 Student 網絡,這里采用的是 DBNet 檢測模型,輸出對應的概率圖(response maps),然后對比兩個網絡之間的 DML loss,這里采用的是散度的方法,對應的公式如下所示,其中 S1 和 S2 對應兩個 Student 網絡,KL 是散度計算公式:
② GT Loss:標準的 DBNet 訓練任務如下圖所示:
其輸出主要包含以上三種 feature map,具體如下表所示:
GT Loss 可以表示為:
③ Distill Loss:第三部分是來自 teacher 的監督信號,其只對特征 Probability map Binary map 做蒸餾。另外,從實際經驗看,對 Teacher 的輸出做膨脹操作 (f_dila()), 可以增強 Teacher 的表達能力,提升 Teacher 精度約 2%,從而提升蒸餾效果,對應的函數可以表示為:
其中? 是默認超參設置為 5,分別是交叉熵 loss 和 Dice Loss,是膨脹函數。
④ 最終,所有的 Loss 函數加起來,就是最終的 Loss 函數,如下所示:
這里,關于三個 Loss 函數的權重分配,也可以再調整或者學習一些超參,有興趣的開發者可以繼續嘗試。
檢測模型優化:CopyPaste 數據增廣策略
在實際的檢測模型訓練過程中,經常會遇到兩個問題:①樣本豐富度不足,主要體現在標注大量數據成本很高,而且對于采集過程和采集的豐富多樣性也有要求; ②模型對環境魯棒性較差,相同的文字分布,在不同背景下的檢測結果卻相差較多。
這樣很容易想到采用數據增廣作為提升模型泛化能力重要的手段,CopyPaste 是一種新穎的數據增強技巧,已經在目標檢測和實例分割任務中驗證了有效性。利用 CopyPaste,可以合成文本實例來平衡訓練圖像中的正負樣本之間的比例。
相比而言,傳統圖像旋轉、隨機翻轉和隨機裁剪是無法做到的。CopyPaste 主要步驟包括:
隨機選擇兩幅訓練圖像;
隨機尺度抖動縮放;
隨機水平翻轉;
隨機選擇一幅圖像中的目標子集;
粘貼在另一幅圖像中隨機的位置。
這樣就比較好地提升了樣本豐富度,同時也增加了模型對環境的魯棒性。如下圖所示,通過在第二張圖中裁剪出來的文本,隨機旋轉縮放之后粘貼到第一張圖像中,進一步豐富了文本在不同背景下的多樣性。
經過以上兩個檢測方向的優化策略,PP-OCRv2 檢測部分的實驗效果如下表所示:
可以看到,由于蒸餾和數據增強不影響模型的結構,所以整體的模型大小和預測速度沒有變化,但是精度指標上,以 Hmean 計算,增加了 3.6%,還是比較明顯的。
識別模型優化:自研 LCNet 輕量級骨干網絡
這里,PP-OCRv2 的研發團隊提出了一種基于 MobileNetV1 改進的新的骨干網絡 LCNet,主要的改動包括:
除 SE 模塊,網絡中所有的 relu 替換為 h-swish,精度提升 1%-2%;
LCNet 第五階段,DW 的 kernel size 變為 5x5,精度提升 0.5%-1%;
LCNet 第五階段的最后兩個 depthSepconv block 添加 SE 模塊,精度提升 0.5%-1%;
GAP 后添加 1280 維的 FC 層,增加特征表達能力,精度提升 2%-3%。
在 ImageNet-1k 數據集上驗證,可以看到,LCNet 不僅在精度上遙遙領先其它的輕量級骨干網絡,同時在 CPU 上的預測速度也取得了明顯的優勢。
識別模型優化:UDML 知識蒸餾策略
在標準的 DML 知識蒸餾的基礎上,新增引入了對 Feature Map 的監督機制,新增 Feature Loss,然后結合 CRNN 基礎的 CTC Loss 和蒸餾引入的 DML Loss,最終分別計算再求和之后,所有的 Loss 函數可以表示為:
另外,在訓練過程中通過增加迭代次數,在 Head 部分添加 FC 網絡等 trick,平衡模型特征編碼與解碼的能力,進一步提升了模型效果。
識別模型優化:Enhanced CTC loss 改進
考慮到中文 OCR 任務經常遇到的識別難點是相似字符數太多,容易誤識。因此借鑒 Metric Learning 的想法,引入 Center Loss,進一步增大類間距離,核心思路如下圖公式所示:
同時,Enhance-CTC 的初始化過程對結果也有較大影響,主要包括:
基于原始的 CTCLoss,訓練一個網絡;
提取出訓練集中識別正確的圖像集合,計為 G;
將 G 中的圖片依次輸入網絡, 提取 80 個 timestamp 的 xt 和 yt 的對應關系,其中 yt 計算方式如下:
將相同 yt 對應的 xt 聚合在一起,取其平均值,作為初始 center。
這樣,經過以上三個檢測方向的優化策略,PP-OCRv2 檢測部分的實驗效果如下:
可以看到,經過一系列優化,雖然識別模型的大小有所增加,但是整體的精度和速度都取得了明顯的提升。
并且,經過以上五個方向的優化,最終 PP-OCRv2 僅以少量模型大小增加的代價,全面超越 PP-OCR,取得了良好的效果,如下圖所示:
飛槳產業級模型庫中的 PP 系列模型
除了 PP-OCRv2,為了更好地滿足企業用戶實際的產業需求,飛槳陸續發布了 PP 系列模型,可以滿足用戶在物品識別、目標檢測、人像分割、文本識別、圖像超分、自然語言處理等一系列任務。由于篇幅所限,概要介紹如下,有需求的用戶可以到 Github 了解更多:
(1)PP-ShiTu(即將發布):超輕量通用圖像識別系統,高效解決商品識別、車輛識別等場景中的識別問題,并可快速遷移到其他圖像識別任務中。
(2)PP-YOLOv2:目標檢測任務上 AP 和速度等綜合性能超過 YOLOv5,其中一版本可達 50.3%AP 和 50.3FPS。
(3)PP-HumanSeg:輕量級人像分割,手機端的精度和速度表現都很出色。
(4)PP-Structure:支持文檔版面分析、結構化和表格識別,是目前業界最豐富的文檔分析解決方案。
(5)PP-VSR:視頻超分 SOTA 模型,REDS、Vid4 數據集精度達到最優,效果驚艷。
快速打造明星模型背后的強力支撐:
面向產業用戶需求的設計理念和飛槳動靜統一的開發體驗
源于多年的產業實踐,飛槳深刻洞察企業對于產業模型的需求,核心就是以下兩個要點:
模型效果好,滿足業務需求;
預測部署方便,速度快,節省資源。
這兩個需求對應到深度框架的編程模式來看的話,分別就是動態圖編程(調試方便)和靜態圖部署(性能好)。這里介紹一下:動態圖和靜態圖是深度學習框架常用的兩種模式。
在動態圖模式下,代碼編寫運行方式符合 Python 程序員的習慣,易于調試,但在性能方面, Python 執行開銷較大,與 C++ 有一定差距。相比動態圖,靜態圖在部署方面更具有性能的優勢。靜態圖程序在編譯執行時,預先搭建好的神經網絡可以脫離 Python 依賴,在 C++ 端被重新解析執行,而且擁有整體網絡結構也能進行一些網絡結構的優化。
飛槳核心框架設計過程中,也是敏銳地抓住用戶真實的需求,提供了動靜統一的能力,支持用戶使用動態圖編寫組網代碼。預測部署時,通過動靜轉換接口,會對用戶代碼進行分析,自動轉換為靜態圖網絡結構,兼顧了動態圖易用性和靜態圖部署性能兩方面的優勢。
OCR 機器學習 深度學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。