飛槳文字識別模型套件PaddleOCR首次開源,帶來8.6M超輕量中英文OCR模型!

OCR技術有着豐富的應用場景,包括已經在日常生活中廣泛應用的面向垂類的結構化文本識別,如車牌識別、銀行卡信息識別、身份證信息識別、火車票信息識別等等,此外,通用OCR技術也有廣泛的應用,如在視頻場景中,經常使用OCR技術進行字幕自動翻譯、內容安全監控等等,或者與視覺特徵相結合,完成視頻理解、視頻搜索等任務。

OCR文字檢測和識別目前的主流方法大多是採用深度學習技術,這從ICDAR2015自然場景排名前列的應用方法可以明顯看出。深度學習技術在一些垂類場景,文本識別精準度已經可以達到99%以上,取得了非常好的效果。

但在實際應用中,尤其是在廣泛的通用場景下,OCR技術也面臨一些挑戰,比如仿射變換、尺度問題、光照不足、拍攝模糊等技術難點;另外OCR應用常對接海量數據,但要求數據能夠得到實時處理;並且OCR應用常部署在移動端或嵌入式硬件,而端側的存儲空間和計算能力有限,因此對OCR模型的大小和預測速度有很高的要求。

在這樣的背景下,飛槳首次開源文字識別模型套件PaddleOCR,目標是打造豐富、領先、實用的文本識別模型/工具庫。首階段的開源套件推出了重磅模型:8.6M超輕量中英文識別模型。用戶既可以很便捷的直接使用該超輕量模型,也可以使用開源套件訓練自己的超輕量模型。

項目地址:

https://github.com/PaddlePaddle/PaddleOCR

 

8.6M超輕量中英文OCR模型開源

 

模型畫像:

  • 總模型大小僅8.6M

  • 僅1個檢測模型(4.1M)+1個識別模型(4.5M)組成

  • 同時支持中英文識別

  • 支持傾斜、豎排等多種方向文字識別

  • T4單次預測全程平均耗時僅60ms

  • 支持GPU、CPU預測

  • 可運行於Linux、Windows、MacOS等多種系統

PaddleOCR發佈的超輕量模型由1個文本檢測模型(4.1M)和1個文本識別模型(4.5M)組成,共8.6M。其中,文本檢測模型使用的2020年發表於AAAI上的DB[1]算法,文本識別模型使用經典的CRNN[4]算法。鑑於MobileNetV3在端側系列模型中的優越表現,兩個模型均選擇使用MobileNetV3作爲骨幹網絡,可將模型大小初步減少90%以上。此外,通過減小通道數等操作,將模型大小進一步減小。超輕量模型組成詳情如下圖:

