再升級(jí)!PP-OCRv4多場(chǎng)景平均精度提升5%!
OCR方向的工程師,一定有在關(guān)注PaddleOCR這個(gè)項(xiàng)目,其主要推薦的PP-OCR算法更是被國(guó)內(nèi)外企業(yè)開發(fā)者廣泛應(yīng)用。短短幾年時(shí)間,PP-OCR累計(jì)Star數(shù)量已超過32.2k,頻頻登上GitHub Trending和Paperswithcode日榜月榜第一,稱它為OCR方向目前最火的repo絕對(duì)不為過。
PaddleOCR主打的PP-OCR系列模型,在去年五月份推出了v3。最近,飛槳AI套件團(tuán)隊(duì)針對(duì)PP-OCRv3進(jìn)行了全方位的改進(jìn),重磅推出了PP-OCRv4!??????
從效果上看,速度可比情況下,v4相比v3在多種場(chǎng)景下的精度均有大幅提升:
中文場(chǎng)景,相對(duì)于PP-OCRv3中文模型提升超4%。
英文數(shù)字場(chǎng)景,相比于PP-OCRv3英文模型提升6%。
多語言場(chǎng)景,優(yōu)化80個(gè)語種識(shí)別效果,平均準(zhǔn)確率提升超8%。
PP-OCRv4模型目前已隨PaddleOCR 2.7版本正式發(fā)布,歡迎大家持續(xù)關(guān)注PaddleOCR~~~
GitHub項(xiàng)目地址
https://github.com/PaddlePaddle/PaddleOCR
PP-OCRv4效果速覽
讓我們拿結(jié)果說話,多圖預(yù)警?。。?/p>
PP-OCRv4效果速覽



英文場(chǎng)景


多語言場(chǎng)景

下面上定量評(píng)測(cè)結(jié)果!
PP-OCRv4在速度可比情況下,中文場(chǎng)景端到端Hmean指標(biāo)相比于PP-OCRv3提升4.25%,效果大幅提升。具體指標(biāo)如下表所示:

測(cè)試環(huán)境:CPU型號(hào)為Intel Gold 6148,CPU預(yù)測(cè)時(shí)使用OpenVINO。
除了更新中文模型,本次升級(jí)也優(yōu)化了英文數(shù)字模型,在自有評(píng)估集上文本識(shí)別準(zhǔn)確率提升6%,如下表所示:

同時(shí),也對(duì)已支持的80余種語言識(shí)別模型進(jìn)行了升級(jí)更新,在有評(píng)估集的四種語系識(shí)別準(zhǔn)確率平均提升5%以上,如下表所示:

在飛槳AI套件中使用PP-OCRv4
為了方便大家在線體驗(yàn)效果,并且快速上手PP-OCRv4模型的訓(xùn)練調(diào)優(yōu)和部署,PP-OCRv4目前已上線飛槳AI套件PaddleX!
在線體驗(yàn)推理效果
https://aistudio.baidu.com/projectdetail/6611435
創(chuàng)建自己的PP-OCRv4
https://aistudio.baidu.com/modelsdetail?modelId=286
PaddleX是一站式、全流程、高效率的飛槳AI套件,具備飛槳生態(tài)優(yōu)質(zhì)模型和產(chǎn)業(yè)方案。PaddleX的使命是助力AI技術(shù)快速落地,愿景是使人人成為AI Developer。
PaddleX支持10+任務(wù)能力,包括圖像分類、目標(biāo)檢測(cè)、圖像分割、3D、OCR和時(shí)序預(yù)測(cè)等;內(nèi)置36 種飛槳生態(tài)特色模型,包括PP-ChatOCR、PP-OCRv4、RT-DETR、PP-YOLOE、PP-ShiTu、PP-LiteSeg、PP-TS等。
PaddleX提供“工具箱”和“開發(fā)者”兩種開發(fā)模式,同時(shí)支持云端和本地端。工具箱模式可以無代碼調(diào)優(yōu)關(guān)鍵超參,開發(fā)者模式可以低代碼進(jìn)行單模型訓(xùn)壓推和多模型串聯(lián)推理。
PaddleX未來還將支持聯(lián)創(chuàng)開發(fā),收益共享!歡迎廣大個(gè)人開發(fā)者和企業(yè)開發(fā)者參與進(jìn)來,共創(chuàng)繁榮的AI技術(shù)生態(tài)!
目前PaddleX正在快速迭代,歡迎大家試用和指正!
PaddleX本地端已經(jīng)啟動(dòng)內(nèi)部測(cè)試,掃碼進(jìn)群體驗(yàn)PaddleX本地端!
在飛槳PaddlePaddle微信公眾號(hào)該文章中添加運(yùn)營(yíng)同學(xué),并回復(fù)【PaddleX】,運(yùn)營(yíng)同學(xué)會(huì)邀請(qǐng)您加入官方交流群,獲得更高效的問題答疑!
PP-OCRv4十大關(guān)鍵技術(shù)點(diǎn)深入解讀
PP-OCRv4整體的框架圖保持了與PP-OCRv3相同的pipeline,針對(duì)檢測(cè)模型和識(shí)別模型進(jìn)行了數(shù)據(jù)、網(wǎng)絡(luò)結(jié)構(gòu)、訓(xùn)練策略等多個(gè)模塊的優(yōu)化。PP-OCRv4系統(tǒng)框圖如下所示:

