// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #pragma once #include #include #include #include #include #include #include typedef std::chrono::high_resolution_clock Time; typedef std::chrono::nanoseconds ns; inline uint64_t getDurationInMilliseconds(uint32_t duration) { return duration * 1000LL; } inline uint64_t getDurationInNanoseconds(uint32_t duration) { return duration * 1000000000LL; } inline double get_duration_ms_till_now(Time::time_point& startTime) { return std::chrono::duration_cast(Time::now() - startTime).count() * 0.000001; }; inline std::string double_to_string(const double number) { std::stringstream ss; ss << std::fixed << std::setprecision(2) << number; return ss.str(); }; namespace benchmark_app { struct InputInfo { ov::element::Type type; ov::PartialShape partialShape; ov::Shape dataShape; ov::Layout layout; std::vector scale; std::vector mean; bool isImage() const; bool isImageInfo() const; size_t width() const; size_t height() const; size_t channels() const; size_t batch() const; size_t depth() const; std::vector fileNames; }; using InputsInfo = std::map; using PartialShapes = std::map; } // namespace benchmark_app std::vector parseDevices(const std::string& device_string); uint32_t deviceDefaultDeviceDurationInSeconds(const std::string& device); std::map parseNStreamsValuePerDevice(const std::vector& devices, const std::string& values_string); std::string getShapeString(const ov::Shape& shape); std::string getShapesString(const benchmark_app::PartialShapes& shapes); size_t getBatchSize(const benchmark_app::InputsInfo& inputs_info); std::vector split(const std::string& s, char delim); std::map> parseScaleOrMean(const std::string& scale_mean, const benchmark_app::InputsInfo& inputs_info); std::vector parsePartialShape(const std::string& partial_shape); ov::Shape parseDataShape(const std::string& dataShapeStr); std::pair> parseInputFiles(const std::string& file_paths_string); std::map> parseInputArguments(const std::vector& args); std::map> parseInputParameters(const std::string& parameter_string, const ov::ParameterVector& input_info); /// /// Parses command line data and data obtained from the function and returns configuration of each input /// /// command-line shape string /// command-line layout string /// command-line batch string /// command-line tensor_shape string /// command-line iscale string /// command-line imean string /// inputs vector obtained from ov::Model /// returns true to this parameter if reshape is required /// vector of benchmark_app::InputsInfo elements. /// Each element is a configuration item for every test configuration case /// (number of cases is calculated basing on tensor_shape and other parameters). /// Each element is a map (input_name, configuration) containing data for each input std::vector getInputsInfo(const std::string& shape_string, const std::string& layout_string, const size_t batch_size, const std::string& data_shapes_string, const std::map>& fileNames, const std::string& scale_string, const std::string& mean_string, const std::vector>& input_info, bool& reshape_required); /// /// Parses command line data and data obtained from the function and returns configuration of each input /// /// command-line shape string /// command-line layout string /// command-line batch string /// command-line tensor_shape string /// command-line iscale string /// command-line imean string /// inputs vector obtained from ov::Model /// returns true to this parameter if reshape is required /// vector of benchmark_app::InputsInfo elements. /// Each element is a configuration item for every test configuration case /// (number of cases is calculated basing on tensor_shape and other parameters). /// Each element is a map (input_name, configuration) containing data for each /// input std::vector getInputsInfo(const std::string& shape_string, const std::string& layout_string, const size_t batch_size, const std::string& data_shapes_string, const std::map>& fileNames, const std::string& scale_string, const std::string& mean_string, const std::vector>& input_info); #ifdef USE_OPENCV void dump_config(const std::string& filename, const std::map>& config); void load_config(const std::string& filename, std::map>& config); #endif extern const std::vector supported_image_extensions; extern const std::vector supported_binary_extensions; bool isBinaryFile(const std::string& filePath); bool isImageFile(const std::string& filePath); bool containsBinaries(const std::vector& filePaths); std::vector filterFilesByExtensions(const std::vector& filePaths, const std::vector& extensions);