From e1fdd2866b0f403b5e80994890d62c2c038c16c9 Mon Sep 17 00:00:00 2001 From: Jim Flynn Date: Tue, 26 Oct 2021 21:26:10 +0100 Subject: IVGCVSW-6470 Create MemoryStrategyBenchmark * Refactor the strategy library to be more generic * Shorten the names of the current strategies * Change validatorStrat to throw exceptions Change-Id: I0d9c9ef609b2d8675e5788610d1accac6767c660 Signed-off-by: Finn Williams Signed-off-by: Jim Flynn --- tests/CMakeLists.txt | 4 + tests/MemoryStrategyBenchmark/CMakeLists.txt | 16 + .../MemoryStrategyBenchmark.cpp | 206 +++ tests/MemoryStrategyBenchmark/TestBlocks.hpp | 1575 ++++++++++++++++++++ tests/MemoryStrategyBenchmark/TestStrategy.cpp | 43 + tests/MemoryStrategyBenchmark/TestStrategy.hpp | 31 + 6 files changed, 1875 insertions(+) create mode 100644 tests/MemoryStrategyBenchmark/CMakeLists.txt create mode 100644 tests/MemoryStrategyBenchmark/MemoryStrategyBenchmark.cpp create mode 100644 tests/MemoryStrategyBenchmark/TestBlocks.hpp create mode 100644 tests/MemoryStrategyBenchmark/TestStrategy.cpp create mode 100644 tests/MemoryStrategyBenchmark/TestStrategy.hpp (limited to 'tests') diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1531fd5f24..cea55c5b8e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -221,3 +221,7 @@ if(BUILD_ACCURACY_TOOL) target_include_directories(ImageCSVFileGenerator PRIVATE ../src/armnnUtils) ImageTensorExecutor(ImageCSVFileGenerator) endif() + +if(BUILD_MEMORY_STRATEGY_BENCHMARK) + add_subdirectory(MemoryStrategyBenchmark) +endif() diff --git a/tests/MemoryStrategyBenchmark/CMakeLists.txt b/tests/MemoryStrategyBenchmark/CMakeLists.txt new file mode 100644 index 0000000000..9ed79bae5f --- /dev/null +++ b/tests/MemoryStrategyBenchmark/CMakeLists.txt @@ -0,0 +1,16 @@ +add_executable(MemoryStrategyBenchmark + MemoryStrategyBenchmark.cpp + TestBlocks.hpp + TestStrategy.hpp + TestStrategy.cpp + ../../include/armnn/Exceptions.hpp + ../../src/armnn/Exceptions.cpp) + +target_link_libraries(MemoryStrategyBenchmark armnnMemoryOptimizationStrategies) +target_include_directories(MemoryStrategyBenchmark PRIVATE + ../../include/armnn/backends + ../../src/backends/backendsCommon/memoryOptimizerStrategyLibrary + ../../third-party/cxxopts) + + +set_target_properties(MemoryStrategyBenchmark PROPERTIES LINKER_LANGUAGE CXX) \ No newline at end of file diff --git a/tests/MemoryStrategyBenchmark/MemoryStrategyBenchmark.cpp b/tests/MemoryStrategyBenchmark/MemoryStrategyBenchmark.cpp new file mode 100644 index 0000000000..5924757f21 --- /dev/null +++ b/tests/MemoryStrategyBenchmark/MemoryStrategyBenchmark.cpp @@ -0,0 +1,206 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// +#include "TestBlocks.hpp" +#include "TestStrategy.hpp" + +#include +#include +#include + + +#include + +#include +#include +#include + +std::vector testBlocks +{ + {"inceptionv4", inceptionv4}, + {"deeplabv3", deeplabv3}, + {"deepspeechv1", deepspeechv1}, + {"ssd_mobilenetv2", ssd_mobilenetv2}, + {"resnetv2", resnetv2}, + {"yolov3",yolov3} +}; + +void PrintModels() +{ + std::cout << "Available models:\n"; + for (const auto& model : testBlocks) + { + std::cout << model.m_Name << "\n"; + } + std::cout << "\n"; +} + +size_t GetMinPossibleMemorySize(const std::vector blocks) +{ + std::vector lifetimes(1000); + for (const auto& block : blocks) + { + for (auto lifetime = block.m_StartOfLife; lifetime <= block.m_EndOfLife; ++lifetime) + { + lifetimes[lifetime] += block.m_MemSize; + } + } + return *std::max_element(lifetimes.begin(), lifetimes.end()); +} + +void RunBenchmark(armnn::IMemoryOptimizerStrategy* strategy, std::vector* models) +{ + using Clock = std::chrono::high_resolution_clock; + float avgEfficiency = 0; + std::chrono::duration avgDuration{}; + std::cout << "\nMemory Strategy: " << strategy->GetName()<< "\n"; + std::cout << "===============================================\n"; + for (auto& model : *models) + { + auto now = Clock::now(); + const std::vector result = strategy->Optimize(model.m_Blocks); + auto duration = std::chrono::duration(Clock::now() - now); + + avgDuration += duration; + size_t memoryUsage = 0; + for (auto bin : result) + { + memoryUsage += bin.m_MemSize; + } + size_t minSize = GetMinPossibleMemorySize(model.m_Blocks); + + float efficiency = static_cast(minSize) / static_cast(memoryUsage); + efficiency*=100; + avgEfficiency += efficiency; + std::cout << "\nModel: " << model.m_Name << "\n"; + + std::cout << "Strategy execution time: " << std::setprecision(4) << duration.count() << " milliseconds\n"; + + std::cout << "Memory usage: " << memoryUsage/1024 << " kb\n"; + + std::cout << "Minimum possible usage: " << minSize/1024 << " kb\n"; + + std::cout << "Memory efficiency: " << std::setprecision(3) << efficiency << "%\n"; + } + + avgDuration/= static_cast(models->size()); + avgEfficiency/= static_cast(models->size()); + + std::cout << "\n===============================================\n"; + std::cout << "Average memory duration: " << std::setprecision(4) << avgDuration.count() << " milliseconds\n"; + std::cout << "Average memory efficiency: " << std::setprecision(3) << avgEfficiency << "%\n"; +} + +struct BenchmarkOptions +{ + std::string m_StrategyName; + std::string m_ModelName; + bool m_UseDefaultStrategy = false; + bool m_Validate = false; +}; + +BenchmarkOptions ParseOptions(int argc, char* argv[]) +{ + cxxopts::Options options("Memory Benchmark", "Tests memory optimization strategies on different models"); + + options.add_options() + ("s, strategy", "Strategy name, do not specify to use default strategy", cxxopts::value()) + ("m, model", "Model name", cxxopts::value()) + ("v, validate", "Validate strategy", cxxopts::value()->default_value("false")->implicit_value("true")) + ("h,help", "Display usage information"); + + auto result = options.parse(argc, argv); + if (result.count("help")) + { + std::cout << options.help() << std::endl; + PrintModels(); + + std::cout << "\nAvailable strategies:\n"; + + for (const auto& s :armnn::GetMemoryOptimizerStrategyNames()) + { + std::cout << s << "\n"; + } + exit(EXIT_SUCCESS); + } + + BenchmarkOptions benchmarkOptions; + + if(result.count("strategy")) + { + benchmarkOptions.m_StrategyName = result["strategy"].as(); + } + else + { + std::cout << "No Strategy given, using default strategy"; + + benchmarkOptions.m_UseDefaultStrategy = true; + } + + if(result.count("model")) + { + benchmarkOptions.m_ModelName = result["model"].as(); + } + + benchmarkOptions.m_Validate = result["validate"].as(); + + return benchmarkOptions; +} + +int main(int argc, char* argv[]) +{ + BenchmarkOptions benchmarkOptions = ParseOptions(argc, argv); + + std::shared_ptr strategy; + + if (benchmarkOptions.m_UseDefaultStrategy) + { + strategy = std::make_shared(); + } + else + { + strategy = armnn::GetMemoryOptimizerStrategy(benchmarkOptions.m_StrategyName); + + if (!strategy) + { + std::cout << "Strategy name not found\n"; + return 0; + } + } + + std::vector model; + std::vector* modelsToTest = &testBlocks; + if (benchmarkOptions.m_ModelName.size() != 0) + { + auto it = std::find_if(testBlocks.cbegin(), testBlocks.cend(), [&](const TestBlock testBlock) + { + return testBlock.m_Name == benchmarkOptions.m_ModelName; + }); + + if (it == testBlocks.end()) + { + std::cout << "Model name not found\n"; + return 0; + } + else + { + model.push_back(*it); + modelsToTest = &model; + } + } + + if (benchmarkOptions.m_Validate) + { + armnn::StrategyValidator strategyValidator; + + strategyValidator.SetStrategy(strategy); + + RunBenchmark(&strategyValidator, modelsToTest); + } + else + { + RunBenchmark(strategy.get(), modelsToTest); + } + +} \ No newline at end of file diff --git a/tests/MemoryStrategyBenchmark/TestBlocks.hpp b/tests/MemoryStrategyBenchmark/TestBlocks.hpp new file mode 100644 index 0000000000..280307c2bf --- /dev/null +++ b/tests/MemoryStrategyBenchmark/TestBlocks.hpp @@ -0,0 +1,1575 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include +#include + +struct TestBlock +{ + std::string m_Name; + std::vector& m_Blocks; +}; + +// Generated from inception_v4_299_quant.tflite +std::vector inceptionv4 +{ + { 0, 1, 268203, 0, 0 }, + { 1, 5, 710432, 0, 1 }, + { 4, 9, 691488, 0, 4 }, + { 5, 12, 1382976, 0, 5 }, + { 6, 14, 341056, 0, 6 }, + { 7, 15, 511584, 0, 7 }, + { 8, 18, 852640, 0, 8 }, + { 9, 20, 341056, 0, 9 }, + { 10, 22, 341056, 0, 10 }, + { 12, 25, 341056, 0, 12 }, + { 13, 27, 341056, 0, 13 }, + { 11, 26, 483936, 0, 11 }, + { 14, 29, 483936, 0, 14 }, + { 15, 32, 967872, 0, 15 }, + { 17, 35, 235200, 0, 17 }, + { 16, 34, 235200, 0, 16 }, + { 18, 40, 470400, 0, 18 }, + { 21, 44, 78400, 0, 21 }, + { 22, 46, 78400, 0, 22 }, + { 19, 44, 470400, 0, 19 }, + { 24, 50, 117600, 0, 24 }, + { 20, 47, 117600, 0, 20 }, + { 23, 50, 117600, 0, 23 }, + { 26, 53, 117600, 0, 26 }, + { 25, 52, 117600, 0, 25 }, + { 27, 58, 470400, 0, 27 }, + { 30, 62, 78400, 0, 30 }, + { 31, 64, 78400, 0, 31 }, + { 28, 62, 470400, 0, 28 }, + { 33, 68, 117600, 0, 33 }, + { 29, 65, 117600, 0, 29 }, + { 32, 68, 117600, 0, 32 }, + { 35, 71, 117600, 0, 35 }, + { 34, 70, 117600, 0, 34 }, + { 36, 76, 470400, 0, 36 }, + { 39, 80, 78400, 0, 39 }, + { 40, 82, 78400, 0, 40 }, + { 37, 80, 470400, 0, 37 }, + { 42, 86, 117600, 0, 42 }, + { 38, 83, 117600, 0, 38 }, + { 41, 86, 117600, 0, 41 }, + { 44, 89, 117600, 0, 44 }, + { 43, 88, 117600, 0, 43 }, + { 45, 94, 470400, 0, 45 }, + { 48, 98, 78400, 0, 48 }, + { 49, 100, 78400, 0, 49 }, + { 46, 98, 470400, 0, 46 }, + { 51, 104, 117600, 0, 51 }, + { 47, 101, 117600, 0, 47 }, + { 50, 104, 117600, 0, 50 }, + { 53, 107, 117600, 0, 53 }, + { 52, 106, 117600, 0, 52 }, + { 54, 111, 470400, 0, 54 }, + { 57, 115, 235200, 0, 57 }, + { 58, 117, 274400, 0, 58 }, + { 56, 116, 110976, 0, 56 }, + { 59, 119, 73984, 0, 59 }, + { 55, 115, 110976, 0, 55 }, + { 60, 124, 295936, 0, 60 }, + { 63, 128, 55488, 0, 63 }, + { 64, 130, 55488, 0, 64 }, + { 61, 128, 295936, 0, 61 }, + { 65, 133, 64736, 0, 65 }, + { 66, 135, 55488, 0, 66 }, + { 69, 139, 64736, 0, 69 }, + { 70, 141, 64736, 0, 70 }, + { 62, 134, 110976, 0, 62 }, + { 68, 140, 73984, 0, 68 }, + { 71, 143, 73984, 0, 71 }, + { 67, 139, 36992, 0, 67 }, + { 72, 148, 295936, 0, 72 }, + { 75, 152, 55488, 0, 75 }, + { 76, 154, 55488, 0, 76 }, + { 73, 152, 295936, 0, 73 }, + { 77, 157, 64736, 0, 77 }, + { 78, 159, 55488, 0, 78 }, + { 81, 163, 64736, 0, 81 }, + { 82, 165, 64736, 0, 82 }, + { 74, 158, 110976, 0, 74 }, + { 80, 164, 73984, 0, 80 }, + { 83, 167, 73984, 0, 83 }, + { 79, 163, 36992, 0, 79 }, + { 84, 172, 295936, 0, 84 }, + { 87, 176, 55488, 0, 87 }, + { 88, 178, 55488, 0, 88 }, + { 85, 176, 295936, 0, 85 }, + { 89, 181, 64736, 0, 89 }, + { 90, 183, 55488, 0, 90 }, + { 93, 187, 64736, 0, 93 }, + { 94, 189, 64736, 0, 94 }, + { 86, 182, 110976, 0, 86 }, + { 92, 188, 73984, 0, 92 }, + { 95, 191, 73984, 0, 95 }, + { 91, 187, 36992, 0, 91 }, + { 96, 196, 295936, 0, 96 }, + { 99, 200, 55488, 0, 99 }, + { 100, 202, 55488, 0, 100 }, + { 97, 200, 295936, 0, 97 }, + { 101, 205, 64736, 0, 101 }, + { 102, 207, 55488, 0, 102 }, + { 105, 211, 64736, 0, 105 }, + { 106, 213, 64736, 0, 106 }, + { 98, 206, 110976, 0, 98 }, + { 104, 212, 73984, 0, 104 }, + { 107, 215, 73984, 0, 107 }, + { 103, 211, 36992, 0, 103 }, + { 108, 220, 295936, 0, 108 }, + { 111, 224, 55488, 0, 111 }, + { 112, 226, 55488, 0, 112 }, + { 109, 224, 295936, 0, 109 }, + { 113, 229, 64736, 0, 113 }, + { 114, 231, 55488, 0, 114 }, + { 117, 235, 64736, 0, 117 }, + { 118, 237, 64736, 0, 118 }, + { 110, 230, 110976, 0, 110 }, + { 116, 236, 73984, 0, 116 }, + { 119, 239, 73984, 0, 119 }, + { 115, 235, 36992, 0, 115 }, + { 120, 244, 295936, 0, 120 }, + { 123, 248, 55488, 0, 123 }, + { 124, 250, 55488, 0, 124 }, + { 121, 248, 295936, 0, 121 }, + { 125, 253, 64736, 0, 125 }, + { 126, 255, 55488, 0, 126 }, + { 129, 259, 64736, 0, 129 }, + { 130, 261, 64736, 0, 130 }, + { 122, 254, 110976, 0, 122 }, + { 128, 260, 73984, 0, 128 }, + { 131, 263, 73984, 0, 131 }, + { 127, 259, 36992, 0, 127 }, + { 132, 268, 295936, 0, 132 }, + { 135, 272, 55488, 0, 135 }, + { 136, 274, 55488, 0, 136 }, + { 133, 272, 295936, 0, 133 }, + { 137, 277, 64736, 0, 137 }, + { 138, 279, 55488, 0, 138 }, + { 141, 283, 64736, 0, 141 }, + { 142, 285, 64736, 0, 142 }, + { 134, 278, 110976, 0, 134 }, + { 140, 284, 73984, 0, 140 }, + { 143, 287, 73984, 0, 143 }, + { 139, 283, 36992, 0, 139 }, + { 144, 291, 295936, 0, 144 }, + { 146, 294, 55488, 0, 146 }, + { 147, 296, 73984, 0, 147 }, + { 149, 299, 73984, 0, 149 }, + { 150, 301, 92480, 0, 150 }, + { 148, 300, 12288, 0, 148 }, + { 151, 303, 20480, 0, 151 }, + { 145, 297, 65536, 0, 145 }, + { 152, 308, 98304, 0, 152 }, + { 155, 313, 24576, 0, 155 }, + { 156, 315, 24576, 0, 156 }, + { 153, 313, 98304, 0, 153 }, + { 157, 318, 16384, 0, 157 }, + { 158, 319, 16384, 0, 158 }, + { 159, 321, 28672, 0, 159 }, + { 162, 326, 32768, 0, 162 }, + { 163, 328, 16384, 0, 163 }, + { 164, 329, 16384, 0, 164 }, + { 154, 320, 16384, 0, 154 }, + { 161, 327, 32768, 0, 161 }, + { 165, 331, 32768, 0, 165 }, + { 160, 326, 16384, 0, 160 }, + { 166, 336, 98304, 0, 166 }, + { 169, 341, 24576, 0, 169 }, + { 170, 343, 24576, 0, 170 }, + { 167, 341, 98304, 0, 167 }, + { 171, 346, 16384, 0, 171 }, + { 172, 347, 16384, 0, 172 }, + { 173, 349, 28672, 0, 173 }, + { 176, 354, 32768, 0, 176 }, + { 177, 356, 16384, 0, 177 }, + { 178, 357, 16384, 0, 178 }, + { 168, 348, 16384, 0, 168 }, + { 175, 355, 32768, 0, 175 }, + { 179, 359, 32768, 0, 179 }, + { 174, 354, 16384, 0, 174 }, + { 180, 364, 98304, 0, 180 }, + { 183, 369, 24576, 0, 183 }, + { 184, 371, 24576, 0, 184 }, + { 181, 369, 98304, 0, 181 }, + { 185, 374, 16384, 0, 185 }, + { 186, 375, 16384, 0, 186 }, + { 187, 377, 28672, 0, 187 }, + { 190, 382, 32768, 0, 190 }, + { 191, 384, 16384, 0, 191 }, + { 192, 385, 16384, 0, 192 }, + { 182, 376, 16384, 0, 182 }, + { 189, 383, 32768, 0, 189 }, + { 193, 387, 32768, 0, 193 }, + { 188, 382, 16384, 0, 188 }, + { 194, 389, 98304, 0, 194 }, + { 195, 391, 1536, 0, 195 }, + { 196, 393, 1536, 0, 196 }, + { 197, 395, 1001, 0, 197 }, + { 198, 397, 1001, 0, 198 } +}; + +// Generated from deepspeechv1_float32.tflite +std::vector deepspeechv1 +{ + { 0, 3, 31616, 0, 0 }, + { 3, 39, 31616, 0, 3 }, + { 36, 73, 131072, 0, 36 }, + { 37, 75, 131072, 0, 37 }, + { 38, 77, 131072, 0, 38 }, + { 39, 79, 131072, 0, 39 }, + { 40, 81, 131072, 0, 40 }, + { 41, 83, 131072, 0, 41 }, + { 42, 85, 131072, 0, 42 }, + { 43, 87, 131072, 0, 43 }, + { 44, 89, 131072, 0, 44 }, + { 45, 91, 131072, 0, 45 }, + { 46, 93, 8192, 0, 46 }, + { 46, 94, 8192, 0, 47 }, + { 46, 95, 8192, 0, 48 }, + { 46, 96, 8192, 0, 49 }, + { 46, 97, 8192, 0, 50 }, + { 46, 98, 8192, 0, 51 }, + { 46, 99, 8192, 0, 52 }, + { 46, 100, 8192, 0, 53 }, + { 46, 101, 8192, 0, 54 }, + { 46, 102, 8192, 0, 55 }, + { 46, 103, 8192, 0, 56 }, + { 46, 104, 8192, 0, 57 }, + { 46, 105, 8192, 0, 58 }, + { 46, 106, 8192, 0, 59 }, + { 46, 107, 8192, 0, 60 }, + { 46, 108, 8192, 0, 61 }, + { 47, 110, 8192, 0, 62 }, + { 1, 64, 8192, 0, 1 }, + { 63, 127, 16384, 0, 78 }, + { 64, 129, 32768, 0, 79 }, + { 65, 131, 8192, 0, 82 }, + { 65, 132, 8192, 0, 80 }, + { 65, 133, 8192, 0, 81 }, + { 65, 134, 8192, 0, 83 }, + { 66, 136, 8192, 0, 84 }, + { 67, 138, 8192, 0, 85 }, + { 68, 139, 8192, 0, 86 }, + { 70, 142, 8192, 0, 88 }, + { 2, 74, 8192, 0, 2 }, + { 72, 145, 8192, 0, 90 }, + { 71, 144, 8192, 0, 89 }, + { 69, 144, 8192, 0, 87 }, + { 74, 149, 8192, 0, 92 }, + { 48, 124, 8192, 0, 63 }, + { 76, 153, 16384, 0, 94 }, + { 77, 155, 32768, 0, 95 }, + { 78, 157, 8192, 0, 98 }, + { 78, 158, 8192, 0, 96 }, + { 78, 159, 8192, 0, 97 }, + { 78, 160, 8192, 0, 99 }, + { 79, 162, 8192, 0, 100 }, + { 80, 164, 8192, 0, 101 }, + { 81, 165, 8192, 0, 102 }, + { 83, 168, 8192, 0, 104 }, + { 73, 158, 8192, 0, 91 }, + { 85, 171, 8192, 0, 106 }, + { 84, 170, 8192, 0, 105 }, + { 82, 170, 8192, 0, 103 }, + { 87, 175, 8192, 0, 108 }, + { 49, 138, 8192, 0, 64 }, + { 89, 179, 16384, 0, 110 }, + { 90, 181, 32768, 0, 111 }, + { 91, 183, 8192, 0, 114 }, + { 91, 184, 8192, 0, 112 }, + { 91, 185, 8192, 0, 113 }, + { 91, 186, 8192, 0, 115 }, + { 92, 188, 8192, 0, 116 }, + { 93, 190, 8192, 0, 117 }, + { 94, 191, 8192, 0, 118 }, + { 96, 194, 8192, 0, 120 }, + { 86, 184, 8192, 0, 107 }, + { 98, 197, 8192, 0, 122 }, + { 97, 196, 8192, 0, 121 }, + { 95, 196, 8192, 0, 119 }, + { 100, 201, 8192, 0, 124 }, + { 50, 152, 8192, 0, 65 }, + { 102, 205, 16384, 0, 126 }, + { 103, 207, 32768, 0, 127 }, + { 104, 209, 8192, 0, 130 }, + { 104, 210, 8192, 0, 128 }, + { 104, 211, 8192, 0, 129 }, + { 104, 212, 8192, 0, 131 }, + { 105, 214, 8192, 0, 132 }, + { 106, 216, 8192, 0, 133 }, + { 107, 217, 8192, 0, 134 }, + { 109, 220, 8192, 0, 136 }, + { 99, 210, 8192, 0, 123 }, + { 111, 223, 8192, 0, 138 }, + { 110, 222, 8192, 0, 137 }, + { 108, 222, 8192, 0, 135 }, + { 113, 227, 8192, 0, 140 }, + { 51, 166, 8192, 0, 66 }, + { 115, 231, 16384, 0, 142 }, + { 116, 233, 32768, 0, 143 }, + { 117, 235, 8192, 0, 146 }, + { 117, 236, 8192, 0, 144 }, + { 117, 237, 8192, 0, 145 }, + { 117, 238, 8192, 0, 147 }, + { 118, 240, 8192, 0, 148 }, + { 119, 242, 8192, 0, 149 }, + { 120, 243, 8192, 0, 150 }, + { 122, 246, 8192, 0, 152 }, + { 112, 236, 8192, 0, 139 }, + { 124, 249, 8192, 0, 154 }, + { 123, 248, 8192, 0, 153 }, + { 121, 248, 8192, 0, 151 }, + { 126, 253, 8192, 0, 156 }, + { 52, 180, 8192, 0, 67 }, + { 128, 257, 16384, 0, 158 }, + { 129, 259, 32768, 0, 159 }, + { 130, 261, 8192, 0, 162 }, + { 130, 262, 8192, 0, 160 }, + { 130, 263, 8192, 0, 161 }, + { 130, 264, 8192, 0, 163 }, + { 131, 266, 8192, 0, 164 }, + { 132, 268, 8192, 0, 165 }, + { 133, 269, 8192, 0, 166 }, + { 135, 272, 8192, 0, 168 }, + { 125, 262, 8192, 0, 155 }, + { 137, 275, 8192, 0, 170 }, + { 136, 274, 8192, 0, 169 }, + { 134, 274, 8192, 0, 167 }, + { 139, 279, 8192, 0, 172 }, + { 53, 194, 8192, 0, 68 }, + { 141, 283, 16384, 0, 174 }, + { 142, 285, 32768, 0, 175 }, + { 143, 287, 8192, 0, 178 }, + { 143, 288, 8192, 0, 176 }, + { 143, 289, 8192, 0, 177 }, + { 143, 290, 8192, 0, 179 }, + { 144, 292, 8192, 0, 180 }, + { 145, 294, 8192, 0, 181 }, + { 146, 295, 8192, 0, 182 }, + { 148, 298, 8192, 0, 184 }, + { 138, 288, 8192, 0, 171 }, + { 150, 301, 8192, 0, 186 }, + { 149, 300, 8192, 0, 185 }, + { 147, 300, 8192, 0, 183 }, + { 152, 305, 8192, 0, 188 }, + { 54, 208, 8192, 0, 69 }, + { 154, 309, 16384, 0, 190 }, + { 155, 311, 32768, 0, 191 }, + { 156, 313, 8192, 0, 194 }, + { 156, 314, 8192, 0, 192 }, + { 156, 315, 8192, 0, 193 }, + { 156, 316, 8192, 0, 195 }, + { 157, 318, 8192, 0, 196 }, + { 158, 320, 8192, 0, 197 }, + { 159, 321, 8192, 0, 198 }, + { 161, 324, 8192, 0, 200 }, + { 151, 314, 8192, 0, 187 }, + { 163, 327, 8192, 0, 202 }, + { 162, 326, 8192, 0, 201 }, + { 160, 326, 8192, 0, 199 }, + { 165, 331, 8192, 0, 204 }, + { 55, 222, 8192, 0, 70 }, + { 167, 335, 16384, 0, 206 }, + { 168, 337, 32768, 0, 207 }, + { 169, 339, 8192, 0, 210 }, + { 169, 340, 8192, 0, 208 }, + { 169, 341, 8192, 0, 209 }, + { 169, 342, 8192, 0, 211 }, + { 170, 344, 8192, 0, 212 }, + { 171, 346, 8192, 0, 213 }, + { 172, 347, 8192, 0, 214 }, + { 174, 350, 8192, 0, 216 }, + { 164, 340, 8192, 0, 203 }, + { 176, 353, 8192, 0, 218 }, + { 175, 352, 8192, 0, 217 }, + { 173, 352, 8192, 0, 215 }, + { 178, 357, 8192, 0, 220 }, + { 56, 236, 8192, 0, 71 }, + { 180, 361, 16384, 0, 222 }, + { 181, 363, 32768, 0, 223 }, + { 182, 365, 8192, 0, 226 }, + { 182, 366, 8192, 0, 224 }, + { 182, 367, 8192, 0, 225 }, + { 182, 368, 8192, 0, 227 }, + { 183, 370, 8192, 0, 228 }, + { 184, 372, 8192, 0, 229 }, + { 185, 373, 8192, 0, 230 }, + { 187, 376, 8192, 0, 232 }, + { 177, 366, 8192, 0, 219 }, + { 189, 379, 8192, 0, 234 }, + { 188, 378, 8192, 0, 233 }, + { 186, 378, 8192, 0, 231 }, + { 191, 383, 8192, 0, 236 }, + { 57, 250, 8192, 0, 72 }, + { 193, 387, 16384, 0, 238 }, + { 194, 389, 32768, 0, 239 }, + { 195, 391, 8192, 0, 242 }, + { 195, 392, 8192, 0, 240 }, + { 195, 393, 8192, 0, 241 }, + { 195, 394, 8192, 0, 243 }, + { 196, 396, 8192, 0, 244 }, + { 197, 398, 8192, 0, 245 }, + { 198, 399, 8192, 0, 246 }, + { 200, 402, 8192, 0, 248 }, + { 190, 392, 8192, 0, 235 }, + { 202, 405, 8192, 0, 250 }, + { 201, 404, 8192, 0, 249 }, + { 199, 404, 8192, 0, 247 }, + { 204, 409, 8192, 0, 252 }, + { 58, 264, 8192, 0, 73 }, + { 206, 413, 16384, 0, 254 }, + { 207, 415, 32768, 0, 255 }, + { 208, 417, 8192, 0, 258 }, + { 208, 418, 8192, 0, 256 }, + { 208, 419, 8192, 0, 257 }, + { 208, 420, 8192, 0, 259 }, + { 209, 422, 8192, 0, 260 }, + { 210, 424, 8192, 0, 261 }, + { 211, 425, 8192, 0, 262 }, + { 213, 428, 8192, 0, 264 }, + { 203, 418, 8192, 0, 251 }, + { 215, 431, 8192, 0, 266 }, + { 214, 430, 8192, 0, 265 }, + { 212, 430, 8192, 0, 263 }, + { 217, 435, 8192, 0, 268 }, + { 59, 278, 8192, 0, 74 }, + { 219, 439, 16384, 0, 270 }, + { 220, 441, 32768, 0, 271 }, + { 221, 443, 8192, 0, 274 }, + { 221, 444, 8192, 0, 272 }, + { 221, 445, 8192, 0, 273 }, + { 221, 446, 8192, 0, 275 }, + { 222, 448, 8192, 0, 276 }, + { 223, 450, 8192, 0, 277 }, + { 224, 451, 8192, 0, 278 }, + { 226, 454, 8192, 0, 280 }, + { 216, 444, 8192, 0, 267 }, + { 228, 457, 8192, 0, 282 }, + { 227, 456, 8192, 0, 281 }, + { 225, 456, 8192, 0, 279 }, + { 230, 461, 8192, 0, 284 }, + { 60, 292, 8192, 0, 75 }, + { 232, 465, 16384, 0, 286 }, + { 233, 467, 32768, 0, 287 }, + { 234, 469, 8192, 0, 290 }, + { 234, 470, 8192, 0, 288 }, + { 234, 471, 8192, 0, 289 }, + { 234, 472, 8192, 0, 291 }, + { 235, 474, 8192, 0, 292 }, + { 236, 476, 8192, 0, 293 }, + { 237, 477, 8192, 0, 294 }, + { 239, 480, 8192, 0, 296 }, + { 229, 470, 8192, 0, 283 }, + { 241, 483, 8192, 0, 298 }, + { 240, 482, 8192, 0, 297 }, + { 238, 482, 8192, 0, 295 }, + { 243, 487, 8192, 0, 300 }, + { 61, 306, 8192, 0, 76 }, + { 245, 491, 16384, 0, 302 }, + { 246, 493, 32768, 0, 303 }, + { 247, 495, 8192, 0, 306 }, + { 247, 496, 8192, 0, 304 }, + { 247, 497, 8192, 0, 305 }, + { 247, 498, 8192, 0, 307 }, + { 248, 500, 8192, 0, 308 }, + { 249, 502, 8192, 0, 309 }, + { 250, 503, 8192, 0, 310 }, + { 252, 506, 8192, 0, 312 }, + { 242, 496, 8192, 0, 299 }, + { 254, 509, 8192, 0, 314 }, + { 253, 508, 8192, 0, 313 }, + { 251, 508, 8192, 0, 311 }, + { 256, 513, 8192, 0, 316 }, + { 62, 320, 8192, 0, 77 }, + { 258, 517, 16384, 0, 318 }, + { 259, 519, 32768, 0, 319 }, + { 260, 521, 8192, 0, 322 }, + { 260, 522, 8192, 0, 320 }, + { 260, 523, 8192, 0, 321 }, + { 260, 524, 8192, 0, 323 }, + { 261, 526, 8192, 0, 324 }, + { 262, 528, 8192, 0, 325 }, + { 263, 529, 8192, 0, 326 }, + { 265, 532, 8192, 0, 328 }, + { 255, 522, 8192, 0, 315 }, + { 267, 535, 8192, 0, 330 }, + { 266, 534, 8192, 0, 329 }, + { 264, 534, 8192, 0, 327 }, + { 269, 539, 8192, 0, 332 }, + { 75, 346, 8192, 0, 93 }, + { 88, 359, 8192, 0, 109 }, + { 101, 372, 8192, 0, 125 }, + { 114, 385, 8192, 0, 141 }, + { 127, 398, 8192, 0, 157 }, + { 140, 411, 8192, 0, 173 }, + { 153, 424, 8192, 0, 189 }, + { 166, 437, 8192, 0, 205 }, + { 179, 450, 8192, 0, 221 }, + { 192, 463, 8192, 0, 237 }, + { 205, 476, 8192, 0, 253 }, + { 218, 489, 8192, 0, 269 }, + { 231, 502, 8192, 0, 285 }, + { 244, 515, 8192, 0, 301 }, + { 257, 528, 8192, 0, 317 }, + { 271, 543, 131072, 0, 334 }, + { 272, 545, 131072, 0, 335 }, + { 273, 547, 131072, 0, 336 }, + { 274, 549, 131072, 0, 337 }, + { 275, 551, 1856, 0, 338 }, + { 276, 553, 1856, 0, 339 }, + { 270, 548, 8192, 0, 333 }, + { 268, 547, 8192, 0, 331 } +}; + +// Generated from resnet_v2_50_default_minmax.tflite +std::vector resnetv2 +{ + { 0, 1, 150528, 0, 0 }, + { 1, 37, 802816, 0, 1 }, + { 36, 73, 200704, 0, 36 }, + { 37, 75, 200704, 0, 37 }, + { 38, 77, 200704, 0, 38 }, + { 39, 80, 200704, 0, 39 }, + { 41, 83, 200704, 0, 41 }, + { 42, 85, 200704, 0, 42 }, + { 43, 87, 200704, 0, 43 }, + { 44, 89, 200704, 0, 44 }, + { 40, 86, 802816, 0, 40 }, + { 45, 91, 802816, 0, 45 }, + { 47, 95, 802816, 0, 47 }, + { 48, 97, 802816, 0, 48 }, + { 49, 99, 802816, 0, 49 }, + { 50, 101, 200704, 0, 50 }, + { 51, 103, 200704, 0, 51 }, + { 52, 105, 200704, 0, 52 }, + { 53, 107, 200704, 0, 53 }, + { 46, 101, 802816, 0, 46 }, + { 54, 109, 802816, 0, 54 }, + { 55, 112, 802816, 0, 55 }, + { 56, 114, 802816, 0, 56 }, + { 58, 117, 802816, 0, 58 }, + { 59, 119, 802816, 0, 59 }, + { 60, 121, 200704, 0, 60 }, + { 61, 123, 200704, 0, 61 }, + { 62, 125, 50176, 0, 62 }, + { 63, 127, 50176, 0, 63 }, + { 57, 122, 200704, 0, 57 }, + { 64, 129, 200704, 0, 64 }, + { 65, 131, 200704, 0, 65 }, + { 66, 133, 200704, 0, 66 }, + { 67, 135, 200704, 0, 67 }, + { 68, 138, 200704, 0, 68 }, + { 70, 141, 100352, 0, 70 }, + { 71, 143, 100352, 0, 71 }, + { 72, 145, 100352, 0, 72 }, + { 73, 147, 100352, 0, 73 }, + { 69, 144, 401408, 0, 69 }, + { 74, 149, 401408, 0, 74 }, + { 76, 153, 401408, 0, 76 }, + { 77, 155, 401408, 0, 77 }, + { 78, 157, 401408, 0, 78 }, + { 79, 159, 100352, 0, 79 }, + { 80, 161, 100352, 0, 80 }, + { 81, 163, 100352, 0, 81 }, + { 82, 165, 100352, 0, 82 }, + { 75, 159, 401408, 0, 75 }, + { 83, 167, 401408, 0, 83 }, + { 85, 171, 401408, 0, 85 }, + { 86, 173, 401408, 0, 86 }, + { 87, 175, 401408, 0, 87 }, + { 88, 177, 100352, 0, 88 }, + { 89, 179, 100352, 0, 89 }, + { 90, 181, 100352, 0, 90 }, + { 91, 183, 100352, 0, 91 }, + { 84, 177, 401408, 0, 84 }, + { 92, 185, 401408, 0, 92 }, + { 93, 188, 401408, 0, 93 }, + { 94, 190, 401408, 0, 94 }, + { 96, 193, 401408, 0, 96 }, + { 97, 195, 401408, 0, 97 }, + { 98, 197, 100352, 0, 98 }, + { 99, 199, 100352, 0, 99 }, + { 100, 201, 25088, 0, 100 }, + { 101, 203, 25088, 0, 101 }, + { 95, 198, 100352, 0, 95 }, + { 102, 205, 100352, 0, 102 }, + { 103, 207, 100352, 0, 103 }, + { 104, 209, 100352, 0, 104 }, + { 105, 211, 100352, 0, 105 }, + { 106, 214, 100352, 0, 106 }, + { 108, 217, 50176, 0, 108 }, + { 109, 219, 50176, 0, 109 }, + { 110, 221, 50176, 0, 110 }, + { 111, 223, 50176, 0, 111 }, + { 107, 220, 200704, 0, 107 }, + { 112, 225, 200704, 0, 112 }, + { 114, 229, 200704, 0, 114 }, + { 115, 231, 200704, 0, 115 }, + { 116, 233, 200704, 0, 116 }, + { 117, 235, 50176, 0, 117 }, + { 118, 237, 50176, 0, 118 }, + { 119, 239, 50176, 0, 119 }, + { 120, 241, 50176, 0, 120 }, + { 113, 235, 200704, 0, 113 }, + { 121, 243, 200704, 0, 121 }, + { 123, 247, 200704, 0, 123 }, + { 124, 249, 200704, 0, 124 }, + { 125, 251, 200704, 0, 125 }, + { 126, 253, 50176, 0, 126 }, + { 127, 255, 50176, 0, 127 }, + { 128, 257, 50176, 0, 128 }, + { 129, 259, 50176, 0, 129 }, + { 122, 253, 200704, 0, 122 }, + { 130, 261, 200704, 0, 130 }, + { 132, 265, 200704, 0, 132 }, + { 133, 267, 200704, 0, 133 }, + { 134, 269, 200704, 0, 134 }, + { 135, 271, 50176, 0, 135 }, + { 136, 273, 50176, 0, 136 }, + { 137, 275, 50176, 0, 137 }, + { 138, 277, 50176, 0, 138 }, + { 131, 271, 200704, 0, 131 }, + { 139, 279, 200704, 0, 139 }, + { 141, 283, 200704, 0, 141 }, + { 142, 285, 200704, 0, 142 }, + { 143, 287, 200704, 0, 143 }, + { 144, 289, 50176, 0, 144 }, + { 145, 291, 50176, 0, 145 }, + { 146, 293, 50176, 0, 146 }, + { 147, 295, 50176, 0, 147 }, + { 140, 289, 200704, 0, 140 }, + { 148, 297, 200704, 0, 148 }, + { 149, 300, 200704, 0, 149 }, + { 150, 302, 200704, 0, 150 }, + { 152, 305, 200704, 0, 152 }, + { 153, 307, 200704, 0, 153 }, + { 154, 309, 50176, 0, 154 }, + { 155, 311, 50176, 0, 155 }, + { 156, 313, 12544, 0, 156 }, + { 157, 315, 12544, 0, 157 }, + { 151, 310, 50176, 0, 151 }, + { 158, 317, 50176, 0, 158 }, + { 159, 319, 50176, 0, 159 }, + { 160, 321, 50176, 0, 160 }, + { 161, 323, 50176, 0, 161 }, + { 162, 326, 50176, 0, 162 }, + { 164, 329, 25088, 0, 164 }, + { 165, 331, 25088, 0, 165 }, + { 166, 333, 25088, 0, 166 }, + { 167, 335, 25088, 0, 167 }, + { 163, 332, 100352, 0, 163 }, + { 168, 337, 100352, 0, 168 }, + { 170, 341, 100352, 0, 170 }, + { 171, 343, 100352, 0, 171 }, + { 172, 345, 100352, 0, 172 }, + { 173, 347, 25088, 0, 173 }, + { 174, 349, 25088, 0, 174 }, + { 175, 351, 25088, 0, 175 }, + { 176, 353, 25088, 0, 176 }, + { 169, 347, 100352, 0, 169 }, + { 177, 355, 100352, 0, 177 }, + { 179, 359, 100352, 0, 179 }, + { 180, 361, 100352, 0, 180 }, + { 181, 363, 100352, 0, 181 }, + { 182, 365, 25088, 0, 182 }, + { 183, 367, 25088, 0, 183 }, + { 184, 369, 25088, 0, 184 }, + { 185, 371, 25088, 0, 185 }, + { 178, 365, 100352, 0, 178 }, + { 186, 373, 100352, 0, 186 }, + { 187, 375, 100352, 0, 187 }, + { 188, 377, 100352, 0, 188 }, + { 189, 379, 100352, 0, 189 }, + { 190, 381, 100352, 0, 190 }, + { 191, 383, 2048, 0, 191 }, + { 192, 385, 1001, 0, 192 }, + { 193, 387, 1001, 0, 193 }, + { 194, 389, 1001, 0, 194 } + +}; + +// Generated from yolov3_1080_1920_backbone_int8.tflite +std::vector yolov3 +{ + { 0, 1, 24883200, 0, 0 }, + { 1, 75, 6220800, 0, 1 }, + { 74, 150, 66355200, 0, 74 }, + { 75, 152, 66355200, 0, 75 }, + { 76, 154, 66355200, 0, 76 }, + { 77, 155, 66355200, 0, 77 }, + { 78, 157, 66355200, 0, 78 }, + { 79, 160, 33177600, 0, 79 }, + { 80, 162, 33177600, 0, 80 }, + { 81, 164, 33177600, 0, 81 }, + { 82, 165, 33177600, 0, 82 }, + { 84, 170, 16588800, 0, 84 }, + { 85, 172, 16588800, 0, 85 }, + { 86, 174, 16588800, 0, 86 }, + { 87, 175, 16588800, 0, 87 }, + { 88, 177, 16588800, 0, 88 }, + { 89, 180, 33177600, 0, 89 }, + { 90, 182, 33177600, 0, 90 }, + { 91, 184, 33177600, 0, 91 }, + { 92, 185, 33177600, 0, 92 }, + { 93, 187, 33177600, 0, 93 }, + { 83, 177, 33177600, 0, 83 }, + { 94, 189, 33177600, 0, 94 }, + { 95, 192, 16588800, 0, 95 }, + { 96, 194, 16588800, 0, 96 }, + { 97, 196, 16588800, 0, 97 }, + { 98, 197, 16588800, 0, 98 }, + { 100, 202, 8294400, 0, 100 }, + { 101, 204, 8294400, 0, 101 }, + { 102, 206, 8294400, 0, 102 }, + { 103, 207, 8294400, 0, 103 }, + { 104, 209, 8294400, 0, 104 }, + { 105, 212, 16588800, 0, 105 }, + { 106, 214, 16588800, 0, 106 }, + { 107, 216, 16588800, 0, 107 }, + { 108, 217, 16588800, 0, 108 }, + { 109, 219, 16588800, 0, 109 }, + { 99, 209, 16588800, 0, 99 }, + { 111, 224, 8294400, 0, 111 }, + { 112, 226, 8294400, 0, 112 }, + { 113, 228, 8294400, 0, 113 }, + { 114, 229, 8294400, 0, 114 }, + { 115, 231, 8294400, 0, 115 }, + { 116, 234, 16588800, 0, 116 }, + { 117, 236, 16588800, 0, 117 }, + { 118, 238, 16588800, 0, 118 }, + { 119, 239, 16588800, 0, 119 }, + { 120, 241, 16588800, 0, 120 }, + { 110, 231, 16588800, 0, 110 }, + { 121, 243, 16588800, 0, 121 }, + { 122, 246, 8294400, 0, 122 }, + { 123, 248, 8294400, 0, 123 }, + { 124, 250, 8294400, 0, 124 }, + { 125, 251, 8294400, 0, 125 }, + { 127, 256, 4147200, 0, 127 }, + { 128, 258, 4147200, 0, 128 }, + { 129, 260, 4147200, 0, 129 }, + { 130, 261, 4147200, 0, 130 }, + { 131, 263, 4147200, 0, 131 }, + { 132, 266, 8294400, 0, 132 }, + { 133, 268, 8294400, 0, 133 }, + { 134, 270, 8294400, 0, 134 }, + { 135, 271, 8294400, 0, 135 }, + { 136, 273, 8294400, 0, 136 }, + { 126, 263, 8294400, 0, 126 }, + { 138, 278, 4147200, 0, 138 }, + { 139, 280, 4147200, 0, 139 }, + { 140, 282, 4147200, 0, 140 }, + { 141, 283, 4147200, 0, 141 }, + { 142, 285, 4147200, 0, 142 }, + { 143, 288, 8294400, 0, 143 }, + { 144, 290, 8294400, 0, 144 }, + { 145, 292, 8294400, 0, 145 }, + { 146, 293, 8294400, 0, 146 }, + { 147, 295, 8294400, 0, 147 }, + { 137, 285, 8294400, 0, 137 }, + { 149, 300, 4147200, 0, 149 }, + { 150, 302, 4147200, 0, 150 }, + { 151, 304, 4147200, 0, 151 }, + { 152, 305, 4147200, 0, 152 }, + { 153, 307, 4147200, 0, 153 }, + { 154, 310, 8294400, 0, 154 }, + { 155, 312, 8294400, 0, 155 }, + { 156, 314, 8294400, 0, 156 }, + { 157, 315, 8294400, 0, 157 }, + { 158, 317, 8294400, 0, 158 }, + { 148, 307, 8294400, 0, 148 }, + { 160, 322, 4147200, 0, 160 }, + { 161, 324, 4147200, 0, 161 }, + { 162, 326, 4147200, 0, 162 }, + { 163, 327, 4147200, 0, 163 }, + { 164, 329, 4147200, 0, 164 }, + { 165, 332, 8294400, 0, 165 }, + { 166, 334, 8294400, 0, 166 }, + { 167, 336, 8294400, 0, 167 }, + { 168, 337, 8294400, 0, 168 }, + { 169, 339, 8294400, 0, 169 }, + { 159, 329, 8294400, 0, 159 }, + { 171, 344, 4147200, 0, 171 }, + { 172, 346, 4147200, 0, 172 }, + { 173, 348, 4147200, 0, 173 }, + { 174, 349, 4147200, 0, 174 }, + { 175, 351, 4147200, 0, 175 }, + { 176, 354, 8294400, 0, 176 }, + { 177, 356, 8294400, 0, 177 }, + { 178, 358, 8294400, 0, 178 }, + { 179, 359, 8294400, 0, 179 }, + { 180, 361, 8294400, 0, 180 }, + { 170, 351, 8294400, 0, 170 }, + { 182, 366, 4147200, 0, 182 }, + { 183, 368, 4147200, 0, 183 }, + { 184, 370, 4147200, 0, 184 }, + { 185, 371, 4147200, 0, 185 }, + { 186, 373, 4147200, 0, 186 }, + { 187, 376, 8294400, 0, 187 }, + { 188, 378, 8294400, 0, 188 }, + { 189, 380, 8294400, 0, 189 }, + { 190, 381, 8294400, 0, 190 }, + { 191, 383, 8294400, 0, 191 }, + { 181, 373, 8294400, 0, 181 }, + { 193, 388, 4147200, 0, 193 }, + { 194, 390, 4147200, 0, 194 }, + { 195, 392, 4147200, 0, 195 }, + { 196, 393, 4147200, 0, 196 }, + { 197, 395, 4147200, 0, 197 }, + { 198, 398, 8294400, 0, 198 }, + { 199, 400, 8294400, 0, 199 }, + { 200, 402, 8294400, 0, 200 }, + { 201, 403, 8294400, 0, 201 }, + { 202, 405, 8294400, 0, 202 }, + { 192, 395, 8294400, 0, 192 }, + { 204, 410, 4147200, 0, 204 }, + { 205, 412, 4147200, 0, 205 }, + { 206, 414, 4147200, 0, 206 }, + { 207, 415, 4147200, 0, 207 }, + { 208, 417, 4147200, 0, 208 }, + { 209, 420, 8294400, 0, 209 }, + { 210, 422, 8294400, 0, 210 }, + { 211, 424, 8294400, 0, 211 }, + { 212, 425, 8294400, 0, 212 }, + { 213, 427, 8294400, 0, 213 }, + { 203, 417, 8294400, 0, 203 }, + { 214, 430, 8294400, 0, 214 }, + { 215, 433, 4177920, 0, 215 }, + { 217, 436, 4177920, 0, 217 }, + { 218, 438, 4177920, 0, 218 }, + { 219, 439, 4177920, 0, 219 }, + { 221, 444, 2088960, 0, 221 }, + { 222, 446, 2088960, 0, 222 }, + { 223, 448, 2088960, 0, 223 }, + { 224, 449, 2088960, 0, 224 }, + { 225, 451, 2088960, 0, 225 }, + { 226, 454, 4177920, 0, 226 }, + { 227, 456, 4177920, 0, 227 }, + { 228, 458, 4177920, 0, 228 }, + { 229, 459, 4177920, 0, 229 }, + { 230, 461, 4177920, 0, 230 }, + { 220, 451, 4177920, 0, 220 }, + { 232, 466, 2088960, 0, 232 }, + { 233, 468, 2088960, 0, 233 }, + { 234, 470, 2088960, 0, 234 }, + { 235, 471, 2088960, 0, 235 }, + { 236, 473, 2088960, 0, 236 }, + { 237, 476, 4177920, 0, 237 }, + { 238, 478, 4177920, 0, 238 }, + { 239, 480, 4177920, 0, 239 }, + { 240, 481, 4177920, 0, 240 }, + { 241, 483, 4177920, 0, 241 }, + { 231, 473, 4177920, 0, 231 }, + { 243, 488, 2088960, 0, 243 }, + { 244, 490, 2088960, 0, 244 }, + { 245, 492, 2088960, 0, 245 }, + { 246, 493, 2088960, 0, 246 }, + { 247, 495, 2088960, 0, 247 }, + { 248, 498, 4177920, 0, 248 }, + { 249, 500, 4177920, 0, 249 }, + { 250, 502, 4177920, 0, 250 }, + { 251, 503, 4177920, 0, 251 }, + { 252, 505, 4177920, 0, 252 }, + { 242, 495, 4177920, 0, 242 }, + { 254, 510, 2088960, 0, 254 }, + { 255, 512, 2088960, 0, 255 }, + { 256, 514, 2088960, 0, 256 }, + { 257, 515, 2088960, 0, 257 }, + { 258, 517, 2088960, 0, 258 }, + { 259, 520, 4177920, 0, 259 }, + { 260, 522, 4177920, 0, 260 }, + { 261, 524, 4177920, 0, 261 }, + { 262, 525, 4177920, 0, 262 }, + { 263, 527, 4177920, 0, 263 }, + { 253, 517, 4177920, 0, 253 }, + { 265, 532, 2088960, 0, 265 }, + { 266, 534, 2088960, 0, 266 }, + { 267, 536, 2088960, 0, 267 }, + { 268, 537, 2088960, 0, 268 }, + { 269, 539, 2088960, 0, 269 }, + { 270, 542, 4177920, 0, 270 }, + { 271, 544, 4177920, 0, 271 }, + { 272, 546, 4177920, 0, 272 }, + { 273, 547, 4177920, 0, 273 }, + { 274, 549, 4177920, 0, 274 }, + { 264, 539, 4177920, 0, 264 }, + { 276, 554, 2088960, 0, 276 }, + { 277, 556, 2088960, 0, 277 }, + { 278, 558, 2088960, 0, 278 }, + { 279, 559, 2088960, 0, 279 }, + { 280, 561, 2088960, 0, 280 }, + { 281, 564, 4177920, 0, 281 }, + { 282, 566, 4177920, 0, 282 }, + { 283, 568, 4177920, 0, 283 }, + { 284, 569, 4177920, 0, 284 }, + { 285, 571, 4177920, 0, 285 }, + { 275, 561, 4177920, 0, 275 }, + { 287, 576, 2088960, 0, 287 }, + { 288, 578, 2088960, 0, 288 }, + { 289, 580, 2088960, 0, 289 }, + { 290, 581, 2088960, 0, 290 }, + { 291, 583, 2088960, 0, 291 }, + { 292, 586, 4177920, 0, 292 }, + { 293, 588, 4177920, 0, 293 }, + { 294, 590, 4177920, 0, 294 }, + { 295, 591, 4177920, 0, 295 }, + { 296, 593, 4177920, 0, 296 }, + { 286, 583, 4177920, 0, 286 }, + { 298, 598, 2088960, 0, 298 }, + { 299, 600, 2088960, 0, 299 }, + { 300, 602, 2088960, 0, 300 }, + { 301, 603, 2088960, 0, 301 }, + { 302, 605, 2088960, 0, 302 }, + { 303, 608, 4177920, 0, 303 }, + { 304, 610, 4177920, 0, 304 }, + { 305, 612, 4177920, 0, 305 }, + { 306, 613, 4177920, 0, 306 }, + { 307, 615, 4177920, 0, 307 }, + { 297, 605, 4177920, 0, 297 }, + { 309, 620, 2088960, 0, 309 }, + { 310, 622, 2088960, 0, 310 }, + { 311, 624, 2088960, 0, 311 }, + { 312, 625, 2088960, 0, 312 }, + { 314, 630, 1044480, 0, 314 }, + { 315, 632, 1044480, 0, 315 }, + { 316, 634, 1044480, 0, 316 }, + { 317, 635, 1044480, 0, 317 }, + { 318, 637, 1044480, 0, 318 }, + { 319, 640, 2088960, 0, 319 }, + { 320, 642, 2088960, 0, 320 }, + { 321, 644, 2088960, 0, 321 }, + { 322, 645, 2088960, 0, 322 }, + { 323, 647, 2088960, 0, 323 }, + { 313, 637, 2088960, 0, 313 }, + { 325, 652, 1044480, 0, 325 }, + { 326, 654, 1044480, 0, 326 }, + { 327, 656, 1044480, 0, 327 }, + { 328, 657, 1044480, 0, 328 }, + { 329, 659, 1044480, 0, 329 }, + { 330, 662, 2088960, 0, 330 }, + { 331, 664, 2088960, 0, 331 }, + { 332, 666, 2088960, 0, 332 }, + { 333, 667, 2088960, 0, 333 }, + { 334, 669, 2088960, 0, 334 }, + { 324, 659, 2088960, 0, 324 }, + { 336, 674, 1044480, 0, 336 }, + { 337, 676, 1044480, 0, 337 }, + { 338, 678, 1044480, 0, 338 }, + { 339, 679, 1044480, 0, 339 }, + { 340, 681, 1044480, 0, 340 }, + { 341, 684, 2088960, 0, 341 }, + { 342, 686, 2088960, 0, 342 }, + { 343, 688, 2088960, 0, 343 }, + { 344, 689, 2088960, 0, 344 }, + { 345, 691, 2088960, 0, 345 }, + { 335, 681, 2088960, 0, 335 }, + { 347, 696, 1044480, 0, 347 }, + { 348, 698, 1044480, 0, 348 }, + { 349, 700, 1044480, 0, 349 }, + { 350, 701, 1044480, 0, 350 }, + { 351, 703, 1044480, 0, 351 }, + { 352, 706, 2088960, 0, 352 }, + { 353, 708, 2088960, 0, 353 }, + { 354, 710, 2088960, 0, 354 }, + { 355, 711, 2088960, 0, 355 }, + { 356, 713, 2088960, 0, 356 }, + { 346, 703, 2088960, 0, 346 }, + { 357, 715, 2088960, 0, 357 }, + { 358, 718, 1044480, 0, 358 }, + { 359, 720, 1044480, 0, 359 }, + { 360, 722, 1044480, 0, 360 }, + { 361, 723, 1044480, 0, 361 }, + { 362, 725, 1044480, 0, 362 }, + { 363, 728, 2088960, 0, 363 }, + { 364, 730, 2088960, 0, 364 }, + { 365, 732, 2088960, 0, 365 }, + { 366, 733, 2088960, 0, 366 }, + { 367, 735, 2088960, 0, 367 }, + { 368, 738, 1044480, 0, 368 }, + { 369, 740, 1044480, 0, 369 }, + { 370, 742, 1044480, 0, 370 }, + { 371, 743, 1044480, 0, 371 }, + { 372, 745, 1044480, 0, 372 }, + { 373, 748, 2088960, 0, 373 }, + { 374, 750, 2088960, 0, 374 }, + { 375, 752, 2088960, 0, 375 }, + { 376, 753, 2088960, 0, 376 }, + { 377, 755, 2088960, 0, 377 }, + { 378, 758, 1044480, 0, 378 }, + { 379, 760, 1044480, 0, 379 }, + { 380, 762, 1044480, 0, 380 }, + { 381, 763, 1044480, 0, 381 }, + { 382, 766, 1044480, 0, 382 }, + { 383, 770, 2088960, 0, 383 }, + { 384, 772, 522240, 0, 384 }, + { 385, 774, 2088960, 0, 385 }, + { 386, 776, 522240, 0, 386 }, + { 387, 778, 2088960, 0, 387 }, + { 389, 780, 2088960, 0, 389 }, + { 388, 780, 522240, 0, 388 }, + { 390, 782, 522240, 0, 390 }, + { 391, 784, 2088960, 0, 391 }, + { 392, 786, 522240, 0, 392 }, + { 394, 789, 2088960, 0, 394 }, + { 393, 789, 520200, 0, 393 }, + { 395, 792, 2088960, 0, 395 }, + { 308, 705, 4177920, 0, 308 }, + { 397, 795, 6266880, 0, 397 }, + { 398, 798, 2088960, 0, 398 }, + { 399, 800, 2088960, 0, 399 }, + { 400, 802, 2088960, 0, 400 }, + { 401, 803, 2088960, 0, 401 }, + { 402, 805, 2088960, 0, 402 }, + { 403, 808, 4177920, 0, 403 }, + { 404, 810, 4177920, 0, 404 }, + { 405, 812, 4177920, 0, 405 }, + { 406, 813, 4177920, 0, 406 }, + { 407, 815, 4177920, 0, 407 }, + { 408, 818, 2088960, 0, 408 }, + { 409, 820, 2088960, 0, 409 }, + { 410, 822, 2088960, 0, 410 }, + { 411, 823, 2088960, 0, 411 }, + { 412, 825, 2088960, 0, 412 }, + { 413, 828, 4177920, 0, 413 }, + { 414, 830, 4177920, 0, 414 }, + { 415, 832, 4177920, 0, 415 }, + { 416, 833, 4177920, 0, 416 }, + { 417, 835, 4177920, 0, 417 }, + { 418, 838, 2088960, 0, 418 }, + { 419, 840, 2088960, 0, 419 }, + { 420, 842, 2088960, 0, 420 }, + { 421, 843, 2088960, 0, 421 }, + { 422, 846, 2088960, 0, 422 }, + { 423, 850, 4177920, 0, 423 }, + { 424, 852, 1044480, 0, 424 }, + { 425, 854, 4177920, 0, 425 }, + { 426, 856, 1044480, 0, 426 }, + { 427, 858, 4177920, 0, 427 }, + { 429, 860, 4177920, 0, 429 }, + { 428, 860, 1044480, 0, 428 }, + { 430, 862, 1044480, 0, 430 }, + { 431, 864, 4177920, 0, 431 }, + { 432, 866, 1044480, 0, 432 }, + { 434, 869, 4147200, 0, 434 }, + { 433, 869, 2080800, 0, 433 }, + { 435, 872, 4147200, 0, 435 }, + { 216, 653, 8294400, 0, 216 }, + { 437, 875, 12441600, 0, 437 }, + { 438, 878, 4147200, 0, 438 }, + { 439, 880, 4147200, 0, 439 }, + { 440, 882, 4147200, 0, 440 }, + { 441, 883, 4147200, 0, 441 }, + { 442, 885, 4147200, 0, 442 }, + { 443, 888, 8294400, 0, 443 }, + { 444, 890, 8294400, 0, 444 }, + { 445, 892, 8294400, 0, 445 }, + { 446, 893, 8294400, 0, 446 }, + { 447, 895, 8294400, 0, 447 }, + { 448, 898, 4147200, 0, 448 }, + { 449, 900, 4147200, 0, 449 }, + { 450, 902, 4147200, 0, 450 }, + { 451, 903, 4147200, 0, 451 }, + { 452, 905, 4147200, 0, 452 }, + { 453, 908, 8294400, 0, 453 }, + { 454, 910, 8294400, 0, 454 }, + { 455, 912, 8294400, 0, 455 }, + { 456, 913, 8294400, 0, 456 }, + { 457, 915, 8294400, 0, 457 }, + { 458, 918, 4147200, 0, 458 }, + { 459, 920, 4147200, 0, 459 }, + { 460, 922, 4147200, 0, 460 }, + { 461, 923, 4147200, 0, 461 }, + { 462, 925, 4147200, 0, 462 }, + { 463, 928, 8294400, 0, 463 }, + { 464, 930, 8294400, 0, 464 }, + { 465, 932, 8294400, 0, 465 }, + { 466, 933, 8294400, 0, 466 }, + { 467, 935, 8294400, 0, 467 }, + { 468, 937, 8262000, 0, 468 }, + { 396, 866, 2080800, 0, 396 }, + { 436, 907, 8323200, 0, 436 }, + { 469, 941, 33048000, 0, 469 } +}; + +// Generated from deeplabv3_257_mv_gpu.tflite +std::vector deeplabv3 +{ + { 0, 3, 31616, 0, 0 }, + { 3, 39, 31616, 0, 3 }, + { 36, 73, 131072, 0, 36 }, + { 37, 75, 131072, 0, 37 }, + { 38, 77, 131072, 0, 38 }, + { 39, 79, 131072, 0, 39 }, + { 40, 81, 131072, 0, 40 }, + { 41, 83, 131072, 0, 41 }, + { 42, 85, 131072, 0, 42 }, + { 43, 87, 131072, 0, 43 }, + { 44, 89, 131072, 0, 44 }, + { 45, 91, 131072, 0, 45 }, + { 46, 93, 8192, 0, 46 }, + { 46, 94, 8192, 0, 47 }, + { 46, 95, 8192, 0, 48 }, + { 46, 96, 8192, 0, 49 }, + { 46, 97, 8192, 0, 50 }, + { 46, 98, 8192, 0, 51 }, + { 46, 99, 8192, 0, 52 }, + { 46, 100, 8192, 0, 53 }, + { 46, 101, 8192, 0, 54 }, + { 46, 102, 8192, 0, 55 }, + { 46, 103, 8192, 0, 56 }, + { 46, 104, 8192, 0, 57 }, + { 46, 105, 8192, 0, 58 }, + { 46, 106, 8192, 0, 59 }, + { 46, 107, 8192, 0, 60 }, + { 46, 108, 8192, 0, 61 }, + { 47, 110, 8192, 0, 62 }, + { 1, 64, 8192, 0, 1 }, + { 63, 127, 16384, 0, 78 }, + { 64, 129, 32768, 0, 79 }, + { 65, 131, 8192, 0, 82 }, + { 65, 132, 8192, 0, 80 }, + { 65, 133, 8192, 0, 81 }, + { 65, 134, 8192, 0, 83 }, + { 66, 136, 8192, 0, 84 }, + { 67, 138, 8192, 0, 85 }, + { 68, 139, 8192, 0, 86 }, + { 70, 142, 8192, 0, 88 }, + { 2, 74, 8192, 0, 2 }, + { 72, 145, 8192, 0, 90 }, + { 71, 144, 8192, 0, 89 }, + { 69, 144, 8192, 0, 87 }, + { 74, 149, 8192, 0, 92 }, + { 48, 124, 8192, 0, 63 }, + { 76, 153, 16384, 0, 94 }, + { 77, 155, 32768, 0, 95 }, + { 78, 157, 8192, 0, 98 }, + { 78, 158, 8192, 0, 96 }, + { 78, 159, 8192, 0, 97 }, + { 78, 160, 8192, 0, 99 }, + { 79, 162, 8192, 0, 100 }, + { 80, 164, 8192, 0, 101 }, + { 81, 165, 8192, 0, 102 }, + { 83, 168, 8192, 0, 104 }, + { 73, 158, 8192, 0, 91 }, + { 85, 171, 8192, 0, 106 }, + { 84, 170, 8192, 0, 105 }, + { 82, 170, 8192, 0, 103 }, + { 87, 175, 8192, 0, 108 }, + { 49, 138, 8192, 0, 64 }, + { 89, 179, 16384, 0, 110 }, + { 90, 181, 32768, 0, 111 }, + { 91, 183, 8192, 0, 114 }, + { 91, 184, 8192, 0, 112 }, + { 91, 185, 8192, 0, 113 }, + { 91, 186, 8192, 0, 115 }, + { 92, 188, 8192, 0, 116 }, + { 93, 190, 8192, 0, 117 }, + { 94, 191, 8192, 0, 118 }, + { 96, 194, 8192, 0, 120 }, + { 86, 184, 8192, 0, 107 }, + { 98, 197, 8192, 0, 122 }, + { 97, 196, 8192, 0, 121 }, + { 95, 196, 8192, 0, 119 }, + { 100, 201, 8192, 0, 124 }, + { 50, 152, 8192, 0, 65 }, + { 102, 205, 16384, 0, 126 }, + { 103, 207, 32768, 0, 127 }, + { 104, 209, 8192, 0, 130 }, + { 104, 210, 8192, 0, 128 }, + { 104, 211, 8192, 0, 129 }, + { 104, 212, 8192, 0, 131 }, + { 105, 214, 8192, 0, 132 }, + { 106, 216, 8192, 0, 133 }, + { 107, 217, 8192, 0, 134 }, + { 109, 220, 8192, 0, 136 }, + { 99, 210, 8192, 0, 123 }, + { 111, 223, 8192, 0, 138 }, + { 110, 222, 8192, 0, 137 }, + { 108, 222, 8192, 0, 135 }, + { 113, 227, 8192, 0, 140 }, + { 51, 166, 8192, 0, 66 }, + { 115, 231, 16384, 0, 142 }, + { 116, 233, 32768, 0, 143 }, + { 117, 235, 8192, 0, 146 }, + { 117, 236, 8192, 0, 144 }, + { 117, 237, 8192, 0, 145 }, + { 117, 238, 8192, 0, 147 }, + { 118, 240, 8192, 0, 148 }, + { 119, 242, 8192, 0, 149 }, + { 120, 243, 8192, 0, 150 }, + { 122, 246, 8192, 0, 152 }, + { 112, 236, 8192, 0, 139 }, + { 124, 249, 8192, 0, 154 }, + { 123, 248, 8192, 0, 153 }, + { 121, 248, 8192, 0, 151 }, + { 126, 253, 8192, 0, 156 }, + { 52, 180, 8192, 0, 67 }, + { 128, 257, 16384, 0, 158 }, + { 129, 259, 32768, 0, 159 }, + { 130, 261, 8192, 0, 162 }, + { 130, 262, 8192, 0, 160 }, + { 130, 263, 8192, 0, 161 }, + { 130, 264, 8192, 0, 163 }, + { 131, 266, 8192, 0, 164 }, + { 132, 268, 8192, 0, 165 }, + { 133, 269, 8192, 0, 166 }, + { 135, 272, 8192, 0, 168 }, + { 125, 262, 8192, 0, 155 }, + { 137, 275, 8192, 0, 170 }, + { 136, 274, 8192, 0, 169 }, + { 134, 274, 8192, 0, 167 }, + { 139, 279, 8192, 0, 172 }, + { 53, 194, 8192, 0, 68 }, + { 141, 283, 16384, 0, 174 }, + { 142, 285, 32768, 0, 175 }, + { 143, 287, 8192, 0, 178 }, + { 143, 288, 8192, 0, 176 }, + { 143, 289, 8192, 0, 177 }, + { 143, 290, 8192, 0, 179 }, + { 144, 292, 8192, 0, 180 }, + { 145, 294, 8192, 0, 181 }, + { 146, 295, 8192, 0, 182 }, + { 148, 298, 8192, 0, 184 }, + { 138, 288, 8192, 0, 171 }, + { 150, 301, 8192, 0, 186 }, + { 149, 300, 8192, 0, 185 }, + { 147, 300, 8192, 0, 183 }, + { 152, 305, 8192, 0, 188 }, + { 54, 208, 8192, 0, 69 }, + { 154, 309, 16384, 0, 190 }, + { 155, 311, 32768, 0, 191 }, + { 156, 313, 8192, 0, 194 }, + { 156, 314, 8192, 0, 192 }, + { 156, 315, 8192, 0, 193 }, + { 156, 316, 8192, 0, 195 }, + { 157, 318, 8192, 0, 196 }, + { 158, 320, 8192, 0, 197 }, + { 159, 321, 8192, 0, 198 }, + { 161, 324, 8192, 0, 200 }, + { 151, 314, 8192, 0, 187 }, + { 163, 327, 8192, 0, 202 }, + { 162, 326, 8192, 0, 201 }, + { 160, 326, 8192, 0, 199 }, + { 165, 331, 8192, 0, 204 }, + { 55, 222, 8192, 0, 70 }, + { 167, 335, 16384, 0, 206 }, + { 168, 337, 32768, 0, 207 }, + { 169, 339, 8192, 0, 210 }, + { 169, 340, 8192, 0, 208 }, + { 169, 341, 8192, 0, 209 }, + { 169, 342, 8192, 0, 211 }, + { 170, 344, 8192, 0, 212 }, + { 171, 346, 8192, 0, 213 }, + { 172, 347, 8192, 0, 214 }, + { 174, 350, 8192, 0, 216 }, + { 164, 340, 8192, 0, 203 }, + { 176, 353, 8192, 0, 218 }, + { 175, 352, 8192, 0, 217 }, + { 173, 352, 8192, 0, 215 }, + { 178, 357, 8192, 0, 220 }, + { 56, 236, 8192, 0, 71 }, + { 180, 361, 16384, 0, 222 }, + { 181, 363, 32768, 0, 223 }, + { 182, 365, 8192, 0, 226 }, + { 182, 366, 8192, 0, 224 }, + { 182, 367, 8192, 0, 225 }, + { 182, 368, 8192, 0, 227 }, + { 183, 370, 8192, 0, 228 }, + { 184, 372, 8192, 0, 229 }, + { 185, 373, 8192, 0, 230 }, + { 187, 376, 8192, 0, 232 }, + { 177, 366, 8192, 0, 219 }, + { 189, 379, 8192, 0, 234 }, + { 188, 378, 8192, 0, 233 }, + { 186, 378, 8192, 0, 231 }, + { 191, 383, 8192, 0, 236 }, + { 57, 250, 8192, 0, 72 }, + { 193, 387, 16384, 0, 238 }, + { 194, 389, 32768, 0, 239 }, + { 195, 391, 8192, 0, 242 }, + { 195, 392, 8192, 0, 240 }, + { 195, 393, 8192, 0, 241 }, + { 195, 394, 8192, 0, 243 }, + { 196, 396, 8192, 0, 244 }, + { 197, 398, 8192, 0, 245 }, + { 198, 399, 8192, 0, 246 }, + { 200, 402, 8192, 0, 248 }, + { 190, 392, 8192, 0, 235 }, + { 202, 405, 8192, 0, 250 }, + { 201, 404, 8192, 0, 249 }, + { 199, 404, 8192, 0, 247 }, + { 204, 409, 8192, 0, 252 }, + { 58, 264, 8192, 0, 73 }, + { 206, 413, 16384, 0, 254 }, + { 207, 415, 32768, 0, 255 }, + { 208, 417, 8192, 0, 258 }, + { 208, 418, 8192, 0, 256 }, + { 208, 419, 8192, 0, 257 }, + { 208, 420, 8192, 0, 259 }, + { 209, 422, 8192, 0, 260 }, + { 210, 424, 8192, 0, 261 }, + { 211, 425, 8192, 0, 262 }, + { 213, 428, 8192, 0, 264 }, + { 203, 418, 8192, 0, 251 }, + { 215, 431, 8192, 0, 266 }, + { 214, 430, 8192, 0, 265 }, + { 212, 430, 8192, 0, 263 }, + { 217, 435, 8192, 0, 268 }, + { 59, 278, 8192, 0, 74 }, + { 219, 439, 16384, 0, 270 }, + { 220, 441, 32768, 0, 271 }, + { 221, 443, 8192, 0, 274 }, + { 221, 444, 8192, 0, 272 }, + { 221, 445, 8192, 0, 273 }, + { 221, 446, 8192, 0, 275 }, + { 222, 448, 8192, 0, 276 }, + { 223, 450, 8192, 0, 277 }, + { 224, 451, 8192, 0, 278 }, + { 226, 454, 8192, 0, 280 }, + { 216, 444, 8192, 0, 267 }, + { 228, 457, 8192, 0, 282 }, + { 227, 456, 8192, 0, 281 }, + { 225, 456, 8192, 0, 279 }, + { 230, 461, 8192, 0, 284 }, + { 60, 292, 8192, 0, 75 }, + { 232, 465, 16384, 0, 286 }, + { 233, 467, 32768, 0, 287 }, + { 234, 469, 8192, 0, 290 }, + { 234, 470, 8192, 0, 288 }, + { 234, 471, 8192, 0, 289 }, + { 234, 472, 8192, 0, 291 }, + { 235, 474, 8192, 0, 292 }, + { 236, 476, 8192, 0, 293 }, + { 237, 477, 8192, 0, 294 }, + { 239, 480, 8192, 0, 296 }, + { 229, 470, 8192, 0, 283 }, + { 241, 483, 8192, 0, 298 }, + { 240, 482, 8192, 0, 297 }, + { 238, 482, 8192, 0, 295 }, + { 243, 487, 8192, 0, 300 }, + { 61, 306, 8192, 0, 76 }, + { 245, 491, 16384, 0, 302 }, + { 246, 493, 32768, 0, 303 }, + { 247, 495, 8192, 0, 306 }, + { 247, 496, 8192, 0, 304 }, + { 247, 497, 8192, 0, 305 }, + { 247, 498, 8192, 0, 307 }, + { 248, 500, 8192, 0, 308 }, + { 249, 502, 8192, 0, 309 }, + { 250, 503, 8192, 0, 310 }, + { 252, 506, 8192, 0, 312 }, + { 242, 496, 8192, 0, 299 }, + { 254, 509, 8192, 0, 314 }, + { 253, 508, 8192, 0, 313 }, + { 251, 508, 8192, 0, 311 }, + { 256, 513, 8192, 0, 316 }, + { 62, 320, 8192, 0, 77 }, + { 258, 517, 16384, 0, 318 }, + { 259, 519, 32768, 0, 319 }, + { 260, 521, 8192, 0, 322 }, + { 260, 522, 8192, 0, 320 }, + { 260, 523, 8192, 0, 321 }, + { 260, 524, 8192, 0, 323 }, + { 261, 526, 8192, 0, 324 }, + { 262, 528, 8192, 0, 325 }, + { 263, 529, 8192, 0, 326 }, + { 265, 532, 8192, 0, 328 }, + { 255, 522, 8192, 0, 315 }, + { 267, 535, 8192, 0, 330 }, + { 266, 534, 8192, 0, 329 }, + { 264, 534, 8192, 0, 327 }, + { 269, 539, 8192, 0, 332 }, + { 75, 346, 8192, 0, 93 }, + { 88, 359, 8192, 0, 109 }, + { 101, 372, 8192, 0, 125 }, + { 114, 385, 8192, 0, 141 }, + { 127, 398, 8192, 0, 157 }, + { 140, 411, 8192, 0, 173 }, + { 153, 424, 8192, 0, 189 }, + { 166, 437, 8192, 0, 205 }, + { 179, 450, 8192, 0, 221 }, + { 192, 463, 8192, 0, 237 }, + { 205, 476, 8192, 0, 253 }, + { 218, 489, 8192, 0, 269 }, + { 231, 502, 8192, 0, 285 }, + { 244, 515, 8192, 0, 301 }, + { 257, 528, 8192, 0, 317 }, + { 271, 543, 131072, 0, 334 }, + { 272, 545, 131072, 0, 335 }, + { 273, 547, 131072, 0, 336 }, + { 274, 549, 131072, 0, 337 }, + { 275, 551, 1856, 0, 338 }, + { 276, 553, 1856, 0, 339 }, + { 270, 548, 8192, 0, 333 }, + { 268, 547, 8192, 0, 331 } +}; + +// Generated from ssd_mobilenet_v2_int8.tflite +std::vector ssd_mobilenetv2 +{ + { 0, 1, 1080000, 0, 0 }, + { 1, 3, 270000, 0, 1 }, + { 2, 5, 720000, 0, 2 }, + { 3, 7, 720000, 0, 3 }, + { 4, 9, 720000, 0, 4 }, + { 5, 11, 720000, 0, 5 }, + { 6, 13, 360000, 0, 6 }, + { 7, 15, 2160000, 0, 7 }, + { 8, 17, 2160000, 0, 8 }, + { 9, 19, 540000, 0, 9 }, + { 10, 21, 540000, 0, 10 }, + { 12, 25, 810000, 0, 12 }, + { 13, 27, 810000, 0, 13 }, + { 14, 29, 810000, 0, 14 }, + { 15, 31, 810000, 0, 15 }, + { 11, 28, 135000, 0, 11 }, + { 16, 33, 135000, 0, 16 }, + { 17, 35, 135000, 0, 17 }, + { 18, 37, 810000, 0, 18 }, + { 19, 39, 810000, 0, 19 }, + { 20, 41, 207936, 0, 20 }, + { 21, 43, 207936, 0, 21 }, + { 23, 47, 277248, 0, 23 }, + { 24, 49, 277248, 0, 24 }, + { 25, 51, 277248, 0, 25 }, + { 26, 53, 277248, 0, 26 }, + { 22, 50, 46208, 0, 22 }, + { 27, 55, 46208, 0, 27 }, + { 29, 59, 277248, 0, 29 }, + { 30, 61, 277248, 0, 30 }, + { 31, 63, 277248, 0, 31 }, + { 32, 65, 277248, 0, 32 }, + { 28, 62, 46208, 0, 28 }, + { 33, 67, 46208, 0, 33 }, + { 34, 69, 46208, 0, 34 }, + { 35, 71, 277248, 0, 35 }, + { 36, 73, 277248, 0, 36 }, + { 37, 75, 69312, 0, 37 }, + { 38, 77, 69312, 0, 38 }, + { 40, 81, 138624, 0, 40 }, + { 41, 83, 138624, 0, 41 }, + { 42, 85, 138624, 0, 42 }, + { 43, 87, 138624, 0, 43 }, + { 39, 84, 23104, 0, 39 }, + { 44, 89, 23104, 0, 44 }, + { 46, 93, 138624, 0, 46 }, + { 47, 95, 138624, 0, 47 }, + { 48, 97, 138624, 0, 48 }, + { 49, 99, 138624, 0, 49 }, + { 45, 96, 23104, 0, 45 }, + { 50, 101, 23104, 0, 50 }, + { 52, 105, 138624, 0, 52 }, + { 53, 107, 138624, 0, 53 }, + { 54, 109, 138624, 0, 54 }, + { 55, 111, 138624, 0, 55 }, + { 51, 108, 23104, 0, 51 }, + { 56, 113, 23104, 0, 56 }, + { 57, 115, 23104, 0, 57 }, + { 58, 117, 138624, 0, 58 }, + { 59, 119, 138624, 0, 59 }, + { 60, 121, 138624, 0, 60 }, + { 61, 123, 138624, 0, 61 }, + { 63, 127, 207936, 0, 63 }, + { 64, 129, 207936, 0, 64 }, + { 65, 131, 207936, 0, 65 }, + { 66, 133, 207936, 0, 66 }, + { 62, 130, 34656, 0, 62 }, + { 67, 135, 34656, 0, 67 }, + { 69, 139, 207936, 0, 69 }, + { 70, 141, 207936, 0, 70 }, + { 71, 143, 207936, 0, 71 }, + { 72, 145, 207936, 0, 72 }, + { 68, 142, 34656, 0, 68 }, + { 73, 147, 34656, 0, 73 }, + { 74, 149, 34656, 0, 74 }, + { 75, 151, 207936, 0, 75 }, + { 76, 155, 207936, 0, 76 }, + { 77, 157, 4332, 0, 77 }, + { 78, 159, 98553, 0, 78 }, + { 79, 161, 57600, 0, 79 }, + { 82, 165, 57600, 0, 82 }, + { 84, 169, 96000, 0, 84 }, + { 85, 171, 96000, 0, 85 }, + { 86, 173, 96000, 0, 86 }, + { 87, 175, 96000, 0, 87 }, + { 83, 172, 16000, 0, 83 }, + { 88, 177, 16000, 0, 88 }, + { 90, 181, 96000, 0, 90 }, + { 91, 183, 96000, 0, 91 }, + { 92, 185, 96000, 0, 92 }, + { 93, 187, 96000, 0, 93 }, + { 89, 184, 16000, 0, 89 }, + { 94, 189, 16000, 0, 94 }, + { 95, 191, 16000, 0, 95 }, + { 96, 193, 96000, 0, 96 }, + { 97, 195, 96000, 0, 97 }, + { 98, 197, 96000, 0, 98 }, + { 99, 199, 96000, 0, 99 }, + { 100, 201, 32000, 0, 100 }, + { 101, 203, 128000, 0, 101 }, + { 102, 207, 128000, 0, 102 }, + { 103, 209, 2400, 0, 103 }, + { 104, 211, 54600, 0, 104 }, + { 105, 213, 25600, 0, 105 }, + { 108, 217, 25600, 0, 108 }, + { 106, 216, 2400, 0, 106 }, + { 107, 218, 54600, 0, 107 }, + { 109, 221, 12800, 0, 109 }, + { 112, 227, 12800, 0, 112 }, + { 113, 229, 600, 0, 113 }, + { 114, 231, 13650, 0, 114 }, + { 115, 233, 3200, 0, 115 }, + { 118, 237, 3200, 0, 118 }, + { 116, 236, 600, 0, 116 }, + { 117, 238, 13650, 0, 117 }, + { 119, 241, 2304, 0, 119 }, + { 122, 247, 2304, 0, 122 }, + { 123, 249, 216, 0, 123 }, + { 124, 251, 4914, 0, 124 }, + { 125, 253, 1152, 0, 125 }, + { 128, 257, 1152, 0, 128 }, + { 126, 256, 216, 0, 126 }, + { 127, 258, 4914, 0, 127 }, + { 129, 261, 1024, 0, 129 }, + { 132, 267, 1024, 0, 132 }, + { 133, 269, 96, 0, 133 }, + { 134, 271, 2184, 0, 134 }, + { 135, 273, 256, 0, 135 }, + { 138, 277, 256, 0, 138 }, + { 136, 276, 96, 0, 136 }, + { 137, 278, 2184, 0, 137 }, + { 139, 281, 128, 0, 139 }, + { 142, 286, 128, 0, 142 }, + { 143, 288, 24, 0, 143 }, + { 144, 290, 546, 0, 144 }, + { 145, 292, 24, 0, 145 }, + { 146, 294, 546, 0, 146 }, + { 80, 229, 4332, 0, 80 }, + { 110, 259, 2400, 0, 110 }, + { 120, 269, 600, 0, 120 }, + { 130, 279, 216, 0, 130 }, + { 140, 289, 96, 0, 140 }, + { 147, 296, 24, 0, 147 }, + { 81, 231, 98553, 0, 81 }, + { 111, 261, 54600, 0, 111 }, + { 121, 271, 13650, 0, 121 }, + { 131, 281, 4914, 0, 131 }, + { 141, 291, 2184, 0, 141 }, + { 148, 298, 546, 0, 148 }, + { 149, 300, 7668, 0, 149 }, + { 150, 302, 174447, 0, 150 }, + { 151, 304, 7668, 0, 151 }, + { 152, 306, 174447, 0, 152 }, + { 153, 308, 30672, 0, 153 }, + { 154, 309, 697788, 0, 154 }, + { 155, 311, 160, 0, 155 }, + { 155, 312, 40, 0, 156 }, + { 155, 313, 40, 0, 157 }, + { 155, 314, 4, 0, 158 } +}; \ No newline at end of file diff --git a/tests/MemoryStrategyBenchmark/TestStrategy.cpp b/tests/MemoryStrategyBenchmark/TestStrategy.cpp new file mode 100644 index 0000000000..9e9194972a --- /dev/null +++ b/tests/MemoryStrategyBenchmark/TestStrategy.cpp @@ -0,0 +1,43 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "TestStrategy.hpp" + +namespace armnn +{ + + std::string TestStrategy::GetName() const + { + return m_Name; + } + + MemBlockStrategyType TestStrategy::GetMemBlockStrategyType() const + { + return m_MemBlockStrategyType; + } + + // A IMemoryOptimizerStrategy must ensure that + // 1: All MemBlocks have been assigned to a MemBin + // 2: No MemBlock is assigned to multiple MemBins + // 3: No two Memblocks in a MemBin overlap in both the X and Y axis + std::vector TestStrategy::Optimize(std::vector& memBlocks) + { + std::vector memBins; + memBins.reserve(memBlocks.size()); + + for (auto& memBlock : memBlocks) + { + MemBin memBin; + memBin.m_MemSize = memBlock.m_MemSize; + memBin.m_MemBlocks.reserve(1); + memBlock.m_Offset = 0; + memBin.m_MemBlocks.push_back(memBlock); + memBins.push_back(memBin); + } + + return memBins; + } + +} // namespace armnn \ No newline at end of file diff --git a/tests/MemoryStrategyBenchmark/TestStrategy.hpp b/tests/MemoryStrategyBenchmark/TestStrategy.hpp new file mode 100644 index 0000000000..80d8d570ba --- /dev/null +++ b/tests/MemoryStrategyBenchmark/TestStrategy.hpp @@ -0,0 +1,31 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include +#include + +namespace armnn +{ +// ConstLayerMemoryOptimizer: Create a unique MemBin for each MemBlock and assign it an offset of 0 + class TestStrategy : public IMemoryOptimizerStrategy + { + public: + TestStrategy() + : m_Name(std::string("TestStrategy")) + , m_MemBlockStrategyType(MemBlockStrategyType::MultiAxisPacking) {} + + std::string GetName() const override; + + MemBlockStrategyType GetMemBlockStrategyType() const override; + + std::vector Optimize(std::vector& memBlocks) override; + + private: + std::string m_Name; + MemBlockStrategyType m_MemBlockStrategyType; + }; + +} // namespace armnn \ No newline at end of file -- cgit v1.2.1