一 题记
目标是在某款 RV1106 低算力小板下跑通OCR文字识别算法,做个简单的应用,RK 官方模型库rk_model_zoo 有PP-OCR 的例子,但在 rv1106 上尚未支持。于是便打算折腾一吧。
二 方案甄选
参考国外某大佬的比较:

对比了几种方案, paddleOCR 在性能和精度上 应该算得上最优, 工程部署上的事情应该不是大问题。
hugging-face 的在线比较 : (PaddleOCR + EasyOcr + kerasOCR)
https://huggingface.co/spaces/pragnakalp/OCR-image-to-text
简单测试了一下,ppocr 在复杂的比如模糊的反光的照片下效果要好一些。
三 思路梳理
3.1 OCR 处理的通用流程
图像预处理(尺寸,归一化)=> 检测文字区域(OCR-DET) => 子图规一化(尺寸,角度变换) => 文字识别(OCR-REC)
- 其中 OCR-DET 和 OCR-REC 需要 预训练的算法模型来做
- 图像预处理是要将图像 调整到模型输入的大小,在 RKNN 平台,要固定输入图像的尺寸。
- 子图规一化,是将检测区域的子图像扣出来,拉成 横平竖直的规整图像。主要是做视角和尺寸的变换(仿射变换)。但 paddleOCR 可以识别 0 度和180度图像 , 90度和270度与不是模型的输入顺序,需要 通过 方向分类模型判断方向,旋转,然后再做仿射变换。
3.2 模型部署转换的流程
paddle模型 ==> 固定输入的onnx 模型 ==> rknn 模型
因为 rknn不支持动态输入,所以转 onnx 时要固定输入
其他tricks:
paddle 转 onnx模型本身是支持优化的,onnx 转 rknn 时工具也有针对rknn 平台的优化, 用类似 onnx-sim 工具再做优化价值不大。 不如实际 RKNN 跑起来做性能评估针对性的优化。

最低0.47元/天 解锁文章
7万+

被折叠的 条评论
为什么被折叠?



