吊打一切現(xiàn)有開源OCR項(xiàng)目!效果再升7%,速度提升220%!
點(diǎn)擊下方卡片,關(guān)注“CVer”公眾號
AI/CV重磅干貨,第一時(shí)間送達(dá)
一、導(dǎo)讀
OCR方向的工程師,之前一定聽說過PaddleOCR這個(gè)項(xiàng)目,其主要推薦的PP-OCR算法更是被國內(nèi)外企業(yè)開發(fā)者廣泛應(yīng)用,短短半年時(shí)間,累計(jì)Star數(shù)量已超過15k,頻頻登上Github Trending和Paperswithcode 日榜月榜第一,在《Github 2020數(shù)字洞察報(bào)告》中被評為中國Github Top20活躍項(xiàng)目,稱它為 OCR方向目前最火的repo絕對不為過。
最近,由PaddleOCR原創(chuàng)團(tuán)隊(duì),針對PP-OCR進(jìn)行了一些經(jīng)驗(yàn)性改進(jìn),構(gòu)建了一種新的OCR系統(tǒng),稱為PP-OCRv2。
從算法改進(jìn)思路上看,主要有五個(gè)方面的改進(jìn):
(1)檢測模型優(yōu)化:采用CML協(xié)同互學(xué)習(xí)知識蒸餾策略;
(2)檢測模型優(yōu)化:CopyPaste數(shù)據(jù)增廣策略;
(3)識別模型優(yōu)化:LCNet輕量級骨干網(wǎng)絡(luò);
(4)識別模型優(yōu)化:UDML 改進(jìn)知識蒸餾策略;
(5)識別模型優(yōu)化:Enhanced CTC loss損失函數(shù)改進(jìn)。
從效果上看,主要有三個(gè)方面提升
(1)在模型效果上,相對于PP-OCR mobile版本提升超7%;
(2)在速度上,相對于PP-OCR server版本提升超過220%;
(3)在模型大小上,11.6M的總大小,服務(wù)器端和移動端都可以輕松部署。

GitHub項(xiàng)目:
https://github.com/PaddlePaddle/PaddleOCR
注:為了照顧剛了解PaddleOCR的新用戶,在第二、三部分簡單進(jìn)行一些背景介紹,熟悉PaddleOCR的老用戶可以直接跳到第四部分。
二、PaddleOCR歷史表現(xiàn)回顧
2020年6月,8.6M超輕量模型發(fā)布,GitHub Trending 全球趨勢榜日榜第一。
2020年8月,開源CVPR2020頂會算法,再上GitHub趨勢榜單!
2020年10月,發(fā)布PP-OCR算法,開源3.5M超超輕量模型,再上Paperswithcode 趨勢榜第一!
2021年1月,發(fā)布Style-Text文本合成算法和PPOCRLabel數(shù)據(jù)標(biāo)注工具,star數(shù)量突破10000+,在《Github 2020數(shù)字洞察報(bào)告》中被評為中國Github Top20活躍項(xiàng)目。
2021年4月,開源AAAI頂會論文PGNet端到端識別算法,Star突破13k。
2021年8月,開源版面分析與表格識別算法PP-Structure,Star突破15k。
2021年9月,發(fā)布PP-OCRv2算法,效果和速度再升級。

三、PaddleOCR開源能力速覽
(1)通用文本檢測識別效果:支持通用場景下的OCR文本快速檢測識別

(2)文本合成工具Style-Text效果:相比于傳統(tǒng)的數(shù)據(jù)合成算法,Style-Text可以實(shí)現(xiàn)特殊背景下的圖片風(fēng)格遷移,只需要少許目標(biāo)場景圖像,就可以合成大量數(shù)據(jù),效果展示如下:

(3)半自動標(biāo)注工具PPOCRLabel:通過內(nèi)置高質(zhì)量的PP-OCR中英文超輕量預(yù)訓(xùn)練模型,可以實(shí)現(xiàn)OCR數(shù)據(jù)的高效標(biāo)注。CPU機(jī)器運(yùn)行也是完全沒問題的。用法也是非常的簡單,標(biāo)注效率提升60%-80%是妥妥的,效果演示如下:

