【人工智能】基于香橙派AIpro和昇腾AI计算芯片的面部口罩检测(详细教程)

目录

前言

1.介绍开发板

2.应用场景

3.安装操作系统

3.1 下载工具

3.2 烧录系统

3.3 系统装载

4.配置操作系统

4.1 登录系统账户

4.2 配置网络连接

4.3 查看设备网络

4.4 配置远程连接

5.部署目标检测应用

5.1 准备运行环境

5.2 模型二次训练

​5.3 热成像温度检测

5.4 转换模型格式

5.5 编译运行应用

6.体验感想与结论

6.1 社区资源

6.2 快速开发

6.3 智启未来


author

daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主

daisy.skye_嵌入式,Linux,Qt-CSDN博客daisy.skye擅长嵌入式,Linux,Qt,等方面的知识​编辑https://blog.csdn.net/qq_40715266?type

前言

在接触Orange Pi AIpro之前接触过香橙派家的H618开发板开发过小项目,整体的了解就是基于sunxi全志家的内核开发的,较早一点的还接触过瑞芯微的,行业里面也经常拿搭载这两家内核的芯片做一些安卓话机,广告机之类的。

最近看到香橙派搭载的昇腾算力芯片当然要也体验一把啦!

1.介绍开发板

本文是一篇Orange Pi AIpro开发板的新手上手指导,详尽地从开发板的介绍、烧录、上电,直到开发板的使用、部署、成果、结论。首先来简单看一下开发板的外观以及都有哪些重要组件。

图:开发板正面视图以及各组件介绍

可以看到开发板上最显眼也是最重要的就是中间的4核64位+AI双处理器了,处理器核心用金属盖板盖住,采用钎焊技术增强了高负载场景下的散热能力。同时也能看到,开发板的外围接口十分丰富,包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB(串口打印调试功能)、两个MIPI摄像头、一个MIPI屏等,预留电池接口,是接口非常齐全的一款开发板了,大家都知道,外围资源越多,开发时候就越方便,越能充分发挥出开发板的能力。

Orange Pi AIpro开发板需要使用可以提供PD协议20v电压的充电器。查看充电器的铭文位置,看充电器是否支持20v的输出电压。

图:选择合适的充电器

2.应用场景

拿到这块开发板之后,我需要先搞清楚我可以用它做什么。来看一下官方的介绍: Orange Pi AIro 开发板是香橙派联合华为精心打造的高性能 AI 开发板,采用昇腾AI技术路线,具体为4核64位处理器+AI处理器,集成图形处理器,支持8-12TOPS AI算力,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出。 Orange Pi AIpro引用了相当丰富的接口,可广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。 Orange Pi AIpro支持Ubuntu、openEuler操作系统,满足大多数AI算法原型验证、推理应用开发的需求。

图:Orange Pi AIpro开发板的应用场景

从官方的介绍中可以得知,Orange Pi AIpro开发板是香橙派联合华为精心打造的人工智能算力平台,它的核心卖点就是它是一款具有很高扩展性的高算力平台,买它就是图它的算力和开放易用的平台,我可以使用它的算力来运行各类AI应用。在大家日常生活中最常接触的算力应用应该就是智能驾驶了吧。但凡车企有新车型发布,在发布会上几乎都会提到其搭载芯片的算力,足以见得高算力对于推动科技进步的关键作用。

图:近年来机器学习系统所需算力增长趋势

算力领域细分为本地算力与云端算力两大阵营,其差异核心在于能耗效率与成本考量。在轻量级任务场景中,本地算力足以胜任高速且直接的简单计算需求,确保即时响应。然而,面对大规模或复杂计算挑战时,繁重的计算工作就会交给云端算力解决,展现出无可比拟的优势。Orange Pi AIpro开发板作为一款搭载了昇腾310B AI处理器的本地算力平台,用户可以使用它进行一些AI计算、AI应用。下面就从操作系统的安装开始我们的教程吧。

3.安装操作系统

