目录
一、背景介绍
Arm虚拟硬件(Arm Virtual Hardware, AVH)能够助力软件开发者、OEM 厂商和服务提供商在无需等待实体芯片就绪的情况下,即可早于以往进行软件开发,摆脱实体硬件的限制,大幅提速软件开发流程、缩短验证时间,降低了相关成本。甚至当 Arm 发布全新 IP 或计算平台时,开发者可以马上启动软件开发工作,达到几乎同步的高效作业。
更重要的是,Arm 虚拟硬件引入了现代化、高弹性的软件开发环境,实现软硬件共同设计和高效的 CI/CD,消除了建立或维护多种开发板硬件集群的复杂性。依托于丰富的生态系统布局和广泛的基于 Arm 架构的海量应用设备, Arm 虚拟硬件具备更加广泛的适配性,尤其能为早期的模型和算法筛选与验证带来优势,为简化软件移植实现高效、大规模开发带来价值。
我会以计算机视觉领域的图像识别任务为目标,教大家实现在Arm虚拟硬件 (树莓派) 上部署基于Paddle Lite的图像识别模型,以及学习如何将在Arm虚拟硬件(Arm Virtual Hardware, AVH)上开发测试完成的应用快捷地移植到真实的物理树莓派开发板上。
以下是Arm虚拟硬件的核心架构图:
二、实验目标
- 了解Arm虚拟硬件平台的核心功能及开发优势;
- 了解Arm虚拟硬件镜像云服务器的购买流程;
- 熟悉虚拟硬件的创建和配置以及基本的开发环境搭建、代码构建编译及调试运行等核心流程;
- 验证在虚拟树莓派上推理测试结果的速度是否更快。
三、实验步骤
3.1、项目概述
图像识别是利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术,是应用深度学习算法的一种实践应用。图像分类是根据图像的语义信息对不同类别图像进行区分,是计算机视觉的核心,是物体检测、图像分割、物体跟踪、行为分析、人脸识别等其他高层次视觉任务的基础。图像识别与分类在许多领域都有着广泛的应用,包括安防领域的人脸识别和智能视频分析等,交通领域的交通场景识别,互联网领域基于内容的图像检索和相册自动归类,医学领域的图像识别等
3.2、准备工作
1、购买Arm虚拟硬件镜像云服务器
购买Arm虚拟硬件镜像云服务器的过程,其实就是在主流的云服务器平台购买一个云服务器,这里推荐使用百度智能云平台。
在百度云平台上创建 Arm 虚拟硬件云服务器 BCC 实例的具体步骤如下所示。
在这里需要区分一下,是否为 百度智能云的新用户,这里定义新用户,指的是 未购买过 百度智能云的任何一款云服务器产品,包括 从未注册过百度智能云账号的用户、以及已注册过百度智能云账号但未有发生过购买行为的用户。
1.1、百度智能云新用户的购买步骤参考
1)注册百度智能云账号(或百度账号)。
按界面提示步骤完成注册即可。
2)访问并登录百度智能云 云服务器新品推荐 (baidu.com),直接可以看到我们需要购买的 Arm 虚拟硬件云服务器:
3)根据上图,选择【立即购买】
注意:如果用户没有 实名制认证,会有提示实名制认证的弹窗,按要求进行实名制即可。
4)进行个人实名制认证
5)购买云服务器
实名认证完成后,回到最开始的购买界面(步骤2),选择【立即购买】,则将会看到以下界面。
请仔细核对云服务器信息及选择地域等配置信息:
6)订单支付
选好配置后,可发起订单支付:
7)点击页面的“管理控制台”按钮跳转查看实例的开通情况及详细信息(例如:公网 IP 等)
1.2、百度智能云老用户的购买步骤参考
1)访问并登录百度智能云 云市场,主页产品搜索框检索“Arm虚拟硬件”进入产品详情页面。
2)仔细阅读产品详情页相关服务协议(例如《商品服务协议》等)和产品信息,确认无误后继续订阅请点击“立即购买”进行云服务器 BCC 实例配置页面。
各个配置项的选择,参考后面的步骤。
3)云服务器 BCC 实例配置参考步骤及注意事项
3.1)基本配置
a)付费及地域
- 因所发布的 Arm 虚拟硬件镜像需运行于基于 Arm 架构的服务器上,故“当前地域”请选择含有“Arm 计算”架构实例的地域,其中主要包括:“华北北京”,“华南-广州”以及“华东-苏州”。
- “付费方式”默认为“包年按月”方式,注意请勿更改。因目前使用云市场镜像服务仅支持“预付费”模式,若调整为其他模式会导致无法订阅使用云市场的 Arm 虚拟硬件镜像。
b)配置
- 实例配置”中“架构”请选择“Arm 计算”(原因如前文所述),实例规格可根据用户应用负荷大小进行配置(可选地,参考实例规格选用“ BCC bcc.gr1.c1m4 (1 核 4GB)”)。
- “镜像类型”请选择“云市场镜像”中的“Arm 虚拟硬件(Arm VirtualHardware)。注意:
- 若从云市场 Arm 虚拟硬件产品详情页进入,此项默认会自动匹配,无需手动配置;
- 若从云服务器 BCC 实例创建入口直接进入,请手动搜索选择“云市场镜像”中的“ Arm 虚拟硬件(Arm Virtual Hardware)
c)存储
“系统盘”类型及是否添加额外存储盘会影响实例价格,此项无特殊要求,可根据用户应用负荷大小进行配置,参考存储配置为:系统盘选择“ 通用型SSD、40GB ”,以及不添加其他存储盘。
3.2)网络和带宽
a)网络
“网络类型”及“安全组”可保持默认不配置,或可根据用户自身需求进行调整。
b)弹性资源
不同的公网带宽配置模式价格差异较大,可根据用户自身的网络带宽需求进行配置(可选地,参考弹性资源配置为:“包年包月计费”)。
3.3)登录凭证
这里选择【创建后设置】:
- 管理员密码”请选择“创建后设置”。注意,受镜像产品内部集成的相关组件 License 的约束,请用户仅使用“ubuntu”作为用户名登录实例,初始密码为“avh”。请勿使用任何其他用户名登录,避免对相关软件的使用造成影响。
3.4)购买信息
这里可以参考下图选择默认的即可:
3.5)完成信息配置
a)“标签”、“资源分组”、“部署集”可保持默认配置,或可根据用户自身需求进行调整。
b)系统信息
- “实例名称”和“主机名”均可自定义,但这里选择空白,保持默认即可:
3.6)确认订单
配置完成后,点击下方“确认购买”按钮进入“确认订单”页面,可再次查看确认
a)已完成配置的相关各项服务规格和费用,不同时期购买价格会稍有不同,以实际界面显示为准。
b)注意,目前Arm 虚拟硬件镜像产品为限时免费试用版,购买订时产生的费用主要为租赁百度智能云云服务器 BCC及其他相关基础设施(存储盘,弹性公网IP 等)所花费的费用,具体价格信息均在“确认订单”页面详细说明,请仔细确认。
c)订单确认无误并勾选同意《百度智能云线上订购协议》后,点击“提交订单”即可进入支付页面。请根据用户需求,选择相应的“支付方式”并完成付费购买。
d)支付完成后,页面会自动跳转并提示“开通成功”。
2、查看已购买的Arm虚拟硬件镜像云服务器(BCC实例)
通过前面的步骤,我们已经完成了对Arm虚拟硬件镜像云服务器(BCC实例)的购买,这一章节,我们重点介绍如何在百度智能云网页上找到对应的BCC实例,并完成相关的信息配置。
1)找到已购买的Arm虚拟硬件镜像云服务器(BCC实例)
点击页面左上角的“控制台总览”按钮,跳转查看实例的开通情况及详细信息(例如:公网 IP 等)。
2)修改Arm虚拟硬件镜像云服务器(BCC实例)的实例名称和主机名
2.1)访问 百度智能云-管理中心 可以获得个人的百度云账户ID,参考下图:
将上面的这串ID字符串复制下来备用。
2.2)修改实例的名称
找到修改实例名称的按钮:
参考以下格式修改后,点击【确认】即可完成修改。
2.3)修改主机名
找到修改主机名的按钮:
参考以下格式修改后,点击【确认】即可完成修改。
修改主机名称成功后,实例立即自动重启:
直到看到实例正在【运行中】,表示实例可以正常使用;注意,这里等待状态变更的时候,可以隔一会刷新一下网页更新状态。
3、登录Arm虚拟硬件镜像云服务器(BCC实例)
Arm 虚拟硬件云服务器 BCC 实例提供了多种方式供开发者连接登录,详细指南可参考百度智能云云服务器 BCC 操作指南(登录 Linux 实例)。
本节将主要介绍以下下面这种方式:
- 浏览器窗口登录实例:展示了直接通过浏览器窗口百度智能云管理控制台页面(VNC 远程功能)访问Arm虚拟硬件 BCC实例的最简单方法。
1)浏览器窗口登录实例
1.1) 浏览器登录百度智能云云服务器BCC管理控制台(如上面的步骤展示的),点击左侧“实例与镜像”栏目下的“实例”即可查看当前账户所创建的实例的状态信息。
1.2) 点击状态为“运行中”中的镜像的“操作”栏下的“远程登录”按钮即可跳转至 VNC 远程登录界面。
1.3)VNC 远程登录界面根据提示信息输入登录 用户名(ubuntu)及密码(avh) 登录实例。登录过程中,请仔细阅读提示网址中的 EULA 文件,并输入 Y/yes 等字符表示用户确认同意遵守相应的最终用户许可协议。按下回车键确认后,用户即可成功连接登录 Arm虚拟硬件 BCC实例。
3.3、实操指导
以下所有的操作需要在Arm虚拟硬件镜像的命令行环境下进行,需要提前使用上面准备工作中提到的方式登录Arm虚拟硬件镜像。
1、克隆实验代码
本实验的仓库代码地址为:https://github.com/PaddlePaddle/Paddle-Lite-Demo
使用git命令完成实验代码的克隆
使用https的方式克隆代码的参考执行命令如下:
git clone https://github.com/PaddlePaddle/Paddle-Lite-Demo
2、虚拟硬件创建与配置
访问 https://www.arm.com 并使用注册的Arm账号登入AVH第三方硬件SaaS平台。
a. 在设备选项页面,点击创建设备 (CREATE DEVICE) 。
b. 在设备选择页面,选择树莓派设备 (Raspberry Pi 4) 。创建该设备需要消耗4 个CPU核数,可在设备选项页面查看当前可使用CPU核数。
c. 点击下一步 (NEXT) 进入设备配置页面。
d. 选择官方提供的Raspberry Pi OS Desktop (11.2.0) 作为操作系统,并点击选择 (SELECT) 进入配置确认页面。
e. 配置确认页面可以自定义设置设备名称以及选择是否需要设置高级启动选项(勾选该选项将进入高级启动项配置页面),本示例无需配置高级启动选项,因此直接点击创建设备 (CREATE DEVICE) 按键进行设备创建。
f-g. 设备创建过程可以实时查看设备创建进程。当提示Device is ready时,说明设备已经创建完成。
h. 点击控制台 (CONSOLE) 按键,输入pi作为用户名,raspberry作为密码即可成功登入该设备。可以通过输入uname -a查看当前系统基本信息。可选地,也可以直接使用树莓派桌面 (位于左侧显示区) 上的终端完成后续操作。
3、运行环境准备
在创建好的虚拟树莓派控制台终端依次输入以下代码完成相应依赖项 (主要包括gcc、g++、OpenCV、cmake) 的安装与配置。
$ sudo apt-get update
$ sudo apt-get install gcc g++ make wget unzip libopencv-dev pkg-config
$ wget https://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz
$ tar -zxvf cmake-3.10.3.tar.gz
$ cd cmake-3.10.3
$ ./configure
$ make
$ sudo make install
4、下载模型和预测库
当提示Download successful!说明已经下载完成
$ cd PaddleLite-armlinux-demo
$ ./download_models_and_libs.sh
5、编译与运行
为更直观的查看结果,建议直接使用树莓派桌面上的终端来编译和运行代码(可选地,通过右侧控制端中的终端来编译和运行程序)。打开桌面的终端并切换至图像分类应用路径下(位于Paddle-Lite-Demo/PaddleLite-armlinux-demo/image_classification_demo 目录)。该图像识别应用旨在识别该目录下images文件夹中的 tabby_cat.jpg 图片。
$ sh run.sh # build and run image classification application
四、实验效果
1、查看运行结果
运行结果示意图如下,该图片成功地被识别为虎斑猫
2、虚拟树莓派vs真实树莓派
为了让各位开发者更直观地感受在虚拟树莓派4和在真实树莓派4开发板上进行开发部署的差异,我们使用树莓派400开发套件(键盘内部集成有树莓派4作为真实树莓派硬件平台进行该Paddle Lite图像识别应用的部署。同样地,需要安装Raspberry Pi OS with desktop操作系统(64 位)。各位开发者可以选用单独的树莓派4开发板进行同样的体验和测试。
相同的命令操作完成真实树莓派开发板上环境的运行配置以及应用的部署,其结果与虚拟树莓派4上的运行结果一致,对比运行结果示意图。可见,在确保结果准确性的情况下,在虚拟树莓派上的处理时间更短,其获得推理测试结果的速度更快。
五、总结
5.1、活动推荐
最近 Arm 和 CSDN 联合举办了Arm AI 开发体验创造营,旨在助力 AI 时代的物联网开发,借助 Arm 虚拟硬件 (Arm Virtual Hardware) 开发者可有效缩短软件开发周期,加速创意落地与应用。活动将包含技术交流直播、动手实验、有奖征文等多种形式。只要完成各个环节任务,您不仅可以参与优秀博文的评选,还能获取相应的积分,兑换丰厚的活动礼品。无论您是技术新手还是经验丰富的开发者,Arm 在 AI 开发中提供的前沿技术实力与创新平台,将为您的日常开发工作提供一种全新、高效的思路,在助您提升开发能力的同时让您拥有一名得力的 AI 开发“助手”。从此,为您开启高效、便捷、灵活的开发之旅,实现真正的差异化创新。
点击报名即可参与Arm AI 开发体验创造营报名表
参与活动可以体验官方实验手册:基于 Arm 虚拟硬件模拟 Cortex-M7 芯片平台搭建智能物联网终端。
我体验之后发现使用AVH搭建物联网平台确实事半功倍,无论是设备端还是平台端都很便捷。所以小伙伴们可以积极参与,更多实验等着大家一起发掘。当然,如果对我这个图像识别实验有任何疑问的小伙伴们也可以留言。
关于更多 Arm 虚拟硬件的产品订阅及实践指南,请扫码关注“Arm 社区”公众号
5.2、体验感受
本实验通过在AVH的虚拟树莓派4上完成图像识别应用的部署,并将其结果与真实硬件开发板上的运行结果进行了对比。不难看出,AVH有效地解决了实体硬件所面临的种种痛点问题,开发者无需再受硬件资源的约束,可以随时随地的进行软件开发。
区别于传统的嵌入式Arm终端软件开发,它可以让我们大大提升了开发Arm终端应用程序的效率,降低了企业预研和开发的成本,这既是企业开发想看到的降本增效,也是我们开发者的一大福音。当前,各领域的行业应用正全面进入 AI 原生阶段,面向各 AI 应用进行深度的软硬件协同优化,AVH能提供更简单易用、高效、低成本、可扩展的开发过程。同时,还可省去后续维护大量硬件的时间与成本,进而让 AI 开发触手可及,积极助力拥抱 AI 时代。
感谢Arm 和 CSDN 联合举办的Arm AI 开发体验创造营,真的收获满满!