基于 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 社区微信公众号

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

教你一招,一键学会NAS磁盘“净身出户”的好方法!

在毕业季这个充满离别与新的开始的时刻,空气中似乎也弥漫着一种“断舍离”的氛围。就在这个特殊的季节里,我们迎来了618购物节,各种诱人的优惠活动如雨后春笋般涌现。铁威马618优惠不断!T系列部分低至六折! 在这个热闹…

MathType软件下载2024最新版_MathType官方免费下载附加详细安装步骤

MathType(数学公式编辑器)是由Design Science公司研发的一款专业的数学公式编辑工具。MathType功能非常强大,尤其适用于专门研究数学领域的人群使用。使用MathType让你在输入数学公式的时候能够更加的得心应手,各种复杂的运算符号也不在话下。 安 装 包 …

影音发烧友必入:高清先生M8 8K蓝光播放机使用体验8K播放器

影音发烧友必入:高清先生M8 8K蓝光播放机使用体验 高清先生在5.18成功举办新品8K蓝光播放机“M8”的发布会后,心心念念想尝鲜,于是果断下单了一台。 外形 收到货后,是牛皮纸包装,醒目的“高清先生”标识印在正面&…

【凤凰房产-注册安全分析报告-缺少轨迹的滑动条】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

【element 】修改下拉菜单<el-dropdown样式为横向(超简单)

最终效果&#xff1a; 原先的默认样式&#xff1a; 代码&#xff1a; 只需在<style>中添加以下样式代码即可 .horizontal-dropdown .el-dropdown-menu {display: flex; }

深入Node.js:实现网易云音乐数据自动化抓取

随着互联网技术的飞速发展&#xff0c;数据已成为企业和个人获取信息、洞察市场趋势的重要资源。音频数据&#xff0c;尤其是来自流行音乐平台如网易云音乐的数据&#xff0c;因其丰富的用户交互和内容多样性&#xff0c;成为研究用户行为和市场动态的宝贵资料。本文将深入探讨…

2 图片的分割处理和亚像素精度处理(c++和python)

本文的图片处理分为图片分割、图像的亚像素坐标处理。亚像素处理的原理可以看论文一种基于多项式插值改进的亚像素细分算法&#xff0c;该论文的详解及c的代码实现可以看博文基于多项式插值的亚像素边缘定位算法_基于多项式插值的亚像素算法-CSDN博客。下面的内容很多来自以上博…

分析医药零售数据该用哪个BI数据可视化工具?

数据是企业决策的重要依据&#xff0c;可以用于现代企业大数据可视化分析的BI工具有很多&#xff0c;各有各擅长的领域。那么哪个BI数据可视化工具分析医药零售数据又好又快&#xff1f; 做医药零售数据分析首推奥威BI数据可视化工具&#xff01; 奥威BI数据可视化工具做医药…

移动应用开发大作业报告

1 基本信息 1.1 系统名称 中华字典 1.2 开发运行环境 开发环境&#xff1a;Windows 10 专业版&#xff0c;JDK 1.8&#xff0c;AndroidStudio 运行环境&#xff1a;Java SE Runtime Environment (JRE) 8 1.3 使用的核心技术 JFrame&#xff1a;作为实现界面的窗体类&…

YOLOV8识别物体,并返回物体的像素坐标

一、YOLOV8的相关文件修改 1. 进入路径文件&#xff1a; C:\Users\82370\.conda\envs\Ayolo8\Lib\site-packages\ultralytics\engine\result.py&#xff08;此处路径为你的anacod安装的虚拟环境Ayolo8位置&#xff09; conda create -n Ayolo8 python3.11 # 虚拟环境安装代码…

天锐绿盾 | -公司电脑文件防泄密软件

天锐绿盾是一款专为企业设计的电脑文件防泄密系统&#xff0c;它结合了多种安全功能&#xff0c;旨在从源头上保障企业数据的安全。 www.drhchina.com 以下是关于天锐绿盾的详细介绍&#xff1a; 一、产品概述 天锐绿盾&#xff0c;又名绿盾信息安全管理软件&#xff0c;是一…

Linux安装MySQL以及远程连接

1、Linux安装MySQL 1.1、准备解压包 MySQL5.x解压包 提取码&#xff1a;9y7n 1.2、通过rpm脚本安装 切记安装顺序&#xff1a;common --> libs --> client --> server 因为它们之间存在依赖关系&#xff0c;所以务必按照顺序安装 安装前请确保当前目录/文…

山体滑坡监测利器:传感器与智能监测平台的应用

山体滑坡&#xff0c;这一地质灾害的代名词&#xff0c;指的是山坡上的土体或岩体在重力作用下&#xff0c;因自然或人为因素而向下滑动的现象。滑坡具有突发性、隐蔽性、危害性和破坏性等特征&#xff0c;因此&#xff0c;对于山体滑坡的监测工作显得尤为重要。本文将探讨山体…

算法设计与分析 实验3 回溯法求地图填色问题

目录 一、实验目的 二、背景知识 三、实验内容 四、算法思想 未优化的回溯算法 节点选择-最小剩余值准则&#xff08;MRV&#xff09; 节点选择-最多约束准则&#xff08;DH&#xff09; 颜色选择-最少约束选择 数据结构的选择 向前探查 颜色轮换&#xff08;贪心置…

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

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

揭秘:5步打造移动应用铜墙铁壁!

在数字化时代的浪潮中&#xff0c;移动应用&#xff08;APP&#xff09;的安全与合规性问题日益显著&#xff0c;成为了开发者、企业和用户共同关注的焦点。面对这一挑战&#xff0c;通付盾APP尽职调查报告应运而生&#xff0c;犹如一座灯塔&#xff0c;照亮了移动应用安全前行…

银河麒麟系统项目部署

使用服务器信息 软件&#xff1a;VMware Workstation Pro 虚拟机&#xff1a;ubtun 内存&#xff1a;20G 虚拟机连接工具&#xff1a; MobaXterm Redis连接工具&#xff1a; RedisDesktopManager 镜像&#xff1a;F:\Kylin-Server-10-8.2-Release-Build09-20211104-X86_64…

精准测试:代码覆盖率与测试覆盖率

在日常的测试过程当中&#xff0c;不管是人工进行接口测试还是接口自动化&#xff0c;以及RD写的单元测试&#xff0c;我们一般使用代码覆盖率来衡量测试的完备程度&#xff0c;这篇文章就带大家认识一下代码覆盖率这个常用质量完备度的指标 代码覆盖率测试与测试覆盖率在软件…

“非遗+全身动作捕捉设备”如何打造交互式叙事新消费场景?

在数字化时代&#xff0c;非遗传承渠道逐渐数字化、科技化&#xff0c;利用“虚拟人全身动作捕捉设备”技术提升了非遗文化的社会能见度&#xff0c;让非遗文化重新吸引年轻人的目光。 “虚拟人全身动作捕捉设备”&#xff0c;可以让虚拟人化身虚拟主持人、虚拟主播、虚拟嘉宾…

3D三维模型展示上传VR全景创建H5开源版开发

3D三维模型展示上传VR全景创建H5开源版开发 新增三级分类&#xff08;项目分类、项目、默认场景&#xff09; 新增热点 前台创建项目、场景 场景跳转、提示信息 新增热点图标选择 新增预览场景是显示关联场景 新增3D模型展示功能 当然可以&#xff01;以下是一个关于3D三维模…