从 PaddleOCR 到 RDK BPU:RoboGo × Model Zoo OCR 全链路快速体验(X5 / S100 / S100P / S600)

OCR 是边缘视觉中非常典型的一类任务:算法不仅要“认出字”,还要在真实场景中完成文本检测、透视裁图、文字识别,并最终稳定运行在端侧硬件上。

这次分享的两套 RoboGo 镜像,目标不是简单打包一套 PaddleOCR 环境,而是把 PaddleOCR、RDK Model Zoo、RoboGo 平台和 RDK BPU 连成一条可以实际使用和验证的技术链路:

RoboGo 数据管理 / 数据标注
          ↓ 读写挂载到 /personal
PaddleOCR 训练与评估(det + rec)
          ↓
RDK Model Zoo 合规 ONNX
          ↓
OpenExplorer 量化、编译与 x86 验证
          ↓
X5 .bin / S 系列 .hbm
          ↓
RDK 板端部署与性能验证

训练数据、日志、Paddle 权重、ONNX、量化模型、验证报告和结果图片都会回写到用户挂载的数据目录,因此可以直接在 RoboGo 数据管理中继续查看、下载或交给后续流程使用。

为什么选择 PaddleOCR

PaddleOCR 的目标,是提供多语言、准确、轻量且真正可落地的 OCR 工具链,让开发者既能使用预训练模型,也能用自己的数据训练和微调,并部署到不同硬件平台。

对于 RDK 这类边缘设备,PaddleOCR 的价值尤其体现在:

  • 将 OCR 拆分为文本检测 det 与文字识别 rec,模型边界清晰,便于分别训练、量化和定位精度问题;
  • 输出文本框、文字内容和置信度,适合票据、工业字符、路牌、仪表、包装和自然场景文字等任务;
  • 模型轻量,可针对业务字符集和场景数据继续训练;
  • PP-OCRv6 进一步强化了多语言统一、复杂工业场景和端侧部署能力,Tiny 模型适合资源受限设备。

本次 X5 镜像采用 PP-OCRv3,是为了匹配当前 X5 Model Zoo 与 OpenExplorer 的成熟部署配方;S 系列镜像采用 PP-OCRv6 Tiny,面向更新的 Nash 架构工具链。这里追求的不是单纯使用“最新模型”,而是让算法版本、ONNX、预处理、量化配置和 BPU 运行时彼此匹配。

Model Zoo、RoboGo 和 RDK 分别解决什么问题

环节 作用
PaddleOCR 提供检测/识别模型、训练方法、预训练权重和导出能力
RDK Model Zoo / S 系列 Model Zoo 给出与 RDK 推理代码一致的输入尺寸、预处理、输出和后处理规范
RoboGo 数据管理与标注 保存原始图片、标注数据和最终产物,并挂载到开发机
RoboGo 开发机与本镜像 提供 GPU 训练、ONNX 导出、BPU 量化编译、验证和 Web 工作台
RDK X5 / S100 / S100P / S600 执行最终 BPU 模型,完成真实板端精度和性能验证

Model Zoo 在这里并不是单纯的“模型下载站”。它连接了训练框架和板端推理代码,规定训练产物怎样变成板端能够正确解释的模型。镜像中的导出、校准和后处理都与对应 Model Zoo 配方保持一致,避免出现“模型虽然编译成功,但输入颜色、归一化或输出解释不一致”的问题。

两套可以直接使用的镜像

目标平台 OCR 模型 BPU 架构 开发机内验证
RDK X5 PP-OCRv3 Det/Rec bayes-e OE x86 仿真与在线推理
RDK S100 PP-OCRv6 Tiny Det/Rec nash-e OE x86 仿真与在线推理
RDK S100P PP-OCRv6 Tiny Det/Rec nash-m OE x86 仿真与在线推理
RDK S600 PP-OCRv6 Tiny Det/Rec nash-p 完成 HBM 编译,必须到 S600 实板验证

5 分钟开始体验

1. 创建开发机

从上面的镜像链接创建开发机,推荐配置:

  • GPU:1 × RTX 4090(24 GB)
  • 系统盘:至少 120 GB
  • 数据目录:以读写方式挂载到 /personal
  • Web 应用端口:7860
  • Web 应用路径:/