由于Orange Pi AIpro开发板本身并不自带操作系统和运行环境,需要在启动介质上进行安装系统的操作,才可以正常使用开发板。Orange Pi AIpro开发板的操作系统支持安装在TF卡、eMMC、NVMe、SATA SSD这四种介质上。下面来了解一下这四种启动介质的特点。

  • TF卡特点主要在于体积小重量轻,接口通用简单,在小体积设备上尤其常用,连接各种设备都很方便。
  • eMMC是一种将主控、闪存单元都封装在一个颗粒芯片中的存储介质,特点同样是体积小重量轻,但是因为其封装接口一般是BGA或者B2B连接器,易用性上不如插卡槽的TF卡。Orange Pi AIpro开发板上便是通过B2B连接器来连接eMMC。
  • NVMe是通过PCIe通道连接的SSD,特点是数据传输带宽大,所以NVMe的传输速度是这四种介质中最快的,同时也是价格最贵的。接口可以和SATA SSD通用。
  • SATA SSD是使用了传统的SATA接口标准的SSD,特点是技术简单,价格比NVMe便宜,在速度和价格之间达成了比较有性价比的平衡。接口可以和NVMe通用。

图:Orange Pi AIpro开发板支持的四种启动介质

经过上面的对比,我就选择了最简单方便的TF卡来开始安装操作系统。

3.1 下载工具

首先需要下载系统烧录工具包和系统镜像。进入官方提供的Orange Pi AIpro下载页面 Orange Pi - Orangepi ,下载好官方工具,接着向下滚动到官方镜像部分,这里选择下载openEuler镜像。openEuler系统也就是华为服务器操作系统 EulerOS,在开源后命名为 openEuler。这个镜像具备了完整的开发环境,同时也自带了一些AI测试demo,用于测试开发板性能。

图:需要下载的文件

3.2 烧录系统

把一张准备烧录系统的TF卡插入读卡器,并连接电脑。随后安装工具包中的balenaEtcher软件,这是一款跨平台的免费系统烧录工具。安装完毕后打开balenaEtcher,选择解压后的.img系统镜像,将系统烧录到TF卡中。步骤比较简单,这也是这款烧录软件广受好评被大家推荐的原因。

图:烧录系统流程一览

3.3 系统装载

系统烧录完毕后,将卡插入开发板背面的卡槽中。

图:开发板背面视图以及各组件介绍

随后需要将启动方式拨码开关拨到TF卡启动模式,也就是两个开关都拨到最右,远离TF卡的方向。

这样一来,操作系统的安装就到此结束了,接下来开始配置操作系统。

4.配置操作系统

4.1 登录系统账户

按图示连接方式连接开发板和外设。

图:外设连接示意图

上电后,开发板会进行开机自检,板载的风扇会以最大功率启动,大约会持续10秒左右,同时,设备上的两个LED灯也会随着系统启动而依次点亮。

图:启动后LED灯亮起

使用HDMI连接线连接显示屏,会看见系统启动后的系统主屏登录界面,至此就完成了系统的启动。

图:系统主屏登录界面

进入登录界面后,需要输入账户HwHiAiUser的密码,根据官方文档的说明,需要输入密码 Mind@123

4.2 配置网络连接

进入系统后,首先需要给设备配网,这里可以选择连接网线,也可以选择WiFi连接。有线连接的话直接接上网线到网络上即可;WiFi连接需要是通过右上角的无线网络连接进行连接。

图:WiFi网络连接示意图

4.3 查看设备网络

接着可以在界面下方,单击图标,打开终端,在终端欢迎界面可以查看到开发板的ip地址。

由于openEuler镜像是自带了可视化桌面的,所以在网络连接完毕后,Orange Pi AIpro开发板可以直接作为一台电脑使用,浏览网页、播放视频对于它来说都不在话下。当然,在本篇教程里是把开发板作为算力平台使用的,所以接下来转移到下一个章节,开始进入开发板的核心。

4.4 配置远程连接

