aboutsummaryrefslogtreecommitdiff
path: root/examples/graph_edsr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/graph_edsr.cpp')
-rw-r--r--examples/graph_edsr.cpp43
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);