• [问题求助] 昇腾设备相关信息查询
    昇腾提供的npu-smi 命令类似NVIDIA的nvidia-smi 命令,请问也有相应的C++/python 接口用于查询相关信息吗? 还有如何查询当前程序所占用显存呢,麻烦相关技术人员帮忙解答一下谢谢!
  • [MindX SDK] MindX SDK -- TSM视频分类参考设计案例
    MindX SDK -- TSM视频分类参考设计案例1 案例概述1.1 概要描述在本系统中,目的是基于MindX SDK,在华为云昇腾平台上,开发端到端TSM视频分类的参考设计,达到功能要求、离线精度要求和性能要求。1.2 模型介绍本项目主要用到了两个模型,分别是:用于视频分类的TSM模型和用于手势识别的jester 模型。TSM模型相关文件可以在此处下载:cid:link_10jester原始模型文件可以在此处下载:cid:link_61.3 实现流程1、基础环境:Ascend 310、mxVision、Ascend-CANN-toolkit、Ascend Driver 2、模型转换:TensorFlow模型转昇腾离线模型:TSM.onnx --> TSM.om 、 jester.onnx --> jester.om 3、视频抽帧:ffmpeg 4、python推理流程代码开发1.4 代码地址本项目的代码地址为:cid:link_72 软件方案介绍2.1 代码目录结构与说明本工程名称为TSM,工程目录如下图所示:├── TSM ├── README.md // 所有模型相关说明 ├── model ├── onnx2om.sh // 转om模型脚本 ├── onnx2om1.sh // 在线模型转om模型脚本 ├── label ├── kinetics_val.csv // label文件 ├── download_data ├── k400_extractor.sh // 解压数据集脚本 ├── offline.png // 离线推理技术实现流程 ├── online.png // 在线推理技术实现流程 ├── online_infer.py // 在线推理精度脚本 ├── offline_infer.py // 离线推理精度脚本 ├── speed.py // 离线单视频推理NPU性能脚本 ├── speed_gpu.py // 离线单视频推理GPU性能脚本3 开发准备3.1 环境依赖说明环境依赖软件和版本如下表:软件名称版本cmake3.5+mxVision5.1RC2Python3.9torch1.10.0ffmpeg4.2.13.2 环境搭建在运行项目前,需要设置环境变量:MindSDK 环境变量:. ${SDK-path}/set_env.shCANN 环境变量:. ${ascend-toolkit-path}/set_env.sh环境变量介绍SDK-path: mxVision SDK 安装路径ascend-toolkit-path: CANN 安装路径。下载ffmpeg,解压进入并执行以下命令安装:./configure --prefix=/usr/local/ffmpeg --enable-shared make -j make install安装完毕后导入环境变量export PATH=/usr/local/ffmpeg/bin:$PATH export LD_LIBRARY_PATH=/usr/local/ffmpeg/lib:$LD_LIBRARY_PATH3.3 模型转换3.3.1 TSM模型转换下载离线模型 TSM.onnx, 将下载好的模型放在“${TSM代码根目录}/model”目录下。将模型转换为om模型,在“model”目录下,执行以下命令生成om模型bash onnx2om.sh3.3.2 jester模型转换下载在线模型 jester.onnx将下载好的模型放在参考设计代码根目录的“model”目录下。将模型转换为om模型,在“model”目录下,运行脚本生成om模型bash onnx2om1.sh模型转换使用了ATC工具,如需更多信息请参考: cid:link_54 离线精度4.1 Kinetics-400数据集下载在 cid:link_2 连接下载download.sh和val_link.list两个脚本,放入/TSM/download_data 目录下,在“/TSM/download_data/”目录下,运行数据集下载脚本,在“/TSM/”目录下新建文件夹data用于存放下载的数据集bash download.sh val_link.list bash k400_extractor.sh4.2 数据集预处理步骤1 Kinetics-400数据集下载参考Kinetics-400 数据准备中的脚本下载操作,在代码根目录的"download_data"目录下准备"download.sh"数据集下载脚本和"val_link.list"验证集链接列表文件。├── TSM ├── download_data ├── download.sh // 下载数据集脚本 ├── k400_extractor.sh // 解压数据集脚本 ├── val_link.list 进入代码根目录的"download_data"目录下,执行以下命令下载数据集压缩包val_part1.tar、val_part2.tar、val_part3.tar:bash download.sh val_link.list然后执行以下命令解压数据集到代码根目录下:bash k400_extractor.sh数据集结构如下:├── TSM ├── data ├── abseiling ├── air_drumming ├── ... ├── zumba步骤2 数据集预处理1、视频抽帧在代码根目录执行以下命令创建所需目录:mkdir tools mkdir ops下载“temporal-shift-module-master.zip”代码包并上传服务器解压,将代码包中"tools"目录下的"vid2img_kinetics.py"、"gen_label_kinetics.py"、"kinetics_label_map.txt"三个文件拷贝至参考设计代码根目录的“tools”目录下。├── TSM ├── tools ├── gen_label_kinetics.py // label生成脚本 ├── vid2img_kinetics.py // 视频抽帧脚本 ├── kinetics_label_map.txt将代码包中"ops"目录下的"basic_ops.py"、"dataset.py"、"dataset_config.py"、"models.py"、"temporal_shift.py"、"transforms.py"六个文件拷贝至参考设计代码根目录的“ops”目录下。 ├── ops ├── basic_ops.py ├── dataset.py // 数据集构建脚本 ├── dataset_config.py // 数据集配置脚本 ├── models.py // 模型搭建脚本 ├── temporal_shift.py ├── transforms.py修改“tools”目录下的 vid2img_kinetics.py 内容,将77、78行注释。77行 #class_name = 'test' 78行 #class_process(dir_path, dst_dir_path, class_name)在参考设计代码根目录下,执行以下命令对数据集视频进行抽帧并生成图片:mkdir dataset cd ./tools python3 vid2img_kinetics.py [video_path] [image_path] e.g. python3 vid2img_kinetics.py ../data ../dataset/修改“tools”目录下gen_label_kinetics.py 内容。# 11行 dataset_path = '../dataset' # 放视频抽帧后的图片路径 # 12行 label_path = '../label' # 存放label路径 # 25行 files_input = ['kinetics_val.csv'] # 26行 files_output = ['val_videofolder.txt'] # 37行 folders.append(items[1]) # 57行 output.append('%s %d %d'%(os.path.join('../dataset/',os.path.join(categories_list[i], curFolder)), len(dir_files), curIDX))在“tools”目录下,执行以下命令生成标签文件:python3 gen_label_kinetics.py4.3 精度测试修改${TSM代码根目录}/ops/dataset_config.py 脚本中参数root_data、filename_imglist_train和filename_imglist_val,若仅进行离线精度测试则可忽略filename_imglist_train设置。import os ROOT_DATASET = './labels/' # 标签文件所在路径 ... def return_kinetics(modality): filename_categories = 400 if modality == 'RGB': root_data = ROOT_DATASET # 训练集根目录 filename_imglist_train = 'train_videofolder.txt' # 训练数据集标签 filename_imglist_val = 'val_videofolder.txt' # 测试数据集标签 prefix = 'img_{:05d}.jpg' else: raise NotImplementedError('no such modality:' + modality) return filename_categories, filename_imglist_train, filename_imglist_val, root_data, prefix在参考设计代码根目录下,运行精度测试脚本python3 offline_infer.py kinetics原模型精度值为71.1%,实测精度值为71.01%,符合精度偏差范围,精度达标。5 离线性能测试将用来测试的单视频放在“/TSM/”目录下,如视频“test.mp4”,运行性能测试脚本修改参数,'./test.mp4'为测试视频def main(): cmd = 'ffmpeg -i \"{}\" -threads 1 -vf scale=-1:331 -q:v 0 \"{}/img_d.jpg\"'.format('./test.mp4', './image') subprocess.call(cmd, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) files = os.listdir(r"./image/")5.1 单视频推理性能将用来测试的单视频放在参考设计代码根目录下,如视频“test_speed.mp4”,运行性能测试脚本修改speed_gpu.py与speed.py参数,'./test_speed.mp4'为测试视频,测试视频类别需在Kinetics-400数据集的400个种类内且视频长度至少为3s。def main(): cmd = 'ffmpeg -i \"{}\" -threads 1 -vf scale=-1:331 -q:v 0 \"{}/img_d.jpg\"'.format('./test_speed.mp4', './image') subprocess.call(cmd, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) files = os.listdir(r"./image/")GPU性能(Tesla_V100S_PCIE_32GB)在参考设计代码根目录下,运行GPU性能测试脚本python3 speed_gpu.py kinetics --test_segments=8 --test_crops=1 --batch_size=1注:speed_gpu.py脚本需在GPU环境上运行,NPU环境无法运行。得到单视频纯推理性能为0.08sec/videoSDK性能在参考设计代码根目录下,运行SDK性能测试脚本python3 speed.py注:speed.py脚本需在NPU环境上运行。得到单视频纯推理性能为0.189sec/video5.2 GPU与NPU性能对比ModelBatch size310 FPS/CardT4 FPS/CardT4/310TSM16.4819.12.95TSM425.976.42.95TSM851.84153.552.96TSM16103.74310.312.99TSM32207.27627.823.02TSM32207.27627.823.02性能对比评价标准为NPU的最优bs比T4的最优bs:NPU最优性能为bs32,单卡吞吐率:103.74fps/cardGPU最优性能为bs32,单卡吞吐率:310.31fps/cardGPU/ Ascend 310=310.31/103.74=2.99倍6 在线手势识别6.1 安装视频流工具安装视频流工具6.2 生成视频流根据提示当前只支持部分视频格式,并不支持.mp4后缀的文件,但可以通过ffmpeg转换生成ffmpeg安装教程,如下所示为MP4转换为h.264命令:使用ffmpeg工具将带有手势的“jester.mp4”的mp4格式视频转换生成为“jester.264”的264格式视频:ffmpeg -i jester.mp4 -vcodec h264 -bf 0 -g 25 -r 10 -s 1280*720 -an -f h264 jester.264 //-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制 -an关闭音频, -r 指定帧率使用live555生成视频流。6.3 程序测试python3 online_infer.py修改参数,'ip:port/jester.264'为测试视频流,其中ip为起流的机器ip地址,port为起流的机器端口地址,jester.264为测试视频jester.mp4通过ffmpeg转换后的视频。def video2img(): cmd = 'ffmpeg -i \"{}\" -threads 1 -vf scale=-1:331 -q:v 0 \"{}/img_d.jpg\"'.format('rtsp://ip:port/jester.264', './image') subprocess.call(cmd, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
  • [技术干货] 【ascend-deployer操作指导视频】覆盖多种场景,满足用户多样化部署需求
    离线部署工具ascend-deployer一个命令完成一系列操作方便用户快捷部署AI环境Linux场景videovideo
  • [其他问题] CRNN训练loss为0
    数据集使用自己的构建的合成数据集,代码的改动仅有数据加载和字典,字典这部分采用中文-英文-符号,但是训练的时候loss一直为0config配置相关修改:训练log情况:数据加载中CaptchaDataset函数的修改:相关的主要修改如上。
  • [算子开发] 自定义算子-算子包部署
    参考文档进行自定义算子的算子包部署时,执行 ./custom_opp_ubuntu_x86_64.run 指令返回如下:但并未将编译生成的自定义算子相关文件部署到opp对应目录下的custom路径下。
  • [问题求助] 使用开发板将onnx文件转换成om文件时,报错E29999: Inner Error!,具体报错如下
    在跑疲劳驾驶识别的demo时,根据readme文件的步骤要求,在onnx文件转换成om文件时报如上错误,环境变量也设置了,cann版本是5.0.4,不懂出现了什么问题
  • [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页面无法识别到,