回到电脑面前,接下来需要在电脑上通过ssh连接开发板,这样就不需要使用鼠标键盘连接开发板进行操作,相当于在电脑上远程控制开发板。首先,在菜单中打开终端

图:菜单中的终端

根据ssh的连接格式,输入ssh HwHiAiUser@ 紧跟着把开发板的ip输进去,回车

图:ssh连接开发板

需要输入密码 Mind@123 。注意,在linux系统中,输入的账户密码并不会有任何显示,需要盲操。输入完毕后回车

连接成功后,会显示欢迎文本以及等待输入的命令行

到这里就可以正式开始AI应用的部署了。

5.部署目标检测应用

19年的疫情已经过去,在痊愈后的今天,大家最好还是要在公共场所佩戴口罩。这里我来部署一个开源的口罩佩戴检测的应用,这个开源项目的网址是

Ascend/EdgeAndRobotics - Gitee.com,它基于预训练的ssd-mobilenet模型,使用了预设的口罩识别数据集,这个应用包含了从训练到om推理的全过程。

这里要提示一下,运行AI应用前的系统环境需要安装了 昇腾NPU(Neural-Network Processing Unit,神经网络处理器单元)驱动固件、CANN(Compute Architecture for Neural Networks,异构计算架构)软件、二进制算子包、PyTorch框架2.1.0、torchvision1.16.0、torch_npu插件1.16.0、ACLLite库 方可正常执行。看见这些环境不要害怕,其实这些环境在烧录的系统中已经配置好了,我只要使用它们就可以了。如果遇到系统环境上的问题,不用担心,昇腾官方的社区有着非常完善的系统环境配置教程,相信你一定可以顺利安装它们。

回到电脑面前,开始部署应用的流程。

5.1 准备运行环境

首先需要下载口罩识别目标检测应用的源码仓库到本地目录中。目录是什么?我们需要了解一下linux中目录的概念,目录的形式与Windows中的文件夹类似,大家所说的“切换到system目录”其实就是在文件管理器中打开并进入到system文件夹的操作,只是在linux命令行中,使用的是 cd /system 命令。

登录ssh后可以运行pwd,查看当前所在目录的完整路径

可以看到当前所在的是home目录下的用户名目录,这是用于存放用户文件的主目录,可以把项目、文件、资料都放在这里,就像一个家一样,所以称之为家目录。还可以看到,默认所在的目录是一个波浪号~,这是为了方便用户回家而设置的快捷方式,在想回家的时候运行 cd ~ 就可以回家了。在这里可以把项目下载到家目录中。

在ssh窗口中运行 git clone Ascend/EdgeAndRobotics ,源码会下载到当前目录下,也就是家目录,所以直接运行ls命令来列出当前目录下的所有文件,可以看到home目录下已经有了一个EdgeAndRobotics目录,运行 cd EdgeAndRobotics/Samples/DetectionRetrainingAndInfer/ 进入口罩识别目标检测应用的目录。

接着需要配置环境变量,指定一些参数,减小算子编译内存占用。环境变量是一种在系统中全局定义的变量,也就是用来指定操作系统运行环境的一种动态值。可以通过export 变量=值 的格式来进行环境变量的配置。在这里需要配置两个环境变量

export TE_PARALLEL_COMPILER=1export MAX_COMPILE_CORE_NUMBER=1

配置完环境变量后,需要下载依赖包,由于网络环境的原因,需要使用到国内的镜像源,执行下面的命令进行下载

pip3 install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com -r requirements.txt

5.2 模型二次训练

接下来是下载用于训练模型的数据集。在机器学习中,数据集是算法和模型的基础,通过对数据集的学习,算法能够识别数据中的模式和规律,从而进行预测或分类。进入到dataset目录,运行

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/wanzutao/detection/mobilenet-v1-ssd-mp-0_675.pth

等下载进度条跑完,需要解压压缩包,使用unzip命令进行解压

unzip mask.zip