從算法改進(jìn)思路上看,分別針對(duì)檢測(cè)和識(shí)別模型,進(jìn)行了共10個(gè)方面的改進(jìn):
檢測(cè)模塊
PP-LCNetV3:精度更高的骨干網(wǎng)絡(luò)
PFHead:并行head分支融合結(jié)構(gòu)
DSR: 訓(xùn)練中動(dòng)態(tài)增加shrink ratio
CML:添加Student和Teacher網(wǎng)絡(luò)輸出的KL div loss
識(shí)別模塊
SVTR_LCNetV3:精度更高的骨干網(wǎng)絡(luò)
Lite-Neck:精簡(jiǎn)的Neck結(jié)構(gòu)
GTC-NRTR:穩(wěn)定的Attention指導(dǎo)分支
Multi-Scale:多尺度訓(xùn)練策略
DF: 數(shù)據(jù)挖掘方案
DKD :DKD蒸餾策略
敲黑板了,下面讓我們對(duì)這10個(gè)技術(shù)點(diǎn)進(jìn)行一一解讀。
檢測(cè)優(yōu)化
PP-OCRv4檢測(cè)模型在PP-OCRv3檢測(cè)模型的基礎(chǔ)上,在網(wǎng)絡(luò)結(jié)構(gòu),訓(xùn)練策略,蒸餾策略三個(gè)方面做了優(yōu)化。首先,PP-OCRv4檢測(cè)模型使用PP-LCNetV3替換MobileNetv3,并提出并行分支融合的PFhead結(jié)構(gòu);其次,訓(xùn)練時(shí)動(dòng)態(tài)調(diào)整shrink ratio的比例;最后,PP-OCRv4對(duì)CML的蒸餾loss進(jìn)行優(yōu)化,進(jìn)一步提升文字檢測(cè)效果。
消融實(shí)驗(yàn)如下:

測(cè)試環(huán)境:Intel Gold 6148 CPU,預(yù)測(cè)引擎使用OpenVINO。
PFhead:多分支融合Head結(jié)構(gòu)
PFhead結(jié)構(gòu)如下圖所示,PFHead在經(jīng)過第一個(gè)轉(zhuǎn)置卷積后,分別進(jìn)行上采樣和轉(zhuǎn)置卷積,上采樣的輸出通過3x3卷積得到輸出結(jié)果,然后和轉(zhuǎn)置卷積的分支的結(jié)果級(jí)聯(lián)并經(jīng)過1x1卷積層,最后1x1卷積的結(jié)果和轉(zhuǎn)置卷積的結(jié)果相加得到最后輸出的概率圖。PP-OCRv4學(xué)生檢測(cè)模型使用PFhead,Hmean從76.22%增加到76.97%。

