我们在 RoboGo 上整理了两套面向 RDK 的 PaddleOCR 全链路开发镜像,把原本分散的训练、ONNX 导出、OpenExplorer 量化编译、x86 仿真和在线推理集中到同一台开发机中:
rdk-x5-paddleocr-v3-fullchain-oe128-cu128-v1.0:PP-OCRv3,面向 RDK X5,输出.bin;rdk-s-paddleocr-v6-fullchain-oe370-cu128-v1.0:PP-OCRv6,面向 S100/S100P/S600,输出.hbm。
镜像直达链接:
两个镜像都提供端口 7860 的中文 Web 工作台,不需要先进入 Jupyter 或手写大量命令。用户可以在页面中完成:
- 文本检测或文字识别训练;
- 浮点 Model Zoo ONNX 导出;
- 检测、识别双模型一键量化;
- OE x86 仿真和精度门禁;
- det→透视裁图→rec 的完整 OCR 在线推理。
为什么要分成两个镜像
X5 和 S 系列并不是只换一个目标芯片参数。两条路线使用不同版本的 PaddleOCR、Paddle2ONNX、Model Zoo 分支、OpenExplorer runtime、ONNX opset 和校准协议:
| 项目 | RDK X5 镜像 | RDK S 系列镜像 |
|---|---|---|
| OCR 模型 | PP-OCRv3 Det/Rec | PP-OCRv6 Tiny Det/Rec |
| ONNX | opset ≤11 | opset 19 |
| BPU 架构 | bayes-e |
nash-e / nash-m / nash-p |
| 板端模型 | .bin |
.hbm |
| 本机仿真 | X5 OE x86 | S100/S100P OE x86;S600 仅编译 |
分开封装能够避免依赖冲突,也能阻止最危险的一类误操作:拿另一平台的 ONNX 或校准预处理直接量化。
创建开发机
推荐使用 1×RTX 4090、系统盘至少 120 GB,并把 RoboGo 数据管理目录以读写方式挂载到 /personal。Web 应用填写端口 7860、路径 /。开机后点击“Web应用”即可;首次出现 502 时等待 30–60 秒再刷新。
数据集、训练日志和模型产物都建议放在 /personal,这样任务结果会直接回写到 RoboGo 数据管理,不需要从开发机下载再上传。
从训练到量化
检测数据采用 PaddleOCR 标注,每行是“图片相对路径 + Tab + JSON 文本框数组”;识别数据每行是“图片相对路径 + Tab + 文字内容”。目录中均需提供 train_list.txt 和 val_list.txt。
在“训练与转换”中分别训练 det 或 rec。第一次跑自定义数据时,建议先选择“等待确认再量化”:先看训练指标和浮点 ONNX 串联推理,确认检测框、识别文本和字符字典正确,再启动 BPU 量化。流程稳定后再使用自动继续量化。
如果已经有 det/rec 两个浮点 ONNX,可以直接使用“OCR 一键量化”,只需选择两个模型和原始训练图片目录。工作台会从原图中均匀选取 100 张作为检测校准集,再用浮点 det 做 DB 后处理和透视裁图,自动生成 250 个真实文字框作为识别校准集。用户不需要手工制作一套识别校准图片。
原始图片 ─┬─→ det 校准 ─→ det 量化/编译
└─→ 浮点 det ─→ DB 文本框 ─→ 透视裁图 ─→ rec 校准 ─→ rec 量化/编译
两个平台的校准处理不同
X5 PP-OCRv3 检测图直接缩放为 640×640,生成 RGB、CHW、float32、[0,255] 校准数据,再由 mapper YAML 执行 mean/scale。S 系列 PP-OCRv6 检测图保持比例缩放,在右侧和底部黑边填充,使用 BGR 和 ImageNet mean/std 归一化。两边的识别模型输入都固定为 320×48,但仍应使用镜像内与配方绑定的处理流程。
不是“能编译就算成功”
工作台为 det 和 rec 设置了多层质量闸门:
- 输入、输出数量和固定形状必须符合 Model Zoo 配方;
- 浮点—量化输出最低余弦相似度为
0.98; - BPU 对外输出必须为
FLOAT,末端Dequantize必须保留; - X5、S100、S100P 的 BPU 模型必须通过 OE x86 仿真与定点 ONNX 严格一致性检查;
- S600 只标记“编译完成、待板端验证”,不会用未执行的 x86 结果冒充通过。
v1.0 的正式校准与验收结果如下:
- X5:det/rec 浮点—量化余弦相似度
0.986034/0.999919,两套.bin严格仿真与完整 OCR 推理通过; - S100:det/rec 编译余弦
0.996447/0.997547,HBM x86 仿真相似度0.994965/0.997228。
在线推理与边界
页面支持用同一套 det/rec 的浮点 ONNX、X5 .bin 或 S 系列 .hbm 做完整 OCR 串联推理,输出检测框、识别文字、置信度、坐标、结果图、JSON 和耗时。
下面是同一张场景图在 X5 浮点 ONNX 与 BPU .bin 下的实测结果。主招牌和下方小字的检测框基本一致,可用于快速检查量化前后是否出现明显漏检、框漂移或排序变化。
图 1 X5 浮点 ONNX 串联推理效果。
图 2 同一测试图的 X5 BPU .bin 串联推理效果。绿色框为文本检测结果,橙色数字为文本框序号。
S100 使用复杂票据样例验证密集文字、中英文、数字和低对比度区域。浮点 ONNX 与 .hbm 的主要文本框保持一致;边缘小框的差异应结合识别文本、置信度和量化报告判断。
图 3 S100 浮点 ONNX 串联推理效果。
图 4 同一测试图的 S100 BPU .hbm 串联推理效果。可视化结果用于快速验收,最终仍以文字列表、余弦相似度和 OE 严格检查为准。
需要特别说明:OE x86 仿真耗时不是板端性能。S 系列识别 HBM 在 x86 仿真器中单框约需 2 分钟,因此页面的 HBM 完整 OCR 默认只对一个高置信文字框真实执行 rec HBM,其余框使用配套浮点 rec 生成预览。真实性能和逐框效果仍要到对应 RDK 板卡验证;S600 模型尤其必须进行板端验证。
常用恢复命令
bash /home/robogo/START_TRAINING_WEB.sh
training-web status
training-web restart
training-web logs 100
两个镜像的默认输出均为 /personal/output/时间-模型/。请完整保留同一次任务生成的浮点 ONNX、定点 ONNX、.bin/.hbm、ocr-quantization-report.json 和 OE 日志,不要只拿走一个 BPU 文件后丢失配套信息。
欢迎在 RoboGo 中搜索上述 v1.0 镜像体验。如果遇到训练数据格式、字符字典、量化精度门禁或板端部署问题,可以在评论区附上所用平台、任务目录中的报告文件和错误日志,我们会继续完善这套流程。


