• [MindX SDK] 【视频流推理】使用mxvision进行视频推理时如何拿到推理结果对应的每一帧图像数据?
    使用mxvison推理时,可以单独拿到解码后图片,也可以单独拿到推理的结果,但是不知道怎么同时拿到这2个信息,pipeline该怎么编写呢单独输出推理结果单独输出图像信息这个帖子说这种插件去年正在开发了,现在开发好了吗https://bbs.huaweicloud.com/forum/thread-121200-1-1.html
  • [问题求助] 310板卡imread速度较慢,如何解决,能否通过dvpp加速?
    310板卡imread速度较慢,请问如何解决,能否通过dvpp加速?
  • [MindX SDK] MindX SDK -- 文档版面分析参考设计案例
    MindX SDK -- 文档版面分析参考设计1 案例概述1.1 概要描述在本系统中,目的是基于MindX SDK,在华为云昇腾平台上,开发端到端文档版面分析的参考设计,实现对图像中的版面元素进行类型识别的功能,达到功能要求注:由于picodet_lcnet_x1_0_fgd_layout_cdla模型限制,仅支持识别“text 、title、figure、figure_caption、table、table_caption、header、footer、reference、equation”这10种版面类型1.2 模型介绍本项目主要用到模型用于文档版面识别的picodet_lcnet_x1_0_fgd_layout_cdla模型(paddlepaddle)上述模型的原始模型文件可以在此处下载:cid:link_21.3 实现流程1、基础环境:Ascend 310、mxVision-3.0.RC2、Ascend-CANN-toolkit、Ascend Driver2、模型转换: 模型转换分为两步:第一步: Paddle模型转onnx模型: 用户环境配置:( python >= 2.7 paddlepaddle >= 1.8.0 paddle2onnx == 0.9.2 ) 转换代码:paddle2onnx --model_dir ./picodet_lcnet_x1_0_fgd_layout_cdla_infer --model_filename model.pdmodel --params_filename model.pdiparams --save_file ./picodet_lcnet_x1_0_fgd_layout_cdla_infer.onnx --opset_version 11 --enable_onnx_checker True第二步:onnx模型转昇腾离线om模型: atc --model=./picodet_lcnet_x1_0_fgd_layout_cdla_infer.onnx --framework=5 --output=./layout --soc_version=Ascend310 --insert_op_conf=./layout.aippconfig3、图片预处理(利用aipp前处理输入图片),包括色域转换、resize、图片归一化4、获取图片Tensor进行模型推理5、python推理后处理代码开发1.4 代码地址本项目的代码地址为:cid:link_62 软件方案介绍2.1 项目方案架构介绍本系统设计了不同的功能模块。主要流程为:图片传入流程中,将图像resize至特定尺寸,再利用文档版面识别模型检测版面类型,最后可视化图片形式输出识别结果。各模块功能描述如表2.1所示:表2.1 系统方案中各模块功能:序号子系统功能描述1图像输入调用untils.py文件中的decode_image函数2图像放缩调用untils.py文件中的resize_image函数 放缩到800*6083色域转换和图片归一化使用配置的AIPP进行色域转换和归一化处理4文档版面分析将预训练paddle模型转成华为om模型,检测出文档版面中的版面信息。调用SDK 接口model5结果输出使用自己开发的postprocess后处理函数进行文档版面分析后的后处理以及可视化2.2 代码目录结构与说明本工程名称为DocumentLayoutAnalysis,工程目录如下图所示:├── evaluate.py #精度测试 ├── infer.py #推理文件 ├── model │ ├── layout.aippconfig #aipp配置文件 │ ├── model.sh #模型转换脚本 ├── postprocess.py #后处理文件 ├── README.md └── utils.py #推理用到的一些工具函数3 开发准备3.1 环境依赖说明环境依赖软件和版本如下表:软件名称版本ubantuUbuntu/Linaro 7.3.0-16ubuntu3MindX SDKmxVision-3.0.RC2Python3.9.2CANN5.1RC2numpy1.21.5opencv-python4.5.53.2 环境搭建# 执行环境变量脚本使环境变量生效 . ${SDK-path}/set_env.sh . ${ascent-tookit-path}/set_env.sh # SDK-path: SDK mxVision安装路径 # ascent-tookit-path: CANN安装路径 #查看环境变量 env4 模型获取4.1 paddle模型转换成onnx模型步骤1 在PaddleOCR上下载picodet_lcnet_x1_0_fgd_layout_cdla模型。下载地址步骤2 根据PaddleOCR的inference模型转onnx模型将下载的paddle模型转成onnx模型。 转onnx模型用到的环境配置: paddle2onnx-0.9.2 with python>=2.7 , paddlepaddle>=1.8.0步骤3 得到模型后,将转好的onnx模型复制到该工程目录model文件夹下注:此处提供paddlepaddle的源模型和转换过后的onnx模型下载地址4.2 onnx模型转换成om模型步骤1 AIPP配置由于该模型的输入为rgb格式,图像解码后的图像为bgr格式,且图片需要做归一化处理步骤,需要在atc转换模型时使用aipp预处理,aipp配置文件命名为layout.aippconfig,aipp配置内容如下:aipp_op { aipp_mode : static crop : false input_format : RGB888_U8 csc_switch : false rbuv_swap_switch : true min_chn_0 : 123.675 min_chn_1 : 116.28 min_chn_2 : 103.53 var_reci_chn_0 : 0.0171247538 var_reci_chn_1 : 0.0175070028 var_reci_chn_2 : 0.0174291938 }步骤2 执行脚本cd 到model文件夹下. model.sh步骤3 模型转换结果执行完模型转换脚本后,会生成相应的.om模型文件。 执行后终端输出为:ATC start working now, please wait for a moment. ATC run success, welcome to the next use.转成的模型命名为layout.om可以在infer中使用了模型转换使用了ATC工具,如需更多信息请参考:cid:link_105 文档版面分析推理开发实现5.1 主程序开发1、图片解码2、图片预处理3、文档版面推理4、推理后处理5、图片可视化详细流程参考如下流程图:图1 文档版面分析流程图5.2 程序开发参考资料图片预处理图像解码,图像缩放开发 在untils文件中开发了 decode_image、resize_image函数,在主程序infer.py中调用代码开发参考图片的色域转换和归一化处理 利用aipp在数据进入模型前预处理模型推理的调用 参考案例模型后处理以及可视化,后处理文件在postprocess.py中 参考代码推理结果的可视化,调用untils文件中的visualize函数参考代码精度测试参考代码6 编译与运行示例步骤如下:步骤1 自行选择一张或多张jpg、jpeg或者png图片文件,放入工程目录./input下。参考测试图片下载地址注:如果工程目录下没有input目录,需要自行建立步骤2 cd 到该项目目录DocumentLayoutAnalysis下,然后执行python infer.py执行后会在终端按顺序输出文档的版面类别和置信度,并在./output目录下生成结果图片,可查看文档检测结果。注:如果工程目录下没有output目录,需要自行建立7 精度测试步骤1获取数据集数据集CDLA dataset:下载地址由于精度测试只需要用到验证集val,所以只需要保留数据集里的val文件。精度测试使用的标注json文件需要转成coco格式。 转换过程参考转coco格式。将转换后的val_save_path目录下的JEPGimages目录和annotations.json文件复制到工程目录val下。注:如果工程目录下没有val目录,需要自行建立步骤2运行精度测试python文件cd 到该项目目录DocumentLayoutAnalysis下,然后执行python evaluate.py之后就得到精度测试的结果了,例如下图3所示精度测试结果与原模型0.856相差0.002,满足精度要求。图2 文档版面分析精度测试结果
  • [DVPPAIPP] DVPP输出的图片尺寸不符合要求
    您好,我关于DVPP有两个问题:1、假如我需要对多张图片进行预处理,需要开启多线程进行,请问DVPP是否直接具有开启多线程处理的功能,还是说仍需要我自己创建线程再使用DVPP呢?2、DVPP的输出图片的尺寸不符合预期的问题,我的DVPP部分代码如下所示:dvpp = AclLiteImageProc(acl_resource)image = AclLiteImage(image_file)image_input = image.copy_to_dvpp() yuv_image = dvpp.jpegd(image_input) resized_image = dvpp.crop_and_paste(yuv_image, image.width, image.height, MODEL_WIDTH, MODEL_HEIGHT)我设置的MODEL_WIDTH与MODEL_HEIGHT均为300,为什么最后的输出尺寸是138400,看相关文档说是有字节对齐问题,请问要是什么原因呢?
  • [问题求助] atlas200DK 制卡失败
    一开始说识别不到虚拟机镜像,用命令下载后现在说[ERROR] Making SD Card failed, please check /home/tt/download/sd_card_making_log/make_ubuntu_sd.log for details!,请大佬相助
  • 如何更新ECS云环境中的CANN版本
    如何更新ECS云环境中的CANN版本,申请了一个ECS的云环境,根据网上的教程查看CANN的版本,发现版本号是20.1.rc1?可是昇腾的CANN安装包下载页面又找不到该版本帮忙看看我这个环境的CANN版本到底是啥,我如果需要使用5.1.RC1.alpha001的CANN又该如何更新尝试了走docker容器的方式,在下载 Ascend-mindx-toolbox的时候卡住了,没有权限
  • [问题求助] CANN同步失败如何处理。
    在下载好MindStudio之后,新建项目时同步远程CANN是显示无效。
  • [问题求助] TBE TIK算子开发中定义Scalar异常
    MindStudio版本:5.0RC3CANN版本:6.0.0.alpha001dubug过程中出现这种问题Unable to get repr for请问是缺少插件还是?
  • [问题求助] 500小站如何挂载新的SSD固态硬盘NVMe M.2接口 TiPlus5000系列
    问题现象:买了个固态硬盘,已经从背部给安装上,但web页面无法识别到,
  • [问题求助] 在200DK上能ping通ip地址,但是ping不通域名
    觉得是DNS有问题,但是不知道在哪里改。
  • [安装经验] MindSpore GPU版本首次运行很慢?
    现象近期使用MindSpore发现,第一次运行GPU代码需要5分钟左右才出结果。复现步骤参照 官网安装教程, 安装GPU 1.9.0版本,运行如下测试代码:python -c "import mindspore;mindspore.run_check()"等待5分钟后才出现如下结果:MindSpore version: 1.9.0 The result of multiplication calculation is correct, MindSpore has been installed successfully!原因解释nvcc编译分为两级,根据编译指令的不同,首先在第一阶段编译出面向虚拟架构(virtual architecture)的ptx代码,然后在第二阶段将ptx代码编译成面向实际架构(real architecture)的二进制文件。不同的架构包含了不同的功能,架构代码号越高,包含的功能越多。在向nvcc指定架构时,我们所指定的实际架构代码必须兼容于所指定的虚拟架构代码。在运行时,若二进制代码可直接运行在所在显卡上,则直接运行二进制代码;否则,若文件中包含虚拟架构代码,显卡驱动会尝试将虚拟架构代码在编译时动态编译为二进制代码进行执行(JIT)。(耗时也就是这部分,取决于需要编译的内容大小。在早期这部分算子数量不大,因此耗时无感知,随着MindSpore GPU算子的增加,该部分的耗时逐渐显现。)解决方案方案 1可尝试扩大编译缓存(生成位置一般在~/.nv/ComputeCache/,在账号目录下,因此不同账号可能表现不同)。部分场景不仅是第一次执行慢,后续执行也慢,可能原因是缓存不够,导致每次都需要及时生成。export CUDA_CACHE_DISABLE=0 // 默认为0, 开启缓存 export CUDA_CACHE_MAXSIZE=2147483648 // 默认1G,最大4G方案 2本地编译MindSpore代码,参照官网Source安装,编译是会根据当前显卡架构以及CUDA版本编译合适的cubin文件,后续加载即使用,无需在经过二次编译。git clone https://gitee.com/mindspore/mindspore.git cd mindspore bash build.sh -e gpu -j64
  • [技术干货] MindX SDK -- X射线图像焊缝缺陷检测参考设计案例
    MindX SDK -- X射线图像焊缝缺陷检测参考设计案例1 案例概述1.1 概要描述在本系统中,目的是基于MindX SDK,在华为云昇腾平台上,开发端到端X射线图像焊缝缺陷检测的参考设计,实现对图像中的焊缝缺陷进行缺陷位置定位与类别识别的功能,并把可视化结果保存到本地,达到功能及精度要求,详细的精度可见 5.2精度测试 。样例输入:带有已裁剪出焊缝的jpg图片。样例输出:框出并标有缺陷类型与置信度的jpg图片。1.2 特性及适用场景经过测试,在现有数据集的基础上,该项目检测算法可以检测八种焊缝缺陷:气孔、裂纹、夹渣、未熔合、未焊透、咬边、内凹、成形不良,关于缺陷召回率和MAP分数在后续内容中将会提到。本项目属于工业缺陷中焊缝缺陷检测领域,主要针对DR成像设备(数字化X射线成像设备)拍摄金属焊接处成像形成的焊接X射线图像进行缺陷检测。1.3 模型介绍本项目主要使用到的模型是:用于目标检测的Faster_R-CNN模型(MIndSpore) 。Faster_R-CNN模型相关文件可以在此处下载:cid:link_21.4 数据集介绍GDXray是一个公开X射线数据集,其中包括一个关于X射线焊接图像(Welds)的数据,该数据由德国柏林的BAM联邦材料研究和测试研究所收集。Welds集中W0003 包括了68张焊接公司的X射线图像。本文基于W0003数据集并在焊接专家的帮助下将焊缝和其内部缺陷标注。数据集下载地址:cid:link_4注:本系统训练使用的数据是由原png图片转为jpg图片,然后经过焊缝裁剪和滑窗裁剪后输入模型训练,推理时所用的图片是已经经过焊缝裁剪的图片。1.5 实现流程1、基础环境:Ascend 310、mxVision、Ascend-CANN-toolkit、Ascend Driver 2、模型转换:fasterrcnn_mindspore.air --> fasterrcnn_mindspore_dvpp.om 或:fasterrcnn_mindspore.air --> fasterrcnn_mindspore_rgb.om 3、业务流程编排与配置 4、mxpi_classpostprocessor插件的后处理库开发 5、python推理流程代码开发技术流程图如下:1.6 代码地址本项目的代码地址为:Faster_R-CNN2 软件方案介绍2.1 技术原理在原始焊缝图片上裁剪出完整的焊缝。对焊缝做滑窗裁剪处理,通过滑窗步长小于图片尺寸的方法,在保留所有缺陷的前提下,将图片变为可输入到模型中推理的图片。对最终预测到的结果进行nms去重后,还原到焊缝图片中。2.2 项目方案架构介绍本方案中,会先进行滑窗裁剪处理,然后将处理好的图片通过 appsrc 插件输入到业务流程中,最终根据Faster—RCNN模型识别得到缺陷类别和置信度生成框输出标有缺陷类别与置信度的jpg图片。系统方案各子系统功能描述:序号子系统功能描述1图片输入获取 jpg 格式输入图片2图片解码解码图片3图片缩放将输入图片放缩到模型指定输入的尺寸大小4模型推理对输入张量进行推理5目标检测后处理从模型推理结果计算检测框的位置和置信度,并保留置信度大于指定阈值的检测框作为检测结果6结果输出获取检测结果7结果可视化将检测结果标注在输入图片上2.3 代码目录结构与说明本工程名称为 Faster_R-CNN,工程目录如下所示:. ├── images # README文件内的图片 │   ├── 1.png │   ├── 2.png │   ├── permissionerror.png │   ├── W0003_0001.jpg # 测试图片 ├── postprocess # 后处理插件 │   ├── build.sh # 后处理编译所需环境变量可参考该文件 │   ├── CMakeLists.txt │   ├── FasterRcnnMindsporePost.cpp │   └── FasterRcnnMindsporePost.h ├── python │   ├── Main │   │   ├── main.py │   │   ├── eval.py │   │   ├── infer.py │   │   ├── eval_by_sdk.py │   │   ├── config.py │   │   ├── util.py │   │   ├── draw_predict.py │   │   └── postprocess.py │   ├── models │   │   ├── aipp-configs (需创建) │   │   │   ├── aipp.cfg # sdk做图像预处理aipp配置文件 │   │   │ └── aipp_rgb.cfg # opencv做图像预处理aipp配置文件 │   │   ├── conversion-scripts # 转换前后模型所放的位置 │   │   ├── convert_om.sh # 模型转换相关环境变量配置可参考该文件 │   │   ├── coco2017.names # 支持的缺陷类别 │   │   ├── fasterrcnn_coco2017.cfg # 高性能要求配置 │   │   └── fasterrcnn_coco2017_acc_test.cfg # 高精度要求配置 │   ├── data (需创建) │   │   ├── test # 用于测试该系统功能的数据集目录 │   │   │   ├── infer_result # 小图(滑窗裁剪后的图片)推理结果所在目录 │   │   │   ├── draw_result # 最终推理结果的可视化 │   │   │   ├── cut # 测试图片所在目录 (需创建) │   │   │   ├── crop # 滑窗裁剪后的小图片所在目录 │   │   │   ├── img_txt # 小图推理结果txt格式 │   │   │   ├── img_huizong_txt # 还原到焊缝图片上的未经过nmx去重的标注框信息 │   │   │   └── img_huizong_txt_nms # 最终推理结果标注框信息(txt格式) │   │   ├── eval # 用于精度测试的数据集 (需创建) │   │   │   ├── cocodataset # 进行验证时数据的coco格式 │   │   │   ├── VOCdevkit # 进行验证时数据的VOC格式 │   └── pipeline │   ├── fasterrcnn_ms_dvpp.pipeline # sdk做图像预处理 │   └── fasterrcnn_ms_acc_test.pipeline # opencv做图像预处理 └── README.md注:验证时有COCO和VOC两种数据格式是因为原图片经过滑窗裁剪后的小图片是以coco的数据格式进行训练的,而本系统最终采用的验证方式是,将经过推理后得到的小图片的标注框信息还原到未经过滑窗裁剪的图片上,再进行VOC评估。3 开发环境准备3.1 环境依赖说明环境依赖软件和版本如下表:软件名称版本ubantu18.04MindX SDK2.0.4Python3.9.2CANN5.1.RC1numpy1.23.3opencv-python4.6.0.66pycocotools2.0.5mmcv1.7.03.2 环境搭建3.2.1 依赖安装确保环境中正确安装mxVision SDK。在编译运行项目前,需要设置环境变量:MindSDK 环境变量:. ${SDK-path}/set_env.shCANN 环境变量:. ${ascend-toolkit-path}/set_env.sh环境变量介绍SDK-path: mxVision SDK 安装路径 ascend-toolkit-path: CANN 安装路径。3.3 模型转换本项目中采用的模型是 Faster—RCNN模型,参考实现代码:cid:link_2将训练好的模型 fasterrcnn_mindspore.air 下载至 python/models/conversion-scripts 文件夹下。将该模型转换为om模型,具体操作为: python/models 文件夹下,执行指令:DVPP模型转换bash convert_om.sh conversion-scripts/fasterrcnn_mindspore.air aipp-configs/aipp.cfg conversion-scripts/fasterrcnn_mindspore_dvppOPENCV模型转换bash convert_om.sh conversion-scripts/fasterrcnn_mindspore.air aipp-configs/aipp_rgb.cfg conversion-scripts/fasterrcnn_mindspore_rgb注:转换后的OPENCV模型会用OpenCV对图片做预处理,然后进行推理,用户可自行进行选择。4 编译与运行步骤1 编译后处理插件切换到postprocess目录下,执行命令:bash build.sh步骤2 准备测试图片在python/data/test/cut/目录下放好待检测的焊缝图片(./images下有一张测试图片W0003_0001.jpg)步骤3 图片检测切换到python/Main目录下,执行命令:# 进行推理 python3 main.py # 进行nms去重并还原到原图 python3 postprocess.py命令执行成功后在目录python/data/test/draw_result下生成检测结果文件 。5 指标验证5.1 精度测试步骤1 准备数据准备精度测试所需图片,将验证集下载到python/data/eval/目录下并解压。步骤2 修改配置文件打开python/pipeline/fasterrcnn_ms_dvpp.pipeline文件,将第45行(postProcessConfigPath)配置参数改为../models/fasterrcnn_coco2017_acc_test.cfg。步骤3 执行推理使用dvpp模式对图片进行推理,切换到python/Main目录下,执行命令:python3 main.py --img_path ../data/eval/cocodataset/val2017/ --pipeline_path ../pipeline/fasterrcnn_ms_dvpp.pipeline --model_type dvpp --infer_mode eval --ann_file ../data/eval/cocodataset/annotations/instances_val2017.json步骤4 nms去重并评估因为涉及到去重处理,每种缺陷需要分开评估精度,切换到python/Main目录下,执行命令:# 验证气孔精度 python3 eval.py --cat_id 1 --object_name "qikong" # 验证裂纹精度 python3 eval.py --cat_id 2 --object_name "liewen"注:cat_id为缺陷标签,object_name为对应缺陷名称,在 python/models/coco2017.names可查看缺陷类别。缺陷种类AP气孔0.7251裂纹0.75975.2 性能测试步骤1 执行推理切换到python/Main目录下,执行命令:script -c "python3 main.py --img_path ../data/eval/cocodataset/val2017/ --pipeline_path ../pipeline/fasterrcnn_ms_dvpp.pipeline --model_type dvpp --infer_mode eval --ann_file ../data/eval/cocodataset/annotations/instances_val2017.json" -q opencv_test.log“opencv_test.log”为推理结果保存文件,文件名可根据实际修改。步骤2 查看性能结果继续执行命令:cat opencv_test.log | grep " elapsed_time" |awk -F "elapsed_time: " '{print $2 }' |awk -F "." '{c=($1"."$2);print c}' | awk '{sum += $1} END {print "Average=",sum/NR, "sum=", sum, "number=", NR};'输出性能结果:6 常见问题6.1 后处理插件权限问题运行检测 demo 和评测时都需要将生成的Faster_R-CNN后处理动态链接库的权限修改,否则将会报权限错误,如下图所示:解决方案:切换到postprocess目录下,执行命令:chmod 640 ./build/libfasterrcnn_mindspore_post.so6.2 模型转换问题运行模型转换命名后报错:环境变量设置时加了“$”符号。解决方案:参考build.sh中环境变量设置,并去掉“$”符号。
  • [Atlas200] 请问Atlas 200 AI加速模块(型号:3000)可以在openHarmony的系统上用吗?
    请问Atlas 200 AI加速模块(型号:3000)可以在openHarmony的系统上用吗?具体什么版本的openHarmony呢?openHarmony的板子哪些兼容它呢?求指教,感谢!
  • [云服务] [华为云ECS]华为云ECS是否有安装好Ascend-cann-toolkit_5.1.RC1.alpha001_linux-aarch64的正常环境的镜像
    华为云ECS是否有安装好Ascend-cann-toolkit_5.1.RC1.alpha001_linux-aarch64的正常环境的镜像目前的镜像里面根据CANN的文档看安装的版本是20.xxx,但是CANN当前版本才到6.xxx,所以根本不确定默认创建的环境是否安装了CANN,是什么版本可否提供可正常使用的环境镜像
  • [问题求助] 在运行Atlas500的样例时,上传文件到atlas中时出现问题,用的是mobaxterm。
    ssh连接时是没问题的,但是上传文件时一直是0%,而且换成sftp后会出现错误,像下图这样。 这个error #102查了一下好像是什么权限问题,不知道怎么解决。还有就是使用Atlas500时不能用apt-get命令吗?用200dk的时候下载样例用的是git clone命令,在500中如果用mobaxterm下载不了的话可以直接用命令行下载吗?