问道录

人生到处知何似 应似飞鸿踏雪泥

用户工具

站点工具


ai:端侧ai

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
ai:端侧ai [2026/06/14 14:47] xingai:端侧ai [2026/06/15 02:06] (当前版本) – [PPOCR] xing
行 1: 行 1:
-====== AMLNN PPOCR ======+====== AMLNN PPOCR部署 ======
  
 ===== 背景 ===== ===== 背景 =====
 +
 +==== AMLNN ====
  
 AMLNN是...... AMLNN是......
  
-PPOCR是百度开源的一个OCR 工具链,适合端侧与服务器部署,PPOCR包含较多模型,最基本的是文本检测和文本识别模型。这里介绍的是这两个模型在AMLNN平台上的部署示例。+==== PPOCR ====
  
-===== 模型转换 =====+PPOCR是百度开源的一个OCR 工具链,同时适合端侧与服务器部署,这里介绍的是PPOCR文本检测与文本识别两个模型在AMLNN平台上的部署示例。 
 + 
 + 
 +==== 模型转换 ====
  
 深度学习模型 是一套「固定网络结构 + 训练好的权重参数」的组合。 深度学习模型 是一套「固定网络结构 + 训练好的权重参数」的组合。
  
-  * 网络结构:描述计算图、层、算子数据流,规定做什么运算、按什么顺序没有具体数值 +  * 网络结构:定义计算图、网络层、算子数据流,规定运算逻辑与执行顺序,不包含具体数值 
-  * 权重参数:网络每一层的可学习数值(卷积核、偏置、全连接权重等),是模型 “学到的知识+  * 权重参数:网络每一层的可学习数值(卷积核、偏置、全连接权重等),是模型训练得到的特征知识
  
 PPOCR提供的是推理模型是飞桨推理引擎模型,包含三个文件: PPOCR提供的是推理模型是飞桨推理引擎模型,包含三个文件:
行 21: 行 26:
  
 使用PaddleX 的 Paddle2ONNX 插件可以将PPOCR飞桨模型转换为onnx模型,参考[[https://www.paddleocr.ai/main/version3.x/inference_deployment/others/obtaining_onnx_models.html|paddleocr - obtaining_onnx_models]]。 使用PaddleX 的 Paddle2ONNX 插件可以将PPOCR飞桨模型转换为onnx模型,参考[[https://www.paddleocr.ai/main/version3.x/inference_deployment/others/obtaining_onnx_models.html|paddleocr - obtaining_onnx_models]]。
 +
 +<code python paddle2onnx.py>
 +paddlex \
 +    --paddle2onnx \  # 使用paddle2onnx功能
 +    --paddle_model_dir /your/paddle_model/dir \  # 指定Paddle模型所在的目录
 +    --onnx_model_dir /your/onnx_model/output/dir \  # 指定转换后ONNX模型的输出目录
 +    --opset_version 7  # 指定要使用的 ONNX opset 版本
 +</code>
  
 使用adlaconvter工具可以将onnx模型转换为adla模型。 使用adlaconvter工具可以将onnx模型转换为adla模型。
  
-===== 前处理 =====+===== 部署流程 =====
  
 <mermaid> <mermaid>
   graph TD   graph TD
-    A(**mermaid**)-->B((__plugin__)) +    A[获取模型] --> C[**格式转换**<br/>eg: Paddle → ONNX → adla] 
-    A-->C(((//for//))) +    C --> D[开发和运行环境准备] 
-    B-->D[["[[https://www.dokuwiki.org/dokuwiki|Dokuwiki]]"]+    --> F[业务推理实现] 
-    C-->D+    --> G[测试调优] 
 +    G --> H[上线运维] 
 + 
 +    subgraph F[**业务推理实现**] 
 +        F1[预处理<br/>缩放/归一化/量化/维度转换] 
 +        F2[模型推理<br/>加载模型+前向计算] 
 +        F3[后处理<br/>坐标还原/解码/阈值过滤
 +        F1 --> F2 --> F3 
 +    end
 </mermaid> </mermaid>
  
-===== 推理 =====+===== 文本检测 ===== 
 + 
 +==== 模型转换 ==== 
 + 
 +通过adlaconvter工具将ppocr onnx模型转换为adla格式,最重要的转换参数包括: 
 + 
 +  - 输入模型 
 +  - 归一化参数 
 +  - 量化算法 
 +  - 量化类型 
 +  - 量化校准数据集,需要转换为npy格式 
 + 
 +==== 预处理 ==== 
 + 
 +原始的输入是一张包含待识别文字的图片,需要做以下预处理后的数据才能用于推理 
 + 
 +  - 读图:BGR格式存储 
 +  - 缩放:图片等比缩放到960 
 +  - 归一化:像素值从[0, 255]映射到[0, 1] 
 +  - INT8量化:将[0, 1]范围的浮点值映射到[-128, 127]的整型范围 
 + 
 +==== 推理 ==== 
 + 
 +推理引擎初始化、加载模型后,引擎根据模型对输入的预处理后张量调用算子,进行前向计算并输出结果,结果包含三个图: 
 + 
 +  * 概率图:单像素为文字区域的置信度 
 +  * 阈值图:给每个像素分配独立二值化阈值,优化倾斜、弯曲文本边缘 
 +  * 二值图:模型内部根据前两张图计算得到,用于轮廓提取 
 + 
 +==== 后处理 ==== 
 + 
 +基于模型输出的特征图,依次完成**轮廓提取、阈值筛选、坐标逆变换、文本框矫正**,最终输出原图上的文本四点坐标与对应置信度。 
 + 
 +===== 文本识别 ===== 
 + 
 +==== 模型转换 ==== 
 + 
 +同检测模型流程:先将飞桨识别模型转为 ONNX,再通过 adlaConverter 转为 ADLA 格式,按需配置归一化参数、量化策略与校准数据集。 
 + 
 +==== 预处理 ==== 
 + 
 +  - 裁剪图像:根据检测输出的坐标,从原图截取单行文字区域; 
 +  - 尺寸规整:固定图像高度,宽度等比例自适应; 
 +  - 归一化、维度变换、INT8 量化,匹配模型输入要求。 
 + 
 +==== 推理 ==== 
 + 
 +引擎加载识别模型并执行前向计算,输出字符序列特征张量。 
 + 
 +==== 后处理 ==== 
 + 
 +对特征张量做 CTC 解码、字符字典映射、去重拼接,最终输出识别文本。 
 + 
 +===== 总结 =====
  
-===== 后处理 =====+  * 随着AI大趋势的发展,端侧AI也会被带着发展,业务会更加地多 
 +  * 平台上端侧AI的关键竞争力包括易用性、推性能、安全等方面
  
  
/app/www/public/data/attic/ai/端侧ai.1781426835.txt.gz · 最后更改: xing