aboutsummaryrefslogtreecommitdiff
path: root/tests/ImageTensorGenerator/ImageTensorGenerator.hpp
diff options
context:
space:
mode:
authorMike Kelly <mike.kelly@arm.com>2021-07-21 09:42:43 +0100
committermike.kelly <mike.kelly@arm.com>2021-07-26 08:56:53 +0000
commitd7ed6d4e53a877a25fcea754d76c8831451f18f1 (patch)
tree74edb3b7cdc991232bb8f8577ae2fd89dfc95b0a /tests/ImageTensorGenerator/ImageTensorGenerator.hpp
parent4adf0de1f2380c215b7d6f643afe04ef4366df1e (diff)
downloadarmnn-d7ed6d4e53a877a25fcea754d76c8831451f18f1.tar.gz
GitHub #557 wrong result in int8 modelexperimental/CustomAllocator3
* Added support for qasymms8 (int8) to ImageTensorGenerator * Added qasymmu8 as alias for qasymm8 in ImageTensorGenerator * Added support for qasymms8 (int8) to ExecuteNetwork * Added qasymmu8 as alias for qasymm8 in ExecuteNetwork * Set tflite to be the default model format in ImageTensorGenerator as it's the only supported model format. Signed-off-by: Mike Kelly <mike.kelly@arm.com> Change-Id: Ieda7b78e668ea390e3565cd65a41fe0a9c8a5b83
Diffstat (limited to 'tests/ImageTensorGenerator/ImageTensorGenerator.hpp')
-rw-r--r--tests/ImageTensorGenerator/ImageTensorGenerator.hpp34
1 files changed, 33 insertions, 1 deletions
diff --git a/tests/ImageTensorGenerator/ImageTensorGenerator.hpp b/tests/ImageTensorGenerator/ImageTensorGenerator.hpp
index 5aa2ca8124..6d2e549360 100644
--- a/tests/ImageTensorGenerator/ImageTensorGenerator.hpp
+++ b/tests/ImageTensorGenerator/ImageTensorGenerator.hpp
@@ -56,6 +56,10 @@ NormalizationParameters GetNormalizationParameters(const SupportedFrontend& mode
normParams.mean = { 128.0, 128.0, 128.0 };
break;
case armnn::DataType::QAsymmU8:
+ break;
+ case armnn::DataType::QAsymmS8:
+ normParams.mean = { 128.0, 128.0, 128.0 };
+ break;
default:
break;
}
@@ -138,7 +142,7 @@ std::vector<int> PrepareImageTensor<int>(const std::string& imagePath,
return imageDataInt;
}
-// Prepare qasymm8 image tensor
+// Prepare qasymmu8 image tensor
template <>
std::vector<uint8_t> PrepareImageTensor<uint8_t>(const std::string& imagePath,
unsigned int newWidth,
@@ -158,6 +162,26 @@ std::vector<uint8_t> PrepareImageTensor<uint8_t>(const std::string& imagePath,
return imageDataQasymm8;
}
+// Prepare qasymms8 image tensor
+template <>
+std::vector<int8_t> PrepareImageTensor<int8_t>(const std::string& imagePath,
+ unsigned int newWidth,
+ unsigned int newHeight,
+ const NormalizationParameters& normParams,
+ unsigned int batchSize,
+ const armnn::DataLayout& outputLayout)
+{
+ // Get float32 image tensor
+ std::vector<float> imageDataFloat =
+ PrepareImageTensor<float>(imagePath, newWidth, newHeight, normParams, batchSize, outputLayout);
+ std::vector<int8_t> imageDataQasymms8;
+ imageDataQasymms8.reserve(imageDataFloat.size());
+ // Convert to uint8 image tensor with static cast
+ std::transform(imageDataFloat.begin(), imageDataFloat.end(), std::back_inserter(imageDataQasymms8),
+ [](float val) { return static_cast<uint8_t>(val); });
+ return imageDataQasymms8;
+}
+
/** Write image tensor to ofstream
*
* @param[in] imageData Image tensor data
@@ -176,3 +200,11 @@ void WriteImageTensorImpl<uint8_t>(const std::vector<uint8_t>& imageData, std::o
{
std::copy(imageData.begin(), imageData.end(), std::ostream_iterator<int>(imageTensorFile, " "));
}
+
+// For int8_t image tensor, cast it to int before writing it to prevent writing data as characters instead of
+// numerical values
+template <>
+void WriteImageTensorImpl<int8_t>(const std::vector<int8_t>& imageData, std::ofstream& imageTensorFile)
+{
+ std::copy(imageData.begin(), imageData.end(), std::ostream_iterator<int>(imageTensorFile, " "));
+} \ No newline at end of file