超輕量模型在推理速度上也有出色的表現,下面給出了PaddleOCR在T4和V100兩種機型上的推理耗時評估,評估數據使用從中文公開數據集ICDAR2017-RCTW(https://rctw.vlrlab.net/dataset/)中隨機抽取的500張圖像,評估耗時階段爲圖像輸入到結果輸出的完整階段,評估詳情如下:

可以看到,長邊960像素時,T4平均耗時僅72ms,V100平均耗時更是低至29ms。減小長邊尺寸,還可進一步加速。

PaddleOCR超輕量模型同時支持中英文識別,並且支持傾斜、豎排等多種方向的文字識別,我們看看效果示例。示例圖中給出了每個文本檢測框的識別結果(text)和相應的置信度(score)。

<<  滑動查看下一張圖片  >>

可以看到,模型在中英文、數字、多角度文本上都能有很好的識別效果。

 

 

快速體驗超輕量中英文OCR模型

 

PaddleOCR已將該超輕量模型開源,感興趣的小夥伴趕緊動手操練一下吧:

1. 準備PaddleOCR環境

參考github項目教程中的快速安裝指導,準備好環境

2. 下載超輕量OCR模型

mkdir inference && cd inference
# 下載超輕量級中文OCR模型的檢測模型並解壓
wget https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db_infer.tar && tar xf ch_det_mv3_db_infer.tar
# 下載超輕量級中文OCR模型的識別模型並解壓
wget https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_infer.tar && tar xf ch_rec_mv3_crnn_infer.tar
cd ..

3. 預測單張圖片或圖像集

# 設置PYTHONPATH環境變量
export PYTHONPATH=.
# 預測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/"

更便捷的在線體驗方案

該模型也已經內置在飛槳預訓練模型應用工具PaddleHub中,供用戶更便捷地體驗,上傳圖片即可在線體驗:

https://www.paddlepaddle.org.cn/hub/scene/ocr

 

準備環境:

需提前安裝PaddlePaddle=1.7.2,然後更新PaddleHub到最新版本

pip install paddlehub --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple

1. 加載預訓練模型

import paddlehub as hub
ocr = hub.Module(name="chinese_ocr_db_crnn") #加載預訓練模型

2. 預測單張圖片

results = ocr.recognize_text(paths=['/PATH/TO/IMAGE'], visualization=True)  #輸入自定義待識別圖片路徑、並保存可視化圖片結果

效果更好的大模型同步開源

 

除了上述超輕量模型,PaddleOCR同時開源了相應大模型——通用中文OCR模型,可以達到更好的識別效果,給用戶提供多種選擇。大模型的基礎算法與超輕量模型一致:檢測模型基於DB算法,識別模型基於CRNN算法,不同的是,檢測模型骨幹網絡換成resnet50_vd[8],識別模型骨幹網絡換成resnet34_vd[8],模型效果示例:

 

可以看到,大模型能夠檢測到更完整的文本行,並且識別更準確,如果對模型大小要求不高,但希望能有更好效果,可以選擇使用大模型。大模型的體驗步驟與超輕量模型一致,下載相應模型、替換預測命令中的模型路徑即可體驗:

# 通用中文OCR模型的檢測模型
https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db_infer.tar
# 通用中文OCR模型的識別模型
https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_infer.tar

 

訓練自己的超輕量模型

 

我們知道,訓練與測試數據的一致性直接影響模型效果,爲了更好的模型效果,經常需要使用自己的數據訓練超輕量模型。PaddleOCR本次開源內容除了8.6M超輕量模型,同時提供了2種文本檢測算法、4種文本識別算法,併發布了相應的4種文本檢測模型、8種文本識別模型,用戶可以在此基礎上打造自己的超輕量模型。

PaddleOCR本次開源了多種業界知名的文本檢測和識別算法,每種算法的效果都達到或超越了原作。文本檢測算法部分,實現了EAST[1]和DB[2]。在ICDAR2015文本檢測公開數據集上,算法效果如下:

文本識別算法部分,借鑑DTRB[3]文字識別訓練和評估流程,實現了CRNN[4]、Rosseta[5]、STAR-Net[6]、RARE[7]四種文本識別算法,覆蓋了主流的基於CTC和基於Attention的兩類文本識別算法。使用MJSynth和SynthText兩個文字識別數據集訓練,在IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE數據集上進行評估,算法效果如下:

想要使用自定義數據訓練超輕量模型的小夥伴,可以參考8.6M超輕量模型的打造方式,從PaddleOCR提供的基礎算法庫中選擇適合自己的文本檢測、識別算法,進行自定義的訓練。PaddleOCR提供了詳細的訓練和模型串聯指導:

https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/customize.md

更多PaddleOCR的應用方法,歡迎訪問項目地址:

GitHub: 

https://github.com/PaddlePaddle/PaddleOCR

Gitee: 

https://gitee.com/PaddlePaddle/PaddleOCR

PaddleOCR用戶微信羣:

如在使用過程中有問題,可加入飛槳官方QQ羣進行交流:703252161。

如果您想詳細瞭解更多飛槳的相關內容,請參閱以下文檔。

官網地址:

https://www.paddlepaddle.org.cn

飛槳開源框架項目地址:

GitHub:

https://github.com/PaddlePaddle/Paddle

Gitee: 

https://gitee.com/paddlepaddle/Paddle

 

參考文獻

 

[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

END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章