(4)文檔結(jié)構(gòu)分析+表格提取PP-Structure:可以對文檔圖片中的文本、表格、圖片、標(biāo)題與列表區(qū)域進(jìn)行分類,還可以利用表格識別技術(shù)完整地提取表格結(jié)構(gòu)信息,使得表格圖片變?yōu)榭删庉嫷腅xcel文件。


(5)核心能力全部可以自定義訓(xùn)練,動靜統(tǒng)一的開發(fā)體驗(yàn)
動態(tài)圖和靜態(tài)圖是深度學(xué)習(xí)框架常用的兩種模式。在動態(tài)圖模式下,代碼編寫運(yùn)行方式符合Python程序員的習(xí)慣,易于調(diào)試,但在性能方面, Python執(zhí)行開銷較大,與C++有一定差距。相比動態(tài)圖,靜態(tài)圖在部署方面更具有性能的優(yōu)勢。靜態(tài)圖程序在編譯執(zhí)行時(shí),預(yù)先搭建好的神經(jīng)網(wǎng)絡(luò)可以脫離Python依賴,在C++端被重新解析執(zhí)行,而且擁有整體網(wǎng)絡(luò)結(jié)構(gòu)也能進(jìn)行一些網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化。
PaddleOCR依賴飛槳核心框架動靜統(tǒng)一的能力,支持用戶使用動態(tài)圖編寫組網(wǎng)代碼。預(yù)測部署時(shí),飛槳會對用戶代碼進(jìn)行分析,自動轉(zhuǎn)換為靜態(tài)圖網(wǎng)絡(luò)結(jié)構(gòu),兼顧了動態(tài)圖易用性和靜態(tài)圖部署性能兩方面優(yōu)勢。
傳送門:
Github:https://github.com/PaddlePaddle/PaddleOCR
那么最近的2021年9月份更新,PaddleOCR又給大家?guī)砟男@喜呢?
四、PP-OCRv2五大關(guān)鍵技術(shù)點(diǎn)深入解讀:
全新升級的PP-OCRv2版本,整體的框架圖保持了與PP-OCR相同的Pipeline,如下圖所示。

在優(yōu)化策略方面,主要從五個(gè)角度進(jìn)行了深入優(yōu)化(如上圖紅框所示),主要包括:
檢測模型優(yōu)化:采用CML知識蒸餾策略
檢測模型優(yōu)化:CopyPaste數(shù)據(jù)增廣策略
識別模型優(yōu)化:LCNet輕量級骨干網(wǎng)絡(luò)
識別模型優(yōu)化:UDML 知識蒸餾策略
識別模型優(yōu)化:Enhanced CTC loss 改進(jìn)
下面展開詳細(xì)介紹:
(1)檢測模型優(yōu)化:采用CML (Collaborative Mutual Learning) 協(xié)同互學(xué)習(xí)知識蒸餾策略。

如上圖所示,CML的核心思想結(jié)合了①傳統(tǒng)的Teacher指導(dǎo)Student的標(biāo)準(zhǔn)蒸餾與 ②Students網(wǎng)絡(luò)直接的DML互學(xué)習(xí),可以讓Students網(wǎng)絡(luò)互學(xué)習(xí)的同時(shí),Teacher網(wǎng)絡(luò)予以指導(dǎo)。對應(yīng)的,精心設(shè)計(jì)關(guān)鍵的三個(gè)Loss損失函數(shù):GT Loss、DML Loss和Distill Loss,在Teacher網(wǎng)絡(luò)Backbone為ResNet18的條件下,對Student的MobileNetV3起到了良好的提升效果。
(2)檢測模型優(yōu)化:CopyPaste數(shù)據(jù)增廣策略

