diff --git a/contrib/BertTextClassification/README.md b/contrib/BertTextClassification/README.md index 877a73156f86373e20ddcfb721cf0aef28518242..9380c36cdf53688472e2d61037dc587a3680d1bc 100644 --- a/contrib/BertTextClassification/README.md +++ b/contrib/BertTextClassification/README.md @@ -2,34 +2,41 @@ ## 1. 介绍 -文本分类插件基于 MindXSDK 开发,在晟腾芯片上进行文本分类,将分类结果保存。输入一段新闻,可以判断该新闻属于哪个类别。 +### 1.1 简介 +文本分类插件基于 MindXSDK 开发,在昇腾芯片上进行文本分类,将分类结果保存。输入一段新闻,可以判断该新闻属于哪个类别。 该模型支持5个新闻类别:体育、健康、军事、教育、汽车。 -### 1.1 支持的产品 +### 1.2 支持的产品 本项目以昇腾Atlas310卡为主要的硬件平台。 -### 1.2 支持的版本 +### 1.3 支持的版本 -支持的SDK版本为2.0.4。 -支持的CANN版本为5.0.4。 +表1.1 环境依赖软件和版本: -### 1.3 软件方案介绍 +| 软件名称 | 版本 | +| -------- | ------ | +| cmake | 3.10.2 | +| mxVision | 5.0.0 | +| python | 3.9.2 | +| CANN | 7.0.0 | -基于MindX SDK的文本分类业务流程为:待分类文本通过预处理,将文本根据字典vocab.txt进行编码,组成numpy形式的向量,将向量通过 appsrc 插件输入,然后由模型推理插件mxpi_tensorinfer得到每种类别的得分,再通过后处理插件mxpi_classpostprocessor将模型输出的结果处理,最后得到该文本的类别。本系统的各模块及功能描述如表1.1所示: +### 1.4 软件方案介绍 +基于MindX SDK的文本分类业务流程为:待分类文本通过预处理,将文本根据字典vocab.txt进行编码,组成numpy形式的向量,将向量通过 appsrc 插件输入,然后由模型推理插件mxpi_tensorinfer得到每种类别的得分,再通过后处理插件mxpi_classpostprocessor将模型输出的结果处理,最后得到该文本的类别。本系统的各模块及功能描述如表1.2所示: -表1.1 系统方案各子系统功能描述: + +表1.2 系统方案各子系统功能描述: | 序号 | 子系统 | 功能描述 | | ---- | ------ | ------------ | | 1 | 文本输入 | 读取输入文本 | | 2 | 文本编码 | 根据字典对输入文本编码 | | 3 | 模型推理 | 对文本编码后的张量进行推理 | -| 5 | 后处理 | 从模型推理结果中寻找对应的分类标签 | -| 7 | 保存结果 | 将分类结果保存文件| +| 4 | 后处理 | 从模型推理结果中寻找对应的分类标签 | +| 5 | 保存结果 | 将分类结果保存文件| -### 1.4 代码目录结构与说明 +### 1.5 代码目录结构与说明 本工程名称为文本分类,工程目录如下图所示: @@ -91,48 +98,27 @@ test.sh test_input.py ``` -### 1.5 技术实现流程图 +### 1.6 技术实现流程图 ![image](sdk/flowChart.png) -## 2 环境依赖 - -推荐系统为ubuntu 18.04,环境依赖软件和版本如下表: - -| 软件名称 | 版本 | -| -------- | ------ | -| cmake | 3.10.2 | -| mxVision | 2.0.4 | -| python | 3.9.2 | +## 2 设置环境变量 确保环境中正确安装mxVision SDK。 在编译运行项目前,需要设置环境变量: ``` -export MX_SDK_HOME=${SDK安装路径}/mxVision -export LD_LIBRARY_PATH=${MX_SDK_HOME}/lib:${MX_SDK_HOME}/opensource/lib:${MX_SDK_HOME}/opensource/lib64:/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64:/usr/local/Ascend/driver/lib64:${LD_LIBRARY_PATH} -export PYTHONPATH=${MX_SDK_HOME}/python:${PYTHONPATH} - -export install_path=/usr/local/Ascend/ascend-toolkit/latest -export PATH=/usr/local/python3.9.2/bin:${install_path}/atc/ccec_compiler/bin:${install_path}/atc/bin:$PATH -export LD_LIBRARY_PATH=${install_path}/atc/lib64:$LD_LIBRARY_PATH -export ASCEND_OPP_PATH=${install_path}/opp -``` - -- 环境变量介绍 +# 设置环境变量 +. ${ascend-toolkit-path}/set_env.sh +. ${SDK-path}/set_env.sh +# 环境变量介绍 +ascend-toolkit-path: CANN 安装路径 +SDK-path: SDK mxVision 安装路径 ``` -MX_SDK_HOME:MindX SDK mxVision的根安装路径,用于包含MindX SDK提供的所有库和头文件。 -LD_LIBRARY_PATH:提供了MindX SDK已开发的插件和相关的库信息。 -install_path:ascend-toolkit的安装路径。 -PATH:添加python的执行路径和atc转换工具的执行路径。 -LD_LIBRARY_PATH:添加ascend-toolkit和MindX SDK提供的库目录路径。 -ASCEND_OPP_PATH:atc转换工具需要的目录。 -``` - -## 3 模型转换 +## 3 准备模型 **步骤1** 请参考https://mindx.sdk.obs.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/BertTextClassification/bert_text_classification.pb 下载模型的pb文件,存放到开发环境普通用户下的任意目录,例如:$HOME/models/bert_text_classification。 @@ -159,7 +145,7 @@ ATC run success, welcome to the next use. ## 4 编译与运行 -**步骤1** 从https://mindx.sdk.obs.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/BertTextClassification/data.zip下载测试数据并解压,解压后的sample.txt和test.csv文件放在项目的mxBase/data和sdk/data目录下。 +**步骤1** 从https://mindx.sdk.obs.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/BertTextClassification/data.zip 下载测试数据并解压,解压后的sample.txt和test.csv文件放在项目的mxBase/data和sdk/data目录下。 **步骤2** 按照第 2 小节 环境依赖 中的步骤设置环境变量。 @@ -200,7 +186,7 @@ make 执行成功后在服务器的mxBase/out目录下生成分类结果文件 prediction_label.txt,查看结果文件验证分类结果。 -## 5 精度测试 +## 5 精度验证 **步骤1** 已按照上一小节 编译与运行 的步骤将样例运行成功。 @@ -212,11 +198,11 @@ make python3 test.py ``` -**步骤4** mxBase项目中,将mxBase目录下main.cpp中main方法的全部代码注释,替换为下面代码后执行(即main函数中仅包含以下代码),得到mxBase的精度测试结果。 +**步骤4** mxBase项目中,将mxBase目录下main.cpp中main方法的全部代码注释,替换为下面代码(即main函数中仅包含以下代码),参考第4小节 编译与运行 中的步骤4重新编译并运行,得到mxBase的精度测试结果。 ``` Test::test_accuracy(); ``` -## 6 其他问题 +## 6 常见问题 1.本项目的设计为限制输入样例为txt文件,其他文件如图片、音频输入则会报错。 \ No newline at end of file diff --git a/contrib/CamouflagedObjectDetection/README.md b/contrib/CamouflagedObjectDetection/README.md index a5a99f56ab107d1a44e16e74dede5a4fd2e096fb..269965bc7f7208d6835f4fdd882c86ee6216d066 100644 --- a/contrib/CamouflagedObjectDetection/README.md +++ b/contrib/CamouflagedObjectDetection/README.md @@ -1,56 +1,29 @@ # MindX SDK -- 伪装目标分割参考设计案例 -## 1 案例概述 +## 1 介绍 -### 1.1 概要描述 +### 1.1 简介 -在本系统中,目的是基于MindX SDK,在华为云昇腾平台上,开发端到端**伪装目标分割**的参考设计,实现**对图像中的伪装目标进行识别检测**的功能,达到功能要求 +在本系统中,目的是基于MindX SDK,在华为昇腾平台上,开发端到端**伪装目标分割**的参考设计,实现**对图像中的伪装目标进行识别检测**的功能,达到功能要求。 -### 1.2 模型介绍 +### 1.2 支持的产品 -本项目主要基于用于通用伪装目标分割任务的DGNet模型 +昇腾Atlas310 -- 模型的具体描述和细节可以参考原文:https://arxiv.org/abs/2205.12853 +### 1.3 支持的版本 -- 具体实现细节可以参考基于PyTorch深度学习框架的代码:https://github.com/GewelsJI/DGNet/tree/main/lib_pytorch - -- 所使用的公开数据集是NC4K,可以在此处下载:https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/snapshots/data.tar - -- 所使用的模型是EfficientNet-B4版本的DGNet模型,原始的PyTorch模型文件可以在此处下载:https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/snapshots/DGNet.zip - -### 1.3 实现流程 - -- 基础环境:Ascend 310、mxVision、Ascend-CANN-toolkit、Ascend Driver -- 模型转换:将ONNX模型(.onnx)转换为昇腾离线模型(.om) -- 昇腾离线模型推理流程代码开发 - -### 1.4 代码地址 - -本项目的代码地址为:https://gitee.com/ascend/mindxsdk-referenceapps/tree/master/contrib/CamouflagedObjectDetection - -### 1.5 特性及适用场景 - -本项目适用于自然场景下图片完整清晰、无模糊鬼影的场景,并且建议输入图片为JPEG编码格式,大小不超过10M。 - -**注意:由于模型限制,本项目暂只支持自然场景下伪装动物的检测,不能用于其他用途** - -## 2 软件方案介绍 - -### 2.1 项目方案架构介绍 - -本系统设计了不同的功能模块。主要流程为:图片传入流中,利用DGNet检测模型检测伪装目标,将检测出的伪装目标以逐像素概率图的形式输出,各模块功能描述如表2.1所示: - -表2.1 系统方案中各模块功能: +环境依赖软件和版本如下表: -| 序号 | 子系统 | 功能描述 | -| :------------ | :---------- | :---------- | -| 1 | 图像输入 | 调用cv2中的图片加载函数,用于加载输入图片| -| 2 | 图像前处理 | 将输入图片放缩到352*352大小,并执行归一化操作 | -| 3 | 伪装目标检测 | 利用DGNet检测模型,检测出图片中的伪装目标| -| 4 | 数据分发 | 将DGNet模型检测到的逐像素概率图进行数据分发到下个插件| -| 5 | 结果输出 | 将伪装目标概率预测图结果进行输出并保存| +| 软件名称 | 版本 | +| :-----------: | :---------: | +| mxVision | 5.0.0 | +| Python | 3.9.2 | +| CANN | 7.0.0 | +| numpy | 1.21.2 | +| opencv-python | 4.5.3.56 | +| mindspore (cpu) | 1.9.0 | -### 2.2 代码目录结构与说明 +### 1.4 代码目录结构与说明 本工程名称为DGNet,工程目录如下列表所示: @@ -69,23 +42,7 @@ │ ├── DGNet # 模型文件存放路径 ``` -## 3 开发准备 - -### 3.1 环境依赖说明 - -环境依赖软件和版本如下表: - -| 软件名称 | 版本 | -| :-----------: | :---------: | -| ubantu | 18.04.1 LTS | -| MindX SDK | 2.0.4 | -| Python | 3.9.2 | -| CANN | 5.0.4 | -| numpy | 1.21.2 | -| opencv-python | 4.5.3.56 | -| mindspore (cpu) | 1.9.0 | - -### 3.2 环境搭建 +## 2 设置环境变量 在编译运行项目前,需要设置环境变量 @@ -101,7 +58,10 @@ SDK-path: SDK mxVision 安装路径 ascend-toolkit-path: CANN 安装路径 ``` -### 3.3 模型转换 + +## 3 准备模型 + +### 模型转换 **步骤1** 下载DGNet (Efficient-B4) 的ONNX模型:https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/snapshots/DGNet.zip @@ -115,16 +75,14 @@ cd ./snapshots/DGNet/ # 执行以下命令将ONNX模型(.onnx)转换为昇腾离线模型(.om) atc --framework=5 --model=DGNet.onnx --output=DGNet --input_shape="image:1,3,352,352" --log=debug --soc_version=Ascend310 ``` - 执行完模型转换脚本后,会在对应目录中获取到如下转化模型:DGNet.om(本项目中在Ascend平台上所使用的离线模型文件)。 -## 4 推理与评测 - +## 4 编译与运行 示例步骤如下: **步骤0** -参考1.2节中说明下载一份测试数据集合:下载链接:https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/snapshots/data.tar +下载一份测试数据集合:下载链接:https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/snapshots/data.tar **步骤1** @@ -134,7 +92,7 @@ atc --framework=5 --model=DGNet.onnx --output=DGNet --input_shape="image:1,3,352 python inference_om.py --om_path ./snapshots/DGNet/DGNet.om --save_path ./seg_results_om/Exp-DGNet-OM/NC4K/ --data_path ./data/NC4K/Imgs ``` -**步骤2** +## 5 性能验证 - 定量性能验证: @@ -165,30 +123,4 @@ python evaluation.py - 定性性能验证: 输入伪装图片:![](./assets/74.jpg) -预测分割结果:![](./assets/74.png) - -## 5 参考引用 - -主要参考为如下三篇论文: - - @article{ji2022gradient, - title={Deep Gradient Learning for Efficient Camouflaged Object Detection}, - author={Ji, Ge-Peng and Fan, Deng-Ping and Chou, Yu-Cheng and Dai, Dengxin and Liniger, Alexander and Van Gool, Luc}, - journal={Machine Intelligence Research}, - year={2023} - } - - @article{fan2021concealed, - title={Concealed Object Detection}, - author={Fan, Deng-Ping and Ji, Ge-Peng and Cheng, Ming-Ming and Shao, Ling}, - journal={IEEE TPAMI}, - year={2022} - } - - @inproceedings{fan2020camouflaged, - title={Camouflaged object detection}, - author={Fan, Deng-Ping and Ji, Ge-Peng and Sun, Guolei and Cheng, Ming-Ming and Shen, Jianbing and Shao, Ling}, - booktitle={IEEE CVPR}, - pages={2777--2787}, - year={2020} - } +预测分割结果:![](./assets/74.png) \ No newline at end of file diff --git a/contrib/CrowdCounting/CMakeLists.txt b/contrib/CrowdCounting/CMakeLists.txt index 00606d3062f4ebf137013fc255dac0bebe878d3d..11c34fd965998047661fb8885b06342539ce4677 100644 --- a/contrib/CrowdCounting/CMakeLists.txt +++ b/contrib/CrowdCounting/CMakeLists.txt @@ -12,6 +12,13 @@ add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0 -Dgoogle=mindxsdk_private) set(MX_SDK_HOME "$ENV{MX_SDK_HOME}") +set(cpprest_DIR ${MX_SDK_HOME}/opensource/lib/libcpprest.so) +if(EXISTS ${cpprest_DIR}) + target_link_libraries(crowd_counting cpprest) + add_definitions(-DMX_VERSION_5) +endif() + + include_directories( ${MX_SDK_HOME}/include ${MX_SDK_HOME}/opensource/include diff --git a/contrib/CrowdCounting/CrowdCount/CrowdCount.cpp b/contrib/CrowdCounting/CrowdCount/CrowdCount.cpp index ea0bb6c1f952bf04f8dacb2a135cd1e0093d501e..492f351a58e38a1557c02fe91b5088cbeb5210a1 100644 --- a/contrib/CrowdCounting/CrowdCount/CrowdCount.cpp +++ b/contrib/CrowdCounting/CrowdCount/CrowdCount.cpp @@ -35,8 +35,13 @@ void CrowdCount::SetCrowdCountPostProcessConfig(const InitParam &initParam, const std::string checkTensor = initParam.checkTensor ? "true" : "false"; configData.SetJsonValue("CHECK_MODEL", checkTensor); configData.SetJsonValue("CLASS_NUM", std::to_string(initParam.classNum)); - auto jsonStr = configData.GetCfgJson().serialize(); - config["postProcessConfigContent"] = jsonStr; + #ifdef MX_VERSION_5 + auto jsonStr = configData.GetCfgJson().serialize(); + config["postProcessConfigContent"] = jsonStr; + #else + auto jsonStr = configData.GetCfgJson(); + config["postProcessConfigContent"] = jsonStr; + #endif } APP_ERROR CrowdCount::Init(const InitParam &initParam) { diff --git a/contrib/CrowdCounting/README.md b/contrib/CrowdCounting/README.md index 00ba8047d03450f2cd8618be01f185a3a3760f71..3688aa36689e3bfd8b0b976844991dfb8d2fb9fd 100644 --- a/contrib/CrowdCounting/README.md +++ b/contrib/CrowdCounting/README.md @@ -1,29 +1,32 @@ # C++ 基于MxBase 的人群计数图像检测样例及后处理模块开发 ## 1 介绍 + +### 1.1 简介 本开发样例是基于mxBase开发的端到端推理的C++应用程序,可在昇腾芯片上进行人群计数目标检测,并把可视化结果保存到本地。开发端到端人群计数-人群密度估计的参考设计,实现图像当中人计数的功能,并达到精度和性能要求。 该Sample的主要处理流程为: Init > ReadImage >Resize > Inference >PostProcess >DeInit -### 1.1 支持的产品 +### 1.2 支持的产品 支持昇腾310芯片 -### 1.2 支持的版本 +### 1.3 支持的版本 -在Atlas产品环境下,通过运行命令: +环境依赖软件和版本如下表: -``` -npu-smi info -``` +表1.1 系统方案中各模块功能: -可以查询支持SDK的版本号 +| 软件名称 | 版本 | 说明 | +| -------- | ----- | ------------------------------------------------------------ | +| mxVision | 5.0.0 | 封装昇腾计算语言(AscendCL)的高级编程API,简化插件和推理应用开发。 | +| CANN | 7.0.0 | 提供昇腾计算语言(AscendCL)的高级编程API。 | -### 1.3 软件方案介绍 +### 1.4 软件方案介绍 人群计数项目实现:输入类型是图片数据(例如jpg格式的图片),通过调用MindX SDK mxBase提供的接口,使用DVPP进行图像解码,解码后获取图像数据,然后经过图像尺寸大小变换,满足模型的输入尺寸要求;将尺寸变换后的图像数据输入人群计数模型进行推理,模型输出经过后处理后,得到人群密度估计图和人计数估计值,输出人计数的估计值。 整个流程需要参考Ascend的参考样例:crowd_count_picture 样例,详见以下链接:https://gitee.com/ascend/samples/tree/master/python/contrib/crowd_count_picture crowd_count_picture 样例是基于ACL实现的,本任务需要参考crowd_count_picture 样例,基于MindX SDK mxBase的接口实现。MindX SDK mxBase是对ACL接口的封装,提供了极简易用的API, 使能AI应用的开发。 -表1.1 系统方案中各模块功能: +表1.2 系统方案中各模块功能: | 序号 | 子系统 | 功能描述 | | ---- | ----------------- | ------------------------------------------------------------ | @@ -35,25 +38,17 @@ npu-smi info | 6 | 保存结果 | 输出图像当中的人的数量,保存标记出人数的结果图像。 | | 7 | 设备去初始化 | 调用mxBase::DeviceManager接口完成推理卡设备的去初始化。 | -### 1.4 代码目录结构与说明 +### 1.5 代码目录结构与说明 本sample工程名称为 **CrowdCounting**,工程目录如下图所示: ![image-20210813152252629](image-20210813152252629.png) -### 1.5 技术实现流程图 +### 1.6 技术实现流程图 ![image-20210813154111508](image-20210813154111508.png) -## 2 环境依赖: - -请列出环境依赖软件和版本。 - -eg:推荐系统为ubuntu 18.04或centos 7.6,环境依赖软件和版本如下表: - -| 软件名称 | 版本 | -| -------- | ------------ | -| 系统软件 | ubuntu 18.04 | +## 2 设置环境变量: 在编译运行项目前,需要设置环境变量: @@ -61,9 +56,13 @@ eg:推荐系统为ubuntu 18.04或centos 7.6,环境依赖软件和版本如 ``` . {cann_install_path}/ascend-toolkit/set_env.sh . {sdk_install_path}/mxVision/set_env.sh + + # 环境变量介绍 + cann_install_path: CANN 安装路径 + sdk_install_path: SDK 安装路径 ``` -## 3 模型转换 +## 3 准备模型 **步骤1** @@ -96,12 +95,4 @@ cd到CrowdCounting目录下,执行如下编译命令: bash build.sh ./crowd_counting ./xxx.jpg ``` -## 5 软件依赖说明 - -| 依赖软件 | 版本 | 说明 | -| -------- | ----- | ------------------------------------------------------------ | -| mxVision | 5.0.0 | 封装昇腾计算语言(AscendCL)的高级编程API,简化插件和推理应用开发。 | -| CANN | 7.0.0 | 提供昇腾计算语言(AscendCL)的高级编程API。 | - - diff --git a/contrib/EdgeDetectionPicture/CMakeLists.txt b/contrib/EdgeDetectionPicture/CMakeLists.txt index 3928c17d701784863e6d9b84789407f27010d495..3dd908ccc45c4f92be7f837b5861f1a5e6ea81bd 100644 --- a/contrib/EdgeDetectionPicture/CMakeLists.txt +++ b/contrib/EdgeDetectionPicture/CMakeLists.txt @@ -11,6 +11,12 @@ add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0 -Dgoogle=mindxsdk_private) set(MX_SDK_HOME "$ENV{MX_SDK_HOME}") +set(cpprest_DIR ${MX_SDK_HOME}/opensource/lib/libcpprest.so) +if(EXISTS ${cpprest_DIR}) + target_link_libraries(edge_detection_picture cpprest) + add_definitions(_DMX_VERSION_5) +endif() + include_directories( ${MX_SDK_HOME}/include ${MX_SDK_HOME}/opensource/include diff --git a/contrib/EdgeDetectionPicture/README.md b/contrib/EdgeDetectionPicture/README.md index e00f69a20be355c1a3d718c2da7393cdb64a5338..ac3b4626a849903a4a74e8c73b1455e34a7e9839 100644 --- a/contrib/EdgeDetectionPicture/README.md +++ b/contrib/EdgeDetectionPicture/README.md @@ -2,17 +2,24 @@ # RCF模型边缘检测 ## 1 介绍 + +#### 1.1 简介 本开发样例是基于mxBase开发的端到端推理的C++应用程序,可在昇腾芯片上进行 图像边缘提取,并把可视化结果保存到本地。 其中包含Rcf模型的后处理模块开发。 主要处理流程为: Init > ReadImage >Resize > Inference >PostProcess >DeInit -#### 1.1 支持的产品 +#### 1.2 支持的产品 昇腾310(推理) -#### 1.2 支持的版本 +#### 1.3 支持的版本 本样例配套的CANN版本为7.0.0,MindX SDK版本为5.0.0 MindX SDK安装前准备可参考《用户指南》,[安装教程](https://gitee.com/ascend/mindxsdk-referenceapps/blob/master/docs/quickStart/1-1%E5%AE%89%E8%A3%85SDK%E5%BC%80%E5%8F%91%E5%A5%97%E4%BB%B6.md) +| 软件 | 版本 | 说明 | +| ------------------- | ------------ | ---------------------------- | +| mxVision | 5.0.0 | mxVision软件包 | +| Ascend-CANN-toolkit | 7.0.0 | Ascend-cann-toolkit开发套件包 | + -#### 1.3 代码目录结构与说明 +#### 1.4 代码目录结构说明 本sample工程名称为EdgeDetectionPicture,工程目录如下图所示: ``` @@ -32,16 +39,7 @@ MindX SDK安装前准备可参考《用户指南》,[安装教程](https://git └── License ``` -## 2 环境依赖 -环境依赖软件和版本如下表: - - - -| 软件 | 版本 | 说明 | 获取方式 | -| ------------------- | ------------ | ----------------------------- | ------------------------------------------------------------ | -| mxVision | 5.0.0 | mxVision软件包 | [链接](https://www.hiascend.com/software/Mindx-sdk) | -| Ascend-CANN-toolkit | 7.0.0 | Ascend-cann-toolkit开发套件包 | [链接](https://www.hiascend.com/software/cann/commercial) | -| 操作系统 | Ubuntu 18.04 | 操作系统 | Ubuntu官网获取 | +## 2 设置环境变量 在编译运行项目前,需要设置环境变量: @@ -50,12 +48,15 @@ MindX SDK安装前准备可参考《用户指南》,[安装教程](https://git ``` . {cann_install_path}/ascend-toolkit/set_env.sh . {sdk_install_path}/mxVision/set_env.sh - + + # 环境变量介绍 + cann_install_path: CANN 安装路径 + sdk_install_path: SDK 安装路径 ``` -## 3 模型转换 +## 3 准备模型 **步骤1** 模型获取 下载RCF模型 。[下载地址](https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/EdgeDetectionPicture/model.zip) @@ -81,7 +82,7 @@ bash build.sh ``` 生成边缘检测图像 result/**.jpg -## 5 精度测试 +## 5 精度验证 下载开源数据集 BSDS500 [下载地址](https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/EdgeDetectionPicture/data.zip), 使用 BSR/BSDS500/data/images/test数据进行测试 @@ -120,7 +121,7 @@ vim eval_edge.py (5) 测试精度 ``` shell -python main.py --result_dir path/to/result --gt_dir paht/to/BSR/BSDS500/data/groundTruth/test +python main.py --result_dir path/to/result --gt_dir path/to/BSR/BSDS500/data/groundTruth/test ``` 注: @@ -129,7 +130,7 @@ python main.py --result_dir path/to/result --gt_dir paht/to/BSR/BSDS500/data/g gt_dir : ground truth directory -## 6常见问题 +## 6 常见问题 ### 6.1 精度测试脚本运行时, ModuleNotFoundError报错问题: 问题描述: 运行精度测试脚本过程中, 出现如下类似报错: @@ -147,4 +148,12 @@ ModuleNotFoundError: No module named 'impl.toolbox' 方法二: 执行命令: unset PYTHONPATH +``` +### 6.2 检测代码无法修改问题: +问题描述: +修改检测代码中, 出现无法修改问题 + +解决措施: +``` +使用 sudo vim filename进行修改 ``` \ No newline at end of file diff --git a/contrib/EdgeDetectionPicture/rcfDetection/RcfDetection.cpp b/contrib/EdgeDetectionPicture/rcfDetection/RcfDetection.cpp index a8a84460c7a506e8b7cf4d34c0da439da1353074..ab1796d7262ff8d7461b8451a5e55e83e4e2e42e 100644 --- a/contrib/EdgeDetectionPicture/rcfDetection/RcfDetection.cpp +++ b/contrib/EdgeDetectionPicture/rcfDetection/RcfDetection.cpp @@ -39,8 +39,13 @@ void RcfDetection::SetRcfPostProcessConfig(const InitParam &initParam, configData.SetJsonValue("MODEL_TYPE", std::to_string(initParam.modelType)); configData.SetJsonValue("INPUT_TYPE", std::to_string(initParam.inputType)); configData.SetJsonValue("CHECK_MODEL", checkTensor); - auto jsonStr = configData.GetCfgJson().serialize(); - config["postProcessConfigContent"] = jsonStr; + #ifdef MX_VERSION_5 + auto jsonStr = configData.GetCfgJson().serialize(); + config["postProcessConfigContent"] = jsonStr; + #else + auto jsonStr = configData.GetCfgJson(); + config["postProcessConfigContent"] = jsonStr; + #endif } APP_ERROR RcfDetection::Init(const InitParam &initParam) diff --git a/contrib/IAT/README.md b/contrib/IAT/README.md index efb46e807d3bd2f0d5c0fa7419c67b94d610d55c..b5be7410685b6e8e91b428513a3f93d3b56ac53d 100644 --- a/contrib/IAT/README.md +++ b/contrib/IAT/README.md @@ -1,28 +1,24 @@ # MindX SDK -- RGB图像的夜间增强参考设计 ## 1 介绍 -基于 MindX SDK 实现 IAT 模型的推理,在 LOL 数据集上达到 $PSNR\ge$23, $SSIM\ge 0.8$, 并把可视化结果保存到本地,达到预期的功能和精度要求。 -### 1.1 支持的产品 +### 1.1 简介 +基于 MindX SDK 实现 IAT 模型的推理,把可视化结果保存到本地。 -支持昇腾310芯片 - -### 1.2 支持的版本 - -支持的SDK版本,列出版本号查询方式。 +### 1.2 支持的产品 -eg:版本号查询方法,在Atlas产品环境下,运行命令: - -``` -npu-smi info -``` - -版本号为Mind SDK 3.0RC3 - -### 1.3 软件方案介绍 +支持昇腾310芯片 -本方案中,将 PyTorch 版本的低光图像增强模型 [IAT](https://github.com/cuiziteng/illumination-adaptive-transformer),转化为昇腾的om模型。对于输入的夜间低照度图像,通过调用昇腾om模型进行处理,最终生成经过低光增强后的图像。 +### 1.3 支持的版本 +| 名称 | 版本 | +| ------------- | ---------------- | +| mxVision | 5.0.0 | +| Python | 3.9.2 | +| CANN | 7.0.0 | +| numpy | 1.22.3 | +| opencv-python | 4.5.5 | +| onnxsim | 0.4.10 | ### 1.4 代码目录结构与说明 @@ -41,31 +37,7 @@ eg:本sample工程名称为XXX,工程目录如下图所示: ``` -### 1.5 技术实现流程图 - -![技术实现流程图](images/技术路线.jpeg) - -### 1.6 特性及适用场景 - -对于夜间图像、低照度图像的增强均使用 - - - -## 2 环境依赖 - -请列出环境依赖软件和版本。 - -eg:推荐系统为ubuntu 18.04或centos 7.6,环境依赖软件和版本如下表: - -| 软件名称 | 版本 | -| ------------- | ---------------- | -| ubuntu | 18.04.1 LTS | -| MindX SDK | mxVision-3.0.RC3 | -| Python | 3.9.2 | -| CANN | 5.1.RC2.alpha008 | -| numpy | 1.22.3 | -| opencv-python | 4.5.5 | -| onnxsim | 0.4.10 | +## 2 设置环境变量 在编译运行项目前,需要设置环境变量: @@ -75,8 +47,11 @@ eg:推荐系统为ubuntu 18.04或centos 7.6,环境依赖软件和版本如 列出具体执行命令(简化) . ${sdk_path}/set_env.sh . ${ascend_toolkit_path}/set_env.sh -``` +# 环境变量介绍 +sdk_path: SDK mxVision安装路径 +ascend_toolkit_path: CANN 安装路径 +``` ## 3 编译与运行 @@ -148,90 +123,3 @@ python main.py 即可在./data/目录下得到推理后的结果. - -## * 4 指标验证 - -### 4.1 模型规模测试 - -模型计算量测试需要利用python相关的模型测试工具 fvcore, 在原模型环境中可以使用以下命令进行安装: - -``` -pip install fvcore -``` - -利用fvcore的相关工具即可测得IAT模型的计算量,测试方法代码如下: - -```python -def evaluate_net(): - from model.IAT_main import IAT - from fvcore.nn import FlopCountAnalysis - - # 创建IAT网络 - model = IAT() - model = model.cuda() - # 创建输入网络的tensor - tensor = torch.rand(1, 3, 400, 600).cuda() - - # 分析FLOPs - flops = FlopCountAnalysis(model, tensor) - print("FLOPs: ", flops.total()) -``` - -测试结果如下: - -![模型计算量](images/模型规模测试.jpeg) - -根据[IAT论文](https://github.com/cuiziteng/illumination-adaptive-transformer)所述,该模型参数量约为90K,通过测试得到计算量约为6.019GFLOPs。 - - - -### 4.2 精度测试 - -**步骤1-3** 与3.1节一致 - -**步骤4** (获取LOL数据集) - -- 下载[LOLv1数据集](https://daooshee.github.io/BMVC2018website/) - -- 将数据集解压后将测试集目录(eval15)放到本项目./data/文件夹下,如下图所示: - - ``` - ├── data - ├──eval15 # 精度测试数据集 - ├──high - ├──low - ``` - -**步骤5** (修改主函数并运行) - -切换到项目环境下,将main.py中的主函数改为调用test_precision(),运行: - -``` -python main.py -``` - -即可得到精度测试结果,测试结果如下: - -![模型计算量](images/精度测试.jpeg) - - - -## 5 参考文献 - -@misc{https://doi.org/10.48550/arxiv.2205.14871, - doi = {10.48550/ARXIV.2205.14871}, - - url = {https://arxiv.org/abs/2205.14871}, - - author = {Cui, Ziteng and Li, Kunchang and Gu, Lin and Su, Shenghan and Gao, Peng and Jiang, Zhengkai and Qiao, Yu and Harada, Tatsuya}, - - keywords = {Computer Vision and Pattern Recognition (cs.CV), FOS: Computer and information sciences, FOS: Computer and information sciences}, - - title = {You Only Need 90K Parameters to Adapt Light: A Light Weight Transformer for Image Enhancement and Exposure Correction}, - - publisher = {arXiv}, - - year = {2022}, - - copyright = {Creative Commons Attribution 4.0 International} -} \ No newline at end of file diff --git a/contrib/TSM/README.md b/contrib/TSM/README.md index 7356a5817e95e3b71e646b78bad726b9b8c5f77f..d3828738caca6c074483be66a1e7f1e8946d3c15 100644 --- a/contrib/TSM/README.md +++ b/contrib/TSM/README.md @@ -1,23 +1,31 @@ # TSM视频分类参考设计 ## 1 介绍 -使用TSM模型,基于Kinetics-400数据集,在MindX SDK环境下实现视频分类功能。将测试视频传入脚本进行前处理,模型推理,后处理等功能,最终得到模型推理的精度和性能。 -### 1.1 支持的产品 +### 1.1 简介 +使用TSM模型,在MindX SDK环境下实现视频分类功能。将测试视频传入脚本进行前处理,模型推理,后处理等功能,最终得到模型推理的结果。 -以昇腾Atlas310卡为主要的硬件平台 +### 1.2 支持的产品 -### 1.2 支持的版本 +以昇腾Atlas310卡为主要的硬件平台 -CANN:7.0.RC1 +### 1.3 支持的版本 +环境依赖软件和版本如下表: -SDK:mxVision 5.0.RC3(可通过cat SDK目录下的 version.info 查看) +| 软件名称 | 版本 | +|----------|--------| +| cmake | 3.5+ | +| mxVision | 5.0.0 | +| CANN | 7.0.0 | +| Python | 3.9 | +| torch | 1.10.0 | +| ffmpeg | 4.2.1 | -### 1.3 软件方案介绍 +### 1.4 软件方案介绍 项目主要由离线精度测试文件,在线功能测试文件,离线单视频推理性能测试文件,模型文件,测试数据集预处理文件组成。 -### 1.4 代码目录结构与说明 +### 1.5 代码目录结构与说明 ```text ├── TSM @@ -37,39 +45,19 @@ SDK:mxVision 5.0.RC3(可通过cat SDK目录下的 version.info 查看) ├── speed_gpu.py // 离线单视频推理GPU性能脚本 ``` -### 1.5技术实现流程 - -离线推理流程: - -![离线推理流程](./offline.png) +### 1.6技术实现流程 在线推理流程: ![离线推理流程](./online.png) -### 1.6特性及适用场景 - -离线模型: - -本案例中的 TSM 模型适用于Kinetics数据集中的400类视频分类,并可以返回测试集视频的精度值及单视频识别的种类、性能。 - -在以下两种情况视频分类情况不太好:1. 视频长度过短(小于3s)。 2. 视频帧率过低。 +### 1.7特性及适用场景 在线模型: 本案例中的在线模型适用于26中手势识别,并可以返回识别手势的名称。 -## 2 环境依赖 - -推荐系统为ubuntu 18.04,环境依赖软件和版本如下表 - -| 软件名称 | 版本 | -|----------|--------| -| cmake | 3.5+ | -| mxVision | 5.0.RC3 | -| Python | 3.9 | -| torch | 1.10.0 | -| ffmpeg | 4.2.1 | +## 2 设置环境变量 - 环境变量搭建 @@ -108,194 +96,7 @@ export PATH=/usr/local/ffmpeg/bin:$PATH export LD_LIBRARY_PATH=/usr/local/ffmpeg/lib:$LD_LIBRARY_PATH ``` -## 3 离线推理 - -**步骤1** Kinetics-400数据集下载 - -参考[Kinetics-400 数据准备](https://github.com/PaddlePaddle/PaddleVideo/blob/develop/docs/zh-CN/dataset/k400.md#%E4%B8%8B%E8%BD%BDvideo%E6%95%B0%E6%8D%AE)中的脚本下载操作,在代码根目录的"download_data"目录下准备"download.sh"数据集下载脚本和"val_link.list"验证集链接列表文件。 - -```text -├── TSM - ├── download_data - ├── download.sh // 下载数据集脚本 - ├── k400_extractor.sh // 解压数据集脚本 - ├── val_link.list -``` - -进入代码根目录的"download_data"目录下,执行以下命令下载数据集压缩包val_part1.tar、val_part2.tar、val_part3.tar: - -```Shell -bash download.sh val_link.list -``` - -然后执行以下命令解压数据集到代码根目录下: - -```Shell -bash k400_extractor.sh -``` - -数据集结构如下: - -```text -├── TSM - ├── data - ├── abseiling - ├── air_drumming - ├── ... - ├── zumba -``` - -**步骤2** 数据集预处理 - -1、视频抽帧 - -在代码根目录执行以下命令创建所需目录: - -```Shell -mkdir tools -mkdir ops -``` - -下载[“temporal-shift-module-master.zip”](https://github.com/mit-han-lab/temporal-shift-module/tree/master)代码包并上传服务器解压,将代码包中"tools"目录下的"vid2img_kinetics.py"、"gen_label_kinetics.py"、"kinetics_label_map.txt"三个文件拷贝至参考设计代码根目录的“tools”目录下。 - -```text -├── 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”目录下。 - -```text - ├── ops - ├── basic_ops.py - ├── dataset.py // 数据集构建脚本 - ├── dataset_config.py // 数据集配置脚本 - ├── models.py // 模型搭建脚本 - ├── temporal_shift.py - ├── transforms.py -``` - -修改“tools”目录下的 vid2img_kinetics.py 内容,将77、78行注释。 - -```text - -77行 #class_name = 'test' -78行 #class_process(dir_path, dst_dir_path, class_name) - -``` - -在参考设计代码根目录下,执行以下命令对数据集视频进行抽帧并生成图片: - -```shell -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 内容。 - -```text - -# 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”目录下,执行以下命令生成标签文件: - -```shell -python3 gen_label_kinetics.py -``` - -**步骤3** 模型转换 - -下载[离线模型](https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/TSM/offline_models.zip) TSM.onnx, 将下载好的模型放在“${TSM代码根目录}/model”目录下。 - -将模型转换为om模型,在“model”目录下,执行以下命令生成om模型 - -```shell -bash onnx2om.sh -``` - -**步骤4** 精度测试 - -修改${TSM代码根目录}/ops/dataset_config.py 脚本中参数root_data、filename_imglist_train和filename_imglist_val,若仅进行离线精度测试则可忽略filename_imglist_train设置。 - -```shell -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 -``` - -在参考设计代码根目录下,运行精度测试脚本 - -```shell -python3 offline_infer.py kinetics -``` - -原模型精度值为71.1%,实测精度值为71.01%,符合精度偏差范围,精度达标。 - -**步骤5** 性能测试 - -将用来测试的单视频放在参考设计代码根目录下,如视频“test_speed.mp4”,运行性能测试脚本 - -修改speed_gpu.py与speed.py参数,'./test_speed.mp4'为测试视频,测试视频类别需在Kinetics-400数据集的400个种类内且视频长度至少为3s。 - -```python -def main(): - cmd = 'ffmpeg -i \"{}\" -threads 1 -vf scale=-1:331 -q:v 0 \"{}/img_%05d.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性能测试脚本 - -```shell -python3 speed_gpu.py kinetics --test_segments=8 --test_crops=1 --batch_size=1 -``` - -注:speed_gpu.py脚本需在GPU环境上运行,NPU环境无法运行。 - -得到单视频纯推理性能为0.08sec/video - -SDK性能 - -在参考设计代码根目录下,运行SDK性能测试脚本 - -```shell -python3 speed.py -``` - -注:speed.py脚本需在NPU环境上运行。 - -得到单视频纯推理性能为0.189sec/video - -## 4 在线推理 +## 3 编译与运行 **步骤1** 安装[视频流工具](https://gitee.com/ascend/docs-openmind/blob/master/guide/mindx/sdk/tutorials/reference_material/Live555%E7%A6%BB%E7%BA%BF%E8%A7%86%E9%A2%91%E8%BD%ACRTSP%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3.md) diff --git a/contrib/VCOD_SLTNet/README.md b/contrib/VCOD_SLTNet/README.md index e7d69da0cc9e498cd21f723cd86ef287262bfd74..6eec8cb1db4dbc035f6f37179cfe38e166e64433 100644 --- a/contrib/VCOD_SLTNet/README.md +++ b/contrib/VCOD_SLTNet/README.md @@ -2,28 +2,40 @@ ## 1 介绍 +### 1.1 简介 + 基于 MindX SDK 实现 SLT-Net 模型的推理,在 MoCA-Mask 数据集上 Sm 达到大于 0.6。输入连续几帧伪装物体的视频序列,输出伪装物体掩膜 Mask 图。 -### 1.1 支持的产品 +### 1.2 支持的产品 支持昇腾310芯片 -### 1.2 支持的版本 - -CANN:7.0.RC1 +### 1.3 支持的版本 -SDK:mxVision 5.0.RC3(可通过cat SDK目录下的 version.info 查看) +| 软件名称 | 版本 | +| -------- | ------ | +| mxVision | 5.0.0 | +| Python | 3.9.2 | +| CANN | 7.0.0 | +| PyTorch | 1.12.1 | +| numpy | 1.21.5 | +| imageio | 2.22.3| +| Pillow | 9.3.0 | +| cv2 | 4.5.5 | +| timm | 0.4.12 | +| tqdm | 4.64.1 | +| mindspore | 2.0.0| -### 1.3 软件方案介绍 +### 1.4 软件方案介绍 -本方案中,先通过 `torch2onnx.py` 脚本将 PyTorch 版本的伪装视频物体检测模型 SLT-Net 转换为 onnx 模型;然后通过 `inference.py` 脚本调用晟腾om模型,将输入视频帧进行图像处理,最终生成视频伪装物体的掩膜 Mask 图。 +本方案中,先通过 `torch2onnx.py` 脚本将 PyTorch 版本的伪装视频物体检测模型 SLT-Net 转换为 onnx 模型;然后通过 `inference.py` 脚本调用昇腾om模型,将输入视频帧进行图像处理,最终生成视频伪装物体的掩膜 Mask 图。 -### 1.4 代码目录结构与说明 +### 1.5 代码目录结构与说明 本sample工程名称为 VCOD_SLTNet,工程目录如下图所示: @@ -36,14 +48,14 @@ SDK:mxVision 5.0.RC3(可通过cat SDK目录下的 version.info 查看) ``` -### 1.5 技术实现流程图 +### 1.6 技术实现流程图 ![Flowchart](./flowchart.jpeg) 图1 视频伪装物体检测流程图 -### 1.6 特性及适用场景 +### 1.7 特性及适用场景 对于伪装视频数据的分割任务均适用,输入视频需要转换为图片序列输入到模型中,具体可以参考 MoCA 数据格式与目录结构(如下所示),详见 [SLT-Net](https://xueliancheng.github.io/SLT-Net-project/) 与 [MoCA 数据集主页](https://www.robots.ox.ac.uk/~vgg/data/MoCA/)。 @@ -63,25 +75,31 @@ SDK:mxVision 5.0.RC3(可通过cat SDK目录下的 version.info 查看) ``` -## 2 环境依赖 +## 2 设置环境变量 -环境依赖软件和版本如下表: +在运行项目前,需要设置环境变量: + +MindSDK 环境变量: + +```Shell +. ${SDK-path}/set_env.sh +``` + +CANN 环境变量: + +```Shell +. ${ascend-toolkit-path}/set_env.sh +``` + +环境变量介绍 + +SDK-path: mxVision SDK 安装路径 + +ascend-toolkit-path: CANN 安装路径。 -| 软件名称 | 版本 | -| -------- | ------ | -| MindX SDK | 5.0.RC3 | -| Python | 3.9.2 | -| CANN | 7.0RC1 | -| PyTorch | 1.12.1 | -| numpy | 1.21.5 | -| imageio | 2.22.3| -| Pillow | 9.3.0 | -| cv2 | 4.5.5 | -| timm | 0.4.12 | -| tqdm | 4.64.1 | -## 3. 数据准备 +## 3. 准备模型 ### 3.1 准备相关文件 @@ -215,7 +233,7 @@ atc --framework=5 --model=sltnet.onnx --output=sltnet --input_shape="image:1,9,3 2. pth模型转onnx模型,onnx模型转om模型,均可能花费约1小时左右,视不同运行环境而定。如无报错,请耐心等待。 -## 4. 运行推理 +## 4. 运行 使用如下命令,运行 `inference.py` 脚本: @@ -253,7 +271,7 @@ device_id:设备编号 将展示剩余运行时间以及生成图片的路径。 -## 5. 精度评估 +## 5. 精度验证 点击访问 [SLT_Net_MindXsdk_torch](https://github.com/shuowang-ai/SLT_Net_MindXsdk_torch) 并下载 `SLT_Net_MindXsdk_torch-master.zip` 代码压缩包,上传服务器并解压获得 `SLT_Net_MindXsdk_torch-master` 目录及相关文件; diff --git a/tutorials/DvppWrapperSample/README.md b/tutorials/DvppWrapperSample/README.md index ce28629639554f0c26d40f03bfcda031a494a9f3..3c113b057874daa2d95ebc91fbf0a500728c8340 100644 --- a/tutorials/DvppWrapperSample/README.md +++ b/tutorials/DvppWrapperSample/README.md @@ -1,16 +1,23 @@ # DvppWrapper接口样例 -## 介绍 +## 1 介绍 + +### 1.1 简介 提供DvppWrapper接口样例,对图片实现编码,解码,缩放,抠图,以及把样例图片编码为264视频文件。 -## 准备 -打开百度图片https://image.baidu.com/,输入任何关键字,然后搜索,右击任意图片,点击另存为。把图片保存在DvppWrapperSample目录下。 +### 1.2 支持的产品 -## 编译与运行 -**步骤1** 修改CMakeLists.txt文件 将set(MX_SDK_HOME ${SDK安装路径}) 中的${SDK安装路径}替换为实际的SDK安装路径 +本项目以昇腾Atlas310卡为主要的硬件平台。 + +### 1.3 支持的版本 + +| 软件名称 | 版本 | +| -------- | ------ | +| mxVision | 5.0.0 | +| CANN | 7.0.0 | -**步骤2** 设置环境变量 +## 2 设置环境变量 ASCEND_HOME Ascend安装的路径,一般为/usr/local/Ascend LD_LIBRARY_PATH 指定程序运行时依赖的动态库查找路径 ``` @@ -20,15 +27,20 @@ export ARCH_PATTERN=. export LD_LIBRARY_PATH=${MX_SDK_HOME}/lib/modelpostprocessors:${MX_SDK_HOME}/lib:${MX_SDK_HOME}/opensource/lib:${MX_SDK_HOME}/opensource/lib64:/usr/local/Ascend/driver/lib64:/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64:/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64:${LD_LIBRARY_PATH} ``` -**步骤3** cd到DvppWrapperSample目录下,执行如下编译命令: +## 3 准备模型 +打开百度图片https://image.baidu.com/,输入任何关键字,然后搜索,右击任意图片,点击另存为。把图片保存在DvppWrapperSample目录下。 + +## 4 编译与运行 +**步骤1** 修改CMakeLists.txt文件 将set(MX_SDK_HOME ${SDK安装路径}) 中的${SDK安装路径}替换为实际的SDK安装路径 + +**步骤2** cd到DvppWrapperSample目录下,执行如下编译命令: ``` mkdir build cd build cmake .. make ``` - -**步骤4** cd到DvppWrapperSample目录下,可看到可执行文件DvppWrapperSample, 实行命令: +**步骤3** cd到DvppWrapperSample目录下,可看到可执行文件DvppWrapperSample, 实行命令: ``` ./DvppWrapperSample ./保存的图片 ``` diff --git a/tutorials/mxBaseSample/README.md b/tutorials/mxBaseSample/README.md index 5defb7274bdc6153293584c05e707bea1eb44d81..431ae7d8f958653bb5d7269c32030fe66faed4d6 100644 --- a/tutorials/mxBaseSample/README.md +++ b/tutorials/mxBaseSample/README.md @@ -1,36 +1,48 @@ # C++ 基于MxBase 的yolov3图像检测样例及yolov3的后处理模块开发 -## 介绍 +## 1 介绍 +### 1.1 简介 本开发样例是基于mxBase开发的端到端推理的C++应用程序,可在昇腾芯片上进行 yolov3 目标检测,并把可视化结果保存到本地。其中包含yolov3的后处理模块开发。 -该Sample的主要处理流程为: -Init > ReadImage >Resize > Inference >PostProcess >DeInit -## 模型转换 +### 1.2 支持的产品 +本项目以昇腾Atlas310p为主要的硬件平台。 +### 1.3 支持的版本 + +| 软件名称 | 版本 | +| -------- | ------ | +| mxVision | 6.0.RC2 | +| CANN | 7.0.0 | + + +## 2 设置环境变量 +确保环境中正确安装mxVision SDK。 + +在编译运行项目前,需要设置环境变量: + +``` +# 设置环境变量 +. ${ascend-toolkit-path}/set_env.sh +. ${SDK-path}/set_env.sh + +# 环境变量介绍 +ascend-toolkit-path: CANN 安装路径 +SDK-path: SDK mxVision 安装路径 +``` + +## 3 准备模型 **步骤1** 模型获取 在ModelZoo上下载YOLOv3模型。[下载地址](https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/ActionRecognition/ATC%20YOLOv3%28FP16%29%20from%20TensorFlow%20-%20Ascend310.zip) **步骤2** 模型存放 将获取到的YOLOv3模型pb文件放至上一级的models文件夹中 **步骤3** 执行模型转换命令 -(1) 配置环境变量 -#### 设置环境变量(请确认install_path路径是否正确) -#### Set environment PATH (Please confirm that the install_path is correct). -```c -export install_path=/usr/local/Ascend/ascend-toolkit/latest -export PATH=/usr/local/python3.9.2/bin:${install_path}/atc/ccec_compiler/bin:${install_path}/atc/bin:$PATH -export PYTHONPATH=${install_path}/atc/python/site-packages:${install_path}/atc/python/site-packages/auto_tune.egg/auto_tune:${install_path}/atc/python/site-packages/schedule_search.egg:$PYTHONPATH -export LD_LIBRARY_PATH=${install_path}/atc/lib64:$LD_LIBRARY_PATH -export ASCEND_OPP_PATH=${install_path}/opp - -``` -(2) 转换模型 ``` atc --model=./yolov3_tf.pb --framework=3 --output=./yolov3_tf_bs1_fp16 --soc_version=Ascend310 --insert_op_conf=./aipp_yolov3_416_416.aippconfig --input_shape="input:1,416,416,3" --out_nodes="yolov3/yolov3_head/Conv_6/BiasAdd:0;yolov3/yolov3_head/Conv_14/BiasAdd:0;yolov3/yolov3_head/Conv_22/BiasAdd:0" ``` -## 编译与运行 +## 4 编译与运行 **步骤1** 修改CMakeLists.txt文件 将set(MX_SDK_HOME ${SDK安装路径}) 中的${SDK安装路径}替换为实际的SDK安装路径 **步骤2** 设置环境变量