diff options
Diffstat (limited to 'source/use_case/vww/src/VisualWakeWordProcessing.cc')
-rw-r--r-- | source/use_case/vww/src/VisualWakeWordProcessing.cc | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/source/use_case/vww/src/VisualWakeWordProcessing.cc b/source/use_case/vww/src/VisualWakeWordProcessing.cc index 94eae28..a9863c0 100644 --- a/source/use_case/vww/src/VisualWakeWordProcessing.cc +++ b/source/use_case/vww/src/VisualWakeWordProcessing.cc @@ -22,13 +22,9 @@ namespace arm { namespace app { - VisualWakeWordPreProcess::VisualWakeWordPreProcess(Model* model) - { - if (!model->IsInited()) { - printf_err("Model is not initialised!.\n"); - } - this->m_model = model; - } + VisualWakeWordPreProcess::VisualWakeWordPreProcess(TfLiteTensor* inputTensor) + :m_inputTensor{inputTensor} + {} bool VisualWakeWordPreProcess::DoPreProcess(const void* data, size_t inputSize) { @@ -37,9 +33,8 @@ namespace app { } auto input = static_cast<const uint8_t*>(data); - TfLiteTensor* inputTensor = this->m_model->GetInputTensor(0); - auto unsignedDstPtr = static_cast<uint8_t*>(inputTensor->data.data); + auto unsignedDstPtr = static_cast<uint8_t*>(this->m_inputTensor->data.data); /* VWW model has one channel input => Convert image to grayscale here. * We expect images to always be RGB. */ @@ -47,10 +42,10 @@ namespace app { /* VWW model pre-processing is image conversion from uint8 to [0,1] float values, * then quantize them with input quantization info. */ - QuantParams inQuantParams = GetTensorQuantParams(inputTensor); + QuantParams inQuantParams = GetTensorQuantParams(this->m_inputTensor); - auto signedDstPtr = static_cast<int8_t*>(inputTensor->data.data); - for (size_t i = 0; i < inputTensor->bytes; i++) { + auto signedDstPtr = static_cast<int8_t*>(this->m_inputTensor->data.data); + for (size_t i = 0; i < this->m_inputTensor->bytes; i++) { auto i_data_int8 = static_cast<int8_t>( ((static_cast<float>(unsignedDstPtr[i]) / 255.0f) / inQuantParams.scale) + inQuantParams.offset ); @@ -62,22 +57,18 @@ namespace app { return true; } - VisualWakeWordPostProcess::VisualWakeWordPostProcess(Classifier& classifier, Model* model, + VisualWakeWordPostProcess::VisualWakeWordPostProcess(TfLiteTensor* outputTensor, Classifier& classifier, const std::vector<std::string>& labels, std::vector<ClassificationResult>& results) - :m_vwwClassifier{classifier}, + :m_outputTensor{outputTensor}, + m_vwwClassifier{classifier}, m_labels{labels}, m_results{results} - { - if (!model->IsInited()) { - printf_err("Model is not initialised!.\n"); - } - this->m_model = model; - } + {} bool VisualWakeWordPostProcess::DoPostProcess() { return this->m_vwwClassifier.GetClassificationResults( - this->m_model->GetOutputTensor(0), this->m_results, + this->m_outputTensor, this->m_results, this->m_labels, 1, true); } |