summaryrefslogtreecommitdiff
path: root/source/application/main/include
diff options
context:
space:
mode:
authoralexander <alexander.efremov@arm.com>2022-02-10 16:15:54 +0000
committeralexander <alexander.efremov@arm.com>2022-02-10 18:04:42 +0000
commit31ae9f09bb3535975595e999fbc7baca889e46e8 (patch)
tree71f0cadc2620b9d18e474e5d40eda7b3d30a8ce4 /source/application/main/include
parent3107aa2152de9be8317e62da1d0327bcad6552e2 (diff)
downloadml-embedded-evaluation-kit-31ae9f09bb3535975595e999fbc7baca889e46e8.tar.gz
MLECO-2682: CMake and source refactoring.
MLECO-2930: logging macros were extracted from hal.h and used separately around the code. MLECO-2931: arm_math lib introduced, cmsis-dsp removed from top level linkage. MLECO-2915: platform related post-build steps. Change-Id: Id718884e22f262a5c070ded3f3f5d4b048820147 Signed-off-by: alexander <alexander.efremov@arm.com>
Diffstat (limited to 'source/application/main/include')
-rw-r--r--source/application/main/include/Classifier.hpp2
-rw-r--r--source/application/main/include/DataStructures.hpp4
-rw-r--r--source/application/main/include/PlatformMath.hpp176
-rw-r--r--source/application/main/include/UseCaseCommonUtils.hpp10
4 files changed, 7 insertions, 185 deletions
diff --git a/source/application/main/include/Classifier.hpp b/source/application/main/include/Classifier.hpp
index d899e8e..d641c22 100644
--- a/source/application/main/include/Classifier.hpp
+++ b/source/application/main/include/Classifier.hpp
@@ -50,7 +50,7 @@ namespace app {
TfLiteTensor* outputTensor,
std::vector<ClassificationResult>& vecResults,
const std::vector <std::string>& labels, uint32_t topNCount,
- bool use_softmax = false);
+ bool use_softmax);
/**
* @brief Populate the elements of the Classification Result object.
diff --git a/source/application/main/include/DataStructures.hpp b/source/application/main/include/DataStructures.hpp
index d369cb6..0616839 100644
--- a/source/application/main/include/DataStructures.hpp
+++ b/source/application/main/include/DataStructures.hpp
@@ -17,8 +17,6 @@
#ifndef DATA_STRUCTURES_HPP
#define DATA_STRUCTURES_HPP
-#include "hal.h"
-
#include <iterator>
namespace arm {
@@ -50,7 +48,7 @@ namespace app {
Array2d(unsigned rows, unsigned cols): m_rows(rows), m_cols(cols)
{
if (rows == 0 || cols == 0) {
- printf_err("Array2d constructor has 0 size.\n");
+ printf("Array2d constructor has 0 size.\n");
m_data = nullptr;
return;
}
diff --git a/source/application/main/include/PlatformMath.hpp b/source/application/main/include/PlatformMath.hpp
deleted file mode 100644
index fdb51b2..0000000
--- a/source/application/main/include/PlatformMath.hpp
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef PLATFORM_MATH_HPP
-#define PLATFORM_MATH_HPP
-
-#include "hal.h"
-
-/* See if ARM DSP functions can be used. */
-#if PLATFORM_HAL == PLATFORM_CORTEX_M_BAREMETAL
- #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)
-
- #define ARM_DSP_AVAILABLE (1U)
- #include "arm_math.h"
- #define M_PI (PI)
-
- #endif /* defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) */
-#endif /* PLATFORM_HAL == PLATFORM_CORTEX_M_BAREMETAL */
-
-#include <vector>
-
-namespace arm {
-namespace app {
-namespace math {
-
- enum class FftType {
- real = 0,
- complex = 1
- };
-
- struct FftInstance {
-#if ARM_DSP_AVAILABLE
- arm_rfft_fast_instance_f32 m_instanceReal;
- arm_cfft_instance_f32 m_instanceComplex;
-#endif
- uint16_t m_fftLen{0};
- FftType m_type;
- bool m_optimisedOptionAvailable{false};
- bool m_initialised{false};
- };
-
- /* Class to provide Math functions like FFT, mean, stddev etc.
- * This will allow other classes, functions to be independent of
- * #if definition checks and provide a cleaner API. Also, it will
- * consolidate all arm math functions used in one place and make
- * them easier to test. */
- class MathUtils {
-
- public:
- /**
- * @brief Get the cosine value of the argument in floating point.
- * @param[in] radians Angle in radians.
- * @return Cosine value (floating point).
- */
- static float CosineF32(float radians);
-
- /**
- * @brief Get the sine value of the argument in floating point.
- * @param[in] radians Angle in radians.
- * @return Sine value (floating point).
- */
- static float SineF32(float radians);
-
- /**
- * @brief Get the square root of the argument in floating point.
- * @param[in] input Value to compute square root of.
- * @return Square root (floating point) value.
- */
- static float SqrtF32(float input);
-
- /**
- * @brief Gets the mean of a floating point array of elements.
- * @param[in] ptrSrc Pointer to the first element.
- * @param[in] srcLen Number of elements in the array/vector.
- * @return Average value.
- */
- static float MeanF32(float* ptrSrc, uint32_t srcLen);
-
- /**
- * @brief Gets the standard deviation of a floating point array
- * of elements.
- * @param[in] ptrSrc Pointer to the first element.
- * @param[in] srcLen Number of elements in the array/vector.
- * @param[in] mean Pre-computed mean value.
- * @return Standard deviation value.
- */
- static float StdDevF32(float* ptrSrc, uint32_t srcLen,
- float mean);
-
- /**
- * @brief Initialises the internal FFT structures (if available
- * for the platform). This function should be called
- * prior to Fft32 function call if built with ARM DSP functions.
- * @param[in] fftLen Requested length of the FFT.
- * @param[in] fftInstance FFT instance struct to use.
- * @param[in] type FFT type (real or complex)
- */
- static void FftInitF32(const uint16_t fftLen,
- FftInstance& fftInstance,
- const FftType type = FftType::real);
-
- /**
- * @brief Computes the FFT for the input vector.
- * @param[in] input Floating point vector of input elements
- * @param[out] fftOutput Output buffer to be populated by computed FFTs.
- * @param[in] fftInstance FFT instance struct to use.
- */
- static void FftF32(std::vector<float>& input,
- std::vector<float>& fftOutput,
- FftInstance& fftInstance);
-
- /**
- * @brief Computes the natural logarithms of input floating point
- * vector
- * @param[in] input Floating point input vector
- * @param[out] output Pre-allocated buffer to be populated with
- * natural log values of each input element.
- */
- static void VecLogarithmF32(std::vector <float>& input,
- std::vector <float>& output);
-
- /**
- * @brief Computes the dot product of two 1D floating point
- * vectors.
- * result = sum(srcA[0]*srcB[0] + srcA[1]*srcB[1] + ..)
- * @param[in] srcPtrA Pointer to the first element of first
- * array.
- * @param[in] srcPtrB Pointer to the first element of second
- * array.
- * @param[in] srcLen Number of elements in the array/vector.
- * @return Dot product.
- */
- static float DotProductF32(float* srcPtrA, float* srcPtrB,
- const uint32_t srcLen);
-
- /**
- * @brief Computes the squared magnitude of floating point
- * complex number array.
- * @param[in] ptrSrc Pointer to the first element of input
- * array.
- * @param[in] srcLen Number of elements in the array/vector.
- * @param[out] ptrDst Output buffer to be populated.
- * @param[in] dstLen Output buffer len (for sanity check only).
- * @return true if successful, false otherwise.
- */
- static bool ComplexMagnitudeSquaredF32(float* ptrSrc,
- const uint32_t srcLen,
- float* ptrDst,
- const uint32_t dstLen);
-
- /**
- * @brief Scales output scores for an arbitrary number of classes so
- * that they sum to 1, allowing output to be expressed as a probability.
- * @param[in] vector Vector of floats modified in-place
- */
- static void SoftmaxF32(std::vector<float>& vec);
- };
-
-} /* namespace math */
-} /* namespace app */
-} /* namespace arm */
-
-#endif /* PLATFORM_MATH_HPP */ \ No newline at end of file
diff --git a/source/application/main/include/UseCaseCommonUtils.hpp b/source/application/main/include/UseCaseCommonUtils.hpp
index 84b5de3..cd0cb69 100644
--- a/source/application/main/include/UseCaseCommonUtils.hpp
+++ b/source/application/main/include/UseCaseCommonUtils.hpp
@@ -24,7 +24,7 @@
#include "UseCaseHandler.hpp" /* Handlers for different user options. */
#include "Classifier.hpp" /* Classifier. */
#include "InputFiles.hpp"
-#include <inttypes.h>
+#include <cinttypes>
/* Helper macro to convert RGB888 to RGB565 format. */
@@ -33,8 +33,8 @@
((B8>>3) & 0x1F))
constexpr uint16_t COLOR_BLACK = 0;
-constexpr uint16_t COLOR_GREEN = RGB888_TO_RGB565( 0, 255, 0); // 2016;
-constexpr uint16_t COLOR_YELLOW = RGB888_TO_RGB565(255, 255, 0); // 65504;
+constexpr uint16_t COLOR_GREEN = RGB888_TO_RGB565( 0u, 255u, 0u); // 2016;
+constexpr uint16_t COLOR_YELLOW = RGB888_TO_RGB565(255u, 255u, 0u); // 65504;
void DisplayCommonMenu();
@@ -72,7 +72,7 @@ namespace image{
* @param[in,out] ctx Pointer to the application context object.
* @param[in] useCase Use case name
**/
-void IncrementAppCtxIfmIdx(arm::app::ApplicationContext& ctx, std::string useCase);
+void IncrementAppCtxIfmIdx(arm::app::ApplicationContext& ctx, const std::string& useCase);
/**
* @brief Helper function to set the input feature map index.
@@ -81,7 +81,7 @@ void IncrementAppCtxIfmIdx(arm::app::ApplicationContext& ctx, std::string useCas
* @param[in] ctxIfmName Input Feature Map name
* @return true if index is set, false otherwise.
**/
-bool SetAppCtxIfmIdx(arm::app::ApplicationContext& ctx, uint32_t idx, std::string ctxIfmName);
+bool SetAppCtxIfmIdx(arm::app::ApplicationContext& ctx, uint32_t idx, const std::string& ctxIfmName);
namespace common {