接下来需要进行数据集的预处理,分出训练集和验证集。训练集顾名思义,是用于训练机器学习模型的数据集;而验证集是用于验证不同参数下模型的成绩。训练集和验证集之间的数据不会重叠,这样可以保证模型在没有见过的数据上的能力。返回上一次目录,开始数据预处理

cd ..python3 predata.py

数据预处理结束后,下一步下载一个预训练模型进行二次训练。预训练模型是在大型数据集上预先训练好的模型,在此基础上进行二次训练微调,可以提高很多的效率。

​cd modelsWget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/wanzutao/detection/mobilenet-v1-ssd-mp-0_675.pthcd ..python3 main.py

5.3 热成像温度检测

二次训练需要比较长的时间,在训练的运行过程中,由于开发板此时正处于最高负载状态下,可以通过温度检测来考量开发板的散热设计。我使用热成像仪对开发板进行了温度检测,检测可见开发板温度最高处达到了55.8度,主要发热源是昇腾310B AI处理器。这个温度达到8TOPS算力,在AI计算平台中是属于相当冷静的那一部分了。

图:使用热成像仪检测开发板高负载运行温度

5.4 转换模型格式

训练完毕后,需要导出ONNX模型。ONNX模型(Open Neural Network Exchange)是一种开放格式的模型格式,用于实现不同机器学习框架之间的互操作性,允许开发者在不同的框架和工具之间轻松迁移和部署深度学习模型。使用下面的指令导出

python3 export.py

导出完毕后,获取一张用于测试的检测图片,待会就用这张戴口罩的图片测试我训练的模型究竟能不能成功识别出来口罩

图:待测试的原始图片

cd omInfer/datawget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/wanzutao/detection/mask.jpg

下一步,获取PyTorch框架的mobilenet-ssd模型(*.onnx),并转换为昇腾AI处理器能识别的专用模型(*.om)。首先将导出的mobilenet-ssd.onnx模型复制到model目录下

cd ../modelcp ../../mobilenet-ssd.onnx ./

接着获取AIPP配置文件

​wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/wanzutao/detection/aipp/aipp.cfg

最后进行模型转换

atc --model=mobilenet-ssd.onnx --framework=5 --soc_version=Ascend310B4 --output=mobilenet-ssd --insert_op_conf=aipp.cfg

atc命令中各参数的解释如下:

- model:转换前模型文件的路径。

- framework:原始框架类型。5表示ONNX。

- output:转换后模型文件的路径。请注意,记录保存该om模型文件的路径,后续开发应用时需要使用。

- input_shape:模型输入数据的shape。

- soc_version:昇腾AI处理器的版本。

5.5 编译运行应用

终于到了最关键的步骤了,编译应用源码,继续运行以下命令来开始编译

cd ../scriptsbash sample_build.sh

最后,等待编译完成后就可以运行这个口罩识别目标检测应用了。运行检测程序:

bash sample_run.sh

执行成功后,omInfer/output目录下会生成检测结果的输出图片,可以看到,模型对图片中的口罩进行了正确的识别框选和置信度打分。准确的识别框表示模型能正确找到目标在图片中的位置和尺寸,置信度0.999表示模型对于检测结果非常确信。

图:模型对口罩成功进行了识别

6.体验感想与结论

经过一番实际操作与测试,一个口罩识别目标检测应用已经成功运行在Orange Pi AIpro开发板上,可以直观地感受到Orange Pi AIpro开发板搭载的昇腾310B AI处理器8TOPS(每秒万亿次操作)带来的澎湃算力,作为计算核心,强大而又冷静的算力提供了高效的性能,为复杂的人工智能算法提供了坚实的性能支撑。

6.1 社区资源

在我体验Orange Pi AIpro开发板的过程中,华为昇腾提供的丰富的社区资源为我的整个体验过程带来了充分的文档保障,昇腾AI市场众多的解决方案也为不同业务场景带来了更多的可能性。

对于开发者而言,Orange Pi AIpro开发板丰富的接口设计、强大的硬件兼容性、优化的软件开发环境以及资料齐全的社区,极大地降低了AI应用开发门槛,让开发者能够更专注于功能的优化与应用场景的创新。

