基于 Arm 虚拟硬件实现人脸特征提取模型的部署

基于 Arm 虚拟硬件实现人脸特征提取模型的部署

文章目录

  • 1 实验背景
    • 1.1 Arm 虚拟硬件介绍
    • 1.2 文章简介
  • 2 实验目标
  • 3 实验前准备
    • 3.1 订阅 Arm 虚拟硬件镜像的百度智能云云服务器 BCC 实例
    • 3.2 克隆实验代码
  • 4 实验步骤
    • 4.1 配置开发环境
      • 4.1.1 配置 CMSIS-Toolbox 环境
      • 4.1.2 配置 Python 环境
      • 4.1.3 配置 CMSIS-Pack 软件包
      • 4.1.4 更新 FVP 开发环境
    • 4.2 配置并编译人脸特征提取模型
      • 4.2.1 模型介绍
      • 4.2.2 使用 TVM 编译模型
    • 4.3 编译人脸特征提取应用
      • 4.3.1 图片数据预处理
      • 4.3.2 编译该项目
  • 5 在 Arm 虚拟硬件上进行部署和测试
  • 6 参考资料


本实验过程中所显示的优惠价格及费用报销等相关信息仅在【Arm AI 开发体验创造营】体验活动过程中有效,逾期无效,请根据实时价格自行购买和体验。
同时,感谢本次体验活动 Arm 导师 Liliya 对于本博客的指导。
详见活动地址:https://marketing.csdn.net/p/a11ba7c4ee98e52253c8608a085424be

1 实验背景

1.1 Arm 虚拟硬件介绍

在现代嵌入式和物联网开发中,快速迭代和高效测试至关重要。Arm 虚拟硬件(Arm Virtual Hardware, AVH)提供了一个强大的开发环境。基于 Arm 虚拟硬件的百度云服务器内置 Ubuntu Linux 镜像,并包含了丰富的 Arm 开发工具,如 Arm 编译器、FVP 模型和针对 Cortex-M 系列处理器的其他工具。这些工具不仅帮助开发者快速上手,还支持评估 CI/CD、MLOps 和 DevOps 工作流中的自动化测试。订阅访问和使用此版本的 Arm 虚拟硬件,您需同意产品最终用户许可协议中与免费测试版许可相关的条款和协议。

Arm 虚拟硬件产品的技术概览示意图如下所示。开发者也可访问 Arm 虚拟硬件产品介绍页和产品技术文档了解更多关于 Arm 虚拟硬件产品知识。


Arm 虚拟硬件产品概览
图1. Arm 虚拟硬件产品概览

1.2 文章简介

本文将详细介绍如何基于 Arm 虚拟硬件部署一个人脸特征提取模型。通过利用 Arm 虚拟硬件,我们可以在不依赖实际硬件的情况下进行高效开发和测试,从而大大缩短开发周期。本文将涵盖以下内容:

  • 配置 Arm 虚拟硬件开发环境
  • 配置并编译人脸特征提取模型
  • 编译基于 Arm 虚拟硬件实现的人脸特征提取 Demo
  • 在 Arm 虚拟硬件上进行部署和测试

2 实验目标

  1. 了解 Arm 虚拟硬件产品的功能及核心优势。
  2. 熟悉 Arm 虚拟硬件云服务器 BCC 实例的订阅流程及 Arm 虚拟硬件镜像内的主要组件。
  3. 掌握如何使用 Arm 虚拟硬件云服务器 BCC 实例进行嵌入式软件的开发(例如:机器学习、物联网应用等)并熟悉其基本的开发流程,包括:如何搭建开发环境、编译构建应用代码、运行调试工程代码等步骤。

3 实验前准备

3.1 订阅 Arm 虚拟硬件镜像的百度智能云云服务器 BCC 实例

在实验开始前请参考 如何订阅使用 Arm 虚拟硬件镜像的百度智能云云服务器 BCC 实例 来购买并初始化一个基于 Arm 虚拟硬件镜像的百度智能云云服务器 BCC 实例。

3.2 克隆实验代码

