本文档涵盖了使用 Paddle Lite 在移动和边缘设备上部署 PaddleOCR 模型。这包括模型优化、交叉编译设置以及面向 ARM 设备的 C++ 推理实现。有关服务器端部署选项,请参阅 服务器部署。有关通用 Python 包用法,请参阅 Python 包和 CLI。
移动部署系统将标准的 PaddleOCR 模型转换为适用于资源受限设备的优化格式,然后提供 C++ 推理框架进行执行。
来源:deploy/lite/readme.md13-15 deploy/lite/ocr_db_crnn.cc1-679 deploy/lite/Makefile1-81
Paddle Lite 要求模型从标准推理格式优化为轻量级的 .nb 格式,以用于移动部署。
优化过程使用 paddle_lite_opt 工具,并带有特定参数
| 参数 | 值 | 目的 |
|---|---|---|
--valid_targets | arm | 目标 ARM 架构 |
--optimize_out_type | naive_buffer | 轻量级序列化格式 |
--model_file | .pdmodel 路径 | 输入模型结构 |
--param_file | .pdiparams 路径 | 输入模型参数 |
来源:deploy/lite/readme.md134-149 deploy/lite/readme.md111-131
移动部署采用了模块化的 C++ 实现,为每个 OCR 阶段都配备了专门的组件。
| 功能 | 文件 | 目的 |
|---|---|---|
main() | ocr_db_crnn.cc662-679 | 入口点和参数解析 |
system() | ocr_db_crnn.cc438-524 | 完整 OCR 流程执行 |
RunDetModel() | ocr_db_crnn.cc252-332 | 文本检测推理 |
RunRecModel() | ocr_db_crnn.cc158-250 | 文本识别推理 |
RunClsModel() | ocr_db_crnn.cc111-156 | 文本方向分类 |
loadModel() | ocr_db_crnn.cc334-343 | Paddle Lite 模型加载 |
来源:deploy/lite/ocr_db_crnn.cc662-679 deploy/lite/ocr_db_crnn.cc438-524 deploy/lite/ocr_db_crnn.cc252-332
该实现支持三种由命令行参数控制的执行模式。
系统使用配置文件 config.txt,其中包含以下参数:
| 参数 | 默认 | 描述 |
|---|---|---|
max_side_len | 960 | 检测的最大图像尺寸 |
det_db_thresh | 0.3 | DB 模型二值化阈值 |
det_db_box_thresh | 0.5 | 检测框过滤阈值 |
det_db_unclip_ratio | 1.6 | 文本框扩展比例 |
use_direction_classify | 1 | 启用文本方向分类 |
rec_image_height | 48 | 识别模型输入高度 |
来源:deploy/lite/config.txt1-9 deploy/lite/ocr_db_crnn.cc399-436
部署过程涉及使用提供的 Makefile 进行交叉编译和依赖管理。
| 目标 | 依赖项 | 目的 |
|---|---|---|
ocr_db_crnn | 所有目标文件 | 主可执行文件 |
fetch_opencv | 网络下载 | 下载 OpenCV 库 |
fetch_clipper | 网络下载 | 下载 Clipper 库 |
clean | - | 移除构建产物 |
构建过程会自动下载依赖项
paddle-inference-dist.bj.bcebos.com 的 OpenCV 4.1.0 库paddle-inference-dist.cdn.bcebos.com 的 Clipper 库来源:deploy/lite/Makefile43-81 deploy/lite/Makefile68-75 deploy/lite/Makefile61-67
部署包括设备设置和模型传输的实用程序。
执行参数指定
arm8)INT8 或 FP32)来源:deploy/lite/readme.md249-272 deploy/lite/readme.md184-199 deploy/lite/prepare.sh1-10