6.2 快速开发

在实际开发过程中,我发现通过简单的数据集替换与模型微调,就能轻松实现应用的多元化扩展。作为一种目标检测应用,我可以很轻松地更换上述二次训练的数据集,快速为特定目标来改变模型识别能力。比如换成交通标志数据集,配合摄像头实时图传,就实现了电子狗系统,实时监测并提醒驾驶员注意道路标志,有效提升行车安全;换成道路行人车辆数据集,就可以应用到智能驾驶情景中去,通过目标检测与识别能力,为智能驾驶带来更好更安全的体验。

6.3 智启未来

在大模型大AI百花齐放的今天,算力和开发成本越来越重要。在本篇教程中,不难发现,Orange Pi AIpro开发板同时具备了强大的算力和易于集成的开发环境,强大的算力意味着运行速度快,而开发成本降低意味着开发速度快降本增效,在开发与部署中有着显著的优势。再加上Orange Pi AIpro开发板拥有充沛的社区资源以及快速开发能力,可以帮助用户轻松实现从创意到原型再到批量生产的交付,是创客、梦想家、业余爱好者的理想创意平台。

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

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

相关文章

数据结构 day4

目录 思维导图: 学习内容: 1. 链表的引入 1.1 顺序表的优缺点 1.1.1 优点 1.1.2 不足 1.1.3 缺点 1.2 链表的概念 1.2.1 链式存储的线性表叫做链表 1.2.2 链表的基础概念 1.3 链表的分类 2. 单向链表 2.1 节点结构体类型 2.2 创建链表 2.…

pikachu之暴力破解

1基于表单的暴力破解 随便输入然后抓包 选中添加账号密码 添加分别添加payload1,2,的字典 开始攻击 2验证码绕过on server 和基于表单的暴力破解相比,多了一个验证码功能 这个验证码是前端的验证码(和前面那个一样选中添加账号密码…

Java小技能:多级组织机构排序并返回树结构(包含每个层级的子节点和业务数据集合)

文章目录 引言I 实体定义1.1 部门1.2 用户组织机构中间表1.3 树状DTOII 抽取组织机构排序方法2.1 树状排序方法2.2 案例III 查询条件构建3.1 根据部门进行权限控制3.2 注入风险引言 需求: 根据组织机构进行数据授权控制,例如控制船舶、船舶设备、摄像头、港区查看权限。 一…

kettle从入门到精通 第七十六课 ETL之kettle kettle连接hive教程

1、群里有小伙伴询问kettle连接hive的demo,今天抽点时间整理下。其实kettle连接hive和连接mysql数据库也是一样的。 1)kettle中的lib目录下放hive驱动jar,这里我使用的是kyuubi-hive-jdbc-shaded-1.9.0.jar。 2)设置hive连接参数…

pytorch学习(九)激活函数

1.pytorch常用激活函数如下: #ReLU激活函数 #Leaky ReLU激活函数 #Sigmoid激活函数 #Tanh激活函数 #Softmax激活函数 #Softplus2.代码 import torch.nn as nn import torch import numpy from torch.utils.tensorboard import SummaryWriterwriter SummaryWriter…

ModuleNotFoundError: No module named ‘lime‘,lime。 安装 LIME库

LIME LIME 的作用安装 LIME示例代码详细解释 总结 LIME(Local Interpretable Model-agnostic Explanations,局部可解释不可知模型)是一个Python库,用于解释机器学习模型的预测结果。它通过构建一个简单的、本地的可解释模型来近似…

【BUG】已解决:ModuleNotFoundError: No module named ‘torch‘

已解决:ModuleNotFoundError: No module named ‘torch‘ 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市…

Unity UGUI 之EventSystem

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 1.EventSystem是什么? 有需要请查看手册:Unity - 手册&#xff1…

2024.7.19最新详细的VMware17.0.0安装

VM官网VMware - Delivering a Digital Foundation For Businesses。现在官网无法下载,点击会跳转到https://access.broadcom.com/default/ui/v1/signin/ 要注册一个账号: 注册登录以后,点击Please select your identity provider. - Support …

昇思25天学习打卡营第2天 | 快速入门

在快速发展的人工智能领域,深度学习已经成为数据分析和模式识别的核心技术。作为一名深度学习初学者,我有幸通过MindSpore平台进行了实战演练,从数据预处理到模型训练与测试,再到模型保存与加载,经历了一次完整的深度学…

基于SpringBoot+Vue的校园台球厅设备管理系统(带1w+文档)

基于SpringBootVue的校园台球厅设备管理系统(带1w文档) 基于SpringBootVue的校园台球厅设备管理系统(带1w文档) 本次设计任务是要设计一个校园台球厅人员与设备管理系统,这个系统能够满足校园台球厅人员与设备的管理及用户的校园台球厅人员与设备管理功能。系统的主…

彻底卸载360安全卫士的方法

法一: 按下WindowsR键,并输入msconfig, 在“引导”选项卡中选择“安全引导”,并重新启动进入安全模式。此时,重复第一种方法“应用和功能”-“360安全卫士”-“卸载”,在弹出的对话框中残忍的拒绝它的各种令人发指的无…

go-微服务的设计概括

一、微服务到底是什么? 初学者很容易把微服务和分布式混为一谈,但其实二者之间存在非常大的差异,我个人认为主要有以下几点: 分布式主要是一种技术手段,用来保证多个相同的进程能够共同工作而不出错。采用各种复杂的…

基于Ubuntu2310搭建openstack高可用集群B版

openstack-ha 环境初始化安装haproxy安装keepalived数据库集群高可用rabbitmq集群高可用memcache集群配置 keystone高可用glance高可用placement高可用nova高可用neutron高可用horizon高可用 本实验使用两台节点master和node配置haproxy高可用,keepliaved配置主备抢…

IntelliJ IDEA 直接在软件中更新为最新版

当我们的 IDEA 工具许久没有更新,已经拖了好几个版本,想跨大版本更新,比如从2020.2.1 -> 2023.x.x 此时,我们菜单栏点击 Help -> Check for Updates… ,右下角会有提示更新,如下图: 点…

go 实现websocket以及详细设计流程过程,确保通俗易懂

websocket简介: WebSocket 是一种网络传输协议,可在单个 TCP 连接上进行全双工通信,位于 OSI 模型的应用层。WebSocket 协议在 2011 年由 IETF 标准化为 RFC 6455,后由 RFC 7936 补充规范。 WebSocket 使得客户端和服务器之间的数…

Python PDF Magic:合并和拆分随心所欲

大家好!小编今天要为大家带来一篇关于Python操作PDF的秘籍——无论是要将PDF合并成一份整体,还是将一个庞大的PDF文件拆分成多个小伙伴,都轻松hold住!你准备好了吗?让我们开始这场奇妙的PDF操作之旅吧! 准…

机械学习—零基础学习日志(高数06——函数特性)

零基础为了学人工智能,真的开始复习高数 函数的性质,开始新的学习! 有界性: 解法放这里: 证明有界,其实内部的包含知识点很多。第一,如果有界,你需要证明函数在一定区间内&#xff…

《Techporters架构搭建》-Day02 集成Mybatis-plus

集成Mybatis-plus Mybatis-plus集成Mybatis-plus步骤小结 Mybatis-plus Mybatis-plus官网 MyBatisPlus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。它引入了一些新的特性&…

【探索Linux】P.40(传输层 —— TCP滑动窗口 | 快重传 | 流量控制 )

阅读导航 引言一、TCP滑动窗口1. 为什么要用滑动窗口(1)逐个确认(2)优化逐个确认(滑动窗口) 2. TCP滑动窗口的工作原理 二、快重传的引入三、快速重传详细介绍1. 机制原理2. 触发条件3. 操作步骤4. 与超时重…