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 适用于需要高识别精度的场景。