DSR:收縮比例動(dòng)態(tài)調(diào)整策略
動(dòng)態(tài)shrink ratio(dynamic shrink ratio): 在訓(xùn)練中,shrink ratio由固定值調(diào)整為動(dòng)態(tài)變化,隨著訓(xùn)練epoch的增加,shrink ratio從0.4線性增加到0.6。該策略在PP-OCRv4學(xué)生檢測(cè)模型上,Hmean從76.97%提升到78.24%。
PP-LCNetV3:精度更高的骨干網(wǎng)絡(luò)
PP-LCNetV3系列模型是PP-LCNet系列模型的延續(xù),覆蓋了更大的精度范圍,能夠適應(yīng)不同下游任務(wù)的需要。PP-LCNetV3系列模型從多個(gè)方面進(jìn)行了優(yōu)化,提出了可學(xué)習(xí)仿射變換模塊,對(duì)重參數(shù)化策略、激活函數(shù)進(jìn)行了改進(jìn),同時(shí)調(diào)整了網(wǎng)絡(luò)深度與寬度。最終,PP-LCNetV3系列模型能夠在性能與效率之間達(dá)到最佳的平衡,在不同精度范圍內(nèi)取得極致的推理速度。使用PP-LCNetV3替換MobileNetv3 backbone,PP-OCRv4學(xué)生檢測(cè)模型hmean從78.24%提升到79.08%。
CML:融合KD的互學(xué)習(xí)策略
PP-OCRv4檢測(cè)模型對(duì)PP-OCRv3中的CML(Collaborative Mutual Learning) 協(xié)同互學(xué)習(xí)文本檢測(cè)蒸餾策略進(jìn)行了優(yōu)化。如下圖所示,在計(jì)算Student Model和Teacher Model的distill Loss時(shí),額外添加KL div loss,讓兩者輸出的response maps分布接近,由此進(jìn)一步提升Student網(wǎng)絡(luò)的精度,檢測(cè)Hmean從79.08%增加到79.56%,端到端指標(biāo)從61.31%增加到61.87%。

識(shí)別優(yōu)化
PP-OCRv3的識(shí)別模塊是基于文本識(shí)別算法SVTR優(yōu)化。SVTR不再采用RNN結(jié)構(gòu),通過引入Transformers結(jié)構(gòu)更加有效地挖掘文本行圖像的上下文信息,從而提升文本識(shí)別能力。直接將PP-OCRv2的識(shí)別模型,替換成SVTR_Tiny,識(shí)別準(zhǔn)確率從74.8%提升到80.1%(+5.3%),但是預(yù)測(cè)速度慢了將近11倍,CPU上預(yù)測(cè)一條文本行,將近100ms。因此,如下圖所示,PP-OCRv3采用如下6個(gè)優(yōu)化策略進(jìn)行識(shí)別模型加速。

基于上述策略,PP-OCRv4識(shí)別模型相比PP-OCRv3,在速度可比的情況下,精度進(jìn)一步提升4%。具體消融實(shí)驗(yàn)如下所示:

注:測(cè)試速度時(shí),輸入圖片尺寸均為(3,48,320)。在實(shí)際預(yù)測(cè)時(shí),圖像為變長(zhǎng)輸入,速度會(huì)有所變化。測(cè)試環(huán)境:Intel Gold 6148 CPU,預(yù)測(cè)時(shí)使用OpenVINO預(yù)測(cè)引擎。
DF:數(shù)據(jù)挖掘方案
DF(Data Filter) 是一種簡(jiǎn)單有效的數(shù)據(jù)挖掘方案。核心思想是利用已有模型預(yù)測(cè)訓(xùn)練數(shù)據(jù),通過置信度和預(yù)測(cè)結(jié)果等信息,對(duì)全量數(shù)據(jù)進(jìn)行篩選。具體的:首先使用少量數(shù)據(jù)快速訓(xùn)練得到一個(gè)低精度模型,使用該低精度模型對(duì)千萬級(jí)的數(shù)據(jù)進(jìn)行預(yù)測(cè),去除置信度大于0.95的樣本,該部分被認(rèn)為是對(duì)提升模型精度無效的冗余數(shù)據(jù)。其次使用PP-OCRv3作為高精度模型,對(duì)剩余數(shù)據(jù)進(jìn)行預(yù)測(cè),去除置信度小于0.15的樣本,該部分被認(rèn)為是難以識(shí)別或質(zhì)量很差的樣本。使用該策略,千萬級(jí)別訓(xùn)練數(shù)據(jù)被精簡(jiǎn)至百萬級(jí),顯著提升模型訓(xùn)練效率,模型訓(xùn)練時(shí)間從2周減少到5天,同時(shí)精度提升至72.7%(+1.2%)。

