菜单

移动端和边缘部署

相关源文件

本文档涵盖了使用 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_targetsarm目标 ARM 架构
--optimize_out_typenaive_buffer轻量级序列化格式
--model_file.pdmodel 路径输入模型结构
--param_file.pdiparams 路径输入模型参数

来源:deploy/lite/readme.md134-149 deploy/lite/readme.md111-131

C++ 实现结构

移动部署采用了模块化的 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-343Paddle 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_len960检测的最大图像尺寸
det_db_thresh0.3DB 模型二值化阈值
det_db_box_thresh0.5检测框过滤阈值
det_db_unclip_ratio1.6文本框扩展比例
use_direction_classify1启用文本方向分类
rec_image_height48识别模型输入高度

来源:deploy/lite/config.txt1-9 deploy/lite/ocr_db_crnn.cc399-436

构建与部署过程

部署过程涉及使用提供的 Makefile 进行交叉编译和依赖管理。

构建依赖

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
  • 精度模式(INT8FP32
  • 线程数和批次大小
  • 输入图像和配置文件

来源:deploy/lite/readme.md249-272 deploy/lite/readme.md184-199 deploy/lite/prepare.sh1-10