首先我们需要将实验代码克隆(下载)至 BCC 服务器实例中,便于后续使用 Arm 虚拟硬件镜像环境中的软件开发工具进行进一步的开发调试。
本实验代码的仓库地址为:https://github.com/Zheng-Bicheng/FacialFeatureComparisonForAVH.git ,通过以下命令可以将代码仓库中的代码克隆下载至服务器中。

git clone https://github.com/Zheng-Bicheng/FacialFeatureComparisonForAVH.git

为了加速大家的下载速度,我们也提供了gitee镜像源,通过以下命令可以使用gitee镜像源将代码仓库中的代码克隆下载至服务器中。

git clone https://gitee.com/bicheng-zheng/FacialFeatureComparisonForAVH.git

命令执行后参考结果示意图如下所示:

克隆实验代码结果演示
图3-2-1. 克隆实验代码结果演示

4 实验步骤

4.1 配置开发环境

该项目基于 使用Arm 架构的百度云服务器 并利用 Arm 虚拟硬件 (Arm Virtual Hardware, AVH) 运行。根据服务器架构的不同,我们需要针对性的对开发环境进行配置。为了简化大家的时间,我们提供了两个脚本文件来帮助大家快速配置环境,如需了解更多细节,请参考脚本文件中的注释:

  • FacialFeatureComparisonForAVH/scripts/config_cmsis_toolbox.sh
  • FacialFeatureComparisonForAVH/scripts/config_python.sh
  • FacialFeatureComparisonForAVH/scripts/config_pack.sh
  • FacialFeatureComparisonForAVH/scripts/config_fvp.sh

4.1.1 配置 CMSIS-Toolbox 环境

CMSIS-Toolbox 是作为 Open-CMSIS-Pack 项目的重要组成部分之一。它统一了流行嵌入式工具链(Arm、GCC、IAR 和 LLVM 编译器)的开发流程,是下一代软件工具的重要组成部分。CMSIS-Toolbox 还提供了命令行工具,用于:

  • 利用软件包创建项目并构建嵌入式应用程序,支持使用多种编译工具。
  • 利用 CMSIS-Pack 格式创建、维护和分发软件包。

你可以执行以下代码来快速配置 CMSIS-Toolbox 的开发环境:

cd /path/to/FacialFeatureComparisonForAVH  # 进入项目根目录
sudo bash scripts/config_cmsis_toolbox.sh

命令执行后参考结果示意图如下所示:

配置 CMSIS-Toolbox 开发环境结果演示
图4-1-1. 配置 CMSIS-Toolbox 开发环境结果演示

4.1.2 配置 Python 环境

Python 语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,你可以执行以下代码来快速配置 Python 的开发环境:

cd /path/to/FacialFeatureComparisonForAVH  # 进入项目根目录
source scripts/config_python.sh
配置 Python 开发环境结果演示
图4-1-2. 配置 Python 开发环境结果演示

4.1.3 配置 CMSIS-Pack 软件包

本实验项目的开发采用了 Open-CMSIS-Pack 项目的标准形式,我们可以使用 Arm 虚拟硬件镜像中预装的 CMSIS-Toolbox 工具包里的 cbuild 工具来构建本实验项目。
需要注意的是,正常情况下,运行 cbuild 命令在构建工程的过程中会自动下载项目所依赖的 CMSIS Packs 软件包。但由于国内外网络环境的差异,部分 CMSIS Packs 软件包资源的下载速度较慢导致无法自动下载成功。因此,为便于开发者顺利地完成本实验项目的体验,我们提供了脚本文件一键下载和安装 Packs ,你可以执行以下代码来快速配置开发环境:

cd /path/to/FacialFeatureComparisonForAVH  # 进入项目根目录
bash scripts/config_pack.sh
配置 CMSIS-Pack 软件包结果演示
图4-1-3. 配置 CMSIS-Pack 软件包结果演示

4.1.4 更新 FVP 开发环境

由于本项目需要,我们需要手动的更新 FVP模型组件。请参考下面命令进行更新。

cd /path/to/FacialFeatureComparisonForAVH  # 进入项目根目录
sudo bash scripts/config_fvp.sh
更新 FVP 开发环境结果演示
图4-1-4. 更新 FVP 开发环境结果演示

