From 2398e7964b6e35819f4d3fc01b2fc4623ad9133e Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 12:00:00 +0000 Subject: [PATCH 01/28] update tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp index b8b67efdc..c4869a809 100644 --- a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp +++ b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp @@ -54,7 +54,7 @@ Yolov3PostProcess &Yolov3PostProcess::operator=(const Yolov3PostProcess &other) return *this; } -APP_ERROR Yolov3PostProcess::Init(const std::map> &postConfig) { +APP_ERROR Yolov3PostProcess::Init(const std::map &postConfig) { LogDebug << "Start to Init Yolov3PostProcess."; APP_ERROR ret = ObjectPostProcessBase::Init(postConfig); if (ret != APP_ERR_OK) { -- Gitee From f71c1f6612dd2f59c928f3a73ec45ca8583f7d5e Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 12:00:35 +0000 Subject: [PATCH 02/28] update tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h index ec9f7ca11..738403028 100644 --- a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h +++ b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h @@ -55,7 +55,7 @@ public: Yolov3PostProcess &operator=(const Yolov3PostProcess &other); - APP_ERROR Init(const std::map> &postConfig) override; + APP_ERROR Init(const std::map> &postConfig); APP_ERROR DeInit() override; @@ -63,7 +63,7 @@ public: const std::vector &resizedImageInfos = {}, const std::map> ¶mMap = {}) override; protected: - bool IsValidTensors(const std::vector &tensors) const override; + bool IsValidTensors(const std::vector &tensors) const; void ObjectDetectionOutput(const std::vector &tensors, std::vector> &objectInfos, -- Gitee From d4947e8362164e7b673b6b84aad3b5dc56791e2f Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 12:01:50 +0000 Subject: [PATCH 03/28] update tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- .../mxBaseSample/yolov3Detection/Yolov3Detection.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp index 761be3d81..4551c297a 100644 --- a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp +++ b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp @@ -58,7 +58,7 @@ APP_ERROR Yolov3Detection::LoadLabels(const std::string &labelPath, std::map> &config) { + std::map &config) { MxBase::ConfigData configData; const std::string checkTensor = initParam.checkTensor ? "true" : "false"; configData.SetJsonValue("CLASS_NUM", std::to_string(initParam.classNum)); @@ -73,9 +73,9 @@ void Yolov3Detection::SetYolov3PostProcessConfig(const InitParam &initParam, configData.SetJsonValue("ANCHOR_DIM", std::to_string(initParam.anchorDim)); configData.SetJsonValue("CHECK_MODEL", checkTensor); - auto jsonStr = configData.GetCfgJson().serialize(); - config["postProcessConfigContent"] = std::make_shared(jsonStr); - config["labelPath"] = std::make_shared(initParam.labelPath); + auto jsonStr = configData.GetCfgJson(); + config["postProcessConfigContent"] = *std::make_shared(jsonStr); + config["labelPath"] = *std::make_shared(initParam.labelPath); } APP_ERROR Yolov3Detection::Init(const InitParam &initParam) { @@ -103,7 +103,7 @@ APP_ERROR Yolov3Detection::Init(const InitParam &initParam) { return ret; } - std::map> config; + std::map config; SetYolov3PostProcessConfig(initParam, config); // 初始化yolov3后处理对象 post_ = std::make_shared(); -- Gitee From 28cab675c6cfb42ebbfe1792442d4d3970f9de15 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 12:03:43 +0000 Subject: [PATCH 04/28] update tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.h. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.h b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.h index a0ca54c42..a5afeda30 100644 --- a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.h +++ b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.h @@ -53,7 +53,7 @@ protected: APP_ERROR LoadLabels(const std::string &labelPath, std::map &labelMap); APP_ERROR WriteResult(MxBase::TensorBase &tensor, const std::vector> &objInfos); - void SetYolov3PostProcessConfig(const InitParam &initParam, std::map> &config); + void SetYolov3PostProcessConfig(const InitParam &initParam, std::map &config); private: std::shared_ptr dvppWrapper_; // 封装DVPP基本编码、解码、扣图功能 std::shared_ptr model_; // 模型推理功能处理 -- Gitee From 34f2cf5194e742858d811482ac35a8f225aa6b72 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 12:04:38 +0000 Subject: [PATCH 05/28] update tutorials/mxBaseSample/CMakeLists.txt. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/mxBaseSample/CMakeLists.txt b/tutorials/mxBaseSample/CMakeLists.txt index d09903dea..5d1f13117 100644 --- a/tutorials/mxBaseSample/CMakeLists.txt +++ b/tutorials/mxBaseSample/CMakeLists.txt @@ -8,10 +8,10 @@ include_directories(./yolov3Detection) file(GLOB_RECURSE YOLOV3_POSTPROCESS ${PROJECT_SOURCE_DIR}/yolov3PostProcess/*cpp) file(GLOB_RECURSE YOLOV3_DETECTION ${PROJECT_SOURCE_DIR}/yolov3Detection/*cpp) set(TARGET mxBase_sample) -add_compile_options(-std=c++11 -fPIE -fstack-protector-all -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -s -pie -Wall) +add_compile_options(-std=c++14 -fPIE -fstack-protector-all -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -s -pie -Wall) add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0 -Dgoogle=mindxsdk_private) -set(MX_SDK_HOME ${SDK安装路径}) +set(MX_SDK_HOME "$ENV{MX_SDK_HOME}") include_directories( ${MX_SDK_HOME}/include -- Gitee From c8e590abc2d1fd81dc8714fc2b884f5f1d7632e1 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 12:31:46 +0000 Subject: [PATCH 06/28] update tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h index 738403028..955c23bdd 100644 --- a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h +++ b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h @@ -55,7 +55,7 @@ public: Yolov3PostProcess &operator=(const Yolov3PostProcess &other); - APP_ERROR Init(const std::map> &postConfig); + APP_ERROR Init(const std::map &postConfig); APP_ERROR DeInit() override; -- Gitee From 5bdb23d4e9ff630bb164a1534f6a776710d78510 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 13:16:28 +0000 Subject: [PATCH 07/28] update tutorials/mxBaseSample/build.sh. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/build.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/tutorials/mxBaseSample/build.sh b/tutorials/mxBaseSample/build.sh index df3ce0f2d..c71d50591 100644 --- a/tutorials/mxBaseSample/build.sh +++ b/tutorials/mxBaseSample/build.sh @@ -48,7 +48,6 @@ function build_yolov3() echo "Failed to build yolov3." exit ${ret} fi - make install } check_env -- Gitee From 002145e42d2de8d6341a9b65629dfbc08c719865 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 13:25:27 +0000 Subject: [PATCH 08/28] update tutorials/mxBaseSample/CMakeLists.txt. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tutorials/mxBaseSample/CMakeLists.txt b/tutorials/mxBaseSample/CMakeLists.txt index 5d1f13117..67166fe5f 100644 --- a/tutorials/mxBaseSample/CMakeLists.txt +++ b/tutorials/mxBaseSample/CMakeLists.txt @@ -28,6 +28,13 @@ link_directories( ) add_executable(mxBase_sample main.cpp ${YOLOV3_DETECTION} ${YOLOV3_POSTPROCESS}) + +set(cpprest_DIR ${MX_SDK_HOME}/opensource/lib/libcpprest.so) +if(EXISTS ${cpprest_DIR}) + target_link_libraries(mxBase_sample cpprest) + add_definitions(-DMX_VERSION_5) +endif() + target_link_libraries(mxBase_sample glog mxbase -- Gitee From e8953575e98367b5f60dfa84befb5f7a59f521bc Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 13:27:58 +0000 Subject: [PATCH 09/28] update tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp index 4551c297a..00809e7a6 100644 --- a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp +++ b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp @@ -73,7 +73,11 @@ void Yolov3Detection::SetYolov3PostProcessConfig(const InitParam &initParam, configData.SetJsonValue("ANCHOR_DIM", std::to_string(initParam.anchorDim)); configData.SetJsonValue("CHECK_MODEL", checkTensor); - auto jsonStr = configData.GetCfgJson(); +#ifdef MX_VERSION_5 + auto jsonStr = configData.GetCfgJson().serialize(); +#else + auto jsonStr = configData.GetCfgJson(); +#endif config["postProcessConfigContent"] = *std::make_shared(jsonStr); config["labelPath"] = *std::make_shared(initParam.labelPath); } -- Gitee From 004a3f3ce1715f4ab2035bae16ed84f27ebdb98c Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 13:40:19 +0000 Subject: [PATCH 10/28] update tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp index 00809e7a6..9c780b2e1 100644 --- a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp +++ b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp @@ -58,7 +58,8 @@ APP_ERROR Yolov3Detection::LoadLabels(const std::string &labelPath, std::map &config) { + std::map &config) + { MxBase::ConfigData configData; const std::string checkTensor = initParam.checkTensor ? "true" : "false"; configData.SetJsonValue("CLASS_NUM", std::to_string(initParam.classNum)); -- Gitee From e28c522e9db1615a13a8428fa0a94f34ef6e06c0 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 13:40:59 +0000 Subject: [PATCH 11/28] update tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp index c4869a809..1dd136ff8 100644 --- a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp +++ b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp @@ -54,7 +54,8 @@ Yolov3PostProcess &Yolov3PostProcess::operator=(const Yolov3PostProcess &other) return *this; } -APP_ERROR Yolov3PostProcess::Init(const std::map &postConfig) { +APP_ERROR Yolov3PostProcess::Init(const std::map &postConfig) +{ LogDebug << "Start to Init Yolov3PostProcess."; APP_ERROR ret = ObjectPostProcessBase::Init(postConfig); if (ret != APP_ERR_OK) { -- Gitee From 53ad4e8e2792716edf7046275bf81f48181f023b Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 13:45:40 +0000 Subject: [PATCH 12/28] update tutorials/mxBaseSample/README.md. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/README.md | 86 +++++++++++++++++++------------- 1 file changed, 51 insertions(+), 35 deletions(-) diff --git a/tutorials/mxBaseSample/README.md b/tutorials/mxBaseSample/README.md index 5defb7274..235115f06 100644 --- a/tutorials/mxBaseSample/README.md +++ b/tutorials/mxBaseSample/README.md @@ -1,53 +1,69 @@ +# 基于MxBaseV1接口的yoloV3目标检测 -# C++ 基于MxBase 的yolov3图像检测样例及yolov3的后处理模块开发 +## 1 介绍 +### 1.1 简介 + +开发样例是基于mxBase开发的端到端推理的C++应用程序,通过 yolov3 进行目标检测,并把可视化结果保存到本地。其中包含yolov3的后处理模块开发。 -## 介绍 -本开发样例是基于mxBase开发的端到端推理的C++应用程序,可在昇腾芯片上进行 yolov3 目标检测,并把可视化结果保存到本地。其中包含yolov3的后处理模块开发。 该Sample的主要处理流程为: + Init > ReadImage >Resize > Inference >PostProcess >DeInit -## 模型转换 +### 1.2 支持的产品 -**步骤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** 执行模型转换命令 +本项目支持昇腾Atlas 500 A2。 -(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 +### 1.3 支持的版本 +本样例配套的MxVision版本、CANN版本、Driver/Firmware版本如下所示: -``` -(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" +| MxVision版本 | CANN版本 | Driver/Firmware版本 | +| --------- |---------| -------------- | +| 5.0.0 |7.0.0 | 23.0.0 | +| 6.0.RC3 | 8.0.RC3 | 24.1.RC3 | + +### 1.4 三方依赖 +无 + + +## 2 设置环境变量 + +```bash +#设置CANN环境变量(请确认install_path路径是否正确) +. ${ascend-toolkit-path}/set_env.sh + +#设置MindX SDK 环境变量,SDK-path为mxVision SDK 安装路径 +. ${SDK-path}/set_env.sh ``` -## 编译与运行 -**步骤1** 修改CMakeLists.txt文件 将set(MX_SDK_HOME ${SDK安装路径}) 中的${SDK安装路径}替换为实际的SDK安装路径 -**步骤2** 设置环境变量 -ASCEND_HOME Ascend安装的路径,一般为/usr/local/Ascend -LD_LIBRARY_PATH 指定程序运行时依赖的动态库查找路径,包括ACL,开源软件库,libmxbase.so以及libyolov3postprocess.so的路径 + +## 3 准备模型 + +**步骤1:** 通过[下载地址](https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/ActionRecognition/ATC%20YOLOv3%28FP16%29%20from%20TensorFlow%20-%20Ascend310.zip)下载YOLOv3模型。 + + +**步骤2:** 将获取到的YOLOv3模型的pb文件放在`mxBaseSample/model/`下。 + +**步骤3** 执行模型转换命令 + +```bash +atc --model=./yolov3_tf.pb --framework=3 --output=./yolov3_tf_bs1_fp16 --soc_version=Ascend310B1 --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" ``` -export ASCEND_HOME=/usr/local/Ascend -export ASCEND_VERSION=nnrt/latest -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:${LD_LIBRARY_PATH} +- 执行完模型转换脚本后,若提示如下信息说明模型转换成功,并可以在`mxBaseSample/model/`下找到名为`yolov3_tf_bs1_fp16.om`模型文件。 + ``` +ATC run success, welcome to the next use. +``` -**步骤3** cd到mxbase目录下,执行如下编译命令: +## 4 编译与运行 +**步骤1:** 在`mxBaseSample/`下执行如下编译命令: +```bash bash build.sh - -**步骤4** 制定jpg图片进行推理,准备一张推理图片放入mxbase 目录下。eg:推理图片为test.jpg -cd 到mxbase 目录下 ``` +**步骤2:** 将jpg格式的推理图片命名为`test.jpg`, 并放入`mxBaseSample/`目录下,执行: +```bash ./mxBase_sample ./test.jpg ``` +**步骤3:** 查看结果 + +结果以`result.jpg`的形式保存在`mxBaseSample/`目录下。 -- Gitee From 74b86bbc976a8b0d8c0352761940c83b99aaee23 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 13:48:40 +0000 Subject: [PATCH 13/28] update tutorials/mxBaseSample/README.md. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/README.md b/tutorials/mxBaseSample/README.md index 235115f06..db144c60e 100644 --- a/tutorials/mxBaseSample/README.md +++ b/tutorials/mxBaseSample/README.md @@ -51,7 +51,7 @@ atc --model=./yolov3_tf.pb --framework=3 --output=./yolov3_tf_bs1_fp16 --soc_ver ``` - 执行完模型转换脚本后,若提示如下信息说明模型转换成功,并可以在`mxBaseSample/model/`下找到名为`yolov3_tf_bs1_fp16.om`模型文件。 -``` +```bash ATC run success, welcome to the next use. ``` @@ -67,3 +67,4 @@ bash build.sh **步骤3:** 查看结果 结果以`result.jpg`的形式保存在`mxBaseSample/`目录下。 + -- Gitee From 29ad6cadc8ffd017683d7c1bc47b454c1adce080 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 2 Dec 2024 13:52:18 +0000 Subject: [PATCH 14/28] update tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp index 1dd136ff8..043de0d86 100644 --- a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp +++ b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp @@ -55,7 +55,7 @@ Yolov3PostProcess &Yolov3PostProcess::operator=(const Yolov3PostProcess &other) } APP_ERROR Yolov3PostProcess::Init(const std::map &postConfig) -{ + { LogDebug << "Start to Init Yolov3PostProcess."; APP_ERROR ret = ObjectPostProcessBase::Init(postConfig); if (ret != APP_ERR_OK) { -- Gitee From 4894e720742d59b6c18b5db91abcfcaa78e16030 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 01:27:08 +0000 Subject: [PATCH 15/28] update tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp index 9c780b2e1..3f646b471 100644 --- a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp +++ b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp @@ -58,8 +58,7 @@ APP_ERROR Yolov3Detection::LoadLabels(const std::string &labelPath, std::map &config) - { + std::map &config) { MxBase::ConfigData configData; const std::string checkTensor = initParam.checkTensor ? "true" : "false"; configData.SetJsonValue("CLASS_NUM", std::to_string(initParam.classNum)); -- Gitee From eccd27153cf88d62b9d47e7132b88733788e0f00 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 01:28:12 +0000 Subject: [PATCH 16/28] update tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp index 043de0d86..c4869a809 100644 --- a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp +++ b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp @@ -54,8 +54,7 @@ Yolov3PostProcess &Yolov3PostProcess::operator=(const Yolov3PostProcess &other) return *this; } -APP_ERROR Yolov3PostProcess::Init(const std::map &postConfig) - { +APP_ERROR Yolov3PostProcess::Init(const std::map &postConfig) { LogDebug << "Start to Init Yolov3PostProcess."; APP_ERROR ret = ObjectPostProcessBase::Init(postConfig); if (ret != APP_ERR_OK) { -- Gitee From 9f2669e28501b139f48b247f7e16fcf1cbcdcafc Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 01:38:12 +0000 Subject: [PATCH 17/28] update tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp index c4869a809..1dd136ff8 100644 --- a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp +++ b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp @@ -54,7 +54,8 @@ Yolov3PostProcess &Yolov3PostProcess::operator=(const Yolov3PostProcess &other) return *this; } -APP_ERROR Yolov3PostProcess::Init(const std::map &postConfig) { +APP_ERROR Yolov3PostProcess::Init(const std::map &postConfig) +{ LogDebug << "Start to Init Yolov3PostProcess."; APP_ERROR ret = ObjectPostProcessBase::Init(postConfig); if (ret != APP_ERR_OK) { -- Gitee From 0d0ad68314eb0f06df47bc7b4bd322f002a93d7d Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 01:38:38 +0000 Subject: [PATCH 18/28] update tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp index 3f646b471..b753a13d2 100644 --- a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp +++ b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp @@ -58,7 +58,8 @@ APP_ERROR Yolov3Detection::LoadLabels(const std::string &labelPath, std::map &config) { + std::map &config) +{ MxBase::ConfigData configData; const std::string checkTensor = initParam.checkTensor ? "true" : "false"; configData.SetJsonValue("CLASS_NUM", std::to_string(initParam.classNum)); -- Gitee From 6a3a94c287fbe96f47ecc575e2bd244141cb7749 Mon Sep 17 00:00:00 2001 From: anan505 Date: Tue, 3 Dec 2024 09:45:52 +0800 Subject: [PATCH 19/28] mxBaseSample --- tutorials/mxBaseSample/CMakeLists.txt | 11 ++- tutorials/mxBaseSample/README.md | 86 +++++++++++-------- tutorials/mxBaseSample/build.sh | 1 - .../yolov3Detection/Yolov3Detection.cpp | 15 ++-- .../yolov3Detection/Yolov3Detection.h | 2 +- .../yolov3PostProcess/Yolov3PostProcess.cpp | 3 +- .../yolov3PostProcess/Yolov3PostProcess.h | 4 +- 7 files changed, 75 insertions(+), 47 deletions(-) diff --git a/tutorials/mxBaseSample/CMakeLists.txt b/tutorials/mxBaseSample/CMakeLists.txt index d09903dea..67166fe5f 100644 --- a/tutorials/mxBaseSample/CMakeLists.txt +++ b/tutorials/mxBaseSample/CMakeLists.txt @@ -8,10 +8,10 @@ include_directories(./yolov3Detection) file(GLOB_RECURSE YOLOV3_POSTPROCESS ${PROJECT_SOURCE_DIR}/yolov3PostProcess/*cpp) file(GLOB_RECURSE YOLOV3_DETECTION ${PROJECT_SOURCE_DIR}/yolov3Detection/*cpp) set(TARGET mxBase_sample) -add_compile_options(-std=c++11 -fPIE -fstack-protector-all -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -s -pie -Wall) +add_compile_options(-std=c++14 -fPIE -fstack-protector-all -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -s -pie -Wall) add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0 -Dgoogle=mindxsdk_private) -set(MX_SDK_HOME ${SDK安装路径}) +set(MX_SDK_HOME "$ENV{MX_SDK_HOME}") include_directories( ${MX_SDK_HOME}/include @@ -28,6 +28,13 @@ link_directories( ) add_executable(mxBase_sample main.cpp ${YOLOV3_DETECTION} ${YOLOV3_POSTPROCESS}) + +set(cpprest_DIR ${MX_SDK_HOME}/opensource/lib/libcpprest.so) +if(EXISTS ${cpprest_DIR}) + target_link_libraries(mxBase_sample cpprest) + add_definitions(-DMX_VERSION_5) +endif() + target_link_libraries(mxBase_sample glog mxbase diff --git a/tutorials/mxBaseSample/README.md b/tutorials/mxBaseSample/README.md index 5defb7274..0b9652925 100644 --- a/tutorials/mxBaseSample/README.md +++ b/tutorials/mxBaseSample/README.md @@ -1,53 +1,69 @@ +# 基于MxBaseV1接口的yoloV3目标检测 -# C++ 基于MxBase 的yolov3图像检测样例及yolov3的后处理模块开发 +## 1 介绍 +### 1.1 简介 + +开发样例是基于mxBase开发的端到端推理的C++应用程序,通过 yolov3 进行目标检测,并把可视化结果保存到本地。其中包含yolov3的后处理模块开发。 -## 介绍 -本开发样例是基于mxBase开发的端到端推理的C++应用程序,可在昇腾芯片上进行 yolov3 目标检测,并把可视化结果保存到本地。其中包含yolov3的后处理模块开发。 该Sample的主要处理流程为: + Init > ReadImage >Resize > Inference >PostProcess >DeInit -## 模型转换 +### 1.2 支持的产品 -**步骤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** 执行模型转换命令 +本项目支持昇腾Atlas 500 A2。 -(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 +### 1.3 支持的版本 +本样例配套的MxVision版本、CANN版本、Driver/Firmware版本如下所示: -``` -(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" +| MxVision版本 | CANN版本 | Driver/Firmware版本 | +| --------- |---------| -------------- | +| 5.0.0 |7.0.0 | 23.0.0 | +| 6.0.RC3 | 8.0.RC3 | 24.1.RC3 | + +### 1.4 三方依赖 +无 + + +## 2 设置环境变量 + +```bash +#设置CANN环境变量(请确认install_path路径是否正确) +. ${ascend-toolkit-path}/set_env.sh + +#设置MindX SDK 环境变量,SDK-path为mxVision SDK 安装路径 +. ${SDK-path}/set_env.sh ``` -## 编译与运行 -**步骤1** 修改CMakeLists.txt文件 将set(MX_SDK_HOME ${SDK安装路径}) 中的${SDK安装路径}替换为实际的SDK安装路径 -**步骤2** 设置环境变量 -ASCEND_HOME Ascend安装的路径,一般为/usr/local/Ascend -LD_LIBRARY_PATH 指定程序运行时依赖的动态库查找路径,包括ACL,开源软件库,libmxbase.so以及libyolov3postprocess.so的路径 + +## 3 准备模型 + +**步骤1:** 通过[下载地址](https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/ActionRecognition/ATC%20YOLOv3%28FP16%29%20from%20TensorFlow%20-%20Ascend310.zip)下载YOLOv3模型。 + + +**步骤2:** 将获取到的YOLOv3模型的pb文件放在`mxBaseSample/model/`下。 + +**步骤3** 执行模型转换命令 + +```bash +atc --model=./yolov3_tf.pb --framework=3 --output=./yolov3_tf_bs1_fp16 --soc_version=Ascend310B1 --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" ``` -export ASCEND_HOME=/usr/local/Ascend -export ASCEND_VERSION=nnrt/latest -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:${LD_LIBRARY_PATH} +- 执行完模型转换脚本后,若提示如下信息说明模型转换成功,并可以在`mxBaseSample/model/`下找到名为`yolov3_tf_bs1_fp16.om`模型文件。 + ``` +ATC run success, welcome to the next use. +``` -**步骤3** cd到mxbase目录下,执行如下编译命令: +## 4 编译与运行 +**步骤1:** 在`mxBaseSample/`下执行如下编译命令: +```bash bash build.sh - -**步骤4** 制定jpg图片进行推理,准备一张推理图片放入mxbase 目录下。eg:推理图片为test.jpg -cd 到mxbase 目录下 ``` +**步骤2:** 将jpg格式的推理图片命名为`test.jpg`, 并放入`mxBaseSample/`目录下,执行: +```bash ./mxBase_sample ./test.jpg ``` +**步骤3:** 查看结果 + +结果以`result.jpg`的形式保存在`mxBaseSample/`目录下。 \ No newline at end of file diff --git a/tutorials/mxBaseSample/build.sh b/tutorials/mxBaseSample/build.sh index df3ce0f2d..c71d50591 100644 --- a/tutorials/mxBaseSample/build.sh +++ b/tutorials/mxBaseSample/build.sh @@ -48,7 +48,6 @@ function build_yolov3() echo "Failed to build yolov3." exit ${ret} fi - make install } check_env diff --git a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp index 761be3d81..b753a13d2 100644 --- a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp +++ b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp @@ -58,7 +58,8 @@ APP_ERROR Yolov3Detection::LoadLabels(const std::string &labelPath, std::map> &config) { + std::map &config) +{ MxBase::ConfigData configData; const std::string checkTensor = initParam.checkTensor ? "true" : "false"; configData.SetJsonValue("CLASS_NUM", std::to_string(initParam.classNum)); @@ -73,9 +74,13 @@ void Yolov3Detection::SetYolov3PostProcessConfig(const InitParam &initParam, configData.SetJsonValue("ANCHOR_DIM", std::to_string(initParam.anchorDim)); configData.SetJsonValue("CHECK_MODEL", checkTensor); - auto jsonStr = configData.GetCfgJson().serialize(); - config["postProcessConfigContent"] = std::make_shared(jsonStr); - config["labelPath"] = std::make_shared(initParam.labelPath); +#ifdef MX_VERSION_5 + auto jsonStr = configData.GetCfgJson().serialize(); +#else + auto jsonStr = configData.GetCfgJson(); +#endif + config["postProcessConfigContent"] = *std::make_shared(jsonStr); + config["labelPath"] = *std::make_shared(initParam.labelPath); } APP_ERROR Yolov3Detection::Init(const InitParam &initParam) { @@ -103,7 +108,7 @@ APP_ERROR Yolov3Detection::Init(const InitParam &initParam) { return ret; } - std::map> config; + std::map config; SetYolov3PostProcessConfig(initParam, config); // 初始化yolov3后处理对象 post_ = std::make_shared(); diff --git a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.h b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.h index a0ca54c42..a5afeda30 100644 --- a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.h +++ b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.h @@ -53,7 +53,7 @@ protected: APP_ERROR LoadLabels(const std::string &labelPath, std::map &labelMap); APP_ERROR WriteResult(MxBase::TensorBase &tensor, const std::vector> &objInfos); - void SetYolov3PostProcessConfig(const InitParam &initParam, std::map> &config); + void SetYolov3PostProcessConfig(const InitParam &initParam, std::map &config); private: std::shared_ptr dvppWrapper_; // 封装DVPP基本编码、解码、扣图功能 std::shared_ptr model_; // 模型推理功能处理 diff --git a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp index b8b67efdc..1dd136ff8 100644 --- a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp +++ b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp @@ -54,7 +54,8 @@ Yolov3PostProcess &Yolov3PostProcess::operator=(const Yolov3PostProcess &other) return *this; } -APP_ERROR Yolov3PostProcess::Init(const std::map> &postConfig) { +APP_ERROR Yolov3PostProcess::Init(const std::map &postConfig) +{ LogDebug << "Start to Init Yolov3PostProcess."; APP_ERROR ret = ObjectPostProcessBase::Init(postConfig); if (ret != APP_ERR_OK) { diff --git a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h index ec9f7ca11..955c23bdd 100644 --- a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h +++ b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h @@ -55,7 +55,7 @@ public: Yolov3PostProcess &operator=(const Yolov3PostProcess &other); - APP_ERROR Init(const std::map> &postConfig) override; + APP_ERROR Init(const std::map &postConfig); APP_ERROR DeInit() override; @@ -63,7 +63,7 @@ public: const std::vector &resizedImageInfos = {}, const std::map> ¶mMap = {}) override; protected: - bool IsValidTensors(const std::vector &tensors) const override; + bool IsValidTensors(const std::vector &tensors) const; void ObjectDetectionOutput(const std::vector &tensors, std::vector> &objectInfos, -- Gitee From 570c65373a7be552ef220b151ad93881b101ee77 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 02:22:38 +0000 Subject: [PATCH 20/28] update tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp index b753a13d2..0d34d2ed9 100644 --- a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp +++ b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp @@ -57,8 +57,7 @@ APP_ERROR Yolov3Detection::LoadLabels(const std::string &labelPath, std::map &config) +void Yolov3Detection::SetYolov3PostProcessConfig(const InitParam &initParam, std::map &config) { MxBase::ConfigData configData; const std::string checkTensor = initParam.checkTensor ? "true" : "false"; -- Gitee From 57cda8eed02134971a8aaef67b0fa26584927c66 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 02:24:11 +0000 Subject: [PATCH 21/28] update tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp index 1dd136ff8..0e8dc469b 100644 --- a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp +++ b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp @@ -54,7 +54,7 @@ Yolov3PostProcess &Yolov3PostProcess::operator=(const Yolov3PostProcess &other) return *this; } -APP_ERROR Yolov3PostProcess::Init(const std::map &postConfig) +APP_ERROR Yolov3PostProcess::Init(const std::map& postConfig) { LogDebug << "Start to Init Yolov3PostProcess."; APP_ERROR ret = ObjectPostProcessBase::Init(postConfig); -- Gitee From d7a03f13ce44935f8ddd30953909811faea0a8e7 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 02:58:17 +0000 Subject: [PATCH 22/28] update tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp index 0d34d2ed9..1ad74ae5c 100644 --- a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp +++ b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp @@ -57,8 +57,8 @@ APP_ERROR Yolov3Detection::LoadLabels(const std::string &labelPath, std::map &config) -{ +void Yolov3Detection::SetYolov3PostProcessConfig( + const InitParam &initParam, std::map &config) { MxBase::ConfigData configData; const std::string checkTensor = initParam.checkTensor ? "true" : "false"; configData.SetJsonValue("CLASS_NUM", std::to_string(initParam.classNum)); -- Gitee From 248ae68b43c127b6d29a974a960c9b453f6174bc Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 03:00:00 +0000 Subject: [PATCH 23/28] update tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp index 0e8dc469b..f2cc56222 100644 --- a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp +++ b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.cpp @@ -54,7 +54,7 @@ Yolov3PostProcess &Yolov3PostProcess::operator=(const Yolov3PostProcess &other) return *this; } -APP_ERROR Yolov3PostProcess::Init(const std::map& postConfig) +APP_ERROR Yolov3PostProcess::Init(const std::map& postConfig) { LogDebug << "Start to Init Yolov3PostProcess."; APP_ERROR ret = ObjectPostProcessBase::Init(postConfig); -- Gitee From a5ca385058d6b10c15c75811227c7a2e4db3176d Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 03:07:50 +0000 Subject: [PATCH 24/28] update tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp index 1ad74ae5c..3f646b471 100644 --- a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp +++ b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp @@ -57,8 +57,8 @@ APP_ERROR Yolov3Detection::LoadLabels(const std::string &labelPath, std::map &config) { +void Yolov3Detection::SetYolov3PostProcessConfig(const InitParam &initParam, + std::map &config) { MxBase::ConfigData configData; const std::string checkTensor = initParam.checkTensor ? "true" : "false"; configData.SetJsonValue("CLASS_NUM", std::to_string(initParam.classNum)); -- Gitee From e4117bfe82804c5c02f09dd3afe0041088d9986e Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 03:12:40 +0000 Subject: [PATCH 25/28] update tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp index 3f646b471..a5313e014 100644 --- a/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp +++ b/tutorials/mxBaseSample/yolov3Detection/Yolov3Detection.cpp @@ -58,7 +58,8 @@ APP_ERROR Yolov3Detection::LoadLabels(const std::string &labelPath, std::map &config) { + std::map &config) +{ MxBase::ConfigData configData; const std::string checkTensor = initParam.checkTensor ? "true" : "false"; configData.SetJsonValue("CLASS_NUM", std::to_string(initParam.classNum)); -- Gitee From f926cbaf5014aac4868b4b837faa0a79910df710 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 03:38:52 +0000 Subject: [PATCH 26/28] update tutorials/mxBaseSample/README.md. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tutorials/mxBaseSample/README.md b/tutorials/mxBaseSample/README.md index 82750cf17..7484e0348 100644 --- a/tutorials/mxBaseSample/README.md +++ b/tutorials/mxBaseSample/README.md @@ -44,7 +44,7 @@ Init > ReadImage >Resize > Inference >PostProcess >DeInit **步骤2:** 将获取到的YOLOv3模型的pb文件放在`mxBaseSample/model/`下。 -**步骤3** 执行模型转换命令 +**步骤3:** 在`mxBaseSample/model/`下执行模型转换命令 ```bash atc --model=./yolov3_tf.pb --framework=3 --output=./yolov3_tf_bs1_fp16 --soc_version=Ascend310B1 --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" @@ -60,13 +60,12 @@ ATC run success, welcome to the next use. ```bash bash build.sh ``` -**步骤2:** 将jpg格式的推理图片命名为`test.jpg`, 并放入`mxBaseSample/`目录下,执行: +**步骤2:** 准备推理图片 + +准备一张jpg格式的推理图片并命名为`test.jpg`, 并放入`mxBaseSample/`目录下,执行: ```bash ./mxBase_sample ./test.jpg ``` **步骤3:** 查看结果 结果以`result.jpg`的形式保存在`mxBaseSample/`目录下。 - - -结果以`result.jpg`的形式保存在`mxBaseSample/`目录下。 \ No newline at end of file -- Gitee From 088bd0ef0f2ea811cb14e6f282e534298580c90d Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 06:13:31 +0000 Subject: [PATCH 27/28] update tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h index 955c23bdd..d098c6338 100644 --- a/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h +++ b/tutorials/mxBaseSample/yolov3PostProcess/Yolov3PostProcess.h @@ -55,7 +55,7 @@ public: Yolov3PostProcess &operator=(const Yolov3PostProcess &other); - APP_ERROR Init(const std::map &postConfig); + APP_ERROR Init(const std::map &postConfig) override; APP_ERROR DeInit() override; -- Gitee From 3a36b2a55aee0cfaae17a98aee61db7fee85d16a Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Tue, 3 Dec 2024 07:03:26 +0000 Subject: [PATCH 28/28] update tutorials/mxBaseSample/README.md. Signed-off-by: anan505 <1204828624@qq.com> --- tutorials/mxBaseSample/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/mxBaseSample/README.md b/tutorials/mxBaseSample/README.md index 7484e0348..f48533c8a 100644 --- a/tutorials/mxBaseSample/README.md +++ b/tutorials/mxBaseSample/README.md @@ -44,7 +44,7 @@ Init > ReadImage >Resize > Inference >PostProcess >DeInit **步骤2:** 将获取到的YOLOv3模型的pb文件放在`mxBaseSample/model/`下。 -**步骤3:** 在`mxBaseSample/model/`下执行模型转换命令 +**步骤3:** 在`mxBaseSample/model/`下执行模型转换命令 ```bash atc --model=./yolov3_tf.pb --framework=3 --output=./yolov3_tf_bs1_fp16 --soc_version=Ascend310B1 --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" -- Gitee