百度8.6M超輕量中英文OCR模型開源,還可自定義訓(xùn)練!
OCR技術(shù)有著豐富的應(yīng)用場(chǎng)景,包括已經(jīng)在日常生活中廣泛應(yīng)用的面向垂類的結(jié)構(gòu)化文本識(shí)別,如車牌識(shí)別、銀行卡信息識(shí)別、身份證信息識(shí)別、火車票信息識(shí)別等等,此外,通用OCR技術(shù)也有廣泛的應(yīng)用,如在視頻場(chǎng)景中,經(jīng)常使用OCR技術(shù)進(jìn)行字幕自動(dòng)翻譯、內(nèi)容安全監(jiān)控等等,或者與視覺特征相結(jié)合,完成視頻理解、視頻搜索等任務(wù)。
OCR文字檢測(cè)和識(shí)別目前的主流方法大多是采用深度學(xué)習(xí)技術(shù),這從ICDAR2015自然場(chǎng)景排名前列的應(yīng)用方法可以明顯看出。深度學(xué)習(xí)技術(shù)在一些垂類場(chǎng)景,文本識(shí)別精準(zhǔn)度已經(jīng)可以達(dá)到99%以上,取得了非常好的效果。
但在實(shí)際應(yīng)用中,尤其是在廣泛的通用場(chǎng)景下,OCR技術(shù)也面臨一些挑戰(zhàn),比如仿射變換、尺度問題、光照不足、拍攝模糊等技術(shù)難點(diǎn);另外OCR應(yīng)用常對(duì)接海量數(shù)據(jù),但要求數(shù)據(jù)能夠得到實(shí)時(shí)處理;并且OCR應(yīng)用常部署在移動(dòng)端或嵌入式硬件,而端側(cè)的存儲(chǔ)空間和計(jì)算能力有限,因此對(duì)OCR模型的大小和預(yù)測(cè)速度有很高的要求。
在這樣的背景下,飛槳首次開源文字識(shí)別模型套件PaddleOCR,目標(biāo)是打造豐富、領(lǐng)先、實(shí)用的文本識(shí)別模型/工具庫。首階段的開源套件推出了重磅模型:8.6M超輕量中英文識(shí)別模型。用戶既可以很便捷的直接使用該超輕量模型,也可以使用開源套件訓(xùn)練自己的超輕量模型。
項(xiàng)目地址:
https://github.com/PaddlePaddle/PaddleOCR
8.6M超輕量
中英文OCR模型開源
模型畫像:
- 總模型大小僅8.6M
- 僅1個(gè)檢測(cè)模型(4.1M)+1個(gè)識(shí)別模型(4.5M)組成
- 同時(shí)支持中英文識(shí)別
- 支持傾斜、豎排等多種方向文字識(shí)別
- T4單次預(yù)測(cè)全程平均耗時(shí)僅60ms
- 支持GPU、CPU預(yù)測(cè)
- 可運(yùn)行于Linux、Windows、MacOS等多種系統(tǒng)
PaddleOCR發(fā)布的超輕量模型由1個(gè)文本檢測(cè)模型(4.1M)和1個(gè)文本識(shí)別模型(4.5M)組成,共8.6M。其中,文本檢測(cè)模型使用的2020年發(fā)表于AAAI上的DB[1]算法,文本識(shí)別模型使用經(jīng)典的CRNN[4]算法。鑒于MobileNetV3在端側(cè)系列模型中的優(yōu)越表現(xiàn),兩個(gè)模型均選擇使用MobileNetV3作為骨干網(wǎng)絡(luò),可將模型大小初步減少90%以上。此外,通過減小通道數(shù)等操作,將模型大小進(jìn)一步減小。超輕量模型組成詳情如下圖:
超輕量模型在推理速度上也有出色的表現(xiàn),下面給出了PaddleOCR在T4和V100兩種機(jī)型上的推理耗時(shí)評(píng)估,評(píng)估數(shù)據(jù)使用從中文公開數(shù)據(jù)集ICDAR2017-RCTW(https://rctw.vlrlab.net/dataset/)中隨機(jī)抽取的500張圖像,評(píng)估耗時(shí)階段為圖像輸入到結(jié)果輸出的完整階段,評(píng)估詳情如下:
可以看到,長邊960像素時(shí),T4平均耗時(shí)僅72ms,V100平均耗時(shí)更是低至29ms。。減小長邊尺寸,還可進(jìn)一步加速。
PaddleOCR超輕量模型同時(shí)支持中英文識(shí)別,并且支持傾斜、豎排等多種方向的文字識(shí)別,我們看看效果示例。示例圖中給出了每個(gè)文本檢測(cè)框的識(shí)別結(jié)果(text)和相應(yīng)的置信度(score)。
可以看到,模型在中英文、數(shù)字、多角度文本上都能有很好的識(shí)別效果。
快速體驗(yàn)超輕量
中英文OCR模型
PaddleOCR已將該超輕量模型開源,感興趣的小伙伴趕緊動(dòng)手操練一下吧:
1. 準(zhǔn)備PaddleOCR環(huán)境
參考github項(xiàng)目教程中的快速安裝指導(dǎo),準(zhǔn)備好環(huán)境
2. 下載超輕量OCR模型
- mkdir inference && cd inference
- # 下載超輕量級(jí)中文OCR模型的檢測(cè)模型并解壓
- wget https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db_infer.tar && tar xf ch_det_mv3_db_infer.tar
- # 下載超輕量級(jí)中文OCR模型的識(shí)別模型并解壓
- wget https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_infer.tar && tar xf ch_rec_mv3_crnn_infer.tar
3. 預(yù)測(cè)單張圖片或圖像集
- # 設(shè)置PYTHONPATH環(huán)境變量
- export PYTHONPATH=.
- # 預(yù)測(cè)image_dir指定的單張圖像
- python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_det_mv3_db/" --rec_model_dir="./inference/ch_rec_mv3_crnn/"
更便捷的在線體驗(yàn)方案
該模型也已經(jīng)內(nèi)置在飛槳預(yù)訓(xùn)練模型應(yīng)用工具PaddleHub中,供用戶更便捷地體驗(yàn),上傳圖片即可在線體驗(yàn):
https://www.paddlepaddle.org.cn/hub/scene/ocr
準(zhǔn)備環(huán)境:
需提前安裝PaddlePaddle=1.7.2,然后更新PaddleHub到最新版本
- pip install paddlehub --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
1. 加載預(yù)訓(xùn)練模型
- import paddlehub as hub
- ocr = hub.Module(name="chinese_ocr_db_crnn_mobile") #加載預(yù)訓(xùn)練模型
2. 預(yù)測(cè)單張圖片
- results = ocr.recognize_text(paths=['/PATH/TO/IMAGE'], visualization=True) #輸入自定義待識(shí)別圖片路徑、并保存可視化圖片結(jié)果
效果更好的大模型同步開源
除了上述超輕量模型,PaddleOCR同時(shí)開源了相應(yīng)大模型——通用中文OCR模型,可以達(dá)到更好的識(shí)別效果,給用戶提供多種選擇。大模型的基礎(chǔ)算法與超輕量模型一致:檢測(cè)模型基于DB算法,識(shí)別模型基于CRNN算法,不同的是,檢測(cè)模型骨干網(wǎng)絡(luò)換成resnet50_vd[8],識(shí)別模型骨干網(wǎng)絡(luò)換成resnet34_vd[8],模型效果示例:
可以看到,大模型能夠檢測(cè)到更完整的文本行,并且識(shí)別更準(zhǔn)確,如果對(duì)模型大小要求不高,但希望能有更好效果,可以選擇使用大模型。大模型的體驗(yàn)步驟與超輕量模型一致,下載相應(yīng)模型、替換預(yù)測(cè)命令中的模型路徑即可體驗(yàn):
- # 通用中文OCR模型的檢測(cè)模型
- https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db_infer.tar
- # 通用中文OCR模型的識(shí)別模型
- https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_infer.tar
訓(xùn)練自己的超輕量模型
我們知道,訓(xùn)練與測(cè)試數(shù)據(jù)的一致性直接影響模型效果,為了更好的模型效果,經(jīng)常需要使用自己的數(shù)據(jù)訓(xùn)練超輕量模型。PaddleOCR本次開源內(nèi)容除了8.6M超輕量模型,同時(shí)提供了2種文本檢測(cè)算法、4種文本識(shí)別算法,并發(fā)布了相應(yīng)的4種文本檢測(cè)模型、8種文本識(shí)別模型,用戶可以在此基礎(chǔ)上打造自己的超輕量模型。
PaddleOCR本次開源了多種業(yè)界知名的文本檢測(cè)和識(shí)別算法,每種算法的效果都達(dá)到或超越了原作。文本檢測(cè)算法部分,實(shí)現(xiàn)了EAST[1]和DB[2]。在ICDAR2015文本檢測(cè)公開數(shù)據(jù)集上,算法效果如下:
文本識(shí)別算法部分,借鑒DTRB[3]文字識(shí)別訓(xùn)練和評(píng)估流程,實(shí)現(xiàn)了CRNN[4]、Rosseta[5]、STAR-Net[6]、RARE[7]四種文本識(shí)別算法,覆蓋了主流的基于CTC和基于Attention的兩類文本識(shí)別算法。使用MJSynth和SynthText兩個(gè)文字識(shí)別數(shù)據(jù)集訓(xùn)練,在IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE數(shù)據(jù)集上進(jìn)行評(píng)估,算法效果如下:
想要使用自定義數(shù)據(jù)訓(xùn)練超輕量模型的小伙伴,可以參考8.6M超輕量模型的打造方式,從PaddleOCR提供的基礎(chǔ)算法庫中選擇適合自己的文本檢測(cè)、識(shí)別算法,進(jìn)行自定義的訓(xùn)練。PaddleOCR提供了詳細(xì)的訓(xùn)練和模型串聯(lián)指導(dǎo):
https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/customize.md
更多PaddleOCR的應(yīng)用方法,歡迎訪問項(xiàng)目地址:
GitHub:
https://github.com/PaddlePaddle/PaddleOCR
Gitee:
https://gitee.com/PaddlePaddle/PaddleOCR
添加微信小助手paddlehelp,備注OCR,即可加入百度飛槳PaddleOCR技術(shù)交流群。
如在使用過程中有問題,可加入飛槳官方QQ群進(jìn)行交流:703252161。
如果您想詳細(xì)了解更多飛槳的相關(guān)內(nèi)容,請(qǐng)參閱以下文檔。
官網(wǎng)地址:
https://www.paddlepaddle.org.cn
飛槳開源框架項(xiàng)目地址:
GitHub:
https://github.com/PaddlePaddle/Paddle
Gitee:
https://gitee.com/paddlepaddle/Paddle
參考文獻(xiàn)
[1] Zhou X, Yao C, Wen H, et al. EAST: an efficient and accurate scene text detector[C]//Proceedings of the IEEE conference on Computer Vision and Pattern Recognition. 2017: 5551-5560.
[2] Liao M, Wan Z, Yao C, et al. Real-time Scene Text Detection with Differentiable Binarization[J]. arXiv preprint arXiv:1911.08947, 2019.
[3] Baek J, Kim G, Lee J, et al. What is wrong with scene text recognition model comparisons? dataset and model analysis[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 4715-4723.
[4] B. Shi, X. Bai, C. Yao. An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition. IEEE Trans. on PAMI , 39(11): 2298-2304, 2017.
[5] Borisyuk F, Gordo A, Sivakumar V. Rosetta: Large scale system for text detection and recognition in images[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 71-79.
[6] Liu W, Chen C, Wong K Y K, et al. STAR-Net: A SpaTial Attention Residue Network for Scene Text Recognition[C]//BMVC. 2016, 2: 7.
[7] Shi B, Wang X, Lyu P, et al. Robust scene text recognition with automatic rectification[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 4168-4176.
[8] https://paddleclas.readthedocs.io/zh_CN/latest/models/ResNet_and_vd.html