![]() |
OpenCV 4.12.0
开源计算机视觉
|
上一个教程: 自定义深度学习层支持
下一个教程: 高阶 API:TextDetectionModel 和 TextRecognitionModel
| 原始作者 | Zihao Mu |
| 兼容性 | OpenCV >= 4.3 |
在本教程中,我们首先介绍如何获取自定义 OCR 模型,然后介绍如何转换您自己的 OCR 模型,以便它们可以通过 opencv_dnn 模块正确运行。最后,我们将提供一些预训练模型。
此存储库 是训练您自己的 OCR 模型的一个很好的起点。在存储库中,默认情况下 MJSynth+SynthText 设置为训练集。此外,您可以配置您想要的模型结构和数据集。
完成模型训练后,请使用 transform_to_onnx.py 将模型转换为 onnx 格式。
Python 版本示例代码可以在此处找到。
示例
一些预训练模型可以在 https://drive.google.com/drive/folders/1cTbQ3nuZG-EKWak6emD_s8_hHXWz7lAr?usp=sharing 找到。
它们在不同文本识别数据集上的性能如下表所示
| 模型名称 | IIIT5k(%) | SVT(%) | ICDAR03(%) | ICDAR13(%) | ICDAR15(%) | SVTP(%) | CUTE80(%) | 平均准确率 (%) | 参数 ( x10^6 ) |
|---|---|---|---|---|---|---|---|---|---|
| DenseNet-CTC | 72.267 | 67.39 | 82.81 | 80 | 48.38 | 49.45 | 42.50 | 63.26 | 0.24 |
| DenseNet-BiLSTM-CTC | 73.76 | 72.33 | 86.15 | 83.15 | 50.67 | 57.984 | 49.826 | 67.69 | 3.63 |
| VGG-CTC | 75.96 | 75.42 | 85.92 | 83.54 | 54.89 | 57.52 | 50.17 | 69.06 | 5.57 |
| CRNN_VGG-BiLSTM-CTC | 82.63 | 82.07 | 92.96 | 88.867 | 66.28 | 71.01 | 62.37 | 78.03 | 8.45 |
| ResNet-CTC | 84.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 适用于需要高识别精度的场景。