4.2 配置并编译人脸特征提取模型

4.2.1 模型介绍

本项目使用的人脸识别特征提取模型是 Adaface ,你可以在 insightface/recognition/arcface_paddle 中找到它的详细介绍。受限于 MCU 设备极为紧张的内存,我们这里选用了 backbone 为 MobileFaceAdaface 模型,以下是它的详细参数:

Model structurelfwcfp_fpagedb30CPU time costGPU time costInference model
MobileFace-Paddle0.99520.92800.96124.3ms2.3msdownload link

4.2.2 使用 TVM 编译模型

本项目参考了 ArmDeveloperEcosystem/Paddle-examples-for-AVH,使用 TVM 来将人脸特征提取模型转换成可以在 MCU 设备上部署的 C 代码,关于 TVM 的更多介绍,你可以参考 apache/tvm。

在使用 TVM 转换 PaddlePaddle 模型的过程中,我们较为建议的流程为:

  1. 获取 PaddlePaddle 静态图模型
  2. 使用 Paddle2ONNXPaddlePaddle 模型转换 ONNX 模型
  3. 使用 TVMONNX 模型转换为为可以在 MCU 设备上部署的 C 代码

为了简化大家的时间,我们提供了脚本文件来帮助大家快速利用 TVM ,如需了解更多细节,请参考脚本文件中的注释:

  • FacialFeatureComparisonForAVH/scripts/build_facial_feature_model.sh

你可以执行以下代码来快速使用 TVM 编译模型(编译可能需要持续较长的时间,请耐心等待)

cd /path/to/FacialFeatureComparisonForAVH  # 进入项目根目录
bash scripts/build_facial_feature_model.sh
使用 TVM 编译模型结果演示
图4-2-2-1. 使用 TVM 编译模型结果演示

运行脚本后,该项目目录下将出现 face_feature 文件夹,文件夹内存放了可以在 MCU 设备上部署模型的 C 代码。

4.3 编译人脸特征提取应用

4.3.1 图片数据预处理

FacialFeatureComparisonForAVH/images 目录下存放了三张人脸图片,其中 face_0.jpgface_1.jpg 为人脸 A ,face_2.jpg 为人脸 B 。通常情况下,将图片转换为模型的输入需要经过以下三个步骤:

  1. 颜色通道转换(BGR2RGB)
  2. 图片缩放(Resize)
  3. 图片归一化(Normalize)

为了简化大家的时间,我们同样提供了 python 脚本来帮大家快速将输入图片转换为输入数据,如果你想要了解更多的细节,请参考脚本文件中的注释:

  • FacialFeatureComparisonForAVH/scripts/convert_image.py

你可以执行以下代码来快速将输入图片转换为输入数据

cd /path/to/FacialFeatureComparisonForAVH  # 进入项目根目录
python scripts/convert_image.py images/face_0.jpg images/face_1.jpg
将图片转换为输入数据结果演示
图4-3-1. 将图片转换为输入数据结果演示

4.3.2 编译该项目

本项目以 csolution 格式提供,我们使用 CMSIS-Toolbox 中的 cbuild 工具在命令行中构建项目。你可以执行以下代码来快速编译本项目。

cd /path/to/FacialFeatureComparisonForAVH  # 进入项目根目录
rm -rf ./tmp  # 删除编译目录
armlm activate -product KEMDK-COM0 -server https://mdk-preview.keil.arm.com  # 激活 License
cbuild project.csolution.yml  # 编译项目
编译该项目结果演示
图4-3-2. 编译该项目结果演示

5 在 Arm 虚拟硬件上进行部署和测试

接下来我们使用 Arm 虚拟硬件对我们编译出来的应用进行模拟和测试

cd /path/to/FacialFeatureComparisonForAVH  # 进入项目根目录
/opt/VHT/bin/FVP_Corstone_SSE-300 --stat --simlimit 8000 -f FVP_Corstone_SSE-300_Config.txt out/project/V2M-MPS3-SSE-300-FVP/Debug/project.axf
部署和测试结果演示
图5-1. 部署和测试结果演示

