• 为什么同一组件在preview上可以显示,但是在方舟编译器的模拟器上就无法显示?
    为什么同一组件在preview上可以显示,但是在方舟编译器的模拟器上就无法显示?
  • [问题求助] SDC SDK C/C++ 进行开发,调用IVS_PU_RotatePTZLocation 多次后发生指定位置的地方PTZ坐标发生变化
    当触发一定条件时,摄像头瞄准指定位置,一分钟后恢复原始位置,随后继续监测是否达到条件。如此执行一至两天后(有时更短),指定位置的PTZ坐标发生了变化,即预先设定好的PTZ坐标不是我所需要的位置。这种情况有遇到过嘛……可能是哪些原因造成的。我已经排除了摄像头本身被转动的可能。
  • 2D激光雷达:使用MindStudio进行MindX SDK任务开发
     视频案例链接:2D激光雷达: 使用MindStudio进行MindX SDK任务开发_哔哩哔哩_bilibili任务介绍该项目基于DROW3和DR-SPAAM模型,实现了实时的2D激光雷达行人检测。 主要处理流程为:输入预处理后的激光雷达点云序列(帧)->行人检测模型推理->行人检测模型后处理->检测结果输出及可视化。由于二维距离数据信息量低,使用二维激光雷达进行人员检测是一项具有挑战性的任务。为了缓解激光雷达点稀疏引起的问题,目前最先进的方法是融合以前的多次扫描,并使用联合扫描执行检测。这种向后看的融合的缺点是所有扫描都需要显式地对齐,而必要的对齐操作会使整个管道更加昂贵——通常对于现实应用程序来说太昂贵了。人检测网络,它使用一种替代策略来结合不同时间获得的扫描。我们的方法,距离鲁棒空间注意和自回归模型(DR-SPAAM),遵循了一个前瞻性的范式。它将来自骨干网的中间特征保留为模板,并在新的扫描可用时周期性地更新模板。更新后的特征模板依次用于检测当前场景中的人员。DR-SPAAM是一种基于深度学习的人检测器,可以检测从激光扫描仪获得的二维距离序列中的人。它可以基于其空间相似性模块生成简单的轨迹小波。本案例主要介绍如何利用获取的基于MindSpore框架的2d激光雷达行人检测(包括数据集和模型代码),在MindStudio中进行模型的转换和MindX SDK的开发部署。参照此案例,可以实现模型在昇腾设备上的部署。主要难点:由于该模型的输入为序列,输出后无法做到与真实图像进行对比,只能进行精度的验证。环境配置整个开发环境的搭建主要分为两部分:服务器端开发环境安装和配置、本地开发环境的安装和配置。一般来说,服务器端的环境配置工作都提前完成了(比如CANN和MindX SDK的安装),因此本文主要以Windows环境为例,介绍本地开发环境安装和配置的流程。需要注意的是,关于CANN和MindX SDK的安装,网上的教程比较多,对于第一次接触的开发者来说,容易搞混的是服务器端和本地的安装教程。服务器端都是Linux操作系统,MindX SDK可以通过图形界面方式在线或离线安装,也可以通过命令行方式进行离线安装,CANN只能通过命令行方式安装;本地端我们使用的是Windows,一般都是通过MindStudio的图形界面将服务器端的CANN和MindX SDK同步到本地。对于DROW3和DR-SPAAM模型或者其他的模型,本地环境的搭建和配置应该如按如下流程:MindStudio软件安装——SSH远程连接——CANN配置——推理源码和数据准备——昇腾工程转换——MindX SDK配置MindStudio软件安装介绍MindStudio是一套基于华为自研昇腾AI处理器开发的AI全栈开发工具平台,其功能涵盖面广,可以进行网络模型训练、移植、应用开发、推理运行及自定义算子开发等多种任务。就使用而言,整体界面风格和python开发常用的PyCharm相似。熟悉PyCharm工具的开发者使用MindStudio进行开发能够很快上手。安装​MindStudio的安装已经在其官网上的用户手册中有了详细介绍。作者使用的操作系统为window 10,点击下载上图中的exe或zip文件进行安装。注意一下MindStudio和CANN的版本对应关系:在MindStudio下载界面的最下面的版本配套中就说明了当前MindStudio版本对应的CANN版本。笔者在安装的时候MindStudio的版本已经更新到了5.0.RC2,但是需要安装旧的5.0.RC1版本,可以在下载页面的历史版本中找到。Python版本问题: 由于需要使用MindX SDK的功能,必须使用3.9版本的python。故需要确保python版本是否正确。SSH连接安装了MindStudio以后就要进行SSH连接,目的是将本地的软件与服务器进行连接。点击File->Settings->Tools->SSH Configurations,选择+号添加新的SSH配置。​将服务器IP地址、端口、密码或密钥文件填入,点击Test Connection,提示连接成功即可。这里需要注意的是授权类型有两种,一种是密码,一种是密钥文件,本文选择使用.pem格式密钥文件。服务器地址、密码或密钥文件可通过华为云申请试用或购买获得。​配置好了SSH以后,点击Tools-->Start SSH Session,即可连接服务器端。MindStudio在界面正下方会弹出Remote Terminal,就可以输入各种命令操作远端服务器了。​​CANN配置CANN介绍CANN(Compute Architecture for Neural Networks)是华为公司针对AI场景推出的异构计算架构,通过提供多层次的编程接口,支持用户快速构建基于昇腾平台的AI应用和业务。CANN 配置在Windows上配置CANN,实际上是使用MindStudio把服务器端的安装包同步到本地。进入File->Settings-> Appearance & Behavior ->System Settings->CANN页面,点击右边的change CANN,在弹出的对话框中填写服务器端的CANN的地址。我们的MindStudio版本是5.0.RC1,因此CANN的版本需要安装5.1.RC1。然后就等待软件将服务器端的CANN同步到本地。​​​需要注意的是,在MindStudio中,如果没有安装CANN,是不能够将下载的源码转换为Ascend Project的。点击Ascend->Convert to Ascend Project,会提示没有安装CANN,无法转换。​这一步是安装MindX SDK的前提,否则在Settings中左边的菜单栏就不会有MindX SDK选项。在完成了CANN安装以后,可以点击Ascend->Convert to Ascend Project,进行工程转换的操作了。推理源码和数据准备介绍上面我们介绍了如何正确安装和运行MindStudio工具。接下来准备模型转换和SDK开发所需要用到的数据。主要包括:模型推理代码、预训练模型、数据集。模型推理代码这里提供了全模型的网盘链接,可以直接下载。网盘内容如下图。链接:https://pan.baidu.com/s/1F0QymfjGXsxEPKNhGlYKZg?pwd=9u0b 提取码:9u0b 。本项目一共有两个模型及两个数据集。其中,DROWv2文件夹下为小数据集(已在网盘链接中DROWv2文件夹内提供),另一个数据集JackRobbot数据量较大,在这里没有使用,提供下载链接供开发者使用:https://jrdb.stanford.edu/​图中,LaserDet文件夹下存放各种执行所需的脚本文件。Pipelines为需要调用的所对应的4个pipeline文件。主函数为release_lidar_main.py。具体细节可参考README.接下来大致介绍release_lidar_main.py的主体流程。1)输入类型是 2D LIDAR 每一帧的数据。对于DROW3 类型数据集,raw格式为在cononical坐标下的LiDAR 点云,每个文件为一个单控的序列,每个序列内包含多个帧。对于IRDB类型数据集,点云提供了主要的信息,同时增加了基于图像标注的伪标签。对于原始输入文件需要被提前处理成符合模型输入的格式。数据预处理的流程主要写于LaserDet/srcs/drow_handle.py(jrdb_handle.py)内。​2)通过调用MindX SDK 提供的buffer解码插件mxpi_buffer,解码后获取模型推理过程的输入数据。然后调用MindX SDK的mxpi_tensorinfer插件,将解码后的数据输入DROW3/DR_SPAAM模型进行推理。下图为输入与输出的调用代码段。​3)待数据推理完毕后,进行数据的后处理,检测输出结果需要进行坐标变换,由canonical转换为global坐标,再由global坐标转换为XY坐标,如果检测的两点之间距离过近,则认为是重复点,取均值保留。输出所有检测结果,并可视化。下图为可视化的部分代码。​预训练模型在SDK推理阶段需要使用已完成训练后生成的模型文件,后缀为.onnx。​为了方便大家使用,上述源码链接中models文件夹内已包含了预训练模型。文件名格式为“模型名_数据集名_epoch数.onnx”。读者可按照自己所需要的onnx进行测试。上传远端服务器点击Tools-->Deployment-->upload上传准备好的代码、模型和数据集到远端服务器,此过程需要花费比较长的时间,需要耐心等待。如果因网络问题传输失败,重新upload即可覆盖原来的文件。这里需要注意的是,如果upload单个文件反复提示失败,可能需要检查一下服务器的硬盘空间是否已满,如果已满,需要整理一下服务器的存储空间,尽可能多空出一些空间来。​这里我们以远端服务器地址/home/dianzikeji/MindStudio-WorkSpace/2D-LIDAR_1aa03018/为例进行后续的讲解,假设所有的代码和数据集已经上传至这个目录下了。昇腾工程转换介绍相比于PyCharm,MindStudio增加了对华为昇腾系列芯片相关的开发支持,所以在MindStudio中创建的工程可以简单分为昇腾工程和非昇腾工程,其中昇腾工程特指需要昇腾芯片的相关工程,包括训练,推理,算子开发等等。特别的,MindStudio还支持非昇腾项目到昇腾项目的一键转换,方便其他IDE项目的转移。本项目是在昇腾310推理服务器上实现基于MindSpore 框架编写的DROW3和DR-SPAAM模型的部署推理,因此需要将代码转换为为昇腾工程。工程转换在源码和数据集都下载好的前提下,直接在MindStudio中点击左上角的file->open 打开之前下载下来的模型代码文件夹。工程界面和目录如下:​目前工程只是一个非昇腾工程,单击菜单栏 “Ascend > Convert To Ascend Project”。弹出如下窗口。这里针对该项目,Project Type选择Ascend App,Sub Type选择Ascend Python ACL App。如下图​完成工程转换后,可以看到在菜单栏多出了一栏蓝色的图标,是MindStudio为昇腾系列所特别支持的开发功能。​我们也可以通过Ascend下拉菜单查看这些功能, 下面列出了我们用到的一些功能模块。​MindX SDK配置MindX SDK介绍MindX SDK提供昇腾AI处理器加速的各类AI软件开发套件(SDK),提供极简易用的API,加速AI应用的开发。​应用开发旨在使用华为提供的SDK和应用案例快速开发并部署人工智能应用,是基于现有模型、使用pyACL提供的Python语言API库开发深度神经网络应用,用于实现目标识别、图像分类等功能。通过MindStudio实现SDK应用开发分为基础开发与深入开发,通常情况下用户关注基础开发即可,基础开发主要包含如何通过现有的插件构建业务流并实现业务数据对接,采用模块化的设计理念,将业务流程中的各个功能单元封装成独立的插件,通过插件的串接快速构建推理业务。MindX SDK配置和上面的CANN类似,SDK的配置指的是从服务器端将安装好的mxManufacture 或者是mxVision同步到本地(这两者的差异似乎并不是特别大,很类似)。本文中使用的是mxVision 3.0.RC1。具体的配置方法如下:进入File->Settings-> Appearance & Behavior ->System Settings->MindX SDK页面,在右边点击Install SDK,​填写远端CANN位置,同上一步;填写远端SDK的位置​需要注意mxVision的位置,如果该文件夹下还有其他同名文件夹mxVision-3.0.RC1,需要选到最底层的mxVision-3.0.RC1。否则会报错。最后等待SDK同步,点击如下按钮可以验证是否已经成功配置了SDK:​任务运行本章的工作是介绍如何使用MindStudio成功运行推理任务,有了上面的准备工作,下面的任务就变得比较直观了。MindStudio中的MindX SDK提供了多种可视化的操作,让一些需要代码编辑的工作通过可视化配置界面完成。本部分工作主要包括:模型转换——验证数据路径表生成——图像预处理——Pipeline编写——推理验证。注意:由于本项目共包含两个模型与两个数据集,故共四种推理形式。由于其执行过程基本类似,在此只展示其中一种(即在drow数据集下进行DR_SPAAM模型的推理),读者可按照自己所需修改部分操作即可。模型转换介绍2.4.3节提到我们已经下载了一个onnx文件,这是训练完成以后的模型,可用于模型推理。在昇腾硬件平台实际部署时,需要使用工具将此文件转换为昇腾硬件平台支持的、后缀为.om的文件。模型转换可以通过两种方式:一是代码的方式进行,在远端服务器运行atc命令即可;二是通过MindStudio的可视化操作界面进行转换。本文重点介绍可视化界面配置转换的方法。界面配置方式点击Ascend->Model Converter​进入到配置界面,其中Model file 可以选择本地的模型文件也可以选择服务器端的模型文件,如果选择了本地的呢,需要耐心等待本地端的模型文件上传至服务器。Target SoC Version选择默认的Ascend310即可。Output Path默认是不用选的,默认生成在服务器端和onnx文件同路径,如果点击选择的话,则只能选择本地路径存储生成的om文件。​点击Next,进入到配置界面,这里也显示了实际使用到的各种命令,是一样的。我们全部选择默认即可。​点击Finish 则系统进入到模型转换当中,右下角显示模型转换中​等待一段时间则在对话框中显示模型转换已成功。转换后的模型路径可见:​需要注意的是,如果output path不选择默认,则需要指定本地存储路径,MindStudio直接将模型转换到本地。转换成功后会在下方出现Model converted successfully.的绿色字体。MindStudio提供了模型可视化功能,双击om文件,如下图所示,可以查看模型结构:​说明:需要注意的是,因为该模型数据无法使用aipp完成,所以我们将数据预处理部分直接放到了main.py中,因此在ATC模型转换时并未包含AIPP部分的参数设置。pipeline编写Pipeline编写可以采用直接编写代码方式或者界面配置方式。代码方式由于没有使用插件进行数据预处理与后处理,因此pipeline的编写就比较简单,调用发送数据插件appsrc、推理插件mxpi_tensorinfer、输出插件appsink进行编排即可,代码见pipeline文件夹内。​界面配置方式也可以直接使用MindX SDK的可视化操作界面拖拽各种插件进行组合。在成功连接远端服务器的前提下,首先点击Ascend->MindX SDK Pipeline​MindStudio将打开名为new.pipeline的可视化编排窗口,并且在pipeline文件的左边出现Input、Other、Output三个选项,我们可以点击三个选项,选择需要的组件拖拽到右边图形界面框中进行组合。发送数据插件appsrc在Input选项中、推理插件mxpi_tensorinfer在Other选项中、输出插件appsink在Output选项中。​​​三个组件选择好了以后,拖拽箭头将其连接起来,双击mxpi_tensorinfer组件可以对其参数进行设置,这里主要是填入我们的om模型路径。编辑好了以后,点击保存并重新命名即可。​推理验证推理验证可以使用命令行方式或者界面配置方式。命令行方式由于需要指定的参数比较多,我们采用脚本文件.sh的方式在验证数据集中执行推理验证任务。需要执行的脚本名为lidar_submit.sh,需按照脚本中需要的信息在命令中进行填写。​命令样式如下:bash lidar_submit.sh --data_path $1 --pipe_store $2 --split $3 --visu $4具体的参数说明如下:表1 参数说明参数说明data_path数据集路径。pipe_storePipeline路径。split数据集拆分(test/val)Visu是否需要可视化(True/False)命令示例如下:bash lidar_submit.sh ./DROWv2 ./pipelines/drow3_drow_e40.pipeline test False界面配置方式界面配置方式是MindStudio的特色,点击工程->Edit Configurations,​弹出Run/Debug Configurations配置对话框,设置可执行文件路径Executable,即脚本lidar_submit.sh的本地路径,此外还需要在command arguments里填写需要的指令,填完后点击OK。​返回主页面点击运行图标即可运行。​注意这时需要将所有的代码、数据集重新同步到远端服务器(不管之前有没有同步过,会覆盖服务器端原来的文件夹),因此将耗费相当多的时间,如果涉及到代码调试,笔者推荐还是以命令行的方式进行推理验证。​数据同步到服务器端后,开始执行推理任务。​推理结束后会得到如下结果。​如果command arguments的最后一项visu选择True,会在figs文件夹下生成对应数据集的可视化图片。4 FAQ4.1 CANN版本和MindX SDK版本需要单独下载么?如果需要在远端服务器上进行安装,则需要,如果是只需要配置本地端,则不需要。通过MindStudio可以同步到本地。4.2 开发过程中遇到难题如何求助可以登录MindStudio官方论坛,发帖提问,同时论坛里也有很多开发者分享的案例,可能对大家有所帮助。另外,在CSDN、B站、gitee、华为云上也有很多资源可以检索查找。当然更直接的办法是百度各种关键词。4.3 第2章开头提到了“服务器端都是Linux操作系统,MindX SDK可以通过图形界面方式在线或离线安装“,这个功能如何实现?从官网下载安装MindStudio_5.0.RCX_linux.tar.gz文件,并完成此文件在服务器端的解压缩和安装。本地端使用Xshell远程连接到服务器(请注意本地端的MindStudio远程连接功能无法启动远程服务器端的图形界面功能,必须使用Xshell),找到~/MindStudio/bin目录中的MindStudio.sh文件,运行如下命令启动图形界面:bash MindStudio.sh此过程中可能提示需要安装Xmanager。启动服务器端的MindStudio,并打开服务器端的工程,和本地端的界面类似。最后就可以使用此图形界面进行MindX SDK的安装了,方式同2.6节。
  • [问题求助] 【ResultAPI】订阅SDCAPI,返回“一般错误”
    根据《华为SDC 9.0.0 API协议说明》通过python,调用post请求相关的api,SDC返回“Common error”
  • [问题求助] SDC SDK C/C++ 二次开发接口如何控制雨刷开关
    SDK信息:SDK内部版本:V1.9.0.8SDC版本:SDC 8.0.1 TR6SDK对外发布版本:SDC Development Kit 8.0.RC3已经对接了 云台 预制点 但是没有找到雨刷的控制接口, 问如何控制雨刷的开关;
  • [问题求助] 使用华为Obs官方提供PHP版本SKD上传图片文件报错,频繁出现下列问题导致上传文件失败
    ERROR - 2022-12-07 18:05:29 --> Severity: Warning --> fread(): SSL: Connection reset by peer /dev/third_party/huaweicloud-obs/vendor/guzzlehttp/psr7/src/Stream.php 231ERROR - 2022-12-07 17:32:56 --> Severity: error --> Exception: Argument 1 passed to Obs\ObsClient::Obs\Internal\{closure}() must be an instance of GuzzleHttp\Exception\RequestException, instance of GuzzleHttp\Exception\ConnectException given, called in /dev/third_party/huaweicloud-obs/vendor/guzzlehttp/promises/src/Promise.php on line 204 /dev/third_party/huaweicloud-obs/Obs/Internal/SendRequestTrait.php 640
  • [问题求助] AICC 8.15.0 CC-FS 接口参考 中的accessKey 和服务器端口从哪里获取
    AICC 8.15.0 CC-FS 接口参考 中的accessKey 和服务器端口从哪里获取
  • [问题求助] 使用华为云Stack解决方案的API开发监控服务器, 获取到token后使用该token请求其他的api 均返回404,是什么原因呢
    是账号问题,是需要增加什么配置吗。还是需要注册申请开通对应的api访问权限。访问其他api都是404错误
  • [MindX SDK] MINDX SDK案例 yolov5视频检测推理错误
    设备Atlas 500环境:mxVision 3.0RC2CANN 5.1RC2模型:yolov5-5.0参考以下MINDX SDK案例https://bbs.huaweicloud.com/forum/thread-160918-1-1.html?ticket=ST-1705343-kVkcIyUvo6pxn3Rpu4oJOKvh-sso出现如下错误:E20221121 06:15:08.061175 15043 MxpiYolov5PostProcessor.cpp:303] Please check the compatibility between model and postprocessorE20221121 06:15:08.061795 15043 MxpiYolov5PostProcessor.cpp:224] [1][ACL: invalid parameter] Failed to executed InitNetInfoE20221121 06:15:08.061898 15043 MxpiYolov5PostProcessor.cpp:188] [1][ACL: invalid parameter] Failed to executed ObjectDetectionOutputE20221121 06:15:08.061954 15043 MxpiYolov5PostProcessor.cpp:147] [1][ACL: invalid parameter] Fail to copy device memory to host for MxpiYolov5PostProcessor.E20221121 06:15:08.066448 15043 MxpiModelVisionInfer.cpp:474] [mxpi_modelinfer0][1][ACL: invalid parameter] Model post processor is failed.E20221121 06:15:08.066819 15043 MxpiModelVisionInfer.cpp:151] [mxpi_modelinfer0][1][ACL: invalid parameter] Model post processor is failed.请问是什么原因?会是CANN和mxvision版本的原因吗?
  • [MindX SDK] [MindX SDK]图像超分辨率v2案例分享
    MindX SDK -- 基于python V2接口的VDSR图像超分辨率1 案例概述1.1 概要描述基于MindX SDK mxVision 3.0RC3 开发图像超分辨率程序。本程序采用python开发,使用MxBase V2接口。通过预处理操作对输入的图片数据解码为YUV格式图片,并将解码后的图片缩放到模型推理要求的尺寸。然后利用图像超分辨率模型VDSR获取得到图片超分辨率重建结果。最后,利用python的第三方图像处理库PIL将低分辨率的输入图像和超分辨率重建的结果一同可视化。其次,针对两个图片集91-images和General-100进行PSNR(峰值信噪比)验证。程序输入:任意jpg图片 程序输出:输出得到低分辨率图片(256 x 256px)和超分辨率重建图片(768 x 768px)组合的可视化大图案例获取地址: cid:link_31.2 模型介绍Jiwon Kim 等基于残差学习和梯度裁剪,利用 20 层的卷积网络实现针对不同放大尺度的图像超分辨模型,命名为 VDSR(Very Deep convolutional networks for Super-Resolution)。VDSR使用比 SRCNN 大 104 倍的学习率,使用跳跃连接将输入与学习到的残差融合生成高分辨率图像,每个卷积层卷积核尺寸为 3 × 3,输入与输出尺寸一致。VDSR 越深效果越好,随着深度的增加,PSNR 更早地达到稳定值;使用残差网络,仅迭代几轮,网络就能达到很好的效果V1版本地址:cid:link_4论文地址:cid:link_10模型概述:cid:link_51.3 实现流程1、基础环境:Ascend 310、MindXSDK 、Ascend-CANN-toolkit 2、模型获取:通过链接下载已经转好的om模型 3、数据集准备:获取文件相关依赖后,运行转换脚本得到标签数据及噪声数据 3、业务流程编排与配置 4、python推理流程代码开发 5、V2接口python推理流程代码开发1.4 特性及适用场景工程适用于通用场景下,任意jpg图像生成超分辨率重建结果。2 软件方案介绍2.1 项目方案架构介绍本系统设计了不同的功能模块。主要流程为:jpg文件转为image类型传入流/V2接口中,利用VDSR的图像生成模型,利用python的第三方图像处理库PIL将低分辨率的输入图像和超分辨率重建的结果一同可视化。各模块功能描述如表2.1所示:表2.1 系统方案中各模块功能:V1:序号子系统功能描述1数据输入调用MindX SDK的appsrc输入image数据2推理调用MindX SDK的mxpi_tensorinfer,对输入的张量进行推理3输出推理好得到的tensor取出来4结果保存利用python的第三方图像处理库PIL将低分辨率的输入图像和超分辨率重建的结果一同可视化V2:序号子系统功能描述1数据输入调用MindX SDK pythonV2接口的imageProcessor类输入image数据2推理调用MindX SDK pythonV2接口的model类,对输入的张量进行推理3输出推理好得到的tensor取出来4结果保存利用python的第三方图像处理库PIL将低分辨率的输入图像和超分辨率重建的结果一同可视化2.2 代码目录结构与说明本工程名称为SuperResolution,工程目录如下图所示:. | |-------- font | |---- SourceHanSansCN-Normal-2.otf // otf字体 |-------- image | |---- test.jpg // 测试图片(需自行准备) | |---- 91-images-V1.jpg // evaluate.py V1接口在91-images数据集上的运行结果 | |---- 91-images-V2.jpg // evaluate_v2.py V2接口在91-images数据集上的运行结果 | |---- General-i00-V1.jpg // evaluate.py V1接口在General-100数据集上的运行结果 | |---- General-i00-V2.jpg // evaluate_v2.py V2接口在General-100数据集上的运行结果 |-------- V2result // V2测试图片程序输出存放处 |-------- model | |---- YUV420SP_U8_GRAY.cfg // 模型转换配置文件(灰度图) | |---- VDSR_768_768.om // 转换后OM模型存放在此处(需自行上传) |-------- testSet | |---- 91-images // 91-images验证集(含bmp图片) | |---- 91-images-jpg // 91-images验证集转换后集(含jpg图片) | |---- bmp2jpg.py // bmp转jpg脚本 |-------- evaluate_v2.py // 模型精度验证V2 |-------- README.md // ReadMe |-------- main_v2.py // 图像超分辨率主程序V2 |-------- util.py // 工具方法 3 开发准备3.1 环境依赖说明推荐系统为ubuntu 18.04,环境依赖软件和版本如下表:软件版本说明获取方式mxVision3.0RC3mxVision软件包链接Ascend-CANN-toolkit5.1.RC1Ascend-cann-toolkit开发套件包链接操作系统Ubuntu 18.04操作系统Ubuntu官网获取3.2 环境搭建3.2.1 环境变量设置#在CANN以及MindX SDK的安装目录找到set_env.sh,并运行脚本: bash ${SDK安装路径}/set_env.sh bash ${CANN安装路径}/set_env.sh #查看环境变量: env3.3 前期数据和模型准备项目使用的模型为VDSR。步骤1 获取原始模型网络及权重, 权重下载 和 网络下载地址步骤2 AIPP配置文件-YUV420SP_U8_GRAY.cfgaipp_op { aipp_mode: static input_format : YUV420SP_U8 csc_switch : true rbuv_swap_switch : false matrix_r0c0 : 256 matrix_r0c1 : 0 matrix_r0c2 : 0 matrix_r1c0 : 0 matrix_r1c1 : 0 matrix_r1c2 : 0 matrix_r2c0 : 0 matrix_r2c1 : 0 matrix_r2c2 : 0 input_bias_0 : 0 input_bias_1 : 0 input_bias_2 : 0 }色域转换,用于将输入的图片格式,转换为模型需要的图片格式,这里将YUV420SP_U8转GRAY,详细色域转换配置说明请参考 这里步骤3 将下载得到模型网络及权重(VDSR.prototxt、VDSR.caffemodel)、AIPP配置文件(YUV420SP_U8_GRAY.cfg)放在 model 目录下步骤4 使用ATC模型转换工具进行模型转换在 model 目录下执行以下命令# 设置环境变量(请确认install_path路径是否正确) # Set environment PATH (Please confirm that the install_path is correct). #在CANN以及MindX SDK的安装目录找到set_env.sh,并运行脚本: bash ${SDK安装路径}/set_env.sh bash ${CANN安装路径}/set_env.sh #查看环境变量: env # 执行,转换VDSR模型成om格式 # Execute, transform VDSR model. atc --model=./VDSR.prototxt --weight=./VDSR.caffemodel --framework=0 --input_format=NCHW --input_shape="data: 1, 1, 768, 768" --output=./VDSR_768_768 --soc_version=Ascend310 --output_type=FP32 --insert_op_conf=YUV420SP_U8_GRAY.cfg执行完后,会在model目录下生成相应的VDSR_768_768.om模型文件。模型转换使用了ATC工具,如需更多信息请参考 这里4 推理流程开发实现4.1 V2接口编排 decode # 图像解码 resize # 图像缩放 infer # 模型推理(图像生成)4.2 主程序开发1、初始化V2接口。2、图像解码。3、图像缩放。4、模型推理。5、转变数据类型保存图片4.3 参数调节参数名称参数介绍修改方法默认值MODEL_PATH模型路径在python/main_v2.py文件中修改为具体的路径名称即可model/VDSR_768_768.omINPUT_IMAGE_PATH输入图片路径在python/main_v2.py文件中修改为具体的路径名称即可./image/head.jpgout_path输出可视化路径在python/main_v2.py文件中修改为具体的路径名称即可"./result/" + fileName5 编译与运行V2接口运行准备一张测试图片,置于 image 文件夹中(仅支持jpg格式)进入工程目录键入执行指令,发起推理性能测试:python3 main_v2.py ${测试图片路径} 例如: python3 main_v2.py image/head.jpg # 或者在main.py中配置 input_image_path input_image_path = 'image/${测试图片文件名}' # 仅支持jpg格式执行完毕后,sample会将程序输出的可视化结果,保存在工程目录下V2result中 (可视化结果名和输入图片一致)V2精度+性能验证PSNR(峰值信噪比)经常用作图像压缩等领域中信号重建质量的测量方法。1)准备测试集:下载91-images和General-100验证图片集,91-images下载地址,General-100下载地址,从zip文件中取出两个图片集91-images和General-100放置到testSet目录下,其中91-images包含91张t*.bmp图片,General-100包含100张im_*.bmp图片2)图片格式转换:参考testSet/bmp2jpg.py脚本,将两个图片集中bmp图片转换为jpg图片进入testSet目录,键入执行指令,图片格式转换:python3 bmp2jpg.py ${测试图片集路径} 例如: python3 bmp2jpg.py 91-images # 或者在evaluate_v2.py中配置 test_image_set_path test_image_set_path = './${测试图片集路径}'然后会在testSet目录下,生成转换后的包含jpg格式图片的文件夹,文件夹名称为${测试图片集路径}-jpg3)利用evaluate_v2.py 脚本,计算得到两个图片集的平均PSNR(峰值信噪比)键入执行指令,发起精度验证测试:python3 evaluate_v2.py ${验证图片集路径} 例如: python3 evaluate_v2.py testSet/91-images-jpg # 或者在evaluate_v2.py中配置 test_image_set_path test_image_set_path = './${验证图片集路径}'执行完毕后,会在控制台输出该验证图片集的平均峰值信噪比和推理时间4)与SuperResolution V1接口的结果进行对比下载V1接口中的evaluate.py脚本到当前运行路径,脚本所在位置如下:链接在evaluate.py的推理主函数中,加入性能测试代码,键入执行指令,对91-images数据集发起精度及性能验证测试:python3 evaluate.py ${验证图片集路径} 例如: python3 evaluate.py testSet/91-images-jpg # 或者在evaluate.py中配置 test_image_set_path test_image_set_path = './${验证图片集路径}'执行完毕后,会在控制台输出该验证图片集的平均峰值信噪比和推理时间(推理时间在一定范围内浮动)键入执行指令,对General-100数据集发起精度及性能验证测试:python3 evaluate.py ${验证图片集路径} 例如: python3 evaluate.py testSet/General-100-jpg # 或者在evaluate.py中配置 test_image_set_path test_image_set_path = './${验证图片集路径}'执行完毕后,会在控制台输出该验证图片集的平均峰值信噪比和推理时间(推理时间在一定范围内浮动)5)得出精度及性能验证结论精度:V1及V2接口运行相同数据集时,平均PSNR相同,精度达标。性能:为统计性能,对两个数据集分别运行V1接口和V2接口,各跑十次,统计平均接口运行时间:91-images: V1 平均时间为:16.42974079V2 平均时间为:16.34681652General-100: V1 平均时间为:18.52285776V2 平均时间为:18.37193444结论:在保证精度相同的同时,V2接口的性能相对于V1来说有所提高,性能达标。6 常见问题6.1 路径问题问题描述:提示 the ./image/head.jpg does not exist解决方案:输入图片或数据集不存在,检查输入路径是否正确。6.2 格式问题问题描述:提示input image only support jpg.解决方案:将输入图片更换为jpg格式图片。
  • [问题求助] 开发问题解答
    环境信息:cube开发环境问题一句话总结:目前的问题是, 在需要联动地图的组件里面添加了事件,并设定了地图的addMakerElements的动作, 地图上没有标出对应的点,经调试发现地图的这个画点的方法进不去问题现象截图:使用场景或目的:项目GIS接口对接租户账号:Hi-gwdl项目名称: 国网新基地数字化智慧园区
  • [eSDK] 【速救、速救】eSDK_TP_1.1RC3.SPC100安装后没有“统一管理后台”,不知如何下一步配置
    SMC版本:esdk相关截图:安装截图(第六步):问题:eSDK怎么配置关联到smc2.0中,怎么配置我程序需要用到的账号密码
  • [MindX SDK] mindxsdk-referenceapps 中 FairMOT 推理报错
    设备Atlas 500环境:mxVision 3.0RC2CANN 5.1RC2参照此代码仓库 https://gitee.com/ascend/mindxsdk-referenceapps/tree/master/contrib/FairMOT 进行配置,跑视频流推理时出现测试视频流为安全帽识别中上传的视频:https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/HelmetIdentification/test_video.zip通过live555生成的视频流。想请教一下是什么原因,谢谢!
  • [MindX SDK] UAV_CrowdCounting无人机场景下人群密度估计
    UAV_CrowdCounting无人机场景下人群密度估计1 介绍1.1 案例描述对于人群密集场景,本项目开发端到端的无人机场景下人群密度估计算法,并基于MindX SDK将其部署于昇腾平台上,实现无人机在线人群密度估计,满足项目任务功能和精度指标要求。1.2 模型介绍DM-Count发表于NeurIPS2020,其表明高斯规则强加于注释标注会损害泛化性能,因此DM-Count不需要任何高斯方法对真值标注进行处理。在DM-Count中,使用最佳运输(OT)来测量归一化的预测密度图和归一化的groundtruth密度图之间的相似性。为了稳定OT计算,进一步添加了总变化(TV)损失。论文原文:Paper LinkGithub仓库:Code LinkVisDrone2021数据集:Dataset1.3 实现流程1、基础环境:Ascend 310、 mxVision Mind SDK-2.0.4、 Ascend-CANN-toolkit-5.0.4、Ascend Driver 2、模型转换: Pytorch模型转onnx模型:UAV_CrowdCounting.pth --> UAV_CrowdCounting.onnx onnx模型转昇腾离线模型:UAV_CrowdCounting.onnx --> uav_crowdcounting_norm.om 3、业务流程编排与配置 4、python推理流程代码开发技术流程图如下: 图1 无人机场景下人群密度估计流程图图2 无人机场景下人群密度估计pipeline示意图1.4 代码地址本项目的代码地址为:cid:link_62 软件方案介绍2.1 软件方案介绍本项目整体业务流程:将无人机场景下的人群图像通过appsrc插件输入,然后使用图像解码插件 mxpi_imagedecoder 对图片进行解码,再通过图像缩放插件 mxpi_imageresize 将图像缩放至640*512输入图像大小,再对缩放后的图像使用模型推理插件 mxpi_tensorinfer 得到推理结果,并将推理结果可视化,本系统的各模块及功能描述如表1所示:表1 系统方案各子系统功能描述:序号子系统功能描述1图片输入获取jpg或png格式输入图片数据2图片解码调用MindX SDK的 mxpi_imagedecoder使用OpenCV方式解码图片并将图片转成RGB颜色模型3图片缩放调用MindX SDK的 mxpi_imageresize将输入图片放缩到模型指定输入640*512的尺寸大小4模型推理调用MindX_SDK的mxpi_tensorinfer插件对输入张量进行推理5结果输出获取人数统计结果6结果可视化将统计结果以人群密度图展示2.2 代码目录结构与说明本工程名称为UAV_CrowdCounting,工程目录如下图所示:├─data │ ├─test.jpg # 待检测图片,需要用户自行添加的测试数据 │ ├─visdrone_test.txt # VisDrone2021测试数据集所用到的图片名称 │ ├─VisDrone2021 # VisDrone2021测试数据集,需要用户自行下载的测试数据 ├─main │ ├─main.py # 主程序 │ ├─evaluation.py # 测试模型在VisDrone2021数据集上的精度 ├─models │ ├─aipp.cfg # 模型转换aipp配置文件 ├─pipeline │ ├─crowdcount.pipeline # pipeline文件 │ README.md │ eval.sh # 精度测试脚本 │ flowcharts.jpg # 流程图 │ pipeline.jpg # pipeline示意图 │ run.sh # 图片测试脚本注意Gitee不能创建空文件夹,在测试精度时需下载VisDrone2021数据集2.3 特性及适用场景本项目满足白天或者夜间(包括夜间低光照)场景下的人群密度估计,但是仅适用于无人机场景下的人群密度3 开发准备3.1 环境依赖推荐系统为ubuntu 18.04,环境依赖软件和版本如下表:软件名称版本MindX SDK2.04python3.9.2CANN5.0.4opencvnumpy3.2 环境搭建在编译运行项目前,需要设置环境变量:模型转换所需ATC工具环境搭建参考链接:参考链接。在编译运行项目前,需要设置环境变量。推荐在CANN以及MindX SDK的安装目录找到set_env.sh,并运行脚本,此脚本包含了大部分模型转换、插件编译、项目运行等所需的环境变量:# sdk_path: mxVision SDK 安装路径 # ascend_toolkit_path:CANN 安装路径 . ${sdk_path}/set_env.sh . ${ascend_toolkit_path}/set_env.sh3.3 模型转换本项目中使用的模型是DM-Count模型,其参考链接为:Pytorch 实现版本。onnx模型可以直接下载。下载后使用模型转换工具ATC将onnx模型转换为om模型,模型转换工具相关介绍参考链接下载或转换成onnx模型之后,将onnx文件移至models目录下,并在终端执行如下命令:# 可直接用如下命令下载onn模型,在完成转换 wget cid:link_3 --no-check-certificate atc --model=./UAV_CrowdCounting.onnx --framework=5 --output=./uav_crowdcounting_norm --soc_version=Ascend310 --input_shape="input:1,3,512,640" --input_format=NCHW --insert_op_conf=./aipp.cfg执行该命令后会在指定输出.om模型路径生成项目指定模型文件uav_crowdcounting_norm.omATC start working now, please wait for a moment. ATC run success, welcome to the next use.aipp文件配置如下:aipp_op{ aipp_mode: static input_format : YUV420SP_U8 csc_switch : true rbuv_swap_switch : false matrix_r0c0 : 256 matrix_r0c1 : 0 matrix_r0c2 : 359 matrix_r1c0 : 256 matrix_r1c1 : -88 matrix_r1c2 : -183 matrix_r2c0 : 256 matrix_r2c1 : 454 matrix_r2c2 : 0 input_bias_0 : 0 input_bias_1 : 128 input_bias_2 : 128 min_chn_0 : 123.675 min_chn_1 : 116.28 min_chn_2 : 103.53 var_reci_chn_0: 0.01712 var_reci_chn_1: 0.01751 var_reci_chn_2: 0.01743 }已经转换好的om可通过模型om地址获取。4 编译与运行步骤1 按照第2小节环境依赖中的步骤设置环境变量。步骤2 按照第3小节模型转换中的步骤获得om模型文件,放置在./models目录下。步骤3 将待测试的图片重命名为test.jpg,并放置在./data目录下步骤4 图像测试,在主目录下执行命令:. run.sh运行成功后会在当前目录下生成vis_img.jpg,即测试图片的人群密度图步骤5 精度测试:在./data目录下载VisDrone2021测试数据集,并解压,最后在主目录下执行命令:. eval.sh # 满足均方误差(MSE)不大于35,绝对误差(MAE)不大于20,且FPS不低于20最低实时检测帧数。5 常见问题5.1 库路径问题问题描述:报错:ImportError: libstreammanager.so: cannot open shared object file: No such file or directory解决方案:export LD_LIBRARY_PATH=${sdk_path}/mxVision/lib:${sdk_path}/mxVision/opensource/lib: ${ascend_toolkit_path}/latest/atc/lib64
  • [问题求助] 同样的模型文件,利用pyACL推理和mxMamufacture进行推理速度为啥会相差许多
    如题,我是用的yolov5s训练的可见光模型,同一个模型pyACL推理耗时330ms单张,而利用mxMamufacture跑只需要40ms左右,pyACL这个表现算正常吗?怎样才能查看pyACL有没有调用华为的NPU?