更新到HyperLPR3版本

This commit is contained in:
tunmx
2023-02-27 15:47:55 +08:00
parent 7ae4d385e1
commit 0864e05f76
912 changed files with 8160 additions and 221461 deletions
@@ -0,0 +1,100 @@
//
// Created by Tunm-Air13 on 2023/2/8.
//
#include "det_header.h"
#include "log.h"
namespace hyper {
#define INPUTS_NUM 3
#define OUTPUT "output"
DetHeader::DetHeader() = default;
DetHeader::~DetHeader() {
if (!m_nn_infer_) {
LOGD("Inference helper is not created\n");
return;
}
m_nn_infer_->Finalize();
m_nn_infer_.reset();
}
int32_t DetHeader::Initialize(const std::string& model_filename, int input_size, bool use_half) {
m_nn_infer_.reset(InferenceHelper::Create(InferenceHelper::kMnn));
if (m_nn_infer_->SetNumThreads(1) != InferenceHelper::kRetOk) {
m_nn_infer_.reset();
return InferenceHelper::kRetErr;
}
if (input_size == 320) {
m_header_list_ = {
{"948", { 1, 45, 40, 40 }},
{"1061", { 1, 45, 20, 20 }},
{"1174", { 1, 45, 10, 10 }},};
} else {
m_header_list_ = {
{"948", { 1, 45, 80, 80 }},
{"1061", { 1, 45, 40, 40 }},
{"1174", { 1, 45, 20, 20 }},};
}
m_output_tensor_info_list_.clear();
m_output_tensor_info_list_.emplace_back(OUTPUT, TensorInfo::kTensorTypeFp32);
if (m_nn_infer_->Initialize(model_filename, m_input_tensor_info_list_, m_output_tensor_info_list_) != InferenceHelper::kRetOk) {
m_nn_infer_.reset();
return InferenceHelper::kRetErr;
}
m_input_tensor_info_list_.clear();
/* Set input tensor info */
for (int i = 0; i < INPUTS_NUM; ++i) {
auto &head = m_header_list_[i];
InputTensorInfo input_tensor_info(head.input_name, TensorInfo::kTensorTypeFp32, false);
input_tensor_info.tensor_dims = head.dims;
input_tensor_info.data_type = InputTensorInfo::kTensorTypeFp32;
input_tensor_info.normalize.mean[0] = 0.0f;
input_tensor_info.normalize.mean[1] = 0.0f;
input_tensor_info.normalize.mean[2] = 0.0f;
input_tensor_info.normalize.norm[0] = 1.0f;
input_tensor_info.normalize.norm[1] = 1.0f;
input_tensor_info.normalize.norm[2] = 1.0f;
m_input_tensor_info_list_.push_back(input_tensor_info);
}
return InferenceHelper::kRetOk;
}
int32_t DetHeader::Inference(float* ptr3, float* ptr2, float* ptr1) {
m_input_tensor_info_list_[0].data_type = InputTensorInfo::kDataTypeBlobNchw;
m_input_tensor_info_list_[0].data = ptr3;
m_input_tensor_info_list_[1].data_type = InputTensorInfo::kDataTypeBlobNchw;
m_input_tensor_info_list_[1].data = ptr2;
m_input_tensor_info_list_[2].data_type = InputTensorInfo::kDataTypeBlobNchw;
m_input_tensor_info_list_[2].data = ptr1;
if (m_nn_infer_->PreProcess(m_input_tensor_info_list_) != InferenceHelper::kRetOk) {
return InferenceHelper::kRetErr;
}
if (m_nn_infer_->Process(m_output_tensor_info_list_) != InferenceHelper::kRetOk) {
return InferenceHelper::kRetErr;
}
return InferenceHelper::kRetOk;
}
std::vector<OutputTensorInfo> &DetHeader::getMOutputTensorInfoList() {
return m_output_tensor_info_list_;
}
void DetHeader::setMOutputTensorInfoList(const std::vector<OutputTensorInfo> &mOutputTensorInfoList) {
m_output_tensor_info_list_ = mOutputTensorInfoList;
}
} // namespace