其中,该命令部分参数解读如下:

  • /opt/VHT/bin/FVP_Corstone_SSE-300 调用含有 Cortex-M55 处理器的 FVP 模型的名称
  • --stat 表示停止模拟时,打印相关的运行状态信息。
  • --simlimit 8000 表示模拟运行的时间上限为 8000s,即若用户未手动退出,则8000s 后程序会自动退出运行。
  • out/image.axf 即为所执行的应用文件,即本实验项目开发的指纹图像识别应用的可执行文件。
  • -f FVP_Corstone_SSE-300_Config.txt 即指定了 FVP 模型运行时的所依据的配置文件。可以通过 /opt/VHT/bin/FVP_Corstone_SSE-300 -l 命令获取基于 FVP_Corstone_SSE-300 的所有可配置的参数及其默认值(初始值)信息。用户可根据自身需求进行参数调整,获得不同的应用执行效果。

6 参考资料

  1. Arm 虚拟硬件产品简介
  2. Arm 虚拟硬件帮助文档
  3. Arm 虚拟硬件开发者资源
  4. 【中文技术指南】Arm 虚拟硬件实践专题一:产品订阅指南(百度智能云版)
  5. 【中文技术指南】Arm 虚拟硬件实践专题二:Arm 虚拟硬件 FVP 模型入门指南
  6. 【中文视频直播课】加速AI开发,1小时快速入门Arm虚拟硬件
  7. Arm® Keil® Microcontroller Development Kit (MDK) Getting Started Guide
  8. Open-CMSIS-Pack
  9. CMSIS-Toolbox
  10. Github/apache/tvm
  11. Github/deepinsight/insightface
  12. Arm 社区微信公众号
Arm 社区微信公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/352915.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Internet Download Manager ( 极速下载器 ) 序列号注册码 IDM下载器注册机中文激活破解版

IDM下载器(Internet Download Manager)是一款专业的下载管理软件,它通过多线程技术和智能文件分段技术,有效提升下载速度,并支持断点续传,还具有计划下载功能,用户可以设置特定的下载时间,非常适合需要在特…

FastAdmin后台开发框架 lang 任意文件读取漏洞复现

0x01 产品简介 FastAdmin是一款基于PHPBootstrap的开源后台框架,专为开发者精心打造。它基于ThinkPHP和Bootstrap两大主流技术构建,拥有完善的权限管理系统和一键生成CRUD等强大功能。FastAdmin致力于提高开发效率,降低开发成本,…

语言大模型:开启自然语言处理的新篇章

随着人工智能技术的飞速发展,自然语言处理(NLP)领域取得了显著的成果。其中,语言大模型(Language Models)作为近年来崛起的一种新型神经网络模型,已经在文本生成、机器翻译、情感分析等多个NLP任…

Eigne库安装及使用教程

文章目录 1.Eigne库介绍2.Eigne库安装3.Eigne库使用4.some examples5.参考文献 1.Eigne库介绍 Eigen是可以用来进行线性代数、矩阵、向量操作等运算的C库,它里面包含了很多算法。它的License是MPL2。它支持多平台。 Eigen采用源码的方式提供给用户使用,在…

word空白页删除不了怎么办?

上方菜单栏点击“视图”,下方点击“大纲视图”。找到文档分页符的位置。将光标放在要删除的分节符前,按下键盘上的“Delet”键删除分页符。

Python机器学习完整流程:从数据清洗到推理落地

目录 一、引言 二、数据清洗 数据加载与初步探索 缺失值处理 异常值处理 特征编码与转换 数据集划分 三、模型训练 四、模型文件生成 五、模型部署与推理落地 六、总结 一、引言 在当今数据驱动的时代,机器学习已成为解决复杂问题的有力工具。而…

若依4.7.8版本计划任务rce复现

0x00 背景 最近项目中发现很多单位都使用了若依二开的系统,而最近若依有个后台计划任务rce的漏洞,比较新,我还没复现过,于是本地搭建一个若依环境复现一下这个漏洞。 这个漏洞在4.7.8版本及之前都存在,现在最新版的若…