开机后直接点击“Web应用”。第一次出现 502 Bad Gateway 通常表示服务仍在初始化,等待 30~60 秒后刷新即可。

2. 先做一次在线推理验证

进入“在线推理测试”,选择“完整 OCR 串联推理”:

  1. 选择同一套检测和识别模型;
  2. 选择一张位于 /personal 的测试图片;
  3. 启动推理;
  4. 查看文本框、识别文字、置信度、坐标、耗时、结果图和 JSON。

建议先使用浮点 ONNX 跑通,再换成同一次任务生成的 X5 .bin 或 S 系列 .hbm。对比同一张图片,可以快速发现量化后是否出现漏检、框漂移、排序变化或识别结果下降。

X5 OCR 在线推理结果示例。页面会同时给出检测框、文字结果与置信度。

3. 已有浮点模型:直接量化

如果已经有 det/rec 两个浮点 ONNX,只需要提供:

  • 文本检测 ONNX;
  • 文字识别 ONNX;
  • 原始训练图片目录;
  • S 系列任务额外选择目标板卡。

工作台会从原始图片中选取检测模型校准数据,再调用浮点检测模型完成 DB 后处理和透视裁图,自动生成识别模型所需的真实文字框校准图。用户不需要另外手工制作一套 rec 校准数据。

原始训练图片 ─┬─→ det 校准 ─→ det 量化/编译
              └─→ 浮点 det ─→ 文本框 ─→ 透视裁图 ─→ rec 校准 ─→ rec 量化/编译

4. 使用自己的数据训练

也可以从 PaddleOCR 数据集开始,在“训练与转换”中分别训练 det 或 rec,再导出 Model Zoo 合规 ONNX。

第一次使用自定义数据时,建议选择“等待确认再量化”:先检查训练指标、字符字典和浮点 ONNX 的完整 OCR 结果,确认无误后再开始 BPU 量化。流程稳定后,再选择自动继续量化。

所有输出默认保存到:

/personal/output/时间-模型/
├── 训练日志、评估指标和 Paddle 权重
├── 浮点 Model Zoo ONNX
├── 定点 ONNX
├── X5 .bin / S 系列 .hbm
├── 自动生成的识别校准裁图
├── ocr-quantization-report.json
└── OpenExplorer 编译、模型信息与仿真日志

怎样判断量化模型是否可靠

镜像不会把“生成了 .bin 或 .hbm”直接当作成功,而是同时检查:

  • 模型输入、输出和固定形状是否符合 Model Zoo 配方;
  • 浮点输出与量化输出的余弦相似度;
  • BPU 对外输出是否保持 FLOAT,末端 Dequantize 是否保留;
  • X5、S100、S100P 的 BPU 模型是否通过 OE x86 仿真;
  • 完整 OCR 串联推理中,文本框、文字和置信度是否合理。

v1.0 正式验收结果:

  • X5:det/rec 浮点—量化余弦相似度为 0.986034 / 0.999919;
  • S100:det/rec 编译余弦为 0.996447 / 0.997547,HBM x86 仿真相似度为 0.994965 / 0.997228。

S100 浮点 ONNX OCR 串联推理。

同一测试图的 S100 BPU .hbm 串联推理。

这些检查主要用于发现转换和量化造成的异常损失;它们不能替代训练数据质量、字符字典和浮点模型本身的精度评估。OE x86 仿真耗时也不是板端性能数据,最终吞吐、时延和完整效果仍应在对应 RDK 板卡上验证。

常用恢复命令

如果 Web 应用未正常启动,可以在开发机终端执行:

bash /home/robogo/START_TRAINING_WEB.sh
training-web status
training-web restart
training-web logs 100

两套镜像的详细数据格式、版本约束、ONNX opset、预处理和量化参数已经写在各自资产 README 中。论坛帖子重点介绍整体链路和快速体验;需要深入排查时,再查看镜像 README、ocr-quantization-report.json 和任务日志。

欢迎在 RoboGo 中体验。如果遇到训练数据格式、字符字典、量化精度或板端部署问题,可以在评论区附上目标平台、任务报告和错误日志,我们会继续完善这条从 PaddleOCR 到 RDK BPU 的开发链路。