數(shù)據(jù)增廣是提升模型泛化能力重要的手段之一,CopyPaste 是一種新穎的數(shù)據(jù)增強(qiáng)技巧,
已經(jīng)在目標(biāo)檢測和實(shí)例分割任務(wù)中驗(yàn)證了有效性。利用CopyPaste,可以合成文本實(shí)例來平衡訓(xùn)練圖像中的正負(fù)樣本之間的比例。相比而言,傳統(tǒng)圖像旋轉(zhuǎn)、隨機(jī)翻轉(zhuǎn)和隨機(jī)裁剪是無法做到的。CopyPaste主要步驟包括:①隨機(jī)選擇兩幅訓(xùn)練圖像,②隨機(jī)尺度抖動縮放,③隨機(jī)水平翻轉(zhuǎn),④隨機(jī)選擇一幅圖像中的目標(biāo)子集,⑤粘貼在另一幅圖像中隨機(jī)的位置。這樣,就比較好的提升了樣本豐富度,同時(shí)也增加了模型對環(huán)境魯棒性。
經(jīng)過以上兩個(gè)檢測方向的優(yōu)化策略,PP-OCRv2檢測部分的實(shí)驗(yàn)效果如下:

(3)識別模型優(yōu)化:LCNet輕量級骨干網(wǎng)絡(luò)

這里,PP-OCRv2的研發(fā)團(tuán)隊(duì)提出了一種基于MobileNetV1改進(jìn)的新的骨干網(wǎng)絡(luò)LCNet,主要的改動包括:
①除SE模塊,網(wǎng)絡(luò)中所有的relu替換為h-swish,精度提升1%-2%
②LCNet第五階段,DW的kernel size變?yōu)?x5,精度提升0.5%-1%
③LCNet第五階段的最后兩個(gè)SEP block添加SE模塊, 精度提升0.5%-1%
④GAP后添加1280維的FC層,增加特征表達(dá)能力,精度提升2%-3%
(4)識別模型優(yōu)化:UDML 知識蒸餾策略

在標(biāo)準(zhǔn)的DML知識蒸餾的基礎(chǔ)上,新增引入了對于Feature Map的監(jiān)督機(jī)制,新增Feature Loss,增加迭代次數(shù),在Head部分增加額外的FC網(wǎng)絡(luò),最終加快蒸餾的速度同時(shí)提升效果。
(5)識別模型優(yōu)化:Enhanced CTC loss 改進(jìn)

考慮到中文OCR任務(wù)經(jīng)常遇到的識別難點(diǎn)是相似字符數(shù)太多,容易誤識,借鑒Metric Learning的想法,引入Center Loss,進(jìn)一步增大類間距離,核心思路如上圖公式所示。
經(jīng)過以上三個(gè)識別方向的優(yōu)化策略,PP-OCRv2識別部分的實(shí)驗(yàn)效果如下:

經(jīng)過以上五個(gè)方向的優(yōu)化,最終PP-OCRv2僅以少量模型大小增加的代價(jià),全面超越PP-OCR,取得了良好的效果。

五、良心出品的中英文文檔教程
隨著本次PP-OCRv2升級,PaddleOCR的項(xiàng)目文檔也全面升級,結(jié)構(gòu)更清晰,內(nèi)容更豐富,

別的不需要多說了,大家訪問GitHub點(diǎn)過star之后自己體驗(yàn)吧:
https://github.com/PaddlePaddle/PaddleOCR

9月8日晚20:15-21:30,百度高級研發(fā)工程師將為我們詳細(xì)解析速度與精度都大幅提升的PaddleOCR,歡迎大家掃碼報(bào)名直播課,加入技術(shù)交流群~

官網(wǎng)地址:https://www.paddlepaddle.org.cn
PaddleOCR項(xiàng)目地址:
GitHub: https://github.com/PaddlePaddle/PaddleOCR
Gitee: https://gitee.com/paddlepaddle/PaddleOCR
點(diǎn)擊【閱讀原文】,即可報(bào)名學(xué)習(xí)!