ThinkBook 16 2024 Ubuntu 触控板问题解决

sudo insmod goodix-gt7868q.ko sudo cp local-overrides.quirks /etc/libinput/local-overrides.quirks sudo systemctl restart gdm 有偿解决,无效退款 联系前,请写明笔记本型号和ubuntu版本

【太原理工大学】软件系统安全—分析题

OK了,又是毫无准备的一场仗,我真是ありがとうございます 凸^o^凸 根据前几年传下来的信息,所谓“分析”,就是让你根据情节自行设计,例如如何设计表单等,这类多从实验中出,王老师强调好好做实验一…

【Android】安Android Studio环境搭建注意点

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

Python实现逻辑回归与判别分析--西瓜数据集

数据 数据data内容如下: 读取数据: import numpy as np import pandas as pd data pd.read_excel(D:/files/data.xlsx) 将汉字转化为01变量: label [] for i in data[好瓜]:l np.where(i 是,1,0)label.append(int(l)) data[label] lab…

ECharts 蓝色系-荧光图标折线图01案例

ECharts 蓝色系-荧光图标折线图01案例 图表意义 本折线图案例展示了一周内不同路线的使用情况或数据统计。通过折线的上升和下降,可以直观地观察到每条路线的流量或数据变化趋势,从而进行分析和决策。 效果预览 效果图展示不同路线的数据统计和个性化…

深入理解计算机系统 CSAPP 家庭作业6.44

在我最喜欢的VirtualBox 上的Ubuntu18 Clock frequency is approx. 3504.0 MHz Memory mountain (MB/sec)s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 128m 13985 7392 4512 3511 2906 2464 2079 1798 1607 1464 1354 1248 1192 1134 1052 64m 13736 7296 4627 35…

【SPIE独立出版 | 往届均已完成EI检索】2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024)

2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024) 2024 International conference on Cloud Computing, Performance Computing and Deep Learning *CCPCDL往届均已完成EI检索,最快会后4个半月完成! 一、重要信息 大会官网:www…

阿里云服务器无法远程登录连接:操作系统禁用了密码登录方式,会导致使用了正确的用户名和密码仍无法登录

阿里云服务器无法远程登录连接:操作系统禁用了密码登录方式,会导致使用了正确的用户名和密码仍无法登录 报错信息报错原因解决办法 报错信息 Workbench密码登录 登录失败 操作系统禁用了密码登录方式,会导致使用了正确的用户名和密码仍无法登…

pikachu中pkxss数据库怎么创建

在用小皮时候,只是知道个pikachu这个数据库,跟着视频看人家用pkxss数据库,自己也想用,查看了很多资料,又蒙又查,终于明白怎么弄,特此传授经验 图像中画横线的就是平常怎么创建数据库的&#xff…

NSSCTF-Web题目9

目录 [SWPUCTF 2021 新生赛]sql 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]xff 1、题目 2、知识点 3、思路 [FSCTF 2023]源码!启动! 1、题目 2、知识点 3、思路 [SWPUCTF 2021 新生赛]sql 1、题目 2、知识点 SQL注入,空格、注释符等…

JVM 基本组成

一、为什么要学习 JVM ? 1. “ ⾯试造⽕箭,⼯作拧螺丝” , JVM 属于⾯试官特别喜欢提问的知识点; 2. 未来在⼯作场景中,也许你会遇到以下场景: 线上系统突然宕机,系统⽆法访问,甚⾄直…

我用chatgpt写了一款程序

众所周知,Chatgpt能够帮助人们写代码,前几天苏音试着完全用Chatgpt写一款Python程序 有一句话我很赞同,未来能代替人的不是AI,是会使用AI的人。 最终,写下来效果还不错,完全提升了我的办公效率。 开发前…

聆听你的声音 ,华为云Astro Zero邀您参加产品满意度调查

亲爱的开发者 几分钟时间,大大的影响! 邀您参加Astro Zero满意度调查 助我们优化您的开发体验。 为什么您应该参与? 塑造产品:直接影响Astro Zero的未来改进! 聆听声音:这是一个让您的声音被听见的机…