PP-LCNetV3:精度更優(yōu)的骨干網(wǎng)絡(luò)
PP-LCNetV3系列模型是PP-LCNet系列模型的延續(xù),覆蓋了更大的精度范圍,能夠適應(yīng)不同下游任務(wù)的需要。PP-LCNetV3系列模型從多個(gè)方面進(jìn)行了優(yōu)化,提出了可學(xué)習(xí)仿射變換模塊,對(duì)重參數(shù)化策略、激活函數(shù)進(jìn)行了改進(jìn),同時(shí)調(diào)整了網(wǎng)絡(luò)深度與寬度。最終,PP-LCNetV3系列模型能夠在性能與效率之間達(dá)到最佳的平衡,在不同精度范圍內(nèi)取得極致的推理速度。
Lite-Neck:精簡(jiǎn)參數(shù)的Neck結(jié)構(gòu)
Lite-Neck整體結(jié)構(gòu)沿用PP-OCRv3版本,在參數(shù)上稍作精簡(jiǎn),識(shí)別模型整體的模型大小可從12M降低到8.5M,而精度不變;在CTCHead中,將Neck輸出特征的維度從64提升到120,此時(shí)模型大小從8.5M提升到9.6M,精度提升0.5%。
GTC-NRTR:Attention指導(dǎo)CTC訓(xùn)練策略
GTC(Guided Training of CTC),是在PP-OCRv3中使用過的策略,融合多種文本特征的表達(dá),可有效提升文本識(shí)別精度。在PP-OCRv4中使用訓(xùn)練更穩(wěn)定的Transformer模型NRTR作為指導(dǎo),相比SAR基于循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),NRTR基于Transformer實(shí)現(xiàn)解碼過程泛化能力更強(qiáng),能有效指導(dǎo)CTC分支學(xué)習(xí)。解決簡(jiǎn)單場(chǎng)景下快速過擬合的問題。模型大小不變,識(shí)別精度提升至73.21%(+0.5%)。

Multi-Scale:多尺度訓(xùn)練策略
動(dòng)態(tài)尺度訓(xùn)練策略,是在訓(xùn)練過程中隨機(jī)resize輸入圖片的高度,以增大模型的魯棒性。在訓(xùn)練過程中隨機(jī)選擇(32,48,64)三種高度進(jìn)行resize,實(shí)驗(yàn)證明在測(cè)試集上評(píng)估精度不掉,在端到端串聯(lián)推理時(shí),指標(biāo)可以提升0.5%。

DKD:蒸餾策略
識(shí)別模型的蒸餾包含兩個(gè)部分,NRTRhead蒸餾和CTCHead蒸餾;
對(duì)于NRTR head,使用了DKD loss蒸餾,使學(xué)生模型NRTR head輸出的logits與教師NRTR head接近。最終NRTR head的loss是學(xué)生與教師間的DKD loss和與ground truth的cross entropy loss的加權(quán)和,用于監(jiān)督學(xué)生模型的backbone訓(xùn)練。通過實(shí)驗(yàn),我們發(fā)現(xiàn)加入DKD loss后,計(jì)算與ground truth的cross entropy loss時(shí)去除label smoothing可以進(jìn)一步提高精度,因此我們?cè)谶@里使用的是不帶label smoothing的cross entropy loss。
對(duì)于CTCHead,由于CTC的輸出中存在Blank位,即使教師模型和學(xué)生模型的預(yù)測(cè)結(jié)果一樣,二者輸出的logits分布也會(huì)存在差異,影響教師模型向?qū)W生模型的知識(shí)傳遞。PP-OCRv4識(shí)別模型蒸餾策略中,將CTC輸出logits沿著文本長(zhǎng)度維度計(jì)算均值,將多字符識(shí)別問題轉(zhuǎn)換為多字符分類問題,用于監(jiān)督CTC Head的訓(xùn)練。使用該策略融合NRTRhead DKD蒸餾策略,指標(biāo)從0.7377提升到0.7545。
在AI Studio在線體驗(yàn)PP-OCRv4的推理效果
https://aistudio.baidu.com/projectdetail/6611435
飛槳AI套件PaddleX中的PP-OCRv4
https://aistudio.baidu.com/modelsdetail?modelId=286
PaddleOCR項(xiàng)目地址
https://github.com/PaddlePaddle/PaddleOCR