吊打一切现有开源OCR项目:效果再升7%,速度提升220%
01 導讀
OCR 方向的工程師,之前一定聽說過 PaddleOCR 這個項目,其主要推薦的 PP-OCR 算法更是被國內外企業開發者廣泛應用。短短半年時間,累計 Star 數量已超過15k,頻頻登上 Github Trending 和 Paperswithcode 日榜月榜第一。
在《Github 2020數字洞察報告》中被評為中國 Github Top 20活躍項目,
稱它為 OCR 方向目前最火的 repo 絕對不為過。
最近,由 PaddleOCR 原創團隊,針對 PP-OCR 進行了一些經驗性改進,構建了一種新的 OCR 系統,稱為 PP-OCRv2。
從算法改進思路上看,主要有五個方面的改進:
1.檢測模型優化:采用 CML 協同互學習知識蒸餾策略;
2.檢測模型優化:CopyPaste 數據增廣策略;
3.識別模型優化:LCNet 輕量級骨干網絡;
4.識別模型優化:UDML 改進知識蒸餾策略;
5.識別模型優化:Enhanced CTC loss 損失函數改進。
從效果上看,主要有三個方面提升:
1.在模型效果上,相對于 PP-OCR mobile 版本提升超7%;
2.在速度上,相對于 PP-OCR server 版本提升超過220%;
3.在模型大小上,11.6M 的總大小,服務器端和移動端都可以輕松部署。
GitHub 項目:
https://github.com/PaddlePaddle/PaddleOCR
注:為了照顧剛了解 PaddleOCR 的新用戶,在第二、三部分簡單進行一些背景介紹,熟悉 PaddleOCR 的老用戶可以直接跳到第四部分。
02 PaddleOCR 歷史表現回顧
2020年6月,8.6M 超輕量模型發布,GitHub Trending 全球趨勢榜日榜第一。
2020年8月,開源 CVPR 2020頂會算法,再上 GitHub 趨勢榜單!
2020年10月,發布 PP-OCR 算法,開源3.5M 超超輕量模型,再上 Paperswithcode 趨勢榜第一!
2021年1月,發布 Style-Text 文本合成算法和 PPOCRLabel 數據標注工具, star 數量突破10000+,在《Github 2020數字洞察報告》中被評為中國 Github Top 20活躍項目。
2021年4月,開源 AAAI 頂會論文 PGNet 端到端識別算法,Star 突破13k。
2021年8月,開源版面分析與表格識別算法 PP-Structure,Star 突破15k。
2021年9月,發布 PP-OCRv2 算法,效果和速度再升級。
03 PaddleOCR 開源能力速覽
(1)通用文本檢測識別效果:支持通用場景下的 OCR 文本快速檢測識別
(2)文本合成工具 Style-Text 效果:相比于傳統的數據合成算法,Style-Text 可以實現特殊背景下的圖片風格遷移,只需要少許目標場景圖像,就可以合成大量數據,效果展示如下:
(3)半自動標注工具 PPOCRLabel:通過內置高質量的 PP-OCR 中英文超輕量預訓練模型,可以實現 OCR 數據的高效標注。CPU 機器運行也是完全沒問題的。用法也是非常的簡單,標注效率提升60%-80%是妥妥的,效果演示如下:
(4)文檔結構分析+表格提取 PP-Structure:可以對文檔圖片中的文本、表格、圖片、標題與列表區域進行分類,還可以利用表格識別技術完整地提取表格結構信息,使得表格圖片變為可編輯的 Excel 文件。
(5)核心能力全部可以自定義訓練,動靜統一的開發體驗:動態圖和靜態圖是深度學習框架常用的兩種模式。在動態圖模式下,代碼編寫運行方式符合 Python 程序員的習慣,易于調試,但在性能方面,Python 執行開銷較大,與 C++ 有一定差距。相比動態圖,靜態圖在部署方面更具有性能的優勢。靜態圖程序在編譯執行時,預先搭建好的神經網絡可以脫離 Python 依賴,在 C++ 端被重新解析執行,而且擁有整體網絡結構也能進行一些網絡結構的優化。
PaddleOCR 依賴飛槳核心框架動靜統一的能力,支持用戶使用動態圖編寫組網代碼。預測部署時,飛槳會對用戶代碼進行分析,自動轉換為靜態圖網絡結構,兼顧了動態圖易用性和靜態圖部署性能兩方面優勢。
傳送門:
Github:https://github.com/PaddlePaddle/PaddleOCR
那么最近的2021年9月份更新,PaddleOCR 又給大家帶來哪些驚喜呢?
04 PP-OCRv2 五大關鍵技術點深入解讀
全新升級的 PP-OCRv2 版本,整體的框架圖保持了與 PP-OCR 相同的 Pipeline,如下圖所示。
在優化策略方面,主要從五個角度進行了深入優化(如上圖紅框所示),主要包括:
- 檢測模型優化:采用 CML 知識蒸餾策略
- 檢測模型優化:CopyPaste 數據增廣策略
- 識別模型優化:LCNet 輕量級骨干網絡
- 識別模型優化:UDML 知識蒸餾策略
- 識別模型優化:Enhanced CTC loss 改進
下面展開詳細介紹:
(1)檢測模型優化:采用 CML (Collaborative Mutual Learning) 協同互學習知識蒸餾策略。
如上圖所示,CML 的核心思想結合了①傳統的 Teacher 指導 Student 的標準蒸餾與 ② Students 網絡直接的 DML 互學習,可以讓 Students 網絡互學習的同時,Teacher 網絡予以指導。對應的,精心設計關鍵的三個 Loss 損失函數:GT Loss、DML Loss 和 Distill Loss,在 Teacher 網絡 Backbone 為 ResNet18 的條件下,對 Student 的 MobileNetV3 起到了良好的提升效果。
(2)檢測模型優化:CopyPaste 數據增廣策略
數據增廣是提升模型泛化能力重要的手段之一,CopyPaste 是一種新穎的數據增強技巧,已經在目標檢測和實例分割任務中驗證了有效性。利用 CopyPaste,可以合成文本實例來平衡訓練圖像中的正負樣本之間的比例。相比而言,傳統圖像旋轉、隨機翻轉和隨機裁剪是無法做到的。
CopyPaste 主要步驟包括:①隨機選擇兩幅訓練圖像,②隨機尺度抖動縮放,③隨機水平翻轉,④隨機選擇一幅圖像中的目標子集,⑤粘貼在另一幅圖像中隨機的位置。這樣,就比較好的提升了樣本豐富度,同時也增加了模型對環境魯棒性。
經過以上兩個檢測方向的優化策略,PP-OCRv2 檢測部分的實驗效果如下:
(3)識別模型優化: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%
(4)識別模型優化:UDML 知識蒸餾策略
在標準的 DML 知識蒸餾的基礎上,新增引入了對于 Feature Map 的監督機制,新增 Feature Loss,增加迭代次數,在 Head 部分增加額外的 FC 網絡,最終加快蒸餾的速度同時提升效果。
(5)識別模型優化:Enhanced CTC loss 改進
考慮到中文 OCR 任務經常遇到的識別難點是相似字符數太多,容易誤識,借鑒 Metric Learning 的想法,引入 Center Loss,進一步增大類間距離,核心思路如上圖公式所示。
經過以上三個識別方向的優化策略,PP-OCRv2 識別部分的實驗效果如下:
經過以上五個方向的優化,最終 PP-OCRv2 僅以少量模型大小增加的代價,全面超越 PP-OCR,取得了良好的效果。
05 良心出品的中英文文檔教程
隨著本次 PP-OCRv2 升級,PaddleOCR 的項目文檔也全面升級,結構更清晰,內容更豐富:
別的不需要多說了,大家訪問 GitHub 點過 star 之后自己體驗吧:
https://github.com/PaddlePaddle/PaddleOCR
點擊進入了解更多技術資訊~~
總結
以上是生活随笔為你收集整理的吊打一切现有开源OCR项目:效果再升7%,速度提升220%的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS 崩溃日志在线符号化实践
- 下一篇: 云原生架构下的持续交付实践