OpenCV 4.10.0
开源计算机视觉
|
上一教程: 自定义深度学习层支持
下一教程: 高级 API:TextDetectionModel 和 TextRecognitionModel
原作者 | 慕子豪 |
兼容性 | 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 适用于需要高识别精度的场景。