From f7afa685d95e4c1b88b0f68bf0fef942464d4cf7 Mon Sep 17 00:00:00 2001 From: txyugood Date: Wed, 22 Feb 2023 21:02:22 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E3=80=90Hackathon=204th=20No.214=E3=80=91A?= =?UTF-8?q?rm=20=E8=99=9A=E6=8B=9F=E7=A1=AC=E4=BB=B6=E4=B8=8A=E5=AE=8C?= =?UTF-8?q?=E6=88=90=20PP-OCR=20=E6=96=87=E6=9C=AC=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=9A=84=E9=83=A8=E7=BD=B2=E4=B8=8E=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=96=B9=E6=A1=88.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rfcs/ARM/20230222_ppocr_deploy_for_arm.md | 86 +++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 rfcs/ARM/20230222_ppocr_deploy_for_arm.md diff --git a/rfcs/ARM/20230222_ppocr_deploy_for_arm.md b/rfcs/ARM/20230222_ppocr_deploy_for_arm.md new file mode 100644 index 000000000..8b49acd89 --- /dev/null +++ b/rfcs/ARM/20230222_ppocr_deploy_for_arm.md @@ -0,0 +1,86 @@ +# Arm 虚拟硬件上完成 PP-OCR 文本检测模型的部署与优化设计文档 + +|任务名称 | Arm 虚拟硬件上完成 PP-OCR 文本检测模型的部署与优化 | +|---|---| +|提交作者 | txyugood | +|提交时间 | 2023-2-22 | +|版本号 | V1.0 | +|依赖飞桨版本 | develop | +|文件名 | 20230222_ppocr_deploy_for_arm.md
| + +# 一、概述 +## 1、相关背景 +将 PaddleOCR 模型库中的文本检测模型 (Text Detection Model) 部署在 Arm Cortex-M55 处理器上并使用 Arm 虚拟硬件 Corstone-300 平台进行验证。 +[https://github.com/PaddlePaddle/Paddle/issues/50632#task214](https://github.com/PaddlePaddle/Paddle/issues/50632#task214) +## 2、功能目标 +将PPOCR中的文本检测模型通过TVM编译后,在ARM虚拟硬件上运行,并输出推理结果。 +## 3、意义 +为PPOCR套件提供边缘计算方案。 + +# 二、飞桨现状 + +目前PPOCR支持英文检测模型在ARM虚拟硬件上的运行。 + +# 三、业内方案调研 +通过检索没有找到完整的pytorch与tensorflow的虚拟ARM部署方案。 + +# 四、对比分析 + +Paddle-examples-for-AVH中的例子可以在虚拟ARM上跑通全流程,但在本次调研中也发现了文档中一些不详细的地方,遇到一些问题,通过查阅资料解决,会在该项目中进行完善文档。 + + +# 五、设计思路与实现方案 + +## 1、主体设计思路与折衷 +参考实例代码跑通环境部署、TVM安装、模型量化、模型编译、应用程序编写与测试等部署。 +### 主体设计具体描述 +1.通过Docker镜像部署环境。 +2.在镜像中安装TVM工具。 +3.量化并编译模型。 +4.编写基于CMSIS-NN的应用程序。 +5.在本地FVP环境中运行测试。 +6.在远程AMI环境运行测试。 + +### 主体设计选型考量 +选择ch_ppocr_mobile_v2.0_det模型主要原因, +1.模型参数规模小,mobile模型适合运行在嵌入式设备上。 +2.该模型未被量化,可在编译阶段先对模型进行适当的量化,尽可能多的调用CMSIS-NN库。 + + +## 2、关键技术点/子模块设计与实现方案 +模型量化与编译是本项目重点内容,可参考PPOCR中的模型量化与裁剪方法。 + +## 3、主要影响的模块接口变化 +单独的demo项目不影响飞桨框架。 + +# 六、测试和验收的考量 +通过本地FVP和远程AMI运行程序,可使用中文图片正常运行并检测结果正确。 + +# 七、影响面 + +## 对用户的影响 +单独Demo项目,对用户无影响。 +## 对二次开发用户的影响 +单独Demo项目,对用户无影响。 +## 对框架架构的影响 +无 +## 对性能的影响 +无 +## 对比业内深度学习框架的差距与优势的影响 +无 +## 其他风险 +无 + +# 八、排期规划 +* 环境搭建并跑通参考项目(已完成) +* 量化与编译模型(2023-2-22至2023-2-28) +* 应用程序编写(2023-3-1至2023-3-3) +* FVP环境测试(2023-3-1至2023-3-3) +* AMI环境测试(2023-3-3至2023-3-5) +* 提交PR(2023-3-6) + +# 名词解释 +FVP:ARM的固定虚拟平台 + + +# 附件及参考资料 From f74bae9bc99cdce37ca6984a27610b2d0bfb7e39 Mon Sep 17 00:00:00 2001 From: txyugood Date: Thu, 23 Feb 2023 16:01:17 +0800 Subject: [PATCH 2/4] refine rfc. --- rfcs/{ARM => AVH}/20230222_ppocr_deploy_for_arm.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename rfcs/{ARM => AVH}/20230222_ppocr_deploy_for_arm.md (100%) diff --git a/rfcs/ARM/20230222_ppocr_deploy_for_arm.md b/rfcs/AVH/20230222_ppocr_deploy_for_arm.md similarity index 100% rename from rfcs/ARM/20230222_ppocr_deploy_for_arm.md rename to rfcs/AVH/20230222_ppocr_deploy_for_arm.md From 7368032442ea86d78c15cb1f1fa21f65993826d9 Mon Sep 17 00:00:00 2001 From: txyugood Date: Mon, 27 Feb 2023 20:34:36 +0800 Subject: [PATCH 3/4] Refine ppocr deploy for arm rfc. --- rfcs/AVH/20230222_ppocr_deploy_for_arm.md | 47 ++++++++++++++--------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/rfcs/AVH/20230222_ppocr_deploy_for_arm.md b/rfcs/AVH/20230222_ppocr_deploy_for_arm.md index 8b49acd89..d4fb8a3b3 100644 --- a/rfcs/AVH/20230222_ppocr_deploy_for_arm.md +++ b/rfcs/AVH/20230222_ppocr_deploy_for_arm.md @@ -13,7 +13,7 @@ 将 PaddleOCR 模型库中的文本检测模型 (Text Detection Model) 部署在 Arm Cortex-M55 处理器上并使用 Arm 虚拟硬件 Corstone-300 平台进行验证。 [https://github.com/PaddlePaddle/Paddle/issues/50632#task214](https://github.com/PaddlePaddle/Paddle/issues/50632#task214) ## 2、功能目标 -将PPOCR中的文本检测模型通过TVM编译后,在ARM虚拟硬件上运行,并输出推理结果。 +使用Arm虚拟硬件完成文本检测应用的结果验证。 ## 3、意义 为PPOCR套件提供边缘计算方案。 @@ -22,11 +22,19 @@ 目前PPOCR支持英文检测模型在ARM虚拟硬件上的运行。 # 三、业内方案调研 -通过检索没有找到完整的pytorch与tensorflow的虚拟ARM部署方案。 + +* [语音识别](https://arm-software.github.io/AVH/main/examples/html/MicroSpeech.html) + + 该项目识别两个关键字Yes和No。使用Tensorflow Lite来实现识别模型,可以运行在ARM虚拟硬件上。 + + +* [行人检测](https://github.com/apache/tvm/tree/main/apps/microtvm/cmsisnn) + + 该项目使用TVM对TensorFlow Lite导出的模型文件进行编译,然后基于CMSIS-NN运行在Cortex(R)-M55 CPU上。 # 四、对比分析 -Paddle-examples-for-AVH中的例子可以在虚拟ARM上跑通全流程,但在本次调研中也发现了文档中一些不详细的地方,遇到一些问题,通过查阅资料解决,会在该项目中进行完善文档。 +以上方案均基于TensorFlow Lite实现,本方案将使用飞桨导出的静态图模型,使用TVM量化编译后再ARM虚拟硬件上运行,并输出具有可读性的运行结果。 # 五、设计思路与实现方案 @@ -34,12 +42,17 @@ Paddle-examples-for-AVH中的例子可以在虚拟ARM上跑通全流程,但在 ## 1、主体设计思路与折衷 参考实例代码跑通环境部署、TVM安装、模型量化、模型编译、应用程序编写与测试等部署。 ### 主体设计具体描述 -1.通过Docker镜像部署环境。 -2.在镜像中安装TVM工具。 -3.量化并编译模型。 -4.编写基于CMSIS-NN的应用程序。 -5.在本地FVP环境中运行测试。 -6.在远程AMI环境运行测试。 +1. 选择模型。 + +2. 量化模型 + +3. 编译模型(tvmc) + +4. 应用程序编写(前后端处理) + +5. 使用Arm虚拟硬件运行应用 + +6. 验证运行结果。 ### 主体设计选型考量 选择ch_ppocr_mobile_v2.0_det模型主要原因, @@ -48,13 +61,13 @@ Paddle-examples-for-AVH中的例子可以在虚拟ARM上跑通全流程,但在 ## 2、关键技术点/子模块设计与实现方案 -模型量化与编译是本项目重点内容,可参考PPOCR中的模型量化与裁剪方法。 +模型量化与编译是本项目重点内容,学习研究TVM中的量化方法。 ## 3、主要影响的模块接口变化 单独的demo项目不影响飞桨框架。 # 六、测试和验收的考量 -通过本地FVP和远程AMI运行程序,可使用中文图片正常运行并检测结果正确。 +使用Arm虚拟硬件平台验证文本检测应用运行结果, 检测结果正常并具有可读性。 # 七、影响面 @@ -73,14 +86,12 @@ Paddle-examples-for-AVH中的例子可以在虚拟ARM上跑通全流程,但在 # 八、排期规划 * 环境搭建并跑通参考项目(已完成) -* 量化与编译模型(2023-2-22至2023-2-28) -* 应用程序编写(2023-3-1至2023-3-3) -* FVP环境测试(2023-3-1至2023-3-3) -* AMI环境测试(2023-3-3至2023-3-5) -* 提交PR(2023-3-6) +* 量化与编译模型(2023-2-28至2023-3-5) +* 应用程序编写(2023-3-5至2023-3-6) +* AMI环境测试(2023-3-6至2023-3-8) +* 提交PR(2023-3-9) # 名词解释 -FVP:ARM的固定虚拟平台 - +AVH: Arm虚拟硬件(Arm Virtual Hardware) # 附件及参考资料 From 869cf069d86ff50e22de7242000588c3e8517d2a Mon Sep 17 00:00:00 2001 From: txyugood Date: Tue, 28 Feb 2023 11:46:09 +0800 Subject: [PATCH 4/4] Refine ppocr deploy for arm rfc. --- rfcs/AVH/20230222_ppocr_deploy_for_arm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/AVH/20230222_ppocr_deploy_for_arm.md b/rfcs/AVH/20230222_ppocr_deploy_for_arm.md index d4fb8a3b3..82b46113f 100644 --- a/rfcs/AVH/20230222_ppocr_deploy_for_arm.md +++ b/rfcs/AVH/20230222_ppocr_deploy_for_arm.md @@ -88,7 +88,7 @@ * 环境搭建并跑通参考项目(已完成) * 量化与编译模型(2023-2-28至2023-3-5) * 应用程序编写(2023-3-5至2023-3-6) -* AMI环境测试(2023-3-6至2023-3-8) +* AVH测试(2023-3-6至2023-3-8) * 提交PR(2023-3-9) # 名词解释