OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
如何執行自定義 OCR 模型

上一個教程: 自定義深度學習層支援
下一個教程: 高階 API:TextDetectionModel 和 TextRecognitionModel

原始作者Zihao Mu
相容性OpenCV >= 4.3

簡介

在本教程中,我們首先介紹如何獲取自定義 OCR 模型,然後介紹如何轉換您自己的 OCR 模型,以便它們可以透過 opencv_dnn 模組正確執行。最後,我們將提供一些預訓練模型。

訓練您自己的 OCR 模型

此儲存庫 是訓練您自己的 OCR 模型的一個很好的起點。在儲存庫中,預設情況下 MJSynth+SynthText 設定為訓練集。此外,您可以配置您想要的模型結構和資料集。

將 OCR 模型轉換為 ONNX 格式並在 OpenCV DNN 中使用

完成模型訓練後,請使用 transform_to_onnx.py 將模型轉換為 onnx 格式。

在網路攝像頭中執行

Python 版本示例程式碼可以在此處找到。

示例

$ text_detection -m=[文字檢測模型路徑] -ocr=[文字識別模型路徑]

提供預訓練的 ONNX 模型

一些預訓練模型可以在 https://drive.google.com/drive/folders/1cTbQ3nuZG-EKWak6emD_s8_hHXWz7lAr?usp=sharing 找到。

它們在不同文字識別資料集上的效能如下表所示

模型名稱IIIT5k(%)SVT(%)ICDAR03(%)ICDAR13(%)ICDAR15(%)SVTP(%)CUTE80(%)平均準確率 (%)引數 ( x10^6 )
DenseNet-CTC72.267 67.39 82.81 80 48.38 49.45 42.50 63.26 0.24
DenseNet-BiLSTM-CTC73.76 72.33 86.15 83.15 50.67 57.984 49.826 67.69 3.63
VGG-CTC75.96 75.42 85.92 83.54 54.89 57.52 50.17 69.06 5.57
CRNN_VGG-BiLSTM-CTC82.63 82.07 92.96 88.867 66.28 71.01 62.37 78.03 8.45
ResNet-CTC84.00 84.08 92.39 88.96 67.74 74.73 67.60 79.93 44.28

文字識別模型的效能在 OpenCV DNN 上進行了測試,不包括文字檢測模型。

模型選擇建議

文字識別模型的輸入是文字檢測模型的輸出,這導致文字檢測的效能會極大地影響文字識別的效能。

DenseNet_CTC 具有最小的引數和最佳的 FPS,它適用於對計算成本非常敏感的邊緣裝置。 如果您的計算資源有限並且想要獲得更好的精度,VGG_CTC 是一個不錯的選擇。

CRNN_VGG_BiLSTM_CTC 適用於需要高識別精度的場景。