forked from mindspore-Ecosystem/mindspore
【修改说明】修改CI门禁报错
【模型】ResNet18 【验证结果】昇腾910、310芯片验证通过 【修改人】yumingchuan 【评审人】chenshushu
This commit is contained in:
parent
308b5e43db
commit
36fe418d77
|
@ -18,6 +18,7 @@
|
||||||
# Modelzoo
|
# Modelzoo
|
||||||
"mindspore/model_zoo/official/cv/yolov4_tiny/infer/mxbase/src/Yolov4TinyDetection.h" "runtime/references"
|
"mindspore/model_zoo/official/cv/yolov4_tiny/infer/mxbase/src/Yolov4TinyDetection.h" "runtime/references"
|
||||||
"mindspore/model_zoo/official/cv/yolov4_tiny/infer/mxbase/src/PostProcess/Yolov4TinyMindsporePost.h" "runtime/references"
|
"mindspore/model_zoo/official/cv/yolov4_tiny/infer/mxbase/src/PostProcess/Yolov4TinyMindsporePost.h" "runtime/references"
|
||||||
|
"mindspore/model_zoo/official/cv/resnet/infer/ResNet18/mxbase/Resnet18ClassifyOpencv.h" "runtime/references"
|
||||||
|
|
||||||
# MindData
|
# MindData
|
||||||
"mindspore/mindspore/ccsrc/minddata/mindrecord/include/shard_page.h" "runtime/string"
|
"mindspore/mindspore/ccsrc/minddata/mindrecord/include/shard_page.h" "runtime/string"
|
||||||
|
|
|
@ -18,7 +18,11 @@
|
||||||
#include "MxBase/DeviceManager/DeviceManager.h"
|
#include "MxBase/DeviceManager/DeviceManager.h"
|
||||||
#include "MxBase/Log/Log.h"
|
#include "MxBase/Log/Log.h"
|
||||||
|
|
||||||
using namespace MxBase;
|
using MxBase::DeviceManager;
|
||||||
|
using MxBase::TensorBase;
|
||||||
|
using MxBase::MemoryData;
|
||||||
|
using MxBase::ClassInfo;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
const uint32_t YUV_BYTE_NU = 3;
|
const uint32_t YUV_BYTE_NU = 3;
|
||||||
const uint32_t YUV_BYTE_DE = 2;
|
const uint32_t YUV_BYTE_DE = 2;
|
||||||
|
@ -27,7 +31,7 @@ namespace {
|
||||||
|
|
||||||
APP_ERROR Resnet18ClassifyOpencv::Init(const InitParam &initParam) {
|
APP_ERROR Resnet18ClassifyOpencv::Init(const InitParam &initParam) {
|
||||||
deviceId_ = initParam.deviceId;
|
deviceId_ = initParam.deviceId;
|
||||||
APP_ERROR ret = MxBase::DeviceManager::GetInstance()->InitDevices();
|
APP_ERROR ret = DeviceManager::GetInstance()->InitDevices();
|
||||||
if (ret != APP_ERR_OK) {
|
if (ret != APP_ERR_OK) {
|
||||||
LogError << "Init devices failed, ret=" << ret << ".";
|
LogError << "Init devices failed, ret=" << ret << ".";
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -76,36 +80,36 @@ APP_ERROR Resnet18ClassifyOpencv::DeInit() {
|
||||||
dvppWrapper_->DeInit();
|
dvppWrapper_->DeInit();
|
||||||
model_->DeInit();
|
model_->DeInit();
|
||||||
post_->DeInit();
|
post_->DeInit();
|
||||||
MxBase::DeviceManager::GetInstance()->DestroyDevices();
|
DeviceManager::GetInstance()->DestroyDevices();
|
||||||
return APP_ERR_OK;
|
return APP_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
APP_ERROR Resnet18ClassifyOpencv::ConvertImageToTensorBase(std::string &imgPath,
|
APP_ERROR Resnet18ClassifyOpencv::ConvertImageToTensorBase(const std::string &imgPath,
|
||||||
MxBase::TensorBase &tensorBase) {
|
TensorBase &tensorBase) {
|
||||||
static constexpr uint32_t resizeHeight = 304;
|
static constexpr uint32_t resizeHeight = 304;
|
||||||
static constexpr uint32_t resizeWidth = 304;
|
static constexpr uint32_t resizeWidth = 304;
|
||||||
|
|
||||||
cv::Mat imageMat = cv::imread(imgPath, cv::IMREAD_COLOR);
|
cv::Mat imageMat = cv::imread(imgPath, cv::IMREAD_COLOR);
|
||||||
cv::resize(imageMat, imageMat, cv::Size(resizeWidth, resizeHeight));
|
cv::resize(imageMat, imageMat, cv::Size(resizeWidth, resizeHeight));
|
||||||
const uint32_t dataSize = imageMat.cols * imageMat.rows * XRGB_WIDTH_NU;
|
const uint32_t dataSize = imageMat.cols * imageMat.rows * MxBase::XRGB_WIDTH_NU;
|
||||||
LogInfo << "image size after resize" << imageMat.cols << " " << imageMat.rows;
|
LogInfo << "image size after resize" << imageMat.cols << " " << imageMat.rows;
|
||||||
|
|
||||||
MemoryData memoryDataDst(dataSize, MemoryData::MEMORY_DEVICE, deviceId_);
|
MemoryData memoryDataDst(dataSize, MemoryData::MEMORY_DEVICE, deviceId_);
|
||||||
MemoryData memoryDataSrc(imageMat.data, dataSize, MemoryData::MEMORY_HOST_MALLOC);
|
MemoryData memoryDataSrc(imageMat.data, dataSize, MemoryData::MEMORY_HOST_MALLOC);
|
||||||
|
|
||||||
APP_ERROR ret = MemoryHelper::MxbsMallocAndCopy(memoryDataDst, memoryDataSrc);
|
APP_ERROR ret = MxBase::MemoryHelper::MxbsMallocAndCopy(memoryDataDst, memoryDataSrc);
|
||||||
if (ret != APP_ERR_OK) {
|
if (ret != APP_ERR_OK) {
|
||||||
LogError << GetError(ret) << "Memory malloc failed.";
|
LogError << GetError(ret) << "Memory malloc failed.";
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<uint32_t> shape = {imageMat.rows * XRGB_WIDTH_NU, static_cast<uint32_t>(imageMat.cols)};
|
std::vector<uint32_t> shape = {imageMat.rows * MxBase::XRGB_WIDTH_NU, static_cast<uint32_t>(imageMat.cols)};
|
||||||
tensorBase = TensorBase(memoryDataDst, false, shape, TENSOR_DTYPE_UINT8);
|
tensorBase = TensorBase(memoryDataDst, false, shape, MxBase::TENSOR_DTYPE_UINT8);
|
||||||
return APP_ERR_OK;
|
return APP_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
APP_ERROR Resnet18ClassifyOpencv::Inference(std::vector<MxBase::TensorBase> &inputs,
|
APP_ERROR Resnet18ClassifyOpencv::Inference(std::vector<TensorBase> &inputs,
|
||||||
std::vector<MxBase::TensorBase> &outputs) {
|
std::vector<TensorBase> &outputs) {
|
||||||
auto dtypes = model_->GetOutputDataType();
|
auto dtypes = model_->GetOutputDataType();
|
||||||
for (size_t i = 0; i < modelDesc_.outputTensors.size(); ++i) {
|
for (size_t i = 0; i < modelDesc_.outputTensors.size(); ++i) {
|
||||||
std::vector<uint32_t> shape = {};
|
std::vector<uint32_t> shape = {};
|
||||||
|
@ -120,8 +124,8 @@ APP_ERROR Resnet18ClassifyOpencv::Inference(std::vector<MxBase::TensorBase> &inp
|
||||||
}
|
}
|
||||||
outputs.push_back(tensor);
|
outputs.push_back(tensor);
|
||||||
}
|
}
|
||||||
DynamicInfo dynamicInfo = {};
|
MxBase::DynamicInfo dynamicInfo = {};
|
||||||
dynamicInfo.dynamicType = DynamicType::STATIC_BATCH;
|
dynamicInfo.dynamicType = MxBase::DynamicType::STATIC_BATCH;
|
||||||
auto startTime = std::chrono::high_resolution_clock::now();
|
auto startTime = std::chrono::high_resolution_clock::now();
|
||||||
APP_ERROR ret = model_->ModelInference(inputs, outputs, dynamicInfo);
|
APP_ERROR ret = model_->ModelInference(inputs, outputs, dynamicInfo);
|
||||||
auto endTime = std::chrono::high_resolution_clock::now();
|
auto endTime = std::chrono::high_resolution_clock::now();
|
||||||
|
@ -134,8 +138,8 @@ APP_ERROR Resnet18ClassifyOpencv::Inference(std::vector<MxBase::TensorBase> &inp
|
||||||
return APP_ERR_OK;
|
return APP_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
APP_ERROR Resnet18ClassifyOpencv::PostProcess(std::vector<MxBase::TensorBase> &inputs,
|
APP_ERROR Resnet18ClassifyOpencv::PostProcess(std::vector<TensorBase> &inputs,
|
||||||
std::vector<std::vector<MxBase::ClassInfo>> &clsInfos) {
|
std::vector<std::vector<ClassInfo>> &clsInfos) {
|
||||||
APP_ERROR ret = post_->Process(inputs, clsInfos);
|
APP_ERROR ret = post_->Process(inputs, clsInfos);
|
||||||
if (ret != APP_ERR_OK) {
|
if (ret != APP_ERR_OK) {
|
||||||
LogError << "Process failed, ret=" << ret << ".";
|
LogError << "Process failed, ret=" << ret << ".";
|
||||||
|
@ -144,8 +148,8 @@ APP_ERROR Resnet18ClassifyOpencv::PostProcess(std::vector<MxBase::TensorBase> &i
|
||||||
return APP_ERR_OK;
|
return APP_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
APP_ERROR Resnet18ClassifyOpencv::SaveResult(std::string &imgPath,
|
APP_ERROR Resnet18ClassifyOpencv::SaveResult(const std::string &imgPath,
|
||||||
std::vector<std::vector<MxBase::ClassInfo>> &batchClsInfos) {
|
std::vector<std::vector<ClassInfo>> &batchClsInfos) {
|
||||||
LogInfo << "image path" << imgPath;
|
LogInfo << "image path" << imgPath;
|
||||||
std::string fileName = imgPath.substr(imgPath.find_last_of("/") + 1);
|
std::string fileName = imgPath.substr(imgPath.find_last_of("/") + 1);
|
||||||
size_t dot = fileName.find_last_of(".");
|
size_t dot = fileName.find_last_of(".");
|
||||||
|
@ -174,10 +178,10 @@ APP_ERROR Resnet18ClassifyOpencv::SaveResult(std::string &imgPath,
|
||||||
return APP_ERR_OK;
|
return APP_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
APP_ERROR Resnet18ClassifyOpencv::Process(std::string &imgPath) {
|
APP_ERROR Resnet18ClassifyOpencv::Process(const std::string &imgPath) {
|
||||||
MxBase::TensorBase tensorBase;
|
TensorBase tensorBase;
|
||||||
std::vector<MxBase::TensorBase> inputs = {};
|
std::vector<TensorBase> inputs;
|
||||||
std::vector<MxBase::TensorBase> outputs = {};
|
std::vector<TensorBase> outputs;
|
||||||
|
|
||||||
APP_ERROR ret = ConvertImageToTensorBase(imgPath, tensorBase);
|
APP_ERROR ret = ConvertImageToTensorBase(imgPath, tensorBase);
|
||||||
if (ret != APP_ERR_OK) {
|
if (ret != APP_ERR_OK) {
|
||||||
|
@ -196,7 +200,7 @@ APP_ERROR Resnet18ClassifyOpencv::Process(std::string &imgPath) {
|
||||||
LogError << "Inference failed, ret=" << ret << ".";
|
LogError << "Inference failed, ret=" << ret << ".";
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
std::vector<std::vector<MxBase::ClassInfo>> BatchClsInfos = {};
|
std::vector<std::vector<ClassInfo>> BatchClsInfos;
|
||||||
ret = PostProcess(outputs, BatchClsInfos);
|
ret = PostProcess(outputs, BatchClsInfos);
|
||||||
if (ret != APP_ERR_OK) {
|
if (ret != APP_ERR_OK) {
|
||||||
LogError << "PostProcess failed, ret=" << ret << ".";
|
LogError << "PostProcess failed, ret=" << ret << ".";
|
||||||
|
|
|
@ -41,17 +41,17 @@ class Resnet18ClassifyOpencv {
|
||||||
public:
|
public:
|
||||||
APP_ERROR Init(const InitParam &initParam);
|
APP_ERROR Init(const InitParam &initParam);
|
||||||
APP_ERROR DeInit();
|
APP_ERROR DeInit();
|
||||||
APP_ERROR ConvertImageToTensorBase(std::string &imgPath, MxBase::TensorBase &tensorBase);
|
APP_ERROR ConvertImageToTensorBase(const std::string &imgPath, MxBase::TensorBase &tensorBase);
|
||||||
APP_ERROR Inference(std::vector<MxBase::TensorBase> &inputs,
|
APP_ERROR Inference(std::vector<MxBase::TensorBase> &inputs,
|
||||||
std::vector<MxBase::TensorBase> &outputs);
|
std::vector<MxBase::TensorBase> &outputs);
|
||||||
APP_ERROR PostProcess(std::vector<MxBase::TensorBase> &inputs,
|
APP_ERROR PostProcess(std::vector<MxBase::TensorBase> &inputs,
|
||||||
std::vector<std::vector<MxBase::ClassInfo>> &clsInfos);
|
std::vector<std::vector<MxBase::ClassInfo>> &clsInfos);
|
||||||
APP_ERROR Process(std::string &imgPath);
|
APP_ERROR Process(const std::string &imgPath);
|
||||||
// get infer time
|
// get infer time
|
||||||
double GetInferCostMilliSec() const {return inferCostTimeMilliSec;}
|
double GetInferCostMilliSec() const {return inferCostTimeMilliSec;}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
APP_ERROR SaveResult(std::string &imgPath,
|
APP_ERROR SaveResult(const std::string &imgPath,
|
||||||
std::vector<std::vector<MxBase::ClassInfo>> &batchClsInfos);
|
std::vector<std::vector<MxBase::ClassInfo>> &batchClsInfos);
|
||||||
std::shared_ptr<MxBase::DvppWrapper> dvppWrapper_;
|
std::shared_ptr<MxBase::DvppWrapper> dvppWrapper_;
|
||||||
std::shared_ptr<MxBase::ModelInferenceProcessor> model_;
|
std::shared_ptr<MxBase::ModelInferenceProcessor> model_;
|
||||||
|
|
Loading…
Reference in New Issue