主页 > 出口百科 > 口罩出口 > 口罩异常_戴口罩常见错误

口罩异常_戴口罩常见错误

谭剑 2023-08-28 21:43

导读:⒈本案例使用口罩识别推理程序作为例子进行演示,硬件平台是华为昇腾310设备( 310),该口罩识别使用目标检测中模型,检测的结果有两个类别:戴口罩的脸、没戴口罩的脸。成功执行

⒈本案例使用口罩识别推理程序作为例子进行演示,硬件平台是华为昇腾310设备( 310),该口罩识别使用目标检测中模型,检测的结果有两个类别:戴口罩的脸、没戴口罩的脸。成功执行推理程序后我们对其进行了推理调优,使推理过程速度加快。

⒉包含的主要内容:推理程序源码、原始模型文件、后处理开源代码、待推理的图片。

⒊硬件平台: 310 64架构。

⒋操作系统: 18.04。6 。

⒌--_5.1。2_-64。

⒍--_3.0。2_-64。:。

⒎300-3000--_21.0。4.8_-64。:。

⒏300-3000--_1.80。22.5。220。:。

⒐ - -3.9。12。

⒑--={__} ----- ---。

⒒ {__}//3.9。1.0 //。

⒓ {__}//3.9。1.0 //64。

⒔ 3.9={__}//3.9。

⒕ 3.9={__}//3.9。

⒘3.9 ==3.19。

⒙是华为开发的一站式开发环境,这里我们主要用到了代码编辑、代码上传下载、远程连接功能。在上安装非常简单,大家请参照官网教程。

⒚或者直接将文件夹拖入桌面图标。

⒛搜索找到 ->点击加号输入推理服务器、端口、用户名、密码,可以点击 (保存后就不用重复输入密码了)。最后点击。

小提示:这里可以点击 按钮,测试连接是否正常。

点击对应的服务器,就打开了一个 。

可以在下面的界面中输入命令,操作服务器。

说明:项目必须是一个昇腾项目才能使用菜单栏中的功能。

然后依次选择 、 ,等待重新启动后完成创建。

在设置界面设置服务器路径,按照自己安装的路径选择,最后需要选择到5.1。1(这个名字和安装的版本相同,点击后,需要等待一段时间完成同步。

选择刚才配置的,这个配置好是通用的。

根据服务器情况自由选择即可。

鼠标放在文件夹上点击右键,选择-> 。。

再点击我们配置好的,就把文件同步到服务器端了。

可以在 查看文件,看到确实上传至服务器了。

--=://。//__。 --=3 --=://。// --_=32 --_=310 --_=“_1:1,260,260,3” --_= --__=://。//_。 --__=://。//_。

__。是训练后的模型文件。我们这一步将这个模型转为了能在昇腾处理器上高效执行的模型。运行之后在当前目录下生成了。,这个就是稍后我们用到的模型。

-- 指定要转换的文件,在目录下面有下载好的__。 文件。

-- 指定输出的文件名字,会自动生成。后缀。这个可以随意命名。

--_ 建议指定为“32”。

--_指定昇腾芯片型号。

--_ 指定输入的尺寸。

--_= 输入数据格式。

--__ 指定配置的配置文件,用于在 上完成数据预处理,在文件夹下有配置文件_。,参数具体含义可参考昇腾文档。

--__ 模型融合配置文件。

我们也可以选择使用提供的 来进行模型转换,操作上会简单一些。

原始模型文件,选择__。

按照服务器来选择。

转换后模型输出路径,选择的是本地路径。

_1 输入数据的形状、类型,按照图上所示设置。

数据预处理,与命令行一样,这里我们通过文件来设置。选择服务器文件夹中自带的_。文件即可。

这里我们可以设置算子融合、额外参数、环境变量等。

--__=//////_。

下面的 是自动生成的命令,也就是将要执行的命令,基本与我们之前的一致。

--__路径与上一步设置的不一样,这是因为软件会自动提取文件里面的数据,生成这个文件,也就是说这个文件与我们的。

最后点击,等待一段时间即可完成模型转换。

最后日志如果输出 。 代表转换成功了。

当前昇腾处理器以及昇腾软件栈无法直接拿常用开源框架网络模型(如,等)来进行推理。如果想要进行推理则需要做一步模型转换的操作,也就是把开源框架的网络模型转换成架构专用的模型。而此处模型转换的步骤就是通过工具完成的。

昇腾张量编译器( ,简称)是昇腾架构体系下的模型转换工具。

它可以将开源框架的网络模型(如、等)以及 定义的单算子描述文件转换为昇腾处理器支持的离线模型。

模型转换过程中,会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够在昇腾处理器上高效执行。工具功能架构如下图所示。

= () 该类用于对流程的基本管理,包括加载流程配置、创建流程、向流程上发送数据、获得执行结果。

根据指定的配置文件创建多个。

接收的数据结构定义。

向指定上的输入元件发送数据()。阻塞式,不支持多线程并发。

获得上的输出元件()的数据后处理过程。

当用户需要定位应用程序或上层框架程序的性能瓶颈时,可在采集进程内(。接口、。接口之间)调用 扩展接口(统称为功能),开启记录应用程序执行期间特定事件发生的时间跨度,并将数据写入数据文件,再使用工具解析该文件,并导出展示性能分析数据。

:将采集到的数据写入文件,再使用工具解析该文件,并展现性能分析数据。

在推理代码基础上新增部分代码,帮助我们分析推理过程。涉及的函数如下:。

。_() 创建事件标记。

后续调用函数 、___、、_接口时,需要以描述该事件的指针作为输入,表示记录该事件发生的时间跨度。同步接口。

。___(, , ) 为事件标记携带字符串描述,在中解析并导出结果中_ 数据展示。

。 和 。 接口配对使用,完成单线程采集。

用于记录事件发生的时间跨度的开始时间。同步接口。调用此接口后,自动在指针中记录开始的时间戳,将 设置为/。

、接口:成对使用,表示时间跨度的开始和结束。

同步接口。 调用此接口后,自动在指针中加上当前时间戳,将 设置为,表示开始一次采集。

修改。中模型路径,使用推理服务器中绝对路径,文件就是上一步生成的离线模型。

步骤二:_。文件修改。

修改_,使用绝对路径。

按照上述步骤修改路径后,上传至推理服务器。

右键选择整个项目文件,也可以选择单个文件,-> 。

再点击我们配置好的,就把文件同步到服务器端了。

////3.9。12//3.9 _。 /1。

在当前目录下就会生成_。

1、相同的模型在不用的硬件平台上跑出的性能数据不同,比如一个模型在上跑推理耗时10,在上跑耗时15,这个时候就可以考虑使用进行性能调优了。

2、追求极致,释放软硬件的澎湃性能,比如一个模型在上跑耗时20,但随着应用场景的发展,性能无法满足业务诉求,需要将模型耗时优化到15或者要达到更高的性能10等等。

数据采集的目的是通过数据分析出执行推理或训练过程中软件硬件的性能瓶颈。命令如下(注意路径全部使用绝对路径):。

////-/5.1。1//// --=“////3.9。12//3.9 /////_。 //////1。” --= --=://。//-/。

命令使用绝对路径,替换为自己服务器相应的安装目录。

-- 配置为运行环境上任务文件,写入之前的推理命令。

-- 控制用户和上层框架程序输出性能数据的开关,可选或,默认值为。之前我们调用了。相关 扩展接口,所以这里选择。

-- 收集到的数据的存放路径。

等待一段时间后,终端输出 。 。并且在目录下面生成了-目录,证明运行成功。

命令可以采集推理程序的性能数据,使用该方式采集并解析数据需确保应用工程或算子工程所在运行环境已安装--开发套件包。

命令行格式如下: --= --=。

执行完上述命令后,会在--目录下生成目录,目录保存侧或侧的原始数据以及汇总数据。

////3.9。12//3.9 ////-/5.1。1///_///。 - -- 。

在执行完导出数据命令“3 。 - ”后,会在屏幕打印相关性能调优建议。

运行结果摘要: 。

查询文档可知,基于整网性能数据算子数量优化建议的原则:(1)存在算子,且数量超过设定的阈值(2)需检查是否有使用算子的必要性。

经过检查后,这里的算子是必要的,无法优化。

/_0_1_1。 数据说明。

将服务器端下载到端,按照下面的路径找到_0_1_1。文件,这个文件记录着我们的推理程序执行过程中各个组件的运行时间。

-/___//_0_1_1。

数据可视化:使用谷歌浏览器打开内置网页:///。

将文件拖进去或者是点击加载文件,就可以看到如下图所示的页面。

有些部分耗时短,可视化后的图块小,需要界面缩放平移:。

或者点击右侧的箭头,鼠标拖拉也可以控制。

默认会显示所有组件耗时情况,一行就是一个组件的耗时情况,也可以选择只显示部分组件。

: ,系统调优工具扩展。

我们调用接口(例如。())会在显示采集的数据。

: 接口耗时情况,这个是系统自动采集的数据。

: 推理代码耗时情况,主要涉及到模型内部算子调用。

这段耗时比较长,这段耗时有5,645.052 ,很不正常,这块是通过进行打点输出的,见_。的如下代码。

通过排查代码看到,在增加性能调试代码的时候增加了(5)的代码,可以删除此代码,性能可以提升5,然后我们重新导出数据看下结果。

时间变为了642.772,与我们之前分析的一致。

通过定位出的性能问题优化后是否还有可以优化的空间,需要继续进行分析,通过分析接口调用耗时,可以看到和接口耗时比较长,这个接口是从文件加载离线模型,涉及文件操作,耗时理论上会相对较长,所以重点分析接口耗时情况。

接口耗时7.209,这个接口主要耗时是算子在上运行,可以分析模型和算子耗时表(_0\\__0_1_1。)进行深入调优,见下图:。

通过分析算子统计表,可以看到算子耗时最长的是2和。除此之外,我们也可以通过模型进行查看。

在左边找到。结尾的模型文件,然后双击一下,等待一会,就可视化出了模型图。

可以看出来模型中有很多的2、、算子,所以我们可以考虑融合为一个算子,提高推理速度。

修改图融合配置文件,打开算子融合规则,重新生成离线模型,命令如下。

--=://。//__。 --=3 --=://。//__11-5 --_=32 --_=310 --_=“_1:1,260,260,3” --_= --__=://。//_。 --__=://。//__。

如果使用可视化方法生成模型,只需要按照下图修改__,其他步骤不变。

融合前的推理执行时间7.209,融合后推理执行时间2.305,时间减少了4.904,效率提升了68%。

算子融合是整网性能提升的一种关键手段,包括图融合和融合。

图融合是根据融合规则进行改图的过程。图融合用融合后算子替换图中融合前算子,提升计算效率。图融合的场景如下:。

在某一些算子的数学计算量可以进行优化的情况下,可以进行图融合,融合后可以节省计算时间。例如: ,可以融合成一个算子,直接在0中完成累加,从而省去的计算过程。

在融合后的计算过程可以通过硬件指令加速的情况下,可以进行图融合,融合后能够加速。例如: 的累加过程,就是通过0中的累加功能进行加速的,可以通过图融合完成。

即昇腾处理器上的 ,融合是对图上算子进行硬件相关的融合。例如两个算子单独运行时,算子1的计算结果在上,需要搬移到。算子2再执行时,需要将算子1的输出由再搬移到,进行算子2的计算逻辑,计算完之后,又从搬移回。

从这个过程会发现1的结果从->->->。这个经过进行数据搬移的过程是浪费的,因此将1和2算子合并成一个算子,融合后算子1的数据直接保留在,算子2从直接获取数据进行算子2的计算,节省了一次输出和一次输入,省去了数据搬移的时间,提高运算效率,有效降低带宽。

我们使用一个口罩识别模型,演示了如何在华为昇腾310设备上推理,演示了如何使用命令采集性能数据,并且通过分析性能数据减少了推理过程花费的时间。

如果大家在使用中遇到问题,可以登录昇腾论坛寻求专家帮助:。

也可以在这里分享使用感受,一起交流、一起进步。

1 [](/////3.9) , 。

解决:命令中全部需要使用绝对路径。

__={__}//:__。

__={__}//:__。

3 [] (///3) , 。

使用命令时,3必须使用绝对路径。

////-/5.1。1//// --=“3 /////_。 //////1。” --= --=://。//-/。

////-/5.1。1//// --=“////3.9。12//3.9 ////错误/_。 //////1。” --= --=://。//-/。

4 : [-1] [_1] 。 : _异常 。

在 -中要打开口罩 设置。错误口罩异常。

点头像!快速帮助

717087283

3234818751

0574-86090528

扫二维码

即享首单免费