From 69bbbed2f4dcfdef59943ce35db32f0aebebf587 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 25 Nov 2024 06:50:53 +0000 Subject: [PATCH 1/4] update mxVision/YoloV3Infer/README.md. Signed-off-by: anan505 <1204828624@qq.com> --- mxVision/YoloV3Infer/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mxVision/YoloV3Infer/README.md b/mxVision/YoloV3Infer/README.md index 4ea5b8b00..194618b2e 100644 --- a/mxVision/YoloV3Infer/README.md +++ b/mxVision/YoloV3Infer/README.md @@ -1,4 +1,4 @@ -# 基于C++ V2接口的yoloV3推理 +# 基于MxBaseV2接口的yoloV3目标检测 ## 1 介绍 ### 1.1 简介 -- Gitee From faccf26b3aa6c98a7cd52ab94efb8dd7024ac8d0 Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 25 Nov 2024 06:53:05 +0000 Subject: [PATCH 2/4] update mxVision/YoloV3Infer/main.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- mxVision/YoloV3Infer/main.cpp | 169 ++++++++++++++++------------------ 1 file changed, 81 insertions(+), 88 deletions(-) diff --git a/mxVision/YoloV3Infer/main.cpp b/mxVision/YoloV3Infer/main.cpp index 361bfc2b1..371e07a5f 100644 --- a/mxVision/YoloV3Infer/main.cpp +++ b/mxVision/YoloV3Infer/main.cpp @@ -142,105 +142,98 @@ APP_ERROR YoloV3PostProcess(ImageInfo imageInfo, std::string& yoloV3ConfigPath, return ret; }; -int main(int argc, char* argv[]) -{ - if (argc <= 1) +int main(int argc, char* argv[]){ + MxBase::MxInit(); { - LogWarn << "Please input image path, such as './cppv2_sample test.jpg'."; - return APP_ERR_OK; - } - std::string imgPath = argv[1]; - APP_ERROR ret; - - // *****1初始化模型推理 - V2Param v2Param; - InitV2Param(v2Param); - int32_t deviceId = v2Param.deviceId; - std::string modelPath = v2Param.modelPath; - - // global init - ret = MxInit(); - if (ret != APP_ERR_OK) - { - LogError << "MxInit failed, ret=" << ret << "."; - } + if (argc <= 1) + { + LogWarn << "Please input image path, such as './cppv2_sample test.jpg'."; + return APP_ERR_OK; + } + std::string imgPath = argv[1]; + APP_ERROR ret; + + // *****1初始化模型推理 + V2Param v2Param; + InitV2Param(v2Param); + int32_t deviceId = v2Param.deviceId; + std::string modelPath = v2Param.modelPath; + + // global init + ret = MxInit(); + if (ret != APP_ERR_OK) + { + LogError << "MxInit failed, ret=" << ret << "."; + } - // imageProcess init - MxBase::ImageProcessor imageProcessor(deviceId); + // imageProcess init + MxBase::ImageProcessor imageProcessor(deviceId); - // model init - MxBase::Model yoloV3(modelPath, deviceId); + // model init + MxBase::Model yoloV3(modelPath, deviceId); - // *****2读取图片 - MxBase::Image decodedImage; - ret = imageProcessor.Decode(imgPath, decodedImage, ImageFormat::YUV_SP_420); - if (ret != APP_ERR_OK) - { - LogError << "Decode failed, ret=" << ret; - return ret; - } + // *****2读取图片 + MxBase::Image decodedImage; + ret = imageProcessor.Decode(imgPath, decodedImage, ImageFormat::YUV_SP_420); + if (ret != APP_ERR_OK) + { + LogError << "Decode failed, ret=" << ret; + return ret; + } - // *****3缩放图片 - MxBase::Image resizeImage; - // set size param - Size resizeConfig(YOLOV3_RESIZE, YOLOV3_RESIZE); + // *****3缩放图片 + MxBase::Image resizeImage; + // set size param + Size resizeConfig(YOLOV3_RESIZE, YOLOV3_RESIZE); - ret = imageProcessor.Resize(decodedImage, resizeConfig, resizeImage, Interpolation::HUAWEI_HIGH_ORDER_FILTER); - if (ret != APP_ERR_OK) - { - LogError << "Resize failed, ret=" << ret; - return ret; - } + ret = imageProcessor.Resize(decodedImage, resizeConfig, resizeImage, Interpolation::HUAWEI_HIGH_ORDER_FILTER); + if (ret != APP_ERR_OK) + { + LogError << "Resize failed, ret=" << ret; + return ret; + } - // save resize image - std::string path = "./resized_yolov3_416.jpg"; - ret = imageProcessor.Encode(resizeImage, path); - if (ret != APP_ERR_OK) - { - LogError << "Encode failed, ret=" << ret; - return ret; - } + // save resize image + std::string path = "./resized_yolov3_416.jpg"; + ret = imageProcessor.Encode(resizeImage, path); + if (ret != APP_ERR_OK) + { + LogError << "Encode failed, ret=" << ret; + return ret; + } - // *****4模型推理 - Tensor tensorImg = resizeImage.ConvertToTensor(); - ret = tensorImg.ToDevice(deviceId); - if (ret != APP_ERR_OK) - { - LogError << "ToDevice failed, ret=" << ret; - return ret; - } + // *****4模型推理 + Tensor tensorImg = resizeImage.ConvertToTensor(); + ret = tensorImg.ToDevice(deviceId); + if (ret != APP_ERR_OK) + { + LogError << "ToDevice failed, ret=" << ret; + return ret; + } - // make infer input - std::vector yoloV3Inputs = {tensorImg}; - // do infer - std::vector yoloV3Outputs = yoloV3.Infer(yoloV3Inputs); - std::cout << "yoloV3Outputs len=" << yoloV3Outputs.size() << std::endl; + // make infer input + std::vector yoloV3Inputs = {tensorImg}; + // do infer + std::vector yoloV3Outputs = yoloV3.Infer(yoloV3Inputs); + std::cout << "yoloV3Outputs len=" << yoloV3Outputs.size() << std::endl; - // !move result to host! - for (auto output : yoloV3Outputs) - { - output.ToHost(); - } + // !move result to host! + for (auto output : yoloV3Outputs) + { + output.ToHost(); + } - // *****5模型后处理 - ImageInfo imageInfo; - imageInfo.oriImagePath = argv[1]; - imageInfo.oriImage = decodedImage; - - ret = YoloV3PostProcess(imageInfo, v2Param.configPath, v2Param.labelPath, yoloV3Outputs); - if (ret != APP_ERR_OK) - { - LogError << "YoloV3PostProcess execute failed, ret=" << ret; - return ret; - } + // *****5模型后处理 + ImageInfo imageInfo; + imageInfo.oriImagePath = argv[1]; + imageInfo.oriImage = decodedImage; - // deinit - ret = MxDeInit(); - if (ret != APP_ERR_OK) - { - LogError << "MxDeInit failed, ret=" << ret << "."; - return ret; + ret = YoloV3PostProcess(imageInfo, v2Param.configPath, v2Param.labelPath, yoloV3Outputs); + if (ret != APP_ERR_OK) + { + LogError << "YoloV3PostProcess execute failed, ret=" << ret; + return ret; + } } - - return APP_ERR_OK; + MxBase::MxDeInit(); }; \ No newline at end of file -- Gitee From 8cf6c89c73fcff63c7e9266f378d757fa94cdb0d Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 25 Nov 2024 07:19:24 +0000 Subject: [PATCH 3/4] update mxVision/YoloV3Infer/main.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- mxVision/YoloV3Infer/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mxVision/YoloV3Infer/main.cpp b/mxVision/YoloV3Infer/main.cpp index 371e07a5f..683ff3d1c 100644 --- a/mxVision/YoloV3Infer/main.cpp +++ b/mxVision/YoloV3Infer/main.cpp @@ -142,7 +142,8 @@ APP_ERROR YoloV3PostProcess(ImageInfo imageInfo, std::string& yoloV3ConfigPath, return ret; }; -int main(int argc, char* argv[]){ +int main(int argc, char* argv[]) +{ MxBase::MxInit(); { if (argc <= 1) -- Gitee From 24e5ac4427ef8a5a45d0cfe428464434b1630d2c Mon Sep 17 00:00:00 2001 From: anan505 <1204828624@qq.com> Date: Mon, 25 Nov 2024 07:31:41 +0000 Subject: [PATCH 4/4] update mxVision/YoloV3Infer/main.cpp. Signed-off-by: anan505 <1204828624@qq.com> --- mxVision/YoloV3Infer/main.cpp | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/mxVision/YoloV3Infer/main.cpp b/mxVision/YoloV3Infer/main.cpp index 683ff3d1c..4a994179f 100644 --- a/mxVision/YoloV3Infer/main.cpp +++ b/mxVision/YoloV3Infer/main.cpp @@ -146,8 +146,7 @@ int main(int argc, char* argv[]) { MxBase::MxInit(); { - if (argc <= 1) - { + if (argc <= 1) { LogWarn << "Please input image path, such as './cppv2_sample test.jpg'."; return APP_ERR_OK; } @@ -162,8 +161,7 @@ int main(int argc, char* argv[]) // global init ret = MxInit(); - if (ret != APP_ERR_OK) - { + if (ret != APP_ERR_OK) { LogError << "MxInit failed, ret=" << ret << "."; } @@ -176,8 +174,7 @@ int main(int argc, char* argv[]) // *****2读取图片 MxBase::Image decodedImage; ret = imageProcessor.Decode(imgPath, decodedImage, ImageFormat::YUV_SP_420); - if (ret != APP_ERR_OK) - { + if (ret != APP_ERR_OK) { LogError << "Decode failed, ret=" << ret; return ret; } @@ -188,8 +185,7 @@ int main(int argc, char* argv[]) Size resizeConfig(YOLOV3_RESIZE, YOLOV3_RESIZE); ret = imageProcessor.Resize(decodedImage, resizeConfig, resizeImage, Interpolation::HUAWEI_HIGH_ORDER_FILTER); - if (ret != APP_ERR_OK) - { + if (ret != APP_ERR_OK) { LogError << "Resize failed, ret=" << ret; return ret; } @@ -197,8 +193,7 @@ int main(int argc, char* argv[]) // save resize image std::string path = "./resized_yolov3_416.jpg"; ret = imageProcessor.Encode(resizeImage, path); - if (ret != APP_ERR_OK) - { + if (ret != APP_ERR_OK) { LogError << "Encode failed, ret=" << ret; return ret; } @@ -206,8 +201,7 @@ int main(int argc, char* argv[]) // *****4模型推理 Tensor tensorImg = resizeImage.ConvertToTensor(); ret = tensorImg.ToDevice(deviceId); - if (ret != APP_ERR_OK) - { + if (ret != APP_ERR_OK) { LogError << "ToDevice failed, ret=" << ret; return ret; } @@ -219,8 +213,7 @@ int main(int argc, char* argv[]) std::cout << "yoloV3Outputs len=" << yoloV3Outputs.size() << std::endl; // !move result to host! - for (auto output : yoloV3Outputs) - { + for (auto output : yoloV3Outputs) { output.ToHost(); } @@ -230,8 +223,7 @@ int main(int argc, char* argv[]) imageInfo.oriImage = decodedImage; ret = YoloV3PostProcess(imageInfo, v2Param.configPath, v2Param.labelPath, yoloV3Outputs); - if (ret != APP_ERR_OK) - { + if (ret != APP_ERR_OK) { LogError << "YoloV3PostProcess execute failed, ret=" << ret; return ret; } -- Gitee