OpenCV 4.11.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适用于需要高识别精度的情况。