diff options
Diffstat (limited to 'examples/graph_edsr.cpp')
-rw-r--r-- | examples/graph_edsr.cpp | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/examples/graph_edsr.cpp b/examples/graph_edsr.cpp index 2f2a9fa4d7..b4f2fadf4a 100644 --- a/examples/graph_edsr.cpp +++ b/examples/graph_edsr.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 ARM Limited. + * Copyright (c) 2020-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -22,28 +22,28 @@ * SOFTWARE. */ +#include "graph_edsr.h" + #include "arm_compute/graph/Utils.h" #include "support/ToolchainSupport.h" #include "utils/CommonGraphOptions.h" #include "utils/Utils.h" -#include "graph_edsr.h" - using namespace arm_compute::graph; using namespace arm_compute::utils; class GraphEdsrExample : public Example { public: - GraphEdsrExample() - : cmd_parser(), common_opts(cmd_parser), common_params() + GraphEdsrExample() : cmd_parser(), common_opts(cmd_parser), common_params() { expected_output_filename = cmd_parser.add_option<SimpleOption<std::string>>("expected-output-filename", ""); - expected_output_filename->set_help("Name of npy file containing the expected output to validate the graph output."); + expected_output_filename->set_help( + "Name of npy file containing the expected output to validate the graph output."); } - GraphEdsrExample(const GraphEdsrExample &) = delete; + GraphEdsrExample(const GraphEdsrExample &) = delete; GraphEdsrExample &operator=(const GraphEdsrExample &) = delete; ~GraphEdsrExample() override = default; @@ -57,13 +57,14 @@ public: common_params = consume_common_graph_parameters(common_opts); // Return when help menu is requested - if(common_params.help) + if (common_params.help) { cmd_parser.print_help(argv[0]); return false; } - ARM_COMPUTE_EXIT_ON_MSG(common_params.data_type != DataType::QASYMM8, "Only QASYMM8 is supported for this graph example"); + ARM_COMPUTE_EXIT_ON_MSG(common_params.data_type != DataType::QASYMM8, + "Only QASYMM8 is supported for this graph example"); // Print parameter values std::cout << common_params << std::endl; @@ -75,6 +76,7 @@ public: config.use_tuner = common_params.enable_tuner; config.tuner_mode = common_params.tuner_mode; config.tuner_file = common_params.tuner_file; + config.mlgo_file = common_params.mlgo_file; context.set_config(config); @@ -97,11 +99,32 @@ private: GraphContext context{}; GraphManager manager{}; - SimpleOption<std::string> *expected_output_filename{ nullptr }; + SimpleOption<std::string> *expected_output_filename{nullptr}; GraphEdsr model{}; }; +/** Internal implementation of UINT8 EDSR with some modifications from the paper. + * The sub-pixel convolution has been replaced with a deconvolution layer. This + * operation is mathematically the same. + * + * Convolution replaced by deconvolution: + * https://arxiv.org/abs/1609.07009 + * "Is the deconvolution layer the same as a convolutional layer?" + * Wenzhe Shi, Jose Caballero, Lucas Theis, Ferenc Huszar, Andrew Aitken, Christian Ledig, Zehan Wang + * + * Original model is: + * https://arxiv.org/abs/1707.02921 + * "Enhanced Deep Residual Networks for Single Image Super-Resolution" + * Bee Lim, Sanghyun Son, Heewon Kim, Seungjun Nah, Kyoung Mu Lee + * + * @note To list all the possible arguments execute the binary appended with the --help option + * + * @param[in] argc Number of arguments + * @param[in] argv Arguments + * + * @return Return code + */ int main(int argc, char **argv) { return run_example<GraphEdsrExample>(argc, argv); |