OpenCV  4.10.0
开源计算机视觉
加载中...
搜索中...
无匹配项
如何运行自定义 OCR 模型

上一教程: 自定义深度学习层支持
下一教程: 高级 API:TextDetectionModel 和 TextRecognitionModel

原作者慕子豪
兼容性OpenCV >= 4.3

介绍

在本教程中,我们将首先介绍如何获取自定义 OCR 模型,然后介绍如何转换自己的 OCR 模型,使其能够被 opencv_dnn 模块正确运行。最后,我们将提供一些预训练模型。

训练自己的 OCR 模型

此仓库 是训练自己的 OCR 模型的良好起点。在仓库中,默认情况下将 MJSynth+SynthText 设置为训练集。此外,您可以配置所需的模型结构和数据集。

将 OCR 模型转换为 ONNX 格式并在 OpenCV DNN 中使用

完成模型训练后,请使用 transform_to_onnx.py 将模型转换为 onnx 格式。

在网络摄像头中执行

Python 版本示例代码可以在 这里 找到。

示例

$ text_detection -m=[path_to_text_detect_model] -ocr=[path_to_text_recognition_model]

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