From 767b93588cea9cec69b3523ae07e4c98c2d8a24d Mon Sep 17 00:00:00 2001 From: Alexey Suhov Date: Fri, 18 Jan 2019 20:41:50 +0300 Subject: [PATCH 1/4] Publishing R5 content --- inference-engine/CMakeLists.txt | 67 +- inference-engine/cmake/FindlibGNA.cmake | 39 + inference-engine/cmake/arm.toolchain.cmake | 10 + inference-engine/cmake/check_features.cmake | 20 +- inference-engine/cmake/config.cmake.in | 2 + inference-engine/cmake/debug.cmake | 5 + inference-engine/cmake/dependencies.cmake | 57 +- .../cmake/download_and_extract.cmake | 2 +- inference-engine/cmake/features.cmake | 40 +- inference-engine/cmake/ie_parallel.cmake | 100 + inference-engine/cmake/omp.cmake | 59 - inference-engine/cmake/options.cmake | 2 +- inference-engine/cmake/os_flags.cmake | 25 +- inference-engine/cmake/sanitizer.cmake | 19 +- inference-engine/cmake/sdl.cmake | 17 +- ...=> InferenceEngineConfig-version.cmake.in} | 4 +- ...g.cmake => InferenceEngineConfig.cmake.in} | 68 +- .../ie_bridges/python/CMakeLists.txt | 85 +- .../ie_bridges/python/cmake/CopyIeLibs.cmake | 10 - .../ie_bridges/python/cmake/FindCython.cmake | 25 +- .../cmake/ReplicatePythonSourceTree.cmake | 7 - .../ie_bridges/python/cmake/UseCython.cmake | 17 + .../ie_bridges/python/docs/api_overview.md | 108 +- .../python/inference_engine/CMakeLists.txt | 69 - .../python/inference_engine/__init__.py | 3 - .../python/inference_engine/ie_api_impl.hpp | 129 - .../python/sample/benchmark_app/README.md | 81 + .../python/sample/benchmark_app/benchmark.py | 204 ++ .../benchmark_app/utils/benchmark_utils.py | 122 + .../sample/benchmark_app/utils/constants.py | 63 + .../python/sample/classification_sample.py | 6 +- .../sample/classification_sample_async.py | 8 +- .../greengrass_classification_sample.py | 26 +- .../greengrass_object_detection_sample_ssd.py | 47 +- .../classification_demo.ipynb | 463 +++ .../classification_demo/image_net_synset.txt | 1000 ++++++ .../python/sample/segmentation_sample.py | 154 - .../python/sample/style_transfer_sample.py | 7 +- inference-engine/ie_bridges/python/setup.py | 10 +- .../python/src/openvino}/__init__.py | 0 .../openvino/inference_engine/CMakeLists.txt | 36 + .../src/openvino/inference_engine/__init__.py | 3 + .../dnn_builder/CMakeLists.txt | 37 + .../inference_engine/dnn_builder/__init__.py | 2 + .../dnn_builder/dnn_builder.pxd | 26 + .../dnn_builder/dnn_builder.pyx | 423 +++ .../dnn_builder/dnn_builder_impl.cpp | 330 ++ .../dnn_builder/dnn_builder_impl.hpp | 161 + .../dnn_builder/dnn_builder_impl_defs.pxd | 97 + .../openvino}/inference_engine/ie_api.pxd | 21 +- .../openvino}/inference_engine/ie_api.pyx | 173 +- .../inference_engine/ie_api_impl.cpp | 335 +- .../openvino/inference_engine/ie_api_impl.hpp | 174 ++ .../inference_engine/ie_api_impl_defs.pxd | 44 +- .../include/builders/ie_argmax_layer.hpp | 83 + .../builders/ie_batch_normalization_layer.hpp | 81 + .../include/builders/ie_clamp_layer.hpp | 72 + .../include/builders/ie_concat_layer.hpp | 76 + .../include/builders/ie_const_layer.hpp | 57 + .../include/builders/ie_convolution_layer.hpp | 163 + .../include/builders/ie_crop_layer.hpp | 90 + .../builders/ie_ctc_greedy_decoder_layer.hpp | 74 + .../builders/ie_deconvolution_layer.hpp | 32 + .../builders/ie_detection_output_layer.hpp | 183 ++ .../include/builders/ie_eltwise_layer.hpp | 96 + .../include/builders/ie_elu_layer.hpp | 62 + .../builders/ie_fully_connected_layer.hpp | 85 + .../include/builders/ie_grn_layer.hpp | 61 + .../include/builders/ie_input_layer.hpp | 56 + .../include/builders/ie_layer_builder.hpp | 247 ++ .../include/builders/ie_layer_fragment.hpp | 76 + .../include/builders/ie_memory_layer.hpp | 94 + .../include/builders/ie_mvn_layer.hpp | 83 + .../include/builders/ie_network_builder.hpp | 185 ++ .../include/builders/ie_norm_layer.hpp | 112 + .../include/builders/ie_normalize_layer.hpp | 85 + .../include/builders/ie_output_layer.hpp | 50 + .../include/builders/ie_permute_layer.hpp | 86 + .../include/builders/ie_pooling_layer.hpp | 170 + .../include/builders/ie_power_layer.hpp | 83 + .../include/builders/ie_prelu_layer.hpp | 67 + .../builders/ie_prior_box_clustered_layer.hpp | 161 + .../include/builders/ie_prior_box_layer.hpp | 161 + .../include/builders/ie_proposal_layer.hpp | 151 + .../builders/ie_psroi_pooling_layer.hpp | 98 + .../include/builders/ie_region_yolo_layer.hpp | 155 + .../include/builders/ie_relu6_layer.hpp | 62 + .../include/builders/ie_relu_layer.hpp | 62 + .../include/builders/ie_reorg_yolo_layer.hpp | 77 + .../include/builders/ie_reshape_layer.hpp | 73 + .../include/builders/ie_roi_pooling_layer.hpp | 84 + .../include/builders/ie_scale_shift_layer.hpp | 63 + .../include/builders/ie_sigmoid_layer.hpp | 50 + .../include/builders/ie_simpler_nms_layer.hpp | 140 + .../include/builders/ie_softmax_layer.hpp | 61 + .../include/builders/ie_split_layer.hpp | 73 + .../include/builders/ie_tanh_layer.hpp | 50 + .../include/builders/ie_tile_layer.hpp | 89 + .../include/cldnn/cldnn_config.hpp | 1 - .../include/cpp/ie_cnn_net_reader.h | 1 - inference-engine/include/cpp/ie_cnn_network.h | 15 +- .../include/cpp/ie_executable_network.hpp | 1 - .../include/cpp/ie_infer_request.hpp | 6 +- .../include/cpp/ie_memory_state.hpp | 1 - .../include/cpp/ie_plugin_cpp.hpp | 1 - inference-engine/include/details/caseless.hpp | 1 - .../include/details/ie_blob_iterator.hpp | 1 - .../details/ie_cnn_network_iterator.hpp | 1 - .../include/details/ie_cnn_network_tools.h | 1 - .../include/details/ie_exception.hpp | 3 +- .../details/ie_exception_conversion.hpp | 1 - .../include/details/ie_inetwork_iterator.hpp | 137 + .../include/details/ie_irelease.hpp | 1 - .../include/details/ie_no_copy.hpp | 1 - .../include/details/ie_no_release.hpp | 1 - .../include/details/ie_pre_allocator.hpp | 9 +- .../include/details/ie_so_loader.h | 1 - .../include/details/ie_so_pointer.hpp | 5 +- .../details/os/lin_shared_object_loader.h | 1 - .../details/os/win_shared_object_loader.h | 5 +- inference-engine/include/gna/gna_config.hpp | 78 + .../include/hetero/hetero_plugin_config.hpp | 1 - inference-engine/include/ie_allocator.hpp | 1 - inference-engine/include/ie_api.h | 32 +- inference-engine/include/ie_blob.h | 59 +- inference-engine/include/ie_builders.hpp | 49 + inference-engine/include/ie_common.h | 12 +- inference-engine/include/ie_context.hpp | 50 + inference-engine/include/ie_data.h | 3 +- inference-engine/include/ie_device.hpp | 4 +- inference-engine/include/ie_error.hpp | 1 - inference-engine/include/ie_extension.h | 9 +- inference-engine/include/ie_icnn_net_reader.h | 1 - inference-engine/include/ie_icnn_network.hpp | 20 +- .../include/ie_icnn_network_stats.hpp | 1 - .../include/ie_iexecutable_network.hpp | 1 - inference-engine/include/ie_iextension.h | 9 +- .../include/ie_ihetero_plugin.hpp | 3 +- .../include/ie_iinfer_request.hpp | 1 - inference-engine/include/ie_imemory_state.hpp | 1 - inference-engine/include/ie_inetwork.hpp | 366 +++ inference-engine/include/ie_input_info.hpp | 1 - inference-engine/include/ie_layers.h | 160 +- .../include/ie_layers_property.hpp | 12 +- inference-engine/include/ie_layouts.h | 14 +- inference-engine/include/ie_locked_memory.hpp | 1 - inference-engine/include/ie_parallel.hpp | 117 +- inference-engine/include/ie_parameter.hpp | 365 +++ inference-engine/include/ie_plugin.hpp | 26 +- inference-engine/include/ie_plugin_config.hpp | 37 +- .../include/ie_plugin_dispatcher.hpp | 35 +- inference-engine/include/ie_plugin_ptr.hpp | 1 - inference-engine/include/ie_precision.hpp | 39 +- inference-engine/include/ie_preprocess.hpp | 1 - .../include/ie_primitive_info.hpp | 1 - inference-engine/include/ie_tensor_info.hpp | 1 - inference-engine/include/ie_unicode.hpp | 61 + inference-engine/include/ie_utils.hpp | 1 - inference-engine/include/ie_version.hpp | 1 - inference-engine/include/inference_engine.hpp | 1 - inference-engine/install_dependencies.sh | 7 +- inference-engine/samples/CMakeLists.txt | 111 +- .../samples/benchmark_app/CMakeLists.txt | 20 +- .../samples/benchmark_app/README.md | 28 +- .../samples/benchmark_app/benchmark_app.h | 22 +- .../samples/benchmark_app/main.cpp | 19 +- .../samples/calibration_tool/CMakeLists.txt | 27 +- .../samples/calibration_tool/README.md | 21 +- .../calibrator_processors.cpp | 370 +-- .../calibration_tool/calibrator_processors.h | 10 +- .../samples/calibration_tool/data_stats.cpp | 1 - .../samples/calibration_tool/data_stats.h | 1 - .../samples/calibration_tool/main.cpp | 30 +- .../calibration_tool/network_serializer.h | 21 - .../classification_sample/CMakeLists.txt | 20 +- .../samples/classification_sample/README.md | 52 +- .../classification_sample.h | 1 - .../samples/classification_sample/main.cpp | 1 - .../CMakeLists.txt | 20 +- .../classification_sample_async/README.md | 4 +- .../classification_sample_async.h | 18 +- .../classification_sample_async/main.cpp | 23 +- .../common/format_reader/CMakeLists.txt | 29 +- .../common/format_reader/MnistUbyte.cpp | 1 - .../samples/common/format_reader/MnistUbyte.h | 1 - .../samples/common/format_reader/bmp.cpp | 1 - .../samples/common/format_reader/bmp.h | 1 - .../common/format_reader/format_reader.cpp | 3 +- .../common/format_reader/format_reader.h | 21 +- .../common/format_reader/format_reader_ptr.h | 1 - .../common/format_reader/opencv_wraper.cpp | 3 +- .../common/format_reader/opencv_wraper.h | 1 - .../samples/common/format_reader/register.h | 6 +- .../samples/common/os/windows/w_dirent.h | 9 +- .../samples/common/samples/args_helper.hpp | 1 - .../samples/common/samples/common.hpp | 138 +- .../samples/common/samples/ocv_common.hpp | 73 + .../samples/common/samples/slog.hpp | 3 +- .../CMakeLists.txt | 28 +- .../hello_autoresize_classification/README.md | 6 +- .../hello_autoresize_classification/main.cpp | 4 +- .../hello_classification/CMakeLists.txt | 33 +- .../samples/hello_classification/main.cpp | 30 +- .../CMakeLists.txt | 28 +- .../hello_request_classification/README.md | 6 +- .../hello_request_classification/main.cpp | 1 - .../hello_shape_infer_ssd/CMakeLists.txt | 13 +- .../samples/hello_shape_infer_ssd/README.md | 6 +- .../samples/hello_shape_infer_ssd/main.cpp | 8 +- .../shape_infer_extension.hpp | 1 - .../CMakeLists.txt | 37 + .../lenet_network_graph_builder/LeNet.bin | Bin 0 -> 1724320 bytes .../lenet_network_graph_builder/README.md | 54 + .../lenet_network_graph_builder.hpp | 90 + .../lenet_network_graph_builder/main.cpp | 332 ++ .../CMakeLists.txt | 20 +- .../object_detection_sample_ssd/README.md | 14 +- .../object_detection_sample_ssd/main.cpp | 1 - .../object_detection_sample_ssd.h | 1 - .../samples/perfcheck/CMakeLists.txt | 55 + inference-engine/samples/perfcheck/README.md | 73 + inference-engine/samples/perfcheck/main.cpp | 552 ++++ .../samples/perfcheck/perfcheck.h | 90 + .../samples/speech_sample/CMakeLists.txt | 37 + .../samples/speech_sample/README.md | 208 ++ .../samples/speech_sample/main.cpp | 839 +++++ .../samples/speech_sample/speech_sample.hpp | 163 + .../style_transfer_sample/CMakeLists.txt | 20 +- .../samples/style_transfer_sample/README.md | 4 +- .../samples/style_transfer_sample/main.cpp | 1 - .../style_transfer_sample.h | 1 - .../samples/validation_app/CMakeLists.txt | 29 +- .../ClassificationProcessor.cpp | 5 +- .../ClassificationProcessor.hpp | 3 +- .../ObjectDetectionProcessor.cpp | 5 +- .../ObjectDetectionProcessor.hpp | 3 +- .../validation_app/PreprocessingOptions.hpp | 1 - .../samples/validation_app/Processor.cpp | 10 +- .../samples/validation_app/Processor.hpp | 3 +- .../samples/validation_app/README.md | 17 +- .../SSDObjectDetectionProcessor.hpp | 1 - .../validation_app/VOCAnnotationParser.cpp | 3 +- .../validation_app/VOCAnnotationParser.hpp | 1 - .../YOLOObjectDetectionProcessor.hpp | 1 - .../classification_set_generator.cpp | 3 +- .../classification_set_generator.hpp | 1 - .../validation_app/console_progress.hpp | 13 +- .../samples/validation_app/csv_dumper.hpp | 1 - .../samples/validation_app/image_decoder.cpp | 1 - .../samples/validation_app/image_decoder.hpp | 1 - .../samples/validation_app/main.cpp | 18 +- .../validation_app/pugixml/pugiconfig.hpp | 1 - .../validation_app/pugixml/pugixml.cpp | 1 - .../validation_app/pugixml/pugixml.hpp | 1 - .../samples/validation_app/user_exception.hpp | 1 - inference-engine/src/CMakeLists.txt | 5 + .../src/cldnn_engine/CMakeLists.txt | 5 +- .../src/cldnn_engine/cldnn_custom_layer.cpp | 1 - .../src/cldnn_engine/cldnn_custom_layer.h | 1 - .../src/cldnn_engine/cldnn_engine.cpp | 45 +- .../src/cldnn_engine/cldnn_engine.h | 1 - .../src/cldnn_engine/cldnn_graph.cpp | 308 +- .../src/cldnn_engine/cldnn_graph.h | 5 +- .../src/cldnn_engine/cldnn_infer_request.cpp | 3 +- .../src/cldnn_engine/cldnn_infer_request.h | 1 - .../src/cldnn_engine/debug_options.cpp | 1 - .../src/cldnn_engine/debug_options.h | 1 - inference-engine/src/cldnn_engine/dllmain.cpp | 1 - .../src/cldnn_engine/simple_math.cpp | 1 - .../src/cldnn_engine/simple_math.h | 1 - inference-engine/src/extension/CMakeLists.txt | 22 +- inference-engine/src/extension/README.md | 8 +- .../extension/cmake/OptimizationFlags.cmake | 4 - .../src/extension/cmake/feature_defs.cmake | 51 +- inference-engine/src/extension/common/defs.h | 1 - .../src/extension/common/fast_exp.h | 1 - .../src/extension/common/matrixmult.h | 1 - .../src/extension/common/opt_exp.h | 1 - .../src/extension/common/softmax.h | 1 - inference-engine/src/extension/ext_argmax.cpp | 1 - inference-engine/src/extension/ext_base.cpp | 5 +- inference-engine/src/extension/ext_base.hpp | 1 - .../src/extension/ext_ctc_greedy.cpp | 1 - .../src/extension/ext_detectionoutput.cpp | 11 +- inference-engine/src/extension/ext_gather.cpp | 305 ++ inference-engine/src/extension/ext_grn.cpp | 1 - inference-engine/src/extension/ext_interp.cpp | 1 - inference-engine/src/extension/ext_list.cpp | 20 +- inference-engine/src/extension/ext_list.hpp | 7 +- inference-engine/src/extension/ext_mvn.cpp | 414 ++- .../src/extension/ext_normalize.cpp | 4 +- inference-engine/src/extension/ext_pad.cpp | 258 ++ .../src/extension/ext_powerfile.cpp | 1 - .../src/extension/ext_priorbox.cpp | 6 +- .../src/extension/ext_priorbox_clustered.cpp | 5 +- .../src/extension/ext_proposal.cpp | 5 +- inference-engine/src/extension/ext_psroi.cpp | 1 - .../src/extension/ext_region_yolo.cpp | 4 +- .../src/extension/ext_reorg_yolo.cpp | 1 - .../src/extension/ext_resample.cpp | 7 +- .../src/extension/ext_simplernms.cpp | 4 +- .../src/extension/ext_spatial_transformer.cpp | 4 +- .../src/extension/simple_copy.cpp | 21 + inference-engine/src/extension/simple_copy.h | 24 + .../src/gna_plugin/CMakeLists.txt | 60 + inference-engine/src/gna_plugin/dnn.cpp | 2528 +++++++++++++++ inference-engine/src/gna_plugin/dnn.h | 823 +++++ .../src/gna_plugin/dnn_memory.cpp | 30 + .../src/gna_plugin/dnn_memory.hpp | 13 + .../src/gna_plugin/dnn_traits.hpp | 90 + inference-engine/src/gna_plugin/floatmath.cpp | 423 +++ inference-engine/src/gna_plugin/floatmath.h | 71 + .../src/gna_plugin/gna_allocator.hpp | 33 + .../src/gna_plugin/gna_api_wrapper.hpp | 63 + .../src/gna_plugin/gna_device.cpp | 125 + .../src/gna_plugin/gna_device.hpp | 91 + .../src/gna_plugin/gna_executable_network.hpp | 53 + .../src/gna_plugin/gna_helper.cpp | 449 +++ .../src/gna_plugin/gna_infer_request.hpp | 73 + .../src/gna_plugin/gna_layer_info.hpp | 206 ++ .../src/gna_plugin/gna_mem_requests.hpp | 175 ++ .../src/gna_plugin/gna_memory.hpp | 227 ++ .../src/gna_plugin/gna_memory_state.hpp | 25 + .../src/gna_plugin/gna_model_serial.cpp | 320 ++ .../src/gna_plugin/gna_model_serial.hpp | 209 ++ .../src/gna_plugin/gna_plugin.cpp | 2274 ++++++++++++++ .../src/gna_plugin/gna_plugin.hpp | 488 +++ .../src/gna_plugin/gna_plugin_config.hpp | 67 + .../gna_plugin/gna_plugin_entry_points.cpp | 22 + .../src/gna_plugin/gna_plugin_internal.hpp | 29 + .../src/gna_plugin/gna_plugin_log.hpp | 54 + .../src/gna_plugin/gna_plugin_passes.cpp | 338 ++ inference-engine/src/gna_plugin/lstm.cpp | 69 + inference-engine/src/gna_plugin/lstm.hpp | 209 ++ .../src/gna_plugin/polymorh_allocator.hpp | 68 + inference-engine/src/gna_plugin/pwl.h | 70 + .../src/gna_plugin/pwl_design.cpp | 681 ++++ .../quantization/layer_quantizer.hpp | 488 +++ .../quantization/model_quantizer.hpp | 78 + .../gna_plugin/quantization/precision_ex.hpp | 95 + .../gna_plugin/quantization/quantization.cpp | 699 +++++ .../gna_plugin/quantization/quantization.h | 100 + .../quantization/quantized_layer_params.hpp | 24 + .../quantization/scale_factor_calc.hpp | 339 ++ inference-engine/src/gna_plugin/util.cpp | 46 + inference-engine/src/gna_plugin/util.h | 9 + .../src/hetero_plugin/CMakeLists.txt | 5 +- .../src/hetero_plugin/fallback_policy.cpp | 1 - .../src/hetero_plugin/fallback_policy.h | 1 - .../hetero_async_infer_request.cpp | 1 - .../hetero_async_infer_request.h | 1 - .../hetero_plugin/hetero_device_loader.cpp | 1 - .../src/hetero_plugin/hetero_device_loader.h | 1 - .../hetero_executable_network.cpp | 15 +- .../hetero_plugin/hetero_executable_network.h | 5 - .../hetero_plugin/hetero_infer_request.cpp | 1 - .../src/hetero_plugin/hetero_infer_request.h | 1 - .../src/hetero_plugin/hetero_plugin.cpp | 4 +- .../src/hetero_plugin/hetero_plugin.h | 1 - .../src/hetero_plugin/hetero_plugin_base.hpp | 1 - .../src/inference_engine/CMakeLists.txt | 26 +- .../src/inference_engine/ade_util.cpp | 1 - .../src/inference_engine/ade_util.hpp | 1 - .../src/inference_engine/blob_factory.cpp | 14 +- .../src/inference_engine/blob_factory.hpp | 4 +- .../src/inference_engine/blob_transform.cpp | 1 - .../src/inference_engine/blob_transform.hpp | 1 - .../builders/ie_argmax_layer.cpp | 61 + .../builders/ie_batch_normalization_layer.cpp | 68 + .../builders/ie_clamp_layer.cpp | 56 + .../builders/ie_concat_layer.cpp | 53 + .../builders/ie_const_layer.cpp | 39 + .../builders/ie_convolution_layer.cpp | 170 + .../builders/ie_crop_layer.cpp | 69 + .../builders/ie_ctc_greedy_decoder_layer.cpp | 46 + .../builders/ie_deconvolution_layer.cpp | 20 + .../builders/ie_detection_output_layer.cpp | 124 + .../builders/ie_eltwise_layer.cpp | 86 + .../builders/ie_elu_layer.cpp | 46 + .../builders/ie_fully_connected_layer.cpp | 62 + .../builders/ie_grn_layer.cpp | 45 + .../builders/ie_input_layer_layer.cpp | 40 + .../builders/ie_layer_builder.cpp | 165 + .../builders/ie_layer_fragment.cpp | 52 + .../builders/ie_memory_layer.cpp | 70 + .../builders/ie_mvn_layer.cpp | 60 + .../builders/ie_network_builder.cpp | 698 +++++ .../builders/ie_norm_layer.cpp | 85 + .../builders/ie_normalize_layer.cpp | 65 + .../builders/ie_output_layer_layer.cpp | 33 + .../builders/ie_permute_layer.cpp | 52 + .../builders/ie_pooling_layer.cpp | 187 ++ .../builders/ie_power_layer.cpp | 66 + .../builders/ie_prelu_layer.cpp | 49 + .../builders/ie_prior_box_clustered_layer.cpp | 124 + .../builders/ie_prior_box_layer.cpp | 118 + .../builders/ie_proposal_layer.cpp | 103 + .../builders/ie_psroi_pooling_layer.cpp | 61 + .../builders/ie_region_yolo_layer.cpp | 96 + .../builders/ie_relu6_layer.cpp | 47 + .../builders/ie_relu_layer.cpp | 45 + .../builders/ie_reorg_yolo_layer.cpp | 47 + .../builders/ie_reshape_layer.cpp | 54 + .../builders/ie_roi_pooling_layer.cpp | 58 + .../builders/ie_scale_shift_layer.cpp | 44 + .../builders/ie_sigmoid_layer.cpp | 35 + .../builders/ie_simpler_nms_layer.cpp | 89 + .../builders/ie_softmax_layer.cpp | 45 + .../builders/ie_split_layer.cpp | 53 + .../builders/ie_tanh_layer.cpp | 35 + .../builders/ie_tile_layer.cpp | 62 + .../src/inference_engine/cnn_network_impl.cpp | 17 +- .../src/inference_engine/cnn_network_impl.hpp | 11 +- .../cnn_network_int8_normalizer.cpp | 1358 ++++---- .../cnn_network_int8_normalizer.hpp | 201 +- .../cnn_network_stats_impl.cpp | 1 - .../cnn_network_stats_impl.hpp | 1 - .../base/ie_executable_network_base.hpp | 1 - .../base/ie_infer_async_request_base.hpp | 1 - .../base/ie_memory_state_base.hpp | 1 - .../cpp_interfaces/base/ie_plugin_base.hpp | 1 - .../cpp_interfaces/exception2status.hpp | 1 - .../cpp_interfaces/ie_executor_manager.cpp | 1 - .../cpp_interfaces/ie_executor_manager.hpp | 1 - .../cpp_interfaces/ie_itask_executor.hpp | 1 - .../cpp_interfaces/ie_task.cpp | 1 - .../cpp_interfaces/ie_task.hpp | 1 - .../cpp_interfaces/ie_task_executor.cpp | 2 +- .../cpp_interfaces/ie_task_executor.hpp | 1 - .../cpp_interfaces/ie_task_synchronizer.hpp | 1 - .../cpp_interfaces/ie_task_with_stages.cpp | 1 - .../cpp_interfaces/ie_task_with_stages.hpp | 1 - .../impl/ie_executable_network_internal.hpp | 1 - ...cutable_network_thread_safe_async_only.hpp | 1 - ...executable_network_thread_safe_default.hpp | 1 - .../impl/ie_infer_async_request_internal.hpp | 1 - ...nfer_async_request_thread_safe_default.hpp | 1 - ...fer_async_request_thread_safe_internal.hpp | 1 - .../impl/ie_infer_request_internal.hpp | 10 +- .../impl/ie_memory_state_internal.hpp | 1 - .../impl/ie_plugin_internal.hpp | 5 +- .../ie_iexecutable_network_internal.hpp | 1 - .../ie_iinfer_async_request_internal.hpp | 1 - .../interface/ie_iinfer_request_internal.hpp | 1 - .../interface/ie_imemory_state_internal.hpp | 1 - .../interface/ie_iplugin_internal.hpp | 1 - .../src/inference_engine/cpu_detector.cpp | 1 - .../src/inference_engine/cpu_detector.hpp | 1 - .../cpu_x86_sse42/blob_transform_sse42.cpp | 1 - .../cpu_x86_sse42/blob_transform_sse42.hpp | 1 - .../ie_preprocess_data_sse42.cpp | 1 - .../ie_preprocess_data_sse42.hpp | 1 - .../ie_preprocess_gapi_kernels_sse42.cpp | 1817 +++++++++++ .../ie_preprocess_gapi_kernels_sse42.hpp | 157 + .../src/inference_engine/data_stats.cpp | 1 - .../src/inference_engine/data_stats.h | 1 - inference-engine/src/inference_engine/debug.h | 17 - .../inference_engine/description_buffer.hpp | 3 +- .../src/inference_engine/dll_main.hpp | 1 - .../src/inference_engine/file_utils.cpp | 1 - .../src/inference_engine/file_utils.h | 1 - .../src/inference_engine/graph_tools.cpp | 1 - .../src/inference_engine/graph_tools.hpp | 22 +- .../inference_engine/graph_transformer.cpp | 1 - .../src/inference_engine/graph_transformer.h | 1 - .../src/inference_engine/ie_algorithm.hpp | 1 - .../src/inference_engine/ie_blob_common.cpp | 1 - .../src/inference_engine/ie_blob_proxy.hpp | 19 +- .../inference_engine/ie_cnn_layer_builder.h | 102 + .../ie_cnn_net_reader_impl.cpp | 49 +- .../inference_engine/ie_cnn_net_reader_impl.h | 7 +- .../src/inference_engine/ie_context.cpp | 62 + .../src/inference_engine/ie_data.cpp | 4 +- .../src/inference_engine/ie_device.cpp | 63 +- ...format_parser.cpp => ie_format_parser.cpp} | 274 +- ...{v2_format_parser.h => ie_format_parser.h} | 15 +- .../inference_engine/ie_graph_splitter.cpp | 1 - .../inference_engine/ie_graph_splitter.hpp | 1 - .../src/inference_engine/ie_layer_parsers.cpp | 252 ++ ...{v2_layer_parsers.h => ie_layer_parsers.h} | 21 +- .../inference_engine/ie_layer_validators.cpp | 529 ++-- .../inference_engine/ie_layer_validators.hpp | 58 +- .../inference_engine/ie_layers_internal.cpp | 116 +- .../inference_engine/ie_layers_internal.hpp | 22 +- .../src/inference_engine/ie_layers_prv.h | 99 + .../src/inference_engine/ie_layouts.cpp | 40 +- .../src/inference_engine/ie_memcpy.cpp | 21 + .../src/inference_engine/ie_memcpy.h | 24 + .../src/inference_engine/ie_network.cpp | 161 + .../src/inference_engine/ie_network.hpp | 160 + .../inference_engine/ie_preprocess_data.cpp | 155 +- .../inference_engine/ie_preprocess_data.hpp | 12 +- .../inference_engine/ie_preprocess_gapi.cpp | 374 +++ .../inference_engine/ie_preprocess_gapi.hpp | 42 + .../ie_preprocess_gapi_kernels.cpp | 1544 +++++++++ .../ie_preprocess_gapi_kernels.hpp | 93 + .../ie_preprocess_gapi_kernels_impl.hpp | 89 + .../src/inference_engine/ie_profiling.hpp | 8 +- .../src/inference_engine/ie_util_internal.cpp | 43 +- .../src/inference_engine/ie_util_internal.hpp | 25 +- .../src/inference_engine/ie_utils.cpp | 1 - .../src/inference_engine/ie_version.cpp | 1 - .../src/inference_engine/layer_transform.hpp | 18 +- .../src/inference_engine/memory_solver.cpp | 1 - .../src/inference_engine/memory_solver.hpp | 1 - .../src/inference_engine/net_pass.cpp | 179 ++ .../src/inference_engine/net_pass.h | 31 + .../inference_engine}/network_serializer.cpp | 92 +- .../src/inference_engine/network_serializer.h | 24 + .../src/inference_engine/parsers.h | 5 - .../src/inference_engine/precision_utils.cpp | 25 +- .../src/inference_engine/precision_utils.h | 1 - .../src/inference_engine/range_iterator.hpp | 1 - .../built-in/ie_argmax_shape_infer.hpp | 1 - .../built-in/ie_built_in_holder.cpp | 17 +- .../built-in/ie_built_in_holder.hpp | 1 - .../shape_infer/built-in/ie_built_in_impl.hpp | 1 - .../built-in/ie_concat_shape_infer.hpp | 1 - .../built-in/ie_conv_shape_infer.hpp | 31 +- .../built-in/ie_crop_shape_infer.hpp | 1 - .../ie_ctc_greedy_decoder_shape_infer.hpp | 1 - .../built-in/ie_deconv_shape_infer.hpp | 31 +- .../ie_detection_output_shape_infer.hpp | 1 - .../built-in/ie_eltwise_shape_infer.hpp | 1 - .../built-in/ie_equal_shape_infer.hpp | 1 - .../built-in/ie_flatten_shape_infer.hpp | 68 + .../built-in/ie_gather_shape_infer.hpp | 52 + .../built-in/ie_gemm_shape_infer.hpp | 62 + .../built-in/ie_inner_product_shape_infer.hpp | 1 - .../built-in/ie_interp_shape_infer.hpp | 1 - .../built-in/ie_pad_shape_infer.hpp | 41 + .../built-in/ie_permute_shape_infer.hpp | 1 - .../built-in/ie_pool_shape_infer.hpp | 34 +- .../ie_priorbox_clustered_shape_infer.hpp | 1 - .../built-in/ie_priorbox_shape_infer.hpp | 1 - .../built-in/ie_proposal_shape_infer.hpp | 1 - .../built-in/ie_psroi_pooling_shape_infer.hpp | 1 - .../built-in/ie_region_yolo_shape_infer.hpp | 1 - .../built-in/ie_reorg_yolo_shape_infer.hpp | 1 - .../built-in/ie_resample_shape_infer.hpp | 1 - .../built-in/ie_reshape_shape_infer.hpp | 97 +- .../built-in/ie_roi_pooling_shape_infer.hpp | 1 - .../built-in/ie_simpler_nms_shape_infer.hpp | 1 - .../ie_spatial_transformer_shape_infer.hpp | 1 - .../built-in/ie_split_shape_infer.hpp | 1 - .../built-in/ie_tile_shape_infer.hpp | 1 - .../built-in/ie_upsampling_shape_infer.hpp | 1 - .../shape_infer/built-in/impl_register.hpp | 1 - .../shape_infer/ie_reshape_io_controllers.cpp | 1 - .../shape_infer/ie_reshape_io_controllers.hpp | 1 - .../shape_infer/ie_reshape_launcher.cpp | 13 +- .../shape_infer/ie_reshape_launcher.hpp | 1 - .../shape_infer/ie_reshaper.cpp | 88 +- .../shape_infer/ie_reshaper.hpp | 17 +- .../inference_engine/system_alllocator.cpp | 1 - .../inference_engine/system_alllocator.hpp | 1 - .../src/inference_engine/v2_layer_parsers.cpp | 182 -- .../src/inference_engine/w_dirent.h | 1 - .../src/inference_engine/w_unistd.h | 9 +- .../src/inference_engine/xml_parse_utils.cpp | 22 +- .../src/inference_engine/xml_parse_utils.h | 5 +- .../src/mkldnn_plugin/CMakeLists.txt | 42 +- inference-engine/src/mkldnn_plugin/config.cpp | 50 +- inference-engine/src/mkldnn_plugin/config.h | 4 +- .../src/mkldnn_plugin/mean_image.cpp | 5 +- .../src/mkldnn_plugin/mean_image.h | 1 - .../src/mkldnn_plugin/mkldnn/cpu_engine.h | 1 - .../src/mkldnn_plugin/mkldnn/cpu_prim_layer.h | 1 - .../mkldnn_plugin/mkldnn/cpu_prim_tensor.h | 1 - .../mkldnn_plugin/mkldnn/desc_iterator.hpp | 5 - .../mkldnn_plugin/mkldnn/iml_type_mapper.cpp | 2 +- .../mkldnn_plugin/mkldnn/iml_type_mapper.h | 1 - .../src/mkldnn_plugin/mkldnn/omp_manager.cpp | 47 + .../src/mkldnn_plugin/mkldnn/omp_manager.h | 20 +- .../mkldnn/os/lin/lin_omp_manager.cpp | 227 +- .../mkldnn/os/lin/lin_omp_manager.h | 80 - .../mkldnn/os/osx/osx_omp_manager.h | 32 - .../mkldnn/os/win/win_omp_manager.h | 57 - .../mkldnn_async_infer_request.cpp | 1 - .../mkldnn_async_infer_request.h | 1 - .../src/mkldnn_plugin/mkldnn_descriptor.cpp | 1 - .../src/mkldnn_plugin/mkldnn_descriptor.h | 1 - .../src/mkldnn_plugin/mkldnn_dims.h | 1 - .../src/mkldnn_plugin/mkldnn_edge.cpp | 1 - .../src/mkldnn_plugin/mkldnn_edge.h | 1 - .../mkldnn_plugin/mkldnn_extension_mngr.cpp | 1 - .../src/mkldnn_plugin/mkldnn_extension_mngr.h | 1 - .../mkldnn_plugin/mkldnn_extension_utils.cpp | 1 - .../mkldnn_plugin/mkldnn_extension_utils.h | 1 - .../src/mkldnn_plugin/mkldnn_graph.cpp | 598 ++-- .../src/mkldnn_plugin/mkldnn_graph.h | 57 +- .../src/mkldnn_plugin/mkldnn_graph_dumper.cpp | 207 ++ .../src/mkldnn_plugin/mkldnn_graph_dumper.h | 18 + .../mkldnn_plugin/mkldnn_graph_optimizer.cpp | 100 +- .../mkldnn_plugin/mkldnn_graph_optimizer.h | 1 - .../mkldnn_plugin/mkldnn_infer_request.cpp | 148 +- .../src/mkldnn_plugin/mkldnn_infer_request.h | 1 - .../src/mkldnn_plugin/mkldnn_memory.cpp | 176 +- .../src/mkldnn_plugin/mkldnn_memory.h | 2 +- .../src/mkldnn_plugin/mkldnn_node.cpp | 71 +- .../src/mkldnn_plugin/mkldnn_node.h | 18 +- .../src/mkldnn_plugin/mkldnn_plugin.cpp | 14 +- .../src/mkldnn_plugin/mkldnn_plugin.h | 55 +- .../src/mkldnn_plugin/mkldnn_primitive.cpp | 1 - .../src/mkldnn_plugin/mkldnn_primitive.h | 1 - .../src/mkldnn_plugin/mkldnn_streams.cpp | 372 +++ .../src/mkldnn_plugin/mkldnn_streams.h | 177 ++ .../nodes/mkldnn_activation_node.cpp | 2 +- .../nodes/mkldnn_activation_node.h | 1 - .../nodes/mkldnn_batchnorm_node.cpp | 6 +- .../nodes/mkldnn_batchnorm_node.h | 1 - .../nodes/mkldnn_concat_node.cpp | 74 +- .../mkldnn_plugin/nodes/mkldnn_concat_node.h | 1 - .../mkldnn_plugin/nodes/mkldnn_conv_node.cpp | 130 +- .../mkldnn_plugin/nodes/mkldnn_conv_node.h | 3 - .../mkldnn_plugin/nodes/mkldnn_crop_node.cpp | 1 - .../mkldnn_plugin/nodes/mkldnn_crop_node.h | 1 - .../nodes/mkldnn_deconv_node.cpp | 56 +- .../mkldnn_plugin/nodes/mkldnn_deconv_node.h | 1 - .../nodes/mkldnn_depthwise_node.cpp | 20 +- .../nodes/mkldnn_depthwise_node.h | 3 +- .../nodes/mkldnn_eltwise_node.cpp | 9 +- .../mkldnn_plugin/nodes/mkldnn_eltwise_node.h | 1 - .../nodes/mkldnn_fullyconnected_node.cpp | 12 +- .../nodes/mkldnn_fullyconnected_node.h | 1 - .../mkldnn_plugin/nodes/mkldnn_gemm_node.cpp | 234 ++ .../mkldnn_plugin/nodes/mkldnn_gemm_node.h | 44 + .../nodes/mkldnn_generic_node.cpp | 17 +- .../mkldnn_plugin/nodes/mkldnn_generic_node.h | 5 +- .../mkldnn_plugin/nodes/mkldnn_input_node.cpp | 1 - .../mkldnn_plugin/nodes/mkldnn_input_node.h | 1 - .../mkldnn_plugin/nodes/mkldnn_lrn_node.cpp | 1 - .../src/mkldnn_plugin/nodes/mkldnn_lrn_node.h | 1 - .../nodes/mkldnn_memory_node.cpp | 1 - .../nodes/mkldnn_memory_node.hpp | 1 - .../nodes/mkldnn_permute_node.cpp | 86 +- .../mkldnn_plugin/nodes/mkldnn_permute_node.h | 1 - .../nodes/mkldnn_pooling_node.cpp | 39 +- .../mkldnn_plugin/nodes/mkldnn_pooling_node.h | 1 - .../mkldnn_plugin/nodes/mkldnn_power_node.cpp | 1 - .../mkldnn_plugin/nodes/mkldnn_power_node.h | 1 - .../nodes/mkldnn_reorder_node.cpp | 100 +- .../mkldnn_plugin/nodes/mkldnn_reorder_node.h | 3 +- .../nodes/mkldnn_reshape_node.cpp | 111 - .../mkldnn_plugin/nodes/mkldnn_reshape_node.h | 10 - .../src/mkldnn_plugin/nodes/mkldnn_rnn.cpp | 233 +- .../src/mkldnn_plugin/nodes/mkldnn_rnn.h | 28 +- .../nodes/mkldnn_roi_pooling_node.cpp | 1 - .../nodes/mkldnn_roi_pooling_node.h | 1 - .../nodes/mkldnn_softmax_node.cpp | 1 - .../mkldnn_plugin/nodes/mkldnn_softmax_node.h | 1 - .../mkldnn_plugin/nodes/mkldnn_split_node.cpp | 73 +- .../mkldnn_plugin/nodes/mkldnn_split_node.h | 3 +- .../mkldnn_plugin/nodes/mkldnn_tile_node.cpp | 13 +- .../mkldnn_plugin/nodes/mkldnn_tile_node.h | 1 - .../src/mkldnn_plugin/perf_count.h | 1 - .../src/mkldnn_plugin/utils/blob_dump.cpp | 370 +++ .../src/mkldnn_plugin/utils/blob_dump.h | 50 + inference-engine/tests/CMakeLists.txt | 1 + inference-engine/tests/helpers/CMakeLists.txt | 3 +- .../tests/helpers/disable_tests.hpp | 1 - .../tests/helpers/ir_gen_helper.cpp | 48 + .../tests/helpers/ir_gen_helper.hpp | 27 + .../tests/helpers/single_layer_common.cpp | 196 ++ .../tests/helpers/single_layer_common.hpp | 142 +- .../tests/helpers/test_assertions.hpp | 1 - .../tests/helpers/test_model_path.hpp | 1 - .../tests/helpers/test_model_repo.hpp.in | 16 +- .../tests/helpers/test_models_path.cpp | 1 - .../tests/helpers/tests_common.hpp | 26 +- .../tests/helpers/tests_common_func.hpp | 1 - .../tests/helpers/tests_file_utils.cpp | 1 - .../tests/helpers/tests_file_utils.hpp | 1 - .../tests/helpers/tests_utils.hpp | 1 - .../tests/helpers/version_printer.cpp | 1 - inference-engine/tests/helpers/xml_father.hpp | 5 +- inference-engine/tests/helpers/xml_helper.hpp | 6 +- .../tests/helpers/xml_net_builder.cpp | 21 +- .../tests/helpers/xml_net_builder.hpp | 120 +- .../tests/mock_engine/CMakeLists.txt | 6 +- .../tests/mock_engine/dllmain.cpp | 3 +- .../tests/mock_engine/mock_plugin.cpp | 1 - .../tests/mock_engine/mock_plugin.hpp | 1 - .../mock_engine/stub_inference_engine.xpp | 1 + inference-engine/tests/unit/CMakeLists.txt | 46 +- .../batch_normalization_layer_test.cpp | 36 + .../tests/unit/builders/builder_test.hpp | 33 + .../tests/unit/builders/input_layer_test.cpp | 32 + .../unit/builders/network_builder_test.cpp | 927 ++++++ .../cnn_network/cnn_net_reader_impl_test.cpp | 264 +- .../cnn_network/cnn_network_impl_test.cpp | 1 - .../tests/unit/cnn_network/layout_tests.cpp | 1 - .../tests/unit/cnn_network/mean_image.cpp | 1 - .../tests/unit/cnn_network/mean_image.h | 1 - .../unit/cnn_network/parser_tests_base.hpp | 11 +- .../cnn_network/v2_format_parser_test.cpp | 3 +- .../cnn_network/v3_format_parser_test.cpp | 95 +- .../unit/cnn_network/xml_father_tests.cpp | 1 - .../unit/engines/gna/I8_quantisation_test.cpp | 117 + .../unit/engines/gna/configuration_test.cpp | 136 + .../unit/engines/gna/gna_allocator_test.cpp | 78 + .../tests/unit/engines/gna/gna_api_stub.cpp | 218 ++ .../unit/engines/gna/gna_graph_aot_test.cpp | 85 + .../gna/gna_hardware_precision_test.cpp | 49 + .../tests/unit/engines/gna/gna_matcher.cpp | 440 +++ .../tests/unit/engines/gna/gna_matcher.hpp | 490 +++ .../unit/engines/gna/gna_memory_test.cpp | 440 +++ .../tests/unit/engines/gna/gna_mock_api.hpp | 70 + .../unit/engines/gna/gna_proc_type_test.cpp | 40 + .../tests/unit/engines/gna/gna_pwl_test.cpp | 214 ++ .../engines/gna/gna_query_state_tests.cpp | 25 + .../engines/gna/i16_quantisation_test.cpp | 381 +++ .../engines/gna/matchers/conv_matcher.hpp | 34 + .../engines/gna/matchers/copy_matcher.hpp | 32 + .../engines/gna/matchers/diag_matcher.hpp | 51 + .../gna/matchers/nnet_base_matcher.hpp | 86 + .../engines/gna/matchers/pool_matcher.hpp | 37 + .../gna/matchers/precision_matcher.hpp | 54 + .../unit/engines/gna/matchers/pwl_matcher.hpp | 61 + .../pwl_quantization_metrics_matcher.hpp | 139 + .../tests/unit/engines/gna/test_irs.cpp | 2678 ++++++++++++++++ .../tests/unit/engines/gna/test_irs.hpp | 43 + .../mkldnn/constant_propagation_test.cpp | 1 - .../unit/engines/mkldnn/convert_desc_test.cpp | 1 - .../tests/unit/engines/mkldnn/dump_test.cpp | 136 + .../tests/unit/engines/mkldnn/dumper_test.cpp | 99 + .../graph/layers/extensions/fake_layer.cpp | 125 +- .../graph/layers/extensions/gather_tests.cpp | 695 +++++ .../layers/extensions/graph_generic_test.cpp | 11 +- .../graph/layers/extensions/interp_tests.cpp | 6 +- .../graph/layers/extensions/mvn_tests.cpp | 279 +- .../layers/extensions/resample_tests.cpp | 9 +- .../layers/internal/graph_activation_test.cpp | 139 +- .../graph_batchnorm_scaleshift_test.cpp | 1 - .../layers/internal/graph_batchnorm_test.cpp | 1 - .../layers/internal/graph_concat_test.cpp | 412 +-- .../graph/layers/internal/graph_conv_test.cpp | 427 ++- .../graph/layers/internal/graph_crop_test.cpp | 1 - .../layers/internal/graph_deconv_test.cpp | 362 ++- .../layers/internal/graph_depthwise_test.cpp | 169 +- .../layers/internal/graph_eltwise_test.cpp | 121 +- .../internal/graph_fullyconnected_test.cpp | 123 +- .../graph/layers/internal/graph_gemm_test.cpp | 627 ++++ .../layers/internal/graph_input_test.cpp | 1 - .../layers/internal/graph_leaks_test.cpp | 3 +- .../graph/layers/internal/graph_lrn_test.cpp | 1 - .../layers/internal/graph_permute_test.cpp | 9 +- .../layers/internal/graph_pooling_test.cpp | 397 ++- .../layers/internal/graph_power_test.cpp | 1 - .../graph/layers/internal/graph_relu_test.cpp | 99 +- .../layers/internal/graph_reorder_test.cpp | 1 - .../layers/internal/graph_reshape_test.cpp | 51 +- .../internal/graph_roi_pooling_test.cpp | 1 - .../layers/internal/graph_simplernms_test.cpp | 1 - .../layers/internal/graph_softmax_test.cpp | 1 - .../layers/internal/graph_split_test.cpp | 415 +-- .../graph/layers/internal/graph_tile_test.cpp | 1 - .../graph_conv_depthwise_fusing_test.cpp | 1 - .../structure/graph_dw_conv_fusing_test.cpp | 1 - .../structure/graph_optimization_test.cpp | 1 - .../graph/structure/graph_structure_test.cpp | 40 +- .../unit/engines/mkldnn/graph/test_graph.hpp | 88 +- .../engines/mkldnn/mkldnn_primitive_test.cpp | 1 - .../tests/unit/engines/mkldnn/test_layers.cpp | 1 - .../unit/graph_tools/graph_copy_tests.cpp | 52 - .../unit/graph_tools/graph_test_base.hpp | 1 - .../unit/graph_tools/graph_tools_test.cpp | 1 - .../inference_engine_tests/alocator_tests.cpp | 1 - .../blob_proxy_test.cpp | 23 +- .../unit/inference_engine_tests/blob_test.cpp | 4 +- .../caslesseq_tests.cpp | 1 - .../cnn_network_test.cpp | 1 - .../async_infer_request_base_tests.cpp | 1 - .../async_infer_request_tests.cpp | 1 - ...nfer_request_thread_safe_default_tests.cpp | 5 +- ...ync_infer_request_thread_safe_internal.cpp | 1 - .../cpp_interfaces/callback_manager_tests.cpp | 1 - .../executable_network_base_tests.cpp | 1 - .../executable_network_tests.cpp | 1 - ...e_network_thread_safe_async_only_tests.cpp | 1 - .../executable_network_thread_safe_tests.cpp | 1 - .../cpp_interfaces/executor_manager_tests.cpp | 1 - .../iinference_plugin_internal_tests.cpp | 1 - .../cpp_interfaces/memory_state_tests.cpp | 1 - .../cpp_interfaces/plugin_base_tests.cpp | 1 - .../cpp_interfaces/task_common_tests.cpp | 1 - .../cpp_interfaces/task_executor_tests.cpp | 1 - .../task_synchronizer_tests.cpp | 1 - .../cpp_interfaces/task_tests.cpp | 1 - .../cpp_interfaces/task_tests_utils.hpp | 1 - .../cpp_interfaces/task_with_stages_tests.cpp | 1 - .../unit/inference_engine_tests/data_test.cpp | 19 +- .../inference_engine_tests/debug_tests.cpp | 1 - .../inference_engine_tests/device_tests.cpp | 1 - .../inference_engine_tests/exception_test.cpp | 1 - .../inference_engine_plugin_test.cpp | 1 - .../inference_engine_test.cpp | 1 - .../layer_transform_test.cpp | 1 - .../inference_engine_tests/layers_test.cpp | 169 +- .../locked_memory_test.cpp | 1 - .../plugin_dispatcher_tests.cpp | 18 +- .../inference_engine_tests/pointer_test.cpp | 1 - .../pre_allocator_test.cpp | 1 - .../inference_engine_tests/precision_test.cpp | 1 - .../preprocess_test.cpp | 1 - .../range_iterator_tests.cpp | 1 - .../response_buffer_test.cpp | 1 - .../shared_object_loader_test.cpp | 1 - .../so_pointer_tests.cpp | 1 - .../tensor_desc_test.cpp | 28 +- .../unit/inference_engine_tests/util_test.cpp | 1 - .../tests/unit/mem_solver/mem_solver_test.cpp | 1 - .../impl/mock_async_infer_request_default.hpp | 1 - .../mock_async_infer_request_internal.hpp | 1 - ...ync_infer_request_thread_safe_internal.hpp | 1 - .../impl/mock_executable_network_internal.hpp | 1 - ...mock_executable_thread_safe_async_only.hpp | 1 - .../mock_executable_thread_safe_default.hpp | 1 - .../impl/mock_infer_request_internal.hpp | 1 - .../impl/mock_inference_plugin_internal.hpp | 1 - .../mock_iasync_infer_request_internal.hpp | 1 - .../mock_iexecutable_network_internal.hpp | 1 - .../mock_iinfer_request_internal.hpp | 1 - .../interface/mock_imemory_state_internal.hpp | 1 - .../mocks/cpp_interfaces/mock_plugin_impl.hpp | 1 - .../cpp_interfaces/mock_task_executor.hpp | 1 - .../cpp_interfaces/mock_task_synchronizer.hpp | 1 - .../tests/unit/mocks/mock_allocator.hpp | 1 - .../tests/unit/mocks/mock_error_listener.hpp | 1 - .../unit/mocks/mock_iasync_infer_request.hpp | 1 - .../tests/unit/mocks/mock_icnn_network.hpp | 2 +- .../unit/mocks/mock_iexecutable_network.hpp | 1 - .../tests/unit/mocks/mock_iformat_parser.hpp | 3 - .../unit/mocks/mock_inference_engine.hpp | 1 - .../mocks/mock_not_empty_icnn_network.hpp | 2 +- .../unit/mocks/mock_plugin_dispatcher.hpp | 1 - .../shape_infer/mock_input_controller.hpp | 1 - .../shape_infer/mock_ishape_infer_impl.hpp | 1 - .../shape_infer/mock_output_controller.hpp | 1 - .../shape_infer/mock_reshaper_launcher.hpp | 1 - .../mock_shape_infer_extension.hpp | 1 - .../unit/opencv_test_gapi/CMakeLists.txt | 34 + .../common/gapi_core_tests.cpp} | 2 +- .../common/gapi_core_tests.hpp | 47 + .../common/gapi_core_tests_inl.hpp | 876 ++++++ .../common/gapi_tests_common.hpp | 106 + .../cpu/gapi_core_tests_fluid.cpp | 244 ++ .../unit/shape_infer/built_in_holder_test.cpp | 4 +- .../built_in_shape_infer_batch_test.cpp | 5 +- .../built_in_shape_infer_conv_test.cpp | 15 +- .../built_in_shape_infer_fake_test.cpp | 5 +- .../built_in_shape_infer_general_test.cpp | 233 +- .../built_in_shape_infer_general_test.hpp | 118 +- .../built_in_shape_infer_pool_test.cpp | 13 +- .../cpu_ext_shape_infer_general_test.cpp | 11 +- .../shape_infer/input_controller_test.cpp | 1 - .../input_reshape_launcher_test.cpp | 1 - .../shape_infer/output_controller_test.cpp | 1 - .../shape_infer/reshape_launcher_test.cpp | 1 - .../tests/unit/shape_infer/reshaper_test.cpp | 4 +- .../tests/unit/stress_tests/stress_tests.cpp | 1 - .../v2_topology_verification_test.cpp | 5 +- inference-engine/thirdparty/CMakeLists.txt | 8 + inference-engine/thirdparty/MKL.cmake | 191 -- .../thirdparty/clDNN/api/C/border.h | 10 +- .../thirdparty/clDNN/api/CPP/border.hpp | 50 +- .../kernel_selector/common/common_types.h | 3 +- .../border/border_kernel_base.cpp | 1 + .../border/border_kernel_base.h | 3 +- .../border/border_kernel_ref.cpp | 2 + .../roi_pooling/roi_pooling_kernel_ref.cpp | 1 + .../actual_kernels/tile/tile_kernel_ref.cpp | 2 +- .../core/cl_kernels/border_gpu_ref.cl | 14 +- .../core/cl_kernels/roi_pooling_ref.cl | 22 +- .../core/cl_kernels/tile_ref.cl | 2 +- .../core/kernel_selector_common.cpp | 3 +- .../thirdparty/clDNN/src/border.cpp | 7 +- .../thirdparty/clDNN/src/gpu/border_gpu.cpp | 5 +- .../thirdparty/clDNN/src/memory_pool.cpp | 4 + .../thirdparty/clDNN/src/program.cpp | 3 + .../thirdparty/clDNN/src/roi_pooling.cpp | 2 +- .../tests/test_cases/border_gpu_test.cpp | 230 +- inference-engine/thirdparty/fluid/README.md | 45 + inference-engine/thirdparty/fluid/check.sh | 15 + inference-engine/thirdparty/fluid/checksum.sh | 3 + .../thirdparty/fluid/checksum.txt | 1 + .../fluid/modules/gapi/CMakeLists.txt | 112 + .../modules/gapi/cmake/DownloadADE.cmake | 36 + .../fluid/modules/gapi/cmake/init.cmake | 11 + .../fluid/modules/gapi/cmake/standalone.cmake | 34 + .../fluid/modules/gapi/doc/00-root.markdown | 113 + .../modules/gapi/doc/01-background.markdown | 76 + .../fluid/modules/gapi/doc/10-hld-overview.md | 159 + .../modules/gapi/doc/20-kernel-api.markdown | 170 + .../gapi/doc/30-implementation.markdown | 27 + .../modules/gapi/doc/dot/kernel_hierarchy.dot | 17 + .../fluid/modules/gapi/doc/pics/demo.jpg | Bin 0 -> 65973 bytes .../modules/gapi/doc/pics/gapi_scheme.png | Bin 0 -> 76918 bytes .../gapi/doc/pics/kernel_hierarchy.png | Bin 0 -> 8812 bytes .../modules/gapi/include/opencv2/gapi.hpp | 33 + .../gapi/include/opencv2/gapi/core.hpp | 1600 ++++++++++ .../gapi/include/opencv2/gapi/cpu/core.hpp | 27 + .../include/opencv2/gapi/cpu/gcpukernel.hpp | 266 ++ .../gapi/include/opencv2/gapi/cpu/imgproc.hpp | 27 + .../gapi/include/opencv2/gapi/fluid/core.hpp | 20 + .../opencv2/gapi/fluid/gfluidbuffer.hpp | 150 + .../opencv2/gapi/fluid/gfluidkernel.hpp | 302 ++ .../include/opencv2/gapi/fluid/imgproc.hpp | 20 + .../gapi/include/opencv2/gapi/garg.hpp | 126 + .../gapi/include/opencv2/gapi/garray.hpp | 251 ++ .../gapi/include/opencv2/gapi/gcall.hpp | 63 + .../gapi/include/opencv2/gapi/gcommon.hpp | 166 + .../gapi/include/opencv2/gapi/gcompiled.hpp | 217 ++ .../include/opencv2/gapi/gcompoundkernel.hpp | 123 + .../include/opencv2/gapi/gcomputation.hpp | 456 +++ .../gapi/include/opencv2/gapi/gkernel.hpp | 563 ++++ .../gapi/include/opencv2/gapi/gmat.hpp | 149 + .../gapi/include/opencv2/gapi/gmetaarg.hpp | 66 + .../gapi/include/opencv2/gapi/gproto.hpp | 96 + .../gapi/include/opencv2/gapi/gpu/core.hpp | 27 + .../include/opencv2/gapi/gpu/ggpukernel.hpp | 244 ++ .../gapi/include/opencv2/gapi/gpu/imgproc.hpp | 27 + .../gapi/include/opencv2/gapi/gscalar.hpp | 83 + .../include/opencv2/gapi/gtype_traits.hpp | 152 + .../gapi/include/opencv2/gapi/gtyped.hpp | 187 ++ .../gapi/include/opencv2/gapi/imgproc.hpp | 677 ++++ .../include/opencv2/gapi/opencv_includes.hpp | 21 + .../gapi/include/opencv2/gapi/operators.hpp | 69 + .../gapi/include/opencv2/gapi/own/assert.hpp | 41 + .../gapi/include/opencv2/gapi/own/convert.hpp | 50 + .../gapi/include/opencv2/gapi/own/cvdefs.hpp | 146 + .../gapi/include/opencv2/gapi/own/exports.hpp | 28 + .../gapi/include/opencv2/gapi/own/mat.hpp | 291 ++ .../include/opencv2/gapi/own/saturate.hpp | 90 + .../gapi/include/opencv2/gapi/own/scalar.hpp | 47 + .../gapi/include/opencv2/gapi/own/types.hpp | 135 + .../gapi/include/opencv2/gapi/util/any.hpp | 186 ++ .../opencv2/gapi/util/compiler_hints.hpp | 21 + .../include/opencv2/gapi/util/optional.hpp | 178 ++ .../gapi/include/opencv2/gapi/util/throw.hpp | 36 + .../gapi/include/opencv2/gapi/util/util.hpp | 92 + .../include/opencv2/gapi/util/variant.hpp | 377 +++ .../gapi/perf/common/gapi_core_perf_tests.cpp | 9 + .../gapi/perf/common/gapi_core_perf_tests.hpp | 76 + .../perf/common/gapi_core_perf_tests_inl.hpp | 1841 +++++++++++ .../perf/common/gapi_imgproc_perf_tests.cpp | 9 + .../perf/common/gapi_imgproc_perf_tests.hpp | 46 + .../common/gapi_imgproc_perf_tests_inl.hpp | 909 ++++++ .../perf/cpu/gapi_core_perf_tests_cpu.cpp | 286 ++ .../perf/cpu/gapi_imgproc_perf_tests_cpu.cpp | 188 ++ .../cpu/gapi_imgproc_perf_tests_fluid.cpp | 76 + .../perf/gpu/gapi_core_perf_tests_gpu.cpp | 291 ++ .../perf/gpu/gapi_imgproc_perf_tests_gpu.cpp | 180 ++ .../internal/gapi_compiler_perf_tests.cpp | 45 + .../fluid/modules/gapi/perf/perf_main.cpp | 11 + .../fluid/modules/gapi/perf/perf_precomp.hpp | 25 + .../modules/gapi/samples/api_example.cpp | 34 + .../modules/gapi/samples/api_ref_snippets.cpp | 82 + .../gapi/samples/kernel_api_snippets.cpp | 157 + .../fluid/modules/gapi/src/api/README.md | 1 + .../fluid/modules/gapi/src/api/gapi_priv.cpp | 44 + .../fluid/modules/gapi/src/api/gapi_priv.hpp | 77 + .../fluid/modules/gapi/src/api/garray.cpp | 45 + .../fluid/modules/gapi/src/api/gbackend.cpp | 353 +++ .../modules/gapi/src/api/gbackend_priv.hpp | 53 + .../fluid/modules/gapi/src/api/gcall.cpp | 65 + .../fluid/modules/gapi/src/api/gcall_priv.hpp | 37 + .../modules/gapi/src/api/gcomputation.cpp | 238 ++ .../gapi/src/api/gcomputation_priv.hpp | 29 + .../fluid/modules/gapi/src/api/gkernel.cpp | 147 + .../fluid/modules/gapi/src/api/gmat.cpp | 78 + .../fluid/modules/gapi/src/api/gnode.cpp | 89 + .../fluid/modules/gapi/src/api/gnode.hpp | 58 + .../fluid/modules/gapi/src/api/gnode_priv.hpp | 52 + .../fluid/modules/gapi/src/api/gproto.cpp | 162 + .../modules/gapi/src/api/gproto_priv.hpp | 35 + .../fluid/modules/gapi/src/api/gscalar.cpp | 73 + .../modules/gapi/src/api/kernels_core.cpp | 359 +++ .../modules/gapi/src/api/kernels_imgproc.cpp | 144 + .../fluid/modules/gapi/src/api/operators.cpp | 213 ++ .../fluid/modules/gapi/src/backends/README.md | 2 + .../gapi/src/backends/common/gbackend.hpp | 106 + .../src/backends/common/gcompoundbackend.cpp | 20 + .../src/backends/common/gcompoundkernel.cpp | 47 + .../gapi/src/backends/cpu/gcpubackend.cpp | 229 ++ .../gapi/src/backends/cpu/gcpubackend.hpp | 72 + .../gapi/src/backends/cpu/gcpucore.cpp | 595 ++++ .../gapi/src/backends/cpu/gcpucore.hpp | 24 + .../gapi/src/backends/cpu/gcpuimgproc.cpp | 273 ++ .../gapi/src/backends/cpu/gcpuimgproc.hpp | 23 + .../gapi/src/backends/cpu/gcpukernel.cpp | 52 + .../gapi/src/backends/fluid/gfluidbackend.cpp | 1383 +++++++++ .../gapi/src/backends/fluid/gfluidbackend.hpp | 137 + .../gapi/src/backends/fluid/gfluidbuffer.cpp | 760 +++++ .../src/backends/fluid/gfluidbuffer_priv.hpp | 308 ++ .../gapi/src/backends/fluid/gfluidcore.cpp | 2193 +++++++++++++ .../gapi/src/backends/fluid/gfluidimgproc.cpp | 1338 ++++++++ .../fluid/gfluidimgproc_func.dispatch.cpp | 93 + .../src/backends/fluid/gfluidimgproc_func.hpp | 64 + .../fluid/gfluidimgproc_func.simd.hpp | 562 ++++ .../gapi/src/backends/fluid/gfluidutils.hpp | 93 + .../gapi/src/backends/gpu/ggpubackend.cpp | 226 ++ .../gapi/src/backends/gpu/ggpubackend.hpp | 72 + .../gapi/src/backends/gpu/ggpucore.cpp | 582 ++++ .../gapi/src/backends/gpu/ggpucore.hpp | 24 + .../gapi/src/backends/gpu/ggpuimgproc.cpp | 277 ++ .../gapi/src/backends/gpu/ggpuimgproc.hpp | 23 + .../gapi/src/backends/gpu/ggpukernel.cpp | 50 + .../fluid/modules/gapi/src/compiler/README.md | 1 + .../modules/gapi/src/compiler/gcompiled.cpp | 157 + .../gapi/src/compiler/gcompiled_priv.hpp | 61 + .../modules/gapi/src/compiler/gcompiler.cpp | 281 ++ .../modules/gapi/src/compiler/gcompiler.hpp | 51 + .../gapi/src/compiler/gislandmodel.cpp | 289 ++ .../gapi/src/compiler/gislandmodel.hpp | 187 ++ .../modules/gapi/src/compiler/gmodel.cpp | 247 ++ .../modules/gapi/src/compiler/gmodel.hpp | 251 ++ .../gapi/src/compiler/gmodelbuilder.cpp | 305 ++ .../gapi/src/compiler/gmodelbuilder.hpp | 77 + .../modules/gapi/src/compiler/gobjref.hpp | 50 + .../gapi/src/compiler/passes/dump_dot.cpp | 223 ++ .../modules/gapi/src/compiler/passes/exec.cpp | 641 ++++ .../gapi/src/compiler/passes/helpers.cpp | 122 + .../gapi/src/compiler/passes/helpers.hpp | 31 + .../gapi/src/compiler/passes/islands.cpp | 233 ++ .../gapi/src/compiler/passes/kernels.cpp | 157 + .../modules/gapi/src/compiler/passes/meta.cpp | 125 + .../gapi/src/compiler/passes/passes.hpp | 58 + .../gapi/src/compiler/transactions.hpp | 147 + .../modules/gapi/src/executor/gexecutor.cpp | 244 ++ .../modules/gapi/src/executor/gexecutor.hpp | 97 + .../fluid/modules/gapi/src/logger.hpp | 22 + .../fluid/modules/gapi/src/precomp.hpp | 21 + .../test/common/gapi_compoundkernel_tests.cpp | 500 +++ .../gapi/test/common/gapi_core_tests.cpp | 9 + .../gapi/test/common/gapi_core_tests.hpp | 153 + .../gapi/test/common/gapi_core_tests_inl.hpp | 1479 +++++++++ .../gapi/test/common/gapi_imgproc_tests.cpp | 9 + .../gapi/test/common/gapi_imgproc_tests.hpp | 42 + .../test/common/gapi_imgproc_tests_inl.hpp | 630 ++++ .../gapi/test/common/gapi_operators_tests.cpp | 9 + .../gapi/test/common/gapi_operators_tests.hpp | 192 ++ .../test/common/gapi_operators_tests_inl.hpp | 104 + .../gapi/test/common/gapi_tests_common.hpp | 296 ++ .../gapi/test/cpu/gapi_core_tests_cpu.cpp | 405 +++ .../gapi/test/cpu/gapi_core_tests_fluid.cpp | 506 +++ .../gapi/test/cpu/gapi_imgproc_tests_cpu.cpp | 238 ++ .../test/cpu/gapi_imgproc_tests_fluid.cpp | 168 + .../test/cpu/gapi_operators_tests_cpu.cpp | 73 + .../test/cpu/gapi_operators_tests_fluid.cpp | 72 + .../modules/gapi/test/gapi_array_tests.cpp | 166 + .../gapi/test/gapi_basic_hetero_tests.cpp | 312 ++ .../modules/gapi/test/gapi_desc_tests.cpp | 202 ++ .../gapi/test/gapi_fluid_resize_test.cpp | 720 +++++ .../modules/gapi/test/gapi_fluid_roi_test.cpp | 197 ++ .../modules/gapi/test/gapi_fluid_test.cpp | 713 +++++ .../gapi/test/gapi_fluid_test_kernels.cpp | 436 +++ .../gapi/test/gapi_fluid_test_kernels.hpp | 105 + .../gapi/test/gapi_gcompiled_tests.cpp | 173 ++ .../gapi/test/gapi_gcomputation_tests.cpp | 68 + .../modules/gapi/test/gapi_kernel_tests.cpp | 284 ++ .../modules/gapi/test/gapi_mock_kernels.hpp | 123 + .../gapi/test/gapi_sample_pipelines.cpp | 301 ++ .../modules/gapi/test/gapi_scalar_tests.cpp | 117 + .../modules/gapi/test/gapi_smoke_test.cpp | 97 + .../modules/gapi/test/gapi_typed_tests.cpp | 185 ++ .../modules/gapi/test/gapi_util_tests.cpp | 43 + .../gapi/test/gpu/gapi_core_tests_gpu.cpp | 395 +++ .../gapi/test/gpu/gapi_imgproc_tests_gpu.cpp | 227 ++ .../test/gpu/gapi_operators_tests_gpu.cpp | 72 + .../test/internal/gapi_int_backend_tests.cpp | 86 + .../test/internal/gapi_int_executor_tests.cpp | 83 + .../gapi/test/internal/gapi_int_garg_test.cpp | 100 + .../test/internal/gapi_int_gmetaarg_test.cpp | 136 + .../internal/gapi_int_gmodel_builder_test.cpp | 364 +++ .../internal/gapi_int_island_fusion_tests.cpp | 527 ++++ .../test/internal/gapi_int_island_tests.cpp | 653 ++++ .../internal/gapi_int_recompilation_test.cpp | 233 ++ .../internal/gapi_int_resolve_kernel_test.cpp | 119 + .../test/internal/gapi_int_vectorref_test.cpp | 207 ++ .../test/internal/gapi_transactions_test.cpp | 222 ++ .../gapi/test/own/gapi_types_tests.cpp | 159 + .../fluid/modules/gapi/test/own/mat_tests.cpp | 387 +++ .../modules/gapi/test/own/scalar_tests.cpp | 44 + .../fluid/modules/gapi/test/test_main.cpp | 12 + .../fluid/modules/gapi/test/test_precomp.hpp | 27 + .../modules/gapi/test/util/any_tests.cpp | 121 + .../modules/gapi/test/util/optional_tests.cpp | 175 ++ .../modules/gapi/test/util/variant_tests.cpp | 386 +++ .../thirdparty/fluid/revision.txt | 1 + inference-engine/thirdparty/fluid/update.sh | 73 + .../thirdparty/mkl-dnn/CMakeLists.txt | 21 +- inference-engine/thirdparty/mkl-dnn/README.md | 77 +- .../thirdparty/mkl-dnn/cmake/MKL.cmake | 152 +- .../thirdparty/mkl-dnn/cmake/OpenMP.cmake | 104 +- .../thirdparty/mkl-dnn/cmake/TBB.cmake | 2 +- .../thirdparty/mkl-dnn/cmake/Threading.cmake | 39 + .../mkl-dnn/cmake/lnx/TBBConfig.cmake | 23 +- .../mkl-dnn/cmake/mac/TBBConfig.cmake | 9 +- .../thirdparty/mkl-dnn/cmake/options.cmake | 55 +- .../thirdparty/mkl-dnn/cmake/platform.cmake | 101 +- .../thirdparty/mkl-dnn/cmake/profiling.cmake | 6 +- .../thirdparty/mkl-dnn/cmake/utils.cmake | 40 +- .../mkl-dnn/cmake/win/TBBConfig.cmake | 24 +- .../design/understanding_memory_formats.md | 2 +- .../thirdparty/mkl-dnn/doc/mainpage.md | 6 +- .../mkl-dnn/examples/CMakeLists.txt | 13 +- .../thirdparty/mkl-dnn/examples/simple_net.c | 136 +- .../mkl-dnn/examples/simple_rnn_training.cpp | 4 +- .../mkl-dnn/examples/simple_training_net.c | 328 +- .../thirdparty/mkl-dnn/include/mkldnn.h | 66 + .../thirdparty/mkl-dnn/include/mkldnn.hpp | 1727 +++-------- .../thirdparty/mkl-dnn/include/mkldnn_types.h | 502 +-- .../mkl-dnn/scripts/prepare_mkl.bat | 29 +- .../thirdparty/mkl-dnn/scripts/prepare_mkl.sh | 42 +- .../thirdparty/mkl-dnn/src/CMakeLists.txt | 31 +- .../src/common/batch_normalization.cpp | 2 +- .../mkl-dnn/src/common/c_types_map.hpp | 44 + .../mkl-dnn/src/common/convolution.cpp | 2 +- .../mkl-dnn/src/common/convolution_pd.hpp | 71 +- .../mkl-dnn/src/common/depthwise_pd.hpp | 7 +- .../thirdparty/mkl-dnn/src/common/eltwise.cpp | 4 +- .../mkl-dnn/src/common/format_traits.hpp | 260 ++ .../thirdparty/mkl-dnn/src/common/lrn.cpp | 2 +- .../mkl-dnn/src/common/math_utils.hpp | 15 + .../src/common/memory_desc_wrapper.cpp | 318 +- .../src/common/memory_desc_wrapper.hpp | 72 +- .../mkl-dnn/src/common/mkldnn_debug.cpp | 96 +- .../mkl-dnn/src/common/mkldnn_thread.hpp | 11 +- .../mkl-dnn/src/common/mkldnn_traits.hpp | 6 + .../mkl-dnn/src/common/primitive.cpp | 4 +- .../mkl-dnn/src/common/primitive_attr.cpp | 7 + .../mkl-dnn/src/common/primitive_attr.hpp | 9 +- .../mkl-dnn/src/common/primitive_desc.cpp | 5 + .../thirdparty/mkl-dnn/src/common/reorder.cpp | 2 +- .../thirdparty/mkl-dnn/src/common/rnn.cpp | 20 +- .../thirdparty/mkl-dnn/src/common/rnn_pd.hpp | 286 +- .../thirdparty/mkl-dnn/src/common/shuffle.cpp | 72 + .../mkl-dnn/src/common/shuffle_pd.hpp | 94 + .../mkl-dnn/src/common/type_helpers.hpp | 45 +- .../thirdparty/mkl-dnn/src/common/utils.hpp | 34 +- .../thirdparty/mkl-dnn/src/common/verbose.hpp | 23 + .../thirdparty/mkl-dnn/src/cpu/cpu_concat.hpp | 2 +- .../mkl-dnn/src/cpu/cpu_convolution_pd.hpp | 24 +- .../thirdparty/mkl-dnn/src/cpu/cpu_engine.cpp | 139 +- .../mkl-dnn/src/cpu/cpu_inner_product_pd.hpp | 18 +- .../thirdparty/mkl-dnn/src/cpu/cpu_memory.cpp | 167 +- .../mkl-dnn/src/cpu/cpu_reducer.cpp | 2 +- .../mkl-dnn/src/cpu/cpu_reorder.cpp | 172 +- .../mkl-dnn/src/cpu/cpu_reorder_pd.hpp | 2 +- .../mkl-dnn/src/cpu/cpu_shuffle_pd.hpp | 65 + .../thirdparty/mkl-dnn/src/cpu/cpu_sum.hpp | 11 +- .../thirdparty/mkl-dnn/src/cpu/gemm/gemm.cpp | 157 +- .../thirdparty/mkl-dnn/src/cpu/gemm/gemm.hpp | 17 +- .../mkl-dnn/src/cpu/gemm/gemm_utils.cpp | 9 +- .../mkl-dnn/src/cpu/gemm/gemm_utils.hpp | 30 +- .../cpu/gemm/jit_avx512_common_gemm_f32.cpp | 195 +- .../cpu/gemm/jit_avx512_common_gemm_f32.hpp | 1 - .../mkl-dnn/src/cpu/gemm/jit_avx_gemm_f32.cpp | 231 +- .../mkl-dnn/src/cpu/gemm/jit_avx_gemm_f32.hpp | 1 - .../mkl-dnn/src/cpu/gemm/ref_gemm.cpp | 194 +- .../mkl-dnn/src/cpu/gemm_convolution.cpp | 7 +- .../mkl-dnn/src/cpu/gemm_convolution.hpp | 37 +- .../src/cpu/gemm_convolution_utils.cpp | 57 +- .../src/cpu/gemm_convolution_utils.hpp | 4 +- .../mkl-dnn/src/cpu/gemm_inner_product.hpp | 4 +- .../src/cpu/gemm_u8s8s32x_inner_product.hpp | 4 +- ...tion.cpp => gemm_x8s8s32x_convolution.cpp} | 73 +- ...tion.hpp => gemm_x8s8s32x_convolution.hpp} | 30 +- .../src/cpu/jit_avx2_1x1_conv_kernel_f32.cpp | 112 +- .../src/cpu/jit_avx2_1x1_conv_kernel_f32.hpp | 10 +- .../src/cpu/jit_avx2_1x1_convolution.cpp | 55 +- .../src/cpu/jit_avx2_1x1_convolution.hpp | 31 +- .../src/cpu/jit_avx2_conv_kernel_f32.cpp | 360 +-- .../src/cpu/jit_avx2_conv_kernel_f32.hpp | 17 +- .../mkl-dnn/src/cpu/jit_avx2_convolution.cpp | 25 +- .../mkl-dnn/src/cpu/jit_avx2_convolution.hpp | 65 +- .../cpu/jit_avx512_common_1x1_conv_kernel.cpp | 50 +- .../cpu/jit_avx512_common_1x1_convolution.cpp | 59 +- .../cpu/jit_avx512_common_1x1_convolution.hpp | 39 +- .../src/cpu/jit_avx512_common_conv_kernel.cpp | 655 ++-- .../src/cpu/jit_avx512_common_conv_kernel.hpp | 4 +- ...avx512_common_conv_winograd_kernel_f32.cpp | 13 +- .../src/cpu/jit_avx512_common_convolution.cpp | 481 ++- .../src/cpu/jit_avx512_common_convolution.hpp | 52 +- ...jit_avx512_common_convolution_winograd.hpp | 5 +- .../mkl-dnn/src/cpu/jit_avx512_common_lrn.cpp | 10 +- .../jit_avx512_core_fp32_wino_conv_2x3.cpp | 42 +- .../jit_avx512_core_fp32_wino_conv_2x3.hpp | 5 +- .../jit_avx512_core_fp32_wino_conv_4x3.cpp | 6 +- .../jit_avx512_core_fp32_wino_conv_4x3.hpp | 7 +- ..._avx512_core_fp32_wino_conv_4x3_kernel.cpp | 9 +- ..._avx512_core_fp32_wino_conv_4x3_kernel.hpp | 8 +- .../jit_avx512_core_u8s8s32x_convolution.cpp | 165 - ...jit_avx512_core_u8s8s32x_deconvolution.cpp | 602 ++++ ...jit_avx512_core_u8s8s32x_deconvolution.hpp | 201 ++ ..._avx512_core_u8s8s32x_wino_convolution.cpp | 704 +++-- ..._avx512_core_u8s8s32x_wino_convolution.hpp | 18 +- ..._avx512_core_x8s8s32x_1x1_conv_kernel.cpp} | 118 +- ..._avx512_core_x8s8s32x_1x1_conv_kernel.hpp} | 22 +- ..._avx512_core_x8s8s32x_1x1_convolution.cpp} | 68 +- ..._avx512_core_x8s8s32x_1x1_convolution.hpp} | 91 +- ... jit_avx512_core_x8s8s32x_conv_kernel.cpp} | 503 ++- ... jit_avx512_core_x8s8s32x_conv_kernel.hpp} | 30 +- .../jit_avx512_core_x8s8s32x_convolution.cpp | 203 ++ ... jit_avx512_core_x8s8s32x_convolution.hpp} | 55 +- .../mkl-dnn/src/cpu/jit_generator.hpp | 147 +- .../mkl-dnn/src/cpu/jit_primitive_conf.hpp | 88 +- .../src/cpu/jit_sse42_1x1_conv_kernel_f32.cpp | 107 +- .../src/cpu/jit_sse42_1x1_conv_kernel_f32.hpp | 8 +- .../src/cpu/jit_sse42_1x1_convolution.cpp | 10 +- .../src/cpu/jit_sse42_1x1_convolution.hpp | 11 +- .../src/cpu/jit_sse42_conv_kernel_f32.cpp | 161 +- .../src/cpu/jit_sse42_conv_kernel_f32.hpp | 9 +- .../mkl-dnn/src/cpu/jit_sse42_convolution.cpp | 25 +- .../mkl-dnn/src/cpu/jit_sse42_convolution.hpp | 16 +- .../src/cpu/jit_uni_1x1_conv_utils.hpp | 36 +- .../src/cpu/jit_uni_batch_normalization.cpp | 2 +- .../src/cpu/jit_uni_batch_normalization.hpp | 4 +- .../mkl-dnn/src/cpu/jit_uni_depthwise.cpp | 2 +- .../src/cpu/jit_uni_dw_conv_kernel_f32.cpp | 610 ++++ .../src/cpu/jit_uni_dw_conv_kernel_f32.hpp | 156 + .../src/cpu/jit_uni_dw_convolution.cpp | 252 ++ .../src/cpu/jit_uni_dw_convolution.hpp | 107 +- .../mkl-dnn/src/cpu/jit_uni_eltwise.cpp | 25 +- .../mkl-dnn/src/cpu/jit_uni_i8i8_pooling.cpp | 634 ++++ .../mkl-dnn/src/cpu/jit_uni_i8i8_pooling.hpp | 98 + .../src/cpu/jit_uni_lrn_kernel_f32.cpp | 125 +- .../src/cpu/jit_uni_lrn_kernel_f32.hpp | 2 + .../src/cpu/jit_uni_pool_kernel_f32.cpp | 55 +- .../src/cpu/jit_uni_pool_kernel_f32.hpp | 14 +- .../mkl-dnn/src/cpu/jit_uni_pooling.hpp | 2 +- .../mkl-dnn/src/cpu/jit_uni_reorder.cpp | 9 +- .../mkl-dnn/src/cpu/jit_uni_reorder_utils.cpp | 22 +- .../cpu/jit_uni_x8s8s32x_1x1_conv_kernel.cpp | 507 +++ .../cpu/jit_uni_x8s8s32x_1x1_conv_kernel.hpp | 98 + .../cpu/jit_uni_x8s8s32x_1x1_convolution.cpp | 147 + .../cpu/jit_uni_x8s8s32x_1x1_convolution.hpp | 140 + .../src/cpu/jit_uni_x8s8s32x_conv_kernel.cpp | 865 ++++++ .../src/cpu/jit_uni_x8s8s32x_conv_kernel.hpp | 132 + .../src/cpu/jit_uni_x8s8s32x_convolution.cpp | 151 + .../src/cpu/jit_uni_x8s8s32x_convolution.hpp | 127 + .../cpu/jit_uni_x8s8s32x_dw_conv_kernel.cpp | 662 ++++ .../cpu/jit_uni_x8s8s32x_dw_conv_kernel.hpp | 113 + .../cpu/jit_uni_x8s8s32x_dw_convolution.cpp | 172 ++ .../cpu/jit_uni_x8s8s32x_dw_convolution.hpp | 121 + .../mkl-dnn/src/cpu/nchw_pooling.cpp | 22 +- .../src/cpu/ncsp_batch_normalization.cpp | 54 +- .../src/cpu/ncsp_batch_normalization.hpp | 4 +- .../src/cpu/nspc_batch_normalization.cpp | 4 +- .../src/cpu/nspc_batch_normalization.hpp | 4 +- .../mkl-dnn/src/cpu/ref_convolution.cpp | 282 +- .../mkl-dnn/src/cpu/ref_convolution.hpp | 8 +- .../mkl-dnn/src/cpu/ref_deconvolution.hpp | 39 +- .../mkl-dnn/src/cpu/ref_depthwise.cpp | 9 +- .../mkl-dnn/src/cpu/ref_eltwise.hpp | 2 +- .../mkl-dnn/src/cpu/ref_inner_product.hpp | 6 +- .../thirdparty/mkl-dnn/src/cpu/ref_lrn.cpp | 13 +- .../thirdparty/mkl-dnn/src/cpu/ref_lrn.hpp | 10 +- .../mkl-dnn/src/cpu/ref_pooling.cpp | 57 +- .../mkl-dnn/src/cpu/ref_pooling.hpp | 2 +- .../thirdparty/mkl-dnn/src/cpu/ref_rnn.cpp | 905 +++--- .../thirdparty/mkl-dnn/src/cpu/ref_rnn.hpp | 93 +- .../mkl-dnn/src/cpu/ref_shuffle.cpp | 151 + .../mkl-dnn/src/cpu/ref_shuffle.hpp | 105 + .../mkl-dnn/src/cpu/simple_concat.cpp | 41 +- .../mkl-dnn/src/cpu/simple_concat.hpp | 31 +- .../mkl-dnn/src/cpu/simple_q10n.hpp | 8 +- .../mkl-dnn/src/cpu/simple_reorder.hpp | 1963 ++++-------- .../mkl-dnn/src/cpu/wino_reorder.hpp | 5 +- .../thirdparty/mkl-dnn/tests/CMakeLists.txt | 33 +- .../mkl-dnn/tests/benchdnn/CMakeLists.txt | 12 +- .../mkl-dnn/tests/benchdnn/README.md | 12 +- .../mkl-dnn/tests/benchdnn/benchdnn.cpp | 3 + .../tests/benchdnn/bnorm/bench_bnorm.cpp | 4 +- .../mkl-dnn/tests/benchdnn/bnorm/bnorm.cpp | 6 +- .../mkl-dnn/tests/benchdnn/common.cpp | 2 +- .../mkl-dnn/tests/benchdnn/common.hpp | 2 +- .../tests/benchdnn/conv/bench_conv.cpp | 4 +- .../tests/benchdnn/conv/bench_deconv.cpp | 4 +- .../mkl-dnn/tests/benchdnn/conv/cfg.cpp | 64 +- .../mkl-dnn/tests/benchdnn/conv/conv.cpp | 95 +- .../mkl-dnn/tests/benchdnn/conv/conv_aux.cpp | 12 +- .../tests/benchdnn/conv/conv_common.hpp | 3 + .../mkl-dnn/tests/benchdnn/conv/deconv.cpp | 5 +- .../mkl-dnn/tests/benchdnn/conv/ref_conv.cpp | 6 +- .../mkl-dnn/tests/benchdnn/dnn_types.cpp | 37 + .../mkl-dnn/tests/benchdnn/dnn_types.hpp | 1 + .../inputs/bnorm/test_bnorm_regressions | 6 - .../inputs/bnorm/test_bnorm_regressions_large | 24 + .../mkl-dnn/tests/benchdnn/inputs/conv_1d | 34 + .../tests/benchdnn/inputs/conv_1d_wavenet | 10 + .../mkl-dnn/tests/benchdnn/inputs/conv_all | 2 + .../tests/benchdnn/inputs/conv_all_topo | 1 + .../tests/benchdnn/inputs/conv_dilated | 4 + .../inputs/conv_regression_small_spatial | 1 + .../mkl-dnn/tests/benchdnn/inputs/conv_tails | 13 +- .../tests/benchdnn/inputs/ip/test_ip_all | 2 +- .../mkl-dnn/tests/benchdnn/inputs/rnn/rnn_gru | 4 + .../tests/benchdnn/inputs/rnn/rnn_gru_small | 7 + .../tests/benchdnn/inputs/rnn/rnn_inference | 10 + .../tests/benchdnn/inputs/rnn/rnn_small | 8 + .../tests/benchdnn/inputs/rnn/rnn_training | 11 + .../benchdnn/inputs/rnn/test_rnn_inference | 37 + .../tests/benchdnn/inputs/rnn/test_rnn_small | 66 + .../benchdnn/inputs/rnn/test_rnn_training | 42 + .../benchdnn/inputs/shuffle/test_shuffle | 97 + .../benchdnn/inputs/shuffle/test_shuffle_axis | 103 + .../tests/benchdnn/inputs/test_conv_all | 9 +- .../tests/benchdnn/inputs/test_conv_attrs | 5 + .../tests/benchdnn/inputs/test_conv_dilated | 2 + .../inputs/test_conv_regression_general | 11 + .../tests/benchdnn/inputs/test_conv_tails | 6 +- .../tests/benchdnn/inputs/test_deconv_all | 8 +- .../mkl-dnn/tests/benchdnn/ip/bench_ip.cpp | 4 +- .../mkl-dnn/tests/benchdnn/ip/ip.cpp | 3 + .../mkl-dnn/tests/benchdnn/mkldnn_debug.cpp | 22 + .../tests/benchdnn/reorder/bench_reorder.cpp | 8 +- .../tests/benchdnn/reorder/reorder.cpp | 6 +- .../mkl-dnn/tests/benchdnn/rnn/bench_rnn.cpp | 65 +- .../benchdnn/rnn/{input_rnn.hpp => cfg.cpp} | 81 - .../mkl-dnn/tests/benchdnn/rnn/ref_rnn.cpp | 110 +- .../mkl-dnn/tests/benchdnn/rnn/rnn.cpp | 79 +- .../mkl-dnn/tests/benchdnn/rnn/rnn.hpp | 118 +- .../mkl-dnn/tests/benchdnn/rnn/rnn_aux.cpp | 222 +- .../tests/benchdnn/shuffle/bench_shuffle.cpp | 110 + .../tests/benchdnn/shuffle/perf_report.cpp | 125 + .../tests/benchdnn/shuffle/ref_shuffle.cpp | 58 + .../tests/benchdnn/shuffle/shuffle.cpp | 188 ++ .../tests/benchdnn/shuffle/shuffle.hpp | 85 + .../tests/benchdnn/shuffle/shuffle_aux.cpp | 67 + .../mkl-dnn/tests/gtests/CMakeLists.txt | 7 +- .../mkl-dnn/tests/gtests/convolution_common.h | 18 +- .../gtests/gtest/src/gtest-death-test.cc | 6 + .../tests/gtests/gtest/src/gtest-port.cc | 9 + .../tests/gtests/gtest/src/gtest-test-part.cc | 3 +- .../mkl-dnn/tests/gtests/gtest/src/gtest.cc | 82 +- .../gtests/in/convolution_simple_small.h | 82 +- .../mkl-dnn/tests/gtests/in/gemm_in.h | 136 + .../tests/gtests/mkldnn_test_common.hpp | 17 + ...est_convolution_eltwise_forward_common.hpp | 280 ++ .../test_convolution_forward_common.hpp | 23 +- .../test_convolution_forward_u8s8fp.cpp | 62 +- .../test_convolution_forward_u8s8s32.cpp | 62 +- .../mkl-dnn/tests/gtests/test_gemm.cpp | 143 - .../mkl-dnn/tests/gtests/test_gemm_common.hpp | 316 ++ .../mkl-dnn/tests/gtests/test_gemm_f32.cpp | 33 + .../tests/gtests/test_gemm_s8s8s32.cpp | 33 + .../tests/gtests/test_gemm_s8u8s32.cpp | 33 + .../tests/gtests/test_iface_pd_iter.cpp | 20 + .../tests/gtests/test_lrn_backward.cpp | 9 + .../mkl-dnn/tests/gtests/test_lrn_forward.cpp | 38 + .../mkl-dnn/tests/gtests/test_memory.cpp | 20 +- .../tests/gtests/test_mkldnn_threading.cpp | 2 +- .../tests/gtests/test_pooling_backward.cpp | 5 +- .../tests/gtests/test_pooling_forward.cpp | 5 +- .../mkl-dnn/tests/gtests/test_shuffle.cpp | 372 +++ .../tests/gtests/test_softmax_forward.cpp | 10 +- .../mkl-dnn/tests/gtests/test_sum.cpp | 112 +- inference-engine/thirdparty/mkldnn.cmake | 74 +- .../thirdparty/ocv/opencv_hal_sse.hpp | 2745 +++++++++++++++++ model-optimizer/ModelOptimizer | 126 - .../extensions/back/ConvolutionReshaper.py | 78 + .../extensions/back/PermuteForReshape.py | 80 + .../extensions/back/TileReshaper.py | 74 + .../back/disable_unsupported_ND_operations.py | 2 +- .../back/kaldi_remove_memory_output.py | 2 +- .../back/remove_last_softmax_pattern.py | 6 +- .../extensions/front/{tf => }/Pack.py | 4 +- .../extensions/front/caffe/axpy.py | 43 + model-optimizer/extensions/front/caffe/bn.py | 60 + .../front/caffe/detection_output.py | 13 +- .../extensions/front/caffe/flatten_ext.py | 36 + .../extensions/front/caffe/interp_ext.py | 3 + .../extensions/front/caffe/pooling_ext.py | 5 +- .../extensions/front/caffe/priorbox_ext.py | 2 - .../front/caffe/shufflechannel_ext.py} | 16 +- .../extensions/front/caffe/softmax_ext.py | 36 + .../front/caffe/split_to_identity.py | 38 + .../{onnx => }/instance_normalization.py | 0 .../kaldi/add_reshape_around_convolution.py | 62 + .../front/kaldi/add_reshape_around_pooling.py | 59 + .../front/kaldi/add_reshape_for_conv.py | 44 - .../front/kaldi/add_reshape_for_pooling.py | 49 - .../kaldi/eliminate_redundant_reshape.py | 4 +- .../front/kaldi/fuse_repeated_reshape.py | 4 +- .../front/kaldi/replace_lstm_node_pattern.py | 311 +- .../kaldi/replace_splice_node_pattern.py | 84 + .../extensions/front/mxnet/RNN_ext.py | 62 + .../extensions/front/mxnet/block_grad_ext.py | 29 + .../extensions/front/mxnet/conv_ext.py | 66 +- .../extensions/front/mxnet/copy_ext.py | 29 + .../extensions/front/mxnet/dropout_ext.py | 29 + .../front/mxnet/flatten_ext.py} | 14 +- .../front/mxnet/instance_norm_ext.py | 35 + .../extensions/front/mxnet/max_ext.py | 36 + .../extensions/front/mxnet/maximum_ext.py | 28 + .../front/mxnet/minimum_ext.py} | 10 +- .../extensions/front/mxnet/pooling_ext.py | 19 +- .../extensions/front/mxnet/reshape_ext.py | 44 + .../front/mxnet/rnn_param_concat.py | 35 + .../front/mxnet/slice_channel_ext.py | 41 + .../extensions/front/mxnet/softmax.py | 2 +- .../front/mxnet/softmax_activation_ext.py | 2 - .../extensions/front/mxnet/softmax_ext.py | 2 +- .../ssd_pattern_flatten_softmax_activation.py | 2 +- .../front/mxnet/ssd_pattern_remove_flatten.py | 4 +- .../front/mxnet/ssd_pattern_remove_reshape.py | 4 +- .../mxnet/ssd_pattern_remove_transpose.py | 2 +- .../extensions/front/mxnet/stack_ext.py | 37 + .../extensions/front/mxnet/swapaxes_ext.py | 39 + .../extensions/front/mxnet/up_sampling_ext.py | 38 + .../extensions/front/mxnet/zeros_ext.py | 43 + .../extensions/front/onnx/conv_ext.py | 10 +- .../extensions/front/onnx/flatten_ext.py | 8 +- .../extensions/front/onnx/gather_ext.py | 4 +- .../extensions/front/onnx/lstm_ext.py | 15 + .../extensions/front/onnx/matmul_ext.py | 2 +- .../extensions/front/onnx/neg_ext.py | 34 + .../extensions/front/onnx/pad_ext.py | 18 +- .../extensions/front/onnx/pooling_ext.py | 18 +- .../extensions/front/onnx/reduce_sum_ext.py | 32 + .../front/onnx/softmax_ext.py} | 18 +- .../front/onnx/split_ext.py} | 18 +- .../extensions/front/tf/BlockLSTM.py | 128 + .../extensions/front/tf/BlockLSTM_ext.py | 33 + .../extensions/front/tf/CTCGreedyDecoder.py | 82 + .../front/tf/CTCGreedyDecoder_ext.py | 30 + .../extensions/front/tf/ObjectDetectionAPI.py | 25 +- .../RetinaNetFilteredDetectionsReplacement.py | 120 + .../front/tf/SSDToolboxDetectionOutput.py | 11 - .../extensions/front/tf/assign_elimination.py | 67 + .../extensions/front/tf/basic_lstm_cell.py | 9 + .../extensions/front/tf/deconv_ext.py | 4 +- .../extensions/front/tf/fake_const.py | 43 + .../extensions/front/tf/fifo_queue_v2_ext.py | 16 +- .../extensions/front/tf/fifo_replacer.py | 38 +- .../extensions/front/tf/gather_ext.py | 59 + .../front/tf/max_ext.py} | 15 +- .../extensions/front/tf/mvn_unrolled.py | 106 + .../front/tf/nearest_neighbor_upsampling.py | 2 +- .../extensions/front/tf/next_iteration_ext.py | 4 +- .../extensions/front/tf/pad_ext.py | 19 + .../extensions/front/tf/pooling_ext.py | 13 + .../extensions/front/tf/rank_ext.py | 28 + .../extensions/front/tf/retinanet.json | 31 + .../extensions/front/tf/reverse_sequence.py | 31 + .../extensions/front/tf/reverse_v2.py | 28 + .../extensions/front/tf/softmax_ext.py | 32 + .../front/tf/sqrt_ext.py} | 12 +- .../extensions/front/tf/square_ext.py | 29 + .../extensions/front/tf/stop_gradient_ext.py | 29 + .../extensions/front/tf/variable_ext.py | 37 + .../middle/AddIsCyclicAttribute.py} | 18 +- .../middle/BlockLSTMtoLSTMSequence.py | 259 ++ .../extensions/middle/ConstSwitchResolver.py | 11 +- .../middle/ConvertGroupedStridedSlice.py | 16 +- .../ConvertLayoutDependentOperations.py | 4 +- .../extensions/middle/EltwiseInputReshape.py | 2 +- .../extensions/middle/FusePermutesSequence.py | 3 +- .../extensions/middle/GemmResolver.py | 62 + .../extensions/middle/NormalizePad.py | 49 + .../middle/PadToPoolingMiddleReplacer.py | 52 - .../extensions/middle/PixelLinkReshape.py | 1 + model-optimizer/extensions/middle/Reduce.py | 107 +- .../extensions/middle/ShuffleChannel.py | 71 + .../extensions/middle/ShufflenetReshape.py | 45 +- .../extensions/middle/SliceConverter.py | 5 +- .../middle/SwapAxesMiddleReplacer.py | 51 + .../middle/TF_lstm_cell_to_generic.py | 18 +- .../middle/TensorIteratorCondition.py | 104 +- .../middle/TensorIteratorConditionChecker.py | 15 +- .../extensions/middle/TensorIteratorInput.py | 47 +- .../extensions/middle/TensorIteratorMerge.py | 174 +- .../extensions/middle/UselessMerge.py | 13 +- .../extensions/middle/UselessStridedSlice.py | 7 +- .../extensions/middle/decompose_bi_lstm.py | 188 ++ .../middle/lstm_sequence_normalize.py | 55 +- .../middle/lstm_sequence_tensor_iterator.py | 120 +- .../lstm_tensor_iterator_to_lstm_sequence.py | 4 +- .../middle/mxnet_lstm_sequence_normalize.py | 168 + .../middle/permute_tensor_iterator.py | 76 +- .../middle/reverse_tensor_iterator.py | 105 + model-optimizer/extensions/ops/BlockLSTM.py | 63 + .../extensions/ops/DetectionOutput.py | 5 +- .../extensions/ops/TensorArrayGather.py | 17 +- .../extensions/ops/TensorArrayScatter.py | 8 +- .../extensions/ops/TensorArrayWrite.py | 5 +- model-optimizer/extensions/ops/axpy.py | 34 + model-optimizer/extensions/ops/bn.py | 34 + .../extensions/ops/constant_fill.py | 2 +- model-optimizer/extensions/ops/gather.py | 67 + model-optimizer/extensions/ops/identity.py | 39 + model-optimizer/extensions/ops/interp.py | 11 +- .../extensions/ops/lstm_sequence.py | 59 +- model-optimizer/extensions/ops/merge.py | 1 - .../up_sampling.py => extensions/ops/pack.py} | 29 +- model-optimizer/extensions/ops/priorbox.py | 20 +- model-optimizer/extensions/ops/rank.py | 40 + .../ops/{take.py => reverse_sequence.py} | 40 +- .../ops/shufflechannel.py} | 21 +- .../softmax.py => extensions/ops/splice.py} | 19 +- model-optimizer/extensions/ops/splitv.py | 13 +- .../extensions/ops/stop_gradient.py | 39 + model-optimizer/extensions/ops/swapaxes.py | 35 + .../install_prerequisites.sh | 2 +- model-optimizer/mo/front/caffe/extractor.py | 6 +- .../mo/front/caffe/extractors/elu.py | 7 +- .../mo/front/caffe/extractors/flatten.py | 35 - .../mo/front/caffe/extractors/reshape.py | 8 + .../mo/front/caffe/extractors/scale.py | 17 +- .../mo/front/caffe/extractors/slice.py | 2 + model-optimizer/mo/front/caffe/loader.py | 40 +- .../mo/front/caffe/proto/caffe_pb2.py | 482 +-- .../front/caffe/proto/generate_caffe_pb2.py | 17 +- .../mo/front/caffe/proto/mo_caffe.proto | 7 + model-optimizer/mo/front/common/layout.py | 3 +- .../front/common/partial_infer/elemental.py | 6 +- .../front/common/partial_infer/expand_dims.py | 4 +- .../mo/front/common/partial_infer/flatten.py | 43 - .../common/partial_infer/inner_product.py | 23 +- .../mo/front/common/partial_infer/matmul.py | 40 +- .../mo/front/common/partial_infer/reduce.py | 5 +- .../mo/front/common/partial_infer/reshape.py | 22 +- .../mo/front/common/partial_infer/slice.py | 1 - .../mo/front/common/partial_infer/split.py | 127 +- .../mo/front/common/partial_infer/squeeze.py | 60 +- .../mo/front/common/partial_infer/utils.py | 12 +- .../mo/front/common/register_custom_ops.py | 1 - model-optimizer/mo/front/extractor.py | 277 +- model-optimizer/mo/front/kaldi/extractor.py | 24 +- .../front/kaldi/extractors/add_shift_ext.py | 38 + .../kaldi/extractors/affine_component_ext.py | 29 + ...ine_component_preconditioned_online_ext.py | 29 + .../kaldi/extractors/affine_transform_ext.py | 18 +- .../mo/front/kaldi/extractors/concat_ext.py | 7 +- .../front/kaldi/extractors/convolution_ext.py | 61 - .../convolutional_1d_component_ext.py | 96 + .../extractors/convolutional_component_ext.py | 88 + .../mo/front/kaldi/extractors/copy_ext.py | 40 + .../extractors/fixed_affine_component_ext.py | 51 + .../extractors/lstm_projected_streams_ext.py | 68 + .../front/kaldi/extractors/max_pooling_ext.py | 60 + .../extractors/normalize_component_ext.py | 43 + .../mo/front/kaldi/extractors/pooling_ext.py | 38 - .../rectified_linear_component_ext.py | 28 + .../mo/front/kaldi/extractors/rescale_ext.py | 36 + .../mo/front/kaldi/extractors/reshape.py | 68 - .../mo/front/kaldi/extractors/sigmoid_ext.py | 2 +- .../mo/front/kaldi/extractors/slice_ext.py | 14 +- .../mo/front/kaldi/extractors/softmax_ext.py | 37 + .../kaldi/extractors/splice_component_ext.py | 53 + .../kaldi/extractors/tanh_component_ext.py | 28 + model-optimizer/mo/front/kaldi/loader.py | 544 ---- .../mo/front/kaldi/loader/__init__.py | 0 .../mo/front/kaldi/loader/loader.py | 215 ++ .../mo/front/kaldi/loader/utils.py | 299 ++ .../mo/front/kaldi/register_custom_ops.py | 2 +- model-optimizer/mo/front/kaldi/utils.py | 64 +- model-optimizer/mo/front/mxnet/extractor.py | 20 +- .../mo/front/mxnet/extractors/reshape.py | 32 - .../mo/front/mxnet/extractors/up_sampling.py | 28 - .../mo/front/mxnet/extractors/utils.py | 8 +- model-optimizer/mo/front/onnx/extractor.py | 11 +- .../mo/front/tf/change_placeholder_type.py | 7 + model-optimizer/mo/front/tf/extractor.py | 9 +- .../mo/front/tf/extractors/utils.py | 2 +- model-optimizer/mo/front/tf/graph_utils.py | 2 +- model-optimizer/mo/front/tf/loader.py | 95 +- model-optimizer/mo/graph/graph.py | 175 +- model-optimizer/mo/middle/passes/conv.py | 78 +- model-optimizer/mo/middle/passes/eliminate.py | 54 +- .../mo/middle/passes/fusing/decomposition.py | 21 +- model-optimizer/mo/middle/passes/infer.py | 71 +- model-optimizer/mo/middle/passes/pool.py | 5 +- model-optimizer/mo/middle/passes/shape.py | 174 +- model-optimizer/mo/ops/convolution.py | 28 +- model-optimizer/mo/ops/deconvolution.py | 3 +- model-optimizer/mo/ops/eltwise.py | 2 +- model-optimizer/mo/ops/expand_dims.py | 2 +- model-optimizer/mo/ops/flatten.py | 54 + model-optimizer/mo/ops/flatten_onnx.py | 4 +- model-optimizer/mo/ops/lin_op.py | 2 + model-optimizer/mo/ops/memory.py | 23 +- model-optimizer/mo/ops/op.py | 19 +- model-optimizer/mo/ops/pad.py | 39 +- model-optimizer/mo/ops/pooling.py | 2 + model-optimizer/mo/ops/power.py | 3 +- model-optimizer/mo/ops/reduce.py | 37 +- model-optimizer/mo/ops/reshape.py | 46 +- model-optimizer/mo/ops/slice.py | 1 + model-optimizer/mo/ops/softmax.py | 3 +- model-optimizer/mo/ops/split.py | 2 +- model-optimizer/mo/ops/squeeze.py | 4 +- model-optimizer/mo/ops/unsqueeze.py | 4 +- model-optimizer/mo/pipeline/caffe.py | 24 +- model-optimizer/mo/pipeline/kaldi.py | 30 +- model-optimizer/mo/pipeline/mx.py | 10 +- model-optimizer/mo/pipeline/onnx.py | 2 +- model-optimizer/mo/pipeline/tf.py | 175 +- .../mo/utils/class_registration.py | 14 +- model-optimizer/mo/utils/cli_parser.py | 152 +- model-optimizer/mo/utils/graph.py | 2 +- model-optimizer/mo/utils/guess_framework.py | 2 + .../mo/utils/simple_proto_parser.py | 2 +- model-optimizer/mo/utils/summarize_graph.py | 6 +- model-optimizer/mo/utils/tensorboard.py | 5 +- model-optimizer/mo/utils/utils.py | 9 +- model-optimizer/mo/utils/versions_checker.py | 7 + model-optimizer/requirements.txt | 6 +- model-optimizer/requirements_caffe.txt | 2 +- model-optimizer/requirements_mxnet.txt | 2 +- model-optimizer/version.txt | 6 +- 1613 files changed, 126218 insertions(+), 17603 deletions(-) create mode 100644 inference-engine/cmake/FindlibGNA.cmake create mode 100644 inference-engine/cmake/arm.toolchain.cmake create mode 100644 inference-engine/cmake/ie_parallel.cmake delete mode 100644 inference-engine/cmake/omp.cmake rename inference-engine/cmake/share/{InferenceEngineConfig-version.cmake => InferenceEngineConfig-version.cmake.in} (92%) rename inference-engine/cmake/share/{InferenceEngineConfig.cmake => InferenceEngineConfig.cmake.in} (74%) delete mode 100644 inference-engine/ie_bridges/python/cmake/CopyIeLibs.cmake delete mode 100644 inference-engine/ie_bridges/python/cmake/ReplicatePythonSourceTree.cmake delete mode 100644 inference-engine/ie_bridges/python/inference_engine/CMakeLists.txt delete mode 100644 inference-engine/ie_bridges/python/inference_engine/__init__.py delete mode 100644 inference-engine/ie_bridges/python/inference_engine/ie_api_impl.hpp create mode 100644 inference-engine/ie_bridges/python/sample/benchmark_app/README.md create mode 100644 inference-engine/ie_bridges/python/sample/benchmark_app/benchmark.py create mode 100644 inference-engine/ie_bridges/python/sample/benchmark_app/utils/benchmark_utils.py create mode 100644 inference-engine/ie_bridges/python/sample/benchmark_app/utils/constants.py create mode 100644 inference-engine/ie_bridges/python/sample/jupyter_notebooks/classification_demo/classification_demo.ipynb create mode 100644 inference-engine/ie_bridges/python/sample/jupyter_notebooks/classification_demo/image_net_synset.txt delete mode 100644 inference-engine/ie_bridges/python/sample/segmentation_sample.py rename {model-optimizer/extensions/front/kaldi => inference-engine/ie_bridges/python/src/openvino}/__init__.py (100%) create mode 100644 inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt create mode 100644 inference-engine/ie_bridges/python/src/openvino/inference_engine/__init__.py create mode 100644 inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/CMakeLists.txt create mode 100644 inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/__init__.py create mode 100644 inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder.pxd create mode 100644 inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder.pyx create mode 100644 inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder_impl.cpp create mode 100644 inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder_impl.hpp create mode 100644 inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder_impl_defs.pxd rename inference-engine/ie_bridges/python/{ => src/openvino}/inference_engine/ie_api.pxd (78%) rename inference-engine/ie_bridges/python/{ => src/openvino}/inference_engine/ie_api.pyx (75%) rename inference-engine/ie_bridges/python/{ => src/openvino}/inference_engine/ie_api_impl.cpp (51%) create mode 100644 inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.hpp rename inference-engine/ie_bridges/python/{ => src/openvino}/inference_engine/ie_api_impl_defs.pxd (75%) create mode 100644 inference-engine/include/builders/ie_argmax_layer.hpp create mode 100644 inference-engine/include/builders/ie_batch_normalization_layer.hpp create mode 100644 inference-engine/include/builders/ie_clamp_layer.hpp create mode 100644 inference-engine/include/builders/ie_concat_layer.hpp create mode 100644 inference-engine/include/builders/ie_const_layer.hpp create mode 100644 inference-engine/include/builders/ie_convolution_layer.hpp create mode 100644 inference-engine/include/builders/ie_crop_layer.hpp create mode 100644 inference-engine/include/builders/ie_ctc_greedy_decoder_layer.hpp create mode 100644 inference-engine/include/builders/ie_deconvolution_layer.hpp create mode 100644 inference-engine/include/builders/ie_detection_output_layer.hpp create mode 100644 inference-engine/include/builders/ie_eltwise_layer.hpp create mode 100644 inference-engine/include/builders/ie_elu_layer.hpp create mode 100644 inference-engine/include/builders/ie_fully_connected_layer.hpp create mode 100644 inference-engine/include/builders/ie_grn_layer.hpp create mode 100644 inference-engine/include/builders/ie_input_layer.hpp create mode 100644 inference-engine/include/builders/ie_layer_builder.hpp create mode 100644 inference-engine/include/builders/ie_layer_fragment.hpp create mode 100644 inference-engine/include/builders/ie_memory_layer.hpp create mode 100644 inference-engine/include/builders/ie_mvn_layer.hpp create mode 100644 inference-engine/include/builders/ie_network_builder.hpp create mode 100644 inference-engine/include/builders/ie_norm_layer.hpp create mode 100644 inference-engine/include/builders/ie_normalize_layer.hpp create mode 100644 inference-engine/include/builders/ie_output_layer.hpp create mode 100644 inference-engine/include/builders/ie_permute_layer.hpp create mode 100644 inference-engine/include/builders/ie_pooling_layer.hpp create mode 100644 inference-engine/include/builders/ie_power_layer.hpp create mode 100644 inference-engine/include/builders/ie_prelu_layer.hpp create mode 100644 inference-engine/include/builders/ie_prior_box_clustered_layer.hpp create mode 100644 inference-engine/include/builders/ie_prior_box_layer.hpp create mode 100644 inference-engine/include/builders/ie_proposal_layer.hpp create mode 100644 inference-engine/include/builders/ie_psroi_pooling_layer.hpp create mode 100644 inference-engine/include/builders/ie_region_yolo_layer.hpp create mode 100644 inference-engine/include/builders/ie_relu6_layer.hpp create mode 100644 inference-engine/include/builders/ie_relu_layer.hpp create mode 100644 inference-engine/include/builders/ie_reorg_yolo_layer.hpp create mode 100644 inference-engine/include/builders/ie_reshape_layer.hpp create mode 100644 inference-engine/include/builders/ie_roi_pooling_layer.hpp create mode 100644 inference-engine/include/builders/ie_scale_shift_layer.hpp create mode 100644 inference-engine/include/builders/ie_sigmoid_layer.hpp create mode 100644 inference-engine/include/builders/ie_simpler_nms_layer.hpp create mode 100644 inference-engine/include/builders/ie_softmax_layer.hpp create mode 100644 inference-engine/include/builders/ie_split_layer.hpp create mode 100644 inference-engine/include/builders/ie_tanh_layer.hpp create mode 100644 inference-engine/include/builders/ie_tile_layer.hpp create mode 100644 inference-engine/include/details/ie_inetwork_iterator.hpp create mode 100644 inference-engine/include/gna/gna_config.hpp create mode 100644 inference-engine/include/ie_builders.hpp create mode 100644 inference-engine/include/ie_context.hpp create mode 100644 inference-engine/include/ie_inetwork.hpp create mode 100644 inference-engine/include/ie_parameter.hpp create mode 100644 inference-engine/include/ie_unicode.hpp delete mode 100644 inference-engine/samples/calibration_tool/network_serializer.h create mode 100644 inference-engine/samples/common/samples/ocv_common.hpp create mode 100644 inference-engine/samples/lenet_network_graph_builder/CMakeLists.txt create mode 100644 inference-engine/samples/lenet_network_graph_builder/LeNet.bin create mode 100644 inference-engine/samples/lenet_network_graph_builder/README.md create mode 100644 inference-engine/samples/lenet_network_graph_builder/lenet_network_graph_builder.hpp create mode 100644 inference-engine/samples/lenet_network_graph_builder/main.cpp create mode 100644 inference-engine/samples/perfcheck/CMakeLists.txt create mode 100644 inference-engine/samples/perfcheck/README.md create mode 100644 inference-engine/samples/perfcheck/main.cpp create mode 100644 inference-engine/samples/perfcheck/perfcheck.h create mode 100644 inference-engine/samples/speech_sample/CMakeLists.txt create mode 100644 inference-engine/samples/speech_sample/README.md create mode 100644 inference-engine/samples/speech_sample/main.cpp create mode 100644 inference-engine/samples/speech_sample/speech_sample.hpp create mode 100644 inference-engine/src/extension/ext_gather.cpp create mode 100644 inference-engine/src/extension/ext_pad.cpp create mode 100644 inference-engine/src/extension/simple_copy.cpp create mode 100644 inference-engine/src/extension/simple_copy.h create mode 100644 inference-engine/src/gna_plugin/CMakeLists.txt create mode 100644 inference-engine/src/gna_plugin/dnn.cpp create mode 100644 inference-engine/src/gna_plugin/dnn.h create mode 100644 inference-engine/src/gna_plugin/dnn_memory.cpp create mode 100644 inference-engine/src/gna_plugin/dnn_memory.hpp create mode 100644 inference-engine/src/gna_plugin/dnn_traits.hpp create mode 100644 inference-engine/src/gna_plugin/floatmath.cpp create mode 100644 inference-engine/src/gna_plugin/floatmath.h create mode 100644 inference-engine/src/gna_plugin/gna_allocator.hpp create mode 100644 inference-engine/src/gna_plugin/gna_api_wrapper.hpp create mode 100644 inference-engine/src/gna_plugin/gna_device.cpp create mode 100644 inference-engine/src/gna_plugin/gna_device.hpp create mode 100644 inference-engine/src/gna_plugin/gna_executable_network.hpp create mode 100644 inference-engine/src/gna_plugin/gna_helper.cpp create mode 100644 inference-engine/src/gna_plugin/gna_infer_request.hpp create mode 100644 inference-engine/src/gna_plugin/gna_layer_info.hpp create mode 100644 inference-engine/src/gna_plugin/gna_mem_requests.hpp create mode 100644 inference-engine/src/gna_plugin/gna_memory.hpp create mode 100644 inference-engine/src/gna_plugin/gna_memory_state.hpp create mode 100644 inference-engine/src/gna_plugin/gna_model_serial.cpp create mode 100644 inference-engine/src/gna_plugin/gna_model_serial.hpp create mode 100644 inference-engine/src/gna_plugin/gna_plugin.cpp create mode 100644 inference-engine/src/gna_plugin/gna_plugin.hpp create mode 100644 inference-engine/src/gna_plugin/gna_plugin_config.hpp create mode 100644 inference-engine/src/gna_plugin/gna_plugin_entry_points.cpp create mode 100644 inference-engine/src/gna_plugin/gna_plugin_internal.hpp create mode 100644 inference-engine/src/gna_plugin/gna_plugin_log.hpp create mode 100644 inference-engine/src/gna_plugin/gna_plugin_passes.cpp create mode 100644 inference-engine/src/gna_plugin/lstm.cpp create mode 100644 inference-engine/src/gna_plugin/lstm.hpp create mode 100644 inference-engine/src/gna_plugin/polymorh_allocator.hpp create mode 100644 inference-engine/src/gna_plugin/pwl.h create mode 100644 inference-engine/src/gna_plugin/pwl_design.cpp create mode 100644 inference-engine/src/gna_plugin/quantization/layer_quantizer.hpp create mode 100644 inference-engine/src/gna_plugin/quantization/model_quantizer.hpp create mode 100644 inference-engine/src/gna_plugin/quantization/precision_ex.hpp create mode 100644 inference-engine/src/gna_plugin/quantization/quantization.cpp create mode 100644 inference-engine/src/gna_plugin/quantization/quantization.h create mode 100644 inference-engine/src/gna_plugin/quantization/quantized_layer_params.hpp create mode 100644 inference-engine/src/gna_plugin/quantization/scale_factor_calc.hpp create mode 100644 inference-engine/src/gna_plugin/util.cpp create mode 100644 inference-engine/src/gna_plugin/util.h create mode 100644 inference-engine/src/inference_engine/builders/ie_argmax_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_batch_normalization_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_clamp_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_concat_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_const_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_convolution_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_crop_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_ctc_greedy_decoder_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_deconvolution_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_detection_output_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_eltwise_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_elu_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_fully_connected_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_grn_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_input_layer_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_layer_builder.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_layer_fragment.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_memory_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_mvn_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_network_builder.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_norm_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_normalize_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_output_layer_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_permute_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_pooling_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_power_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_prelu_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_prior_box_clustered_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_prior_box_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_proposal_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_psroi_pooling_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_region_yolo_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_relu6_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_relu_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_reorg_yolo_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_reshape_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_roi_pooling_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_scale_shift_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_sigmoid_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_simpler_nms_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_softmax_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_split_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_tanh_layer.cpp create mode 100644 inference-engine/src/inference_engine/builders/ie_tile_layer.cpp create mode 100644 inference-engine/src/inference_engine/cpu_x86_sse42/ie_preprocess_gapi_kernels_sse42.cpp create mode 100644 inference-engine/src/inference_engine/cpu_x86_sse42/ie_preprocess_gapi_kernels_sse42.hpp create mode 100644 inference-engine/src/inference_engine/ie_cnn_layer_builder.h create mode 100644 inference-engine/src/inference_engine/ie_context.cpp rename inference-engine/src/inference_engine/{v2_format_parser.cpp => ie_format_parser.cpp} (74%) rename inference-engine/src/inference_engine/{v2_format_parser.h => ie_format_parser.h} (91%) create mode 100644 inference-engine/src/inference_engine/ie_layer_parsers.cpp rename inference-engine/src/inference_engine/{v2_layer_parsers.h => ie_layer_parsers.h} (81%) create mode 100644 inference-engine/src/inference_engine/ie_layers_prv.h create mode 100644 inference-engine/src/inference_engine/ie_memcpy.cpp create mode 100644 inference-engine/src/inference_engine/ie_memcpy.h create mode 100644 inference-engine/src/inference_engine/ie_network.cpp create mode 100644 inference-engine/src/inference_engine/ie_network.hpp create mode 100644 inference-engine/src/inference_engine/ie_preprocess_gapi.cpp create mode 100644 inference-engine/src/inference_engine/ie_preprocess_gapi.hpp create mode 100644 inference-engine/src/inference_engine/ie_preprocess_gapi_kernels.cpp create mode 100644 inference-engine/src/inference_engine/ie_preprocess_gapi_kernels.hpp create mode 100644 inference-engine/src/inference_engine/ie_preprocess_gapi_kernels_impl.hpp create mode 100644 inference-engine/src/inference_engine/net_pass.cpp create mode 100644 inference-engine/src/inference_engine/net_pass.h rename inference-engine/{samples/calibration_tool => src/inference_engine}/network_serializer.cpp (87%) create mode 100644 inference-engine/src/inference_engine/network_serializer.h create mode 100644 inference-engine/src/inference_engine/shape_infer/built-in/ie_flatten_shape_infer.hpp create mode 100644 inference-engine/src/inference_engine/shape_infer/built-in/ie_gather_shape_infer.hpp create mode 100644 inference-engine/src/inference_engine/shape_infer/built-in/ie_gemm_shape_infer.hpp create mode 100644 inference-engine/src/inference_engine/shape_infer/built-in/ie_pad_shape_infer.hpp delete mode 100644 inference-engine/src/inference_engine/v2_layer_parsers.cpp create mode 100644 inference-engine/src/mkldnn_plugin/mkldnn/omp_manager.cpp delete mode 100644 inference-engine/src/mkldnn_plugin/mkldnn/os/osx/osx_omp_manager.h delete mode 100644 inference-engine/src/mkldnn_plugin/mkldnn/os/win/win_omp_manager.h create mode 100644 inference-engine/src/mkldnn_plugin/mkldnn_graph_dumper.cpp create mode 100644 inference-engine/src/mkldnn_plugin/mkldnn_graph_dumper.h create mode 100644 inference-engine/src/mkldnn_plugin/mkldnn_streams.cpp create mode 100644 inference-engine/src/mkldnn_plugin/mkldnn_streams.h create mode 100644 inference-engine/src/mkldnn_plugin/nodes/mkldnn_gemm_node.cpp create mode 100644 inference-engine/src/mkldnn_plugin/nodes/mkldnn_gemm_node.h create mode 100644 inference-engine/src/mkldnn_plugin/utils/blob_dump.cpp create mode 100644 inference-engine/src/mkldnn_plugin/utils/blob_dump.h create mode 100644 inference-engine/tests/helpers/ir_gen_helper.cpp create mode 100644 inference-engine/tests/helpers/ir_gen_helper.hpp create mode 100644 inference-engine/tests/helpers/single_layer_common.cpp create mode 100644 inference-engine/tests/unit/builders/batch_normalization_layer_test.cpp create mode 100644 inference-engine/tests/unit/builders/builder_test.hpp create mode 100644 inference-engine/tests/unit/builders/input_layer_test.cpp create mode 100644 inference-engine/tests/unit/builders/network_builder_test.cpp create mode 100644 inference-engine/tests/unit/engines/gna/I8_quantisation_test.cpp create mode 100644 inference-engine/tests/unit/engines/gna/configuration_test.cpp create mode 100644 inference-engine/tests/unit/engines/gna/gna_allocator_test.cpp create mode 100644 inference-engine/tests/unit/engines/gna/gna_api_stub.cpp create mode 100644 inference-engine/tests/unit/engines/gna/gna_graph_aot_test.cpp create mode 100644 inference-engine/tests/unit/engines/gna/gna_hardware_precision_test.cpp create mode 100644 inference-engine/tests/unit/engines/gna/gna_matcher.cpp create mode 100644 inference-engine/tests/unit/engines/gna/gna_matcher.hpp create mode 100644 inference-engine/tests/unit/engines/gna/gna_memory_test.cpp create mode 100644 inference-engine/tests/unit/engines/gna/gna_mock_api.hpp create mode 100644 inference-engine/tests/unit/engines/gna/gna_proc_type_test.cpp create mode 100644 inference-engine/tests/unit/engines/gna/gna_pwl_test.cpp create mode 100644 inference-engine/tests/unit/engines/gna/gna_query_state_tests.cpp create mode 100644 inference-engine/tests/unit/engines/gna/i16_quantisation_test.cpp create mode 100644 inference-engine/tests/unit/engines/gna/matchers/conv_matcher.hpp create mode 100644 inference-engine/tests/unit/engines/gna/matchers/copy_matcher.hpp create mode 100644 inference-engine/tests/unit/engines/gna/matchers/diag_matcher.hpp create mode 100644 inference-engine/tests/unit/engines/gna/matchers/nnet_base_matcher.hpp create mode 100644 inference-engine/tests/unit/engines/gna/matchers/pool_matcher.hpp create mode 100644 inference-engine/tests/unit/engines/gna/matchers/precision_matcher.hpp create mode 100644 inference-engine/tests/unit/engines/gna/matchers/pwl_matcher.hpp create mode 100644 inference-engine/tests/unit/engines/gna/matchers/pwl_quantization_metrics_matcher.hpp create mode 100644 inference-engine/tests/unit/engines/gna/test_irs.cpp create mode 100644 inference-engine/tests/unit/engines/gna/test_irs.hpp create mode 100644 inference-engine/tests/unit/engines/mkldnn/dump_test.cpp create mode 100644 inference-engine/tests/unit/engines/mkldnn/dumper_test.cpp create mode 100644 inference-engine/tests/unit/engines/mkldnn/graph/layers/extensions/gather_tests.cpp create mode 100644 inference-engine/tests/unit/engines/mkldnn/graph/layers/internal/graph_gemm_test.cpp create mode 100644 inference-engine/tests/unit/opencv_test_gapi/CMakeLists.txt rename inference-engine/tests/unit/{topology_verification_tests/v1_topology_verification_test.cpp => opencv_test_gapi/common/gapi_core_tests.cpp} (70%) create mode 100644 inference-engine/tests/unit/opencv_test_gapi/common/gapi_core_tests.hpp create mode 100644 inference-engine/tests/unit/opencv_test_gapi/common/gapi_core_tests_inl.hpp create mode 100644 inference-engine/tests/unit/opencv_test_gapi/common/gapi_tests_common.hpp create mode 100644 inference-engine/tests/unit/opencv_test_gapi/cpu/gapi_core_tests_fluid.cpp delete mode 100644 inference-engine/thirdparty/MKL.cmake create mode 100644 inference-engine/thirdparty/fluid/README.md create mode 100644 inference-engine/thirdparty/fluid/check.sh create mode 100644 inference-engine/thirdparty/fluid/checksum.sh create mode 100644 inference-engine/thirdparty/fluid/checksum.txt create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/CMakeLists.txt create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/cmake/DownloadADE.cmake create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/cmake/init.cmake create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/cmake/standalone.cmake create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/doc/00-root.markdown create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/doc/01-background.markdown create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/doc/10-hld-overview.md create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/doc/20-kernel-api.markdown create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/doc/30-implementation.markdown create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/doc/dot/kernel_hierarchy.dot create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/doc/pics/demo.jpg create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/doc/pics/gapi_scheme.png create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/doc/pics/kernel_hierarchy.png create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/core.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/cpu/core.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/cpu/imgproc.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/fluid/core.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/fluid/gfluidbuffer.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/fluid/gfluidkernel.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/fluid/imgproc.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/garg.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/garray.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gcall.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gcommon.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gcompiled.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gcompoundkernel.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gcomputation.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gkernel.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gmat.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gmetaarg.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gproto.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gpu/core.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gpu/ggpukernel.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gpu/imgproc.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gscalar.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gtype_traits.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/gtyped.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/imgproc.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/opencv_includes.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/operators.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/own/assert.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/own/convert.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/own/cvdefs.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/own/exports.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/own/mat.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/own/saturate.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/own/scalar.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/own/types.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/util/any.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/util/compiler_hints.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/util/optional.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/util/throw.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/util/util.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/include/opencv2/gapi/util/variant.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/common/gapi_core_perf_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/common/gapi_core_perf_tests.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/common/gapi_core_perf_tests_inl.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/common/gapi_imgproc_perf_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/common/gapi_imgproc_perf_tests.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/common/gapi_imgproc_perf_tests_inl.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/cpu/gapi_core_perf_tests_cpu.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/cpu/gapi_imgproc_perf_tests_cpu.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/cpu/gapi_imgproc_perf_tests_fluid.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/gpu/gapi_core_perf_tests_gpu.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/gpu/gapi_imgproc_perf_tests_gpu.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/internal/gapi_compiler_perf_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/perf_main.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/perf/perf_precomp.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/samples/api_example.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/samples/api_ref_snippets.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/samples/kernel_api_snippets.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/README.md create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gapi_priv.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gapi_priv.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/garray.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gbackend.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gbackend_priv.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gcall.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gcall_priv.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gcomputation.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gcomputation_priv.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gkernel.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gmat.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gnode.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gnode.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gnode_priv.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gproto.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gproto_priv.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/gscalar.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/kernels_core.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/kernels_imgproc.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/api/operators.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/README.md create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/common/gbackend.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/common/gcompoundbackend.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/common/gcompoundkernel.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/cpu/gcpubackend.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/cpu/gcpubackend.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/cpu/gcpucore.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/cpu/gcpucore.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/cpu/gcpuimgproc.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/cpu/gcpuimgproc.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/cpu/gcpukernel.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/fluid/gfluidbackend.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/fluid/gfluidbackend.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/fluid/gfluidbuffer.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/fluid/gfluidbuffer_priv.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/fluid/gfluidcore.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/fluid/gfluidimgproc.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/fluid/gfluidimgproc_func.dispatch.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/fluid/gfluidimgproc_func.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/fluid/gfluidimgproc_func.simd.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/fluid/gfluidutils.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/gpu/ggpubackend.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/gpu/ggpubackend.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/gpu/ggpucore.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/gpu/ggpucore.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/gpu/ggpuimgproc.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/gpu/ggpuimgproc.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/backends/gpu/ggpukernel.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/README.md create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/gcompiled.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/gcompiled_priv.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/gcompiler.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/gcompiler.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/gislandmodel.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/gislandmodel.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/gmodel.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/gmodel.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/gmodelbuilder.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/gmodelbuilder.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/gobjref.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/passes/dump_dot.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/passes/exec.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/passes/helpers.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/passes/helpers.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/passes/islands.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/passes/kernels.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/passes/meta.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/passes/passes.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/compiler/transactions.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/executor/gexecutor.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/executor/gexecutor.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/logger.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/src/precomp.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/common/gapi_compoundkernel_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/common/gapi_core_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/common/gapi_core_tests.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/common/gapi_core_tests_inl.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/common/gapi_imgproc_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/common/gapi_imgproc_tests.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/common/gapi_imgproc_tests_inl.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/common/gapi_operators_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/common/gapi_operators_tests.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/common/gapi_operators_tests_inl.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/common/gapi_tests_common.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/cpu/gapi_core_tests_cpu.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/cpu/gapi_core_tests_fluid.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/cpu/gapi_imgproc_tests_cpu.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/cpu/gapi_imgproc_tests_fluid.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/cpu/gapi_operators_tests_cpu.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/cpu/gapi_operators_tests_fluid.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_array_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_basic_hetero_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_desc_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_fluid_resize_test.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_fluid_roi_test.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_fluid_test.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_fluid_test_kernels.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_fluid_test_kernels.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_gcompiled_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_gcomputation_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_kernel_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_mock_kernels.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_sample_pipelines.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_scalar_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_smoke_test.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_typed_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gapi_util_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gpu/gapi_core_tests_gpu.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gpu/gapi_imgproc_tests_gpu.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/gpu/gapi_operators_tests_gpu.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/internal/gapi_int_backend_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/internal/gapi_int_executor_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/internal/gapi_int_garg_test.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/internal/gapi_int_gmetaarg_test.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/internal/gapi_int_gmodel_builder_test.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/internal/gapi_int_island_fusion_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/internal/gapi_int_island_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/internal/gapi_int_recompilation_test.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/internal/gapi_int_resolve_kernel_test.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/internal/gapi_int_vectorref_test.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/internal/gapi_transactions_test.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/own/gapi_types_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/own/mat_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/own/scalar_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/test_main.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/test_precomp.hpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/util/any_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/util/optional_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/modules/gapi/test/util/variant_tests.cpp create mode 100644 inference-engine/thirdparty/fluid/revision.txt create mode 100644 inference-engine/thirdparty/fluid/update.sh create mode 100644 inference-engine/thirdparty/mkl-dnn/cmake/Threading.cmake create mode 100644 inference-engine/thirdparty/mkl-dnn/src/common/format_traits.hpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/common/shuffle.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/common/shuffle_pd.hpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/cpu_shuffle_pd.hpp rename inference-engine/thirdparty/mkl-dnn/src/cpu/{gemm_u8s8s32x_convolution.cpp => gemm_x8s8s32x_convolution.cpp} (80%) rename inference-engine/thirdparty/mkl-dnn/src/cpu/{gemm_u8s8s32x_convolution.hpp => gemm_x8s8s32x_convolution.hpp} (90%) delete mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_avx512_core_u8s8s32x_convolution.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_avx512_core_u8s8s32x_deconvolution.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_avx512_core_u8s8s32x_deconvolution.hpp rename inference-engine/thirdparty/mkl-dnn/src/cpu/{jit_avx512_core_u8s8s32x_1x1_conv_kernel.cpp => jit_avx512_core_x8s8s32x_1x1_conv_kernel.cpp} (86%) rename inference-engine/thirdparty/mkl-dnn/src/cpu/{jit_avx512_core_u8s8s32x_1x1_conv_kernel.hpp => jit_avx512_core_x8s8s32x_1x1_conv_kernel.hpp} (87%) rename inference-engine/thirdparty/mkl-dnn/src/cpu/{jit_avx512_core_u8s8s32x_1x1_convolution.cpp => jit_avx512_core_x8s8s32x_1x1_convolution.cpp} (70%) rename inference-engine/thirdparty/mkl-dnn/src/cpu/{jit_avx512_core_u8s8s32x_1x1_convolution.hpp => jit_avx512_core_x8s8s32x_1x1_convolution.hpp} (58%) rename inference-engine/thirdparty/mkl-dnn/src/cpu/{jit_avx512_core_u8s8s32x_conv_kernel.cpp => jit_avx512_core_x8s8s32x_conv_kernel.cpp} (53%) rename inference-engine/thirdparty/mkl-dnn/src/cpu/{jit_avx512_core_u8s8s32x_conv_kernel.hpp => jit_avx512_core_x8s8s32x_conv_kernel.hpp} (82%) create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_avx512_core_x8s8s32x_convolution.cpp rename inference-engine/thirdparty/mkl-dnn/src/cpu/{jit_avx512_core_u8s8s32x_convolution.hpp => jit_avx512_core_x8s8s32x_convolution.hpp} (60%) create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_i8i8_pooling.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_i8i8_pooling.hpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_x8s8s32x_1x1_conv_kernel.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_x8s8s32x_1x1_conv_kernel.hpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_x8s8s32x_1x1_convolution.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_x8s8s32x_1x1_convolution.hpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_x8s8s32x_conv_kernel.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_x8s8s32x_conv_kernel.hpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_x8s8s32x_convolution.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_x8s8s32x_convolution.hpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_x8s8s32x_dw_conv_kernel.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_x8s8s32x_dw_conv_kernel.hpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_x8s8s32x_dw_convolution.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/jit_uni_x8s8s32x_dw_convolution.hpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/ref_shuffle.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/src/cpu/ref_shuffle.hpp create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/bnorm/test_bnorm_regressions_large create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/conv_1d create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/conv_1d_wavenet create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/rnn/rnn_gru create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/rnn/rnn_gru_small create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/rnn/rnn_inference create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/rnn/rnn_small create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/rnn/rnn_training create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/rnn/test_rnn_inference create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/rnn/test_rnn_small create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/rnn/test_rnn_training create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/shuffle/test_shuffle create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/inputs/shuffle/test_shuffle_axis rename inference-engine/thirdparty/mkl-dnn/tests/benchdnn/rnn/{input_rnn.hpp => cfg.cpp} (55%) create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/shuffle/bench_shuffle.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/shuffle/perf_report.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/shuffle/ref_shuffle.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/shuffle/shuffle.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/shuffle/shuffle.hpp create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/benchdnn/shuffle/shuffle_aux.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/gtests/in/gemm_in.h create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/gtests/test_convolution_eltwise_forward_common.hpp delete mode 100644 inference-engine/thirdparty/mkl-dnn/tests/gtests/test_gemm.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/gtests/test_gemm_common.hpp create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/gtests/test_gemm_f32.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/gtests/test_gemm_s8s8s32.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/gtests/test_gemm_s8u8s32.cpp create mode 100644 inference-engine/thirdparty/mkl-dnn/tests/gtests/test_shuffle.cpp create mode 100644 inference-engine/thirdparty/ocv/opencv_hal_sse.hpp delete mode 100644 model-optimizer/ModelOptimizer create mode 100644 model-optimizer/extensions/back/ConvolutionReshaper.py create mode 100644 model-optimizer/extensions/back/PermuteForReshape.py create mode 100644 model-optimizer/extensions/back/TileReshaper.py rename model-optimizer/extensions/front/{tf => }/Pack.py (89%) create mode 100644 model-optimizer/extensions/front/caffe/axpy.py create mode 100644 model-optimizer/extensions/front/caffe/bn.py create mode 100644 model-optimizer/extensions/front/caffe/flatten_ext.py rename model-optimizer/{mo/front/kaldi/extractors/inner_product_ext.py => extensions/front/caffe/shufflechannel_ext.py} (69%) create mode 100644 model-optimizer/extensions/front/caffe/softmax_ext.py create mode 100644 model-optimizer/extensions/front/caffe/split_to_identity.py rename model-optimizer/extensions/front/{onnx => }/instance_normalization.py (100%) create mode 100644 model-optimizer/extensions/front/kaldi/add_reshape_around_convolution.py create mode 100644 model-optimizer/extensions/front/kaldi/add_reshape_around_pooling.py delete mode 100644 model-optimizer/extensions/front/kaldi/add_reshape_for_conv.py delete mode 100644 model-optimizer/extensions/front/kaldi/add_reshape_for_pooling.py create mode 100644 model-optimizer/extensions/front/kaldi/replace_splice_node_pattern.py create mode 100644 model-optimizer/extensions/front/mxnet/RNN_ext.py create mode 100644 model-optimizer/extensions/front/mxnet/block_grad_ext.py create mode 100644 model-optimizer/extensions/front/mxnet/copy_ext.py create mode 100644 model-optimizer/extensions/front/mxnet/dropout_ext.py rename model-optimizer/{mo/front/kaldi/extractors/clamp_ext.py => extensions/front/mxnet/flatten_ext.py} (74%) create mode 100644 model-optimizer/extensions/front/mxnet/instance_norm_ext.py create mode 100644 model-optimizer/extensions/front/mxnet/max_ext.py create mode 100644 model-optimizer/extensions/front/mxnet/maximum_ext.py rename model-optimizer/{mo/front/kaldi/extractors/activation_ext.py => extensions/front/mxnet/minimum_ext.py} (76%) create mode 100644 model-optimizer/extensions/front/mxnet/reshape_ext.py create mode 100644 model-optimizer/extensions/front/mxnet/rnn_param_concat.py create mode 100644 model-optimizer/extensions/front/mxnet/slice_channel_ext.py create mode 100644 model-optimizer/extensions/front/mxnet/stack_ext.py create mode 100644 model-optimizer/extensions/front/mxnet/swapaxes_ext.py create mode 100644 model-optimizer/extensions/front/mxnet/up_sampling_ext.py create mode 100644 model-optimizer/extensions/front/mxnet/zeros_ext.py create mode 100644 model-optimizer/extensions/front/onnx/neg_ext.py create mode 100644 model-optimizer/extensions/front/onnx/reduce_sum_ext.py rename model-optimizer/{mo/front/kaldi/extractors/scale_shift.py => extensions/front/onnx/softmax_ext.py} (69%) rename model-optimizer/{mo/front/kaldi/extractors/split.py => extensions/front/onnx/split_ext.py} (62%) create mode 100644 model-optimizer/extensions/front/tf/BlockLSTM.py create mode 100644 model-optimizer/extensions/front/tf/BlockLSTM_ext.py create mode 100644 model-optimizer/extensions/front/tf/CTCGreedyDecoder.py create mode 100644 model-optimizer/extensions/front/tf/CTCGreedyDecoder_ext.py create mode 100644 model-optimizer/extensions/front/tf/RetinaNetFilteredDetectionsReplacement.py create mode 100644 model-optimizer/extensions/front/tf/assign_elimination.py create mode 100644 model-optimizer/extensions/front/tf/fake_const.py create mode 100644 model-optimizer/extensions/front/tf/gather_ext.py rename model-optimizer/{mo/front/kaldi/extractors/memory_ext.py => extensions/front/tf/max_ext.py} (71%) create mode 100644 model-optimizer/extensions/front/tf/mvn_unrolled.py create mode 100644 model-optimizer/extensions/front/tf/rank_ext.py create mode 100644 model-optimizer/extensions/front/tf/retinanet.json create mode 100644 model-optimizer/extensions/front/tf/reverse_sequence.py create mode 100644 model-optimizer/extensions/front/tf/reverse_v2.py create mode 100644 model-optimizer/extensions/front/tf/softmax_ext.py rename model-optimizer/{mo/front/kaldi/extractors/eltwise_ext.py => extensions/front/tf/sqrt_ext.py} (75%) create mode 100644 model-optimizer/extensions/front/tf/square_ext.py create mode 100644 model-optimizer/extensions/front/tf/stop_gradient_ext.py create mode 100644 model-optimizer/extensions/front/tf/variable_ext.py rename model-optimizer/{mo/front/mxnet/extractors/flatten.py => extensions/middle/AddIsCyclicAttribute.py} (64%) create mode 100644 model-optimizer/extensions/middle/BlockLSTMtoLSTMSequence.py create mode 100644 model-optimizer/extensions/middle/GemmResolver.py create mode 100644 model-optimizer/extensions/middle/NormalizePad.py delete mode 100644 model-optimizer/extensions/middle/PadToPoolingMiddleReplacer.py create mode 100644 model-optimizer/extensions/middle/ShuffleChannel.py create mode 100644 model-optimizer/extensions/middle/SwapAxesMiddleReplacer.py create mode 100644 model-optimizer/extensions/middle/decompose_bi_lstm.py create mode 100644 model-optimizer/extensions/middle/mxnet_lstm_sequence_normalize.py create mode 100644 model-optimizer/extensions/middle/reverse_tensor_iterator.py create mode 100644 model-optimizer/extensions/ops/BlockLSTM.py create mode 100644 model-optimizer/extensions/ops/axpy.py create mode 100644 model-optimizer/extensions/ops/bn.py create mode 100644 model-optimizer/extensions/ops/gather.py create mode 100644 model-optimizer/extensions/ops/identity.py rename model-optimizer/{mo/front/common/partial_infer/up_sampling.py => extensions/ops/pack.py} (57%) create mode 100644 model-optimizer/extensions/ops/rank.py rename model-optimizer/extensions/ops/{take.py => reverse_sequence.py} (53%) rename model-optimizer/{mo/front/tf/extractors/softmax.py => extensions/ops/shufflechannel.py} (60%) rename model-optimizer/{mo/front/caffe/extractors/softmax.py => extensions/ops/splice.py} (66%) create mode 100644 model-optimizer/extensions/ops/stop_gradient.py create mode 100644 model-optimizer/extensions/ops/swapaxes.py delete mode 100644 model-optimizer/mo/front/caffe/extractors/flatten.py delete mode 100644 model-optimizer/mo/front/common/partial_infer/flatten.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/add_shift_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/affine_component_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/affine_component_preconditioned_online_ext.py delete mode 100644 model-optimizer/mo/front/kaldi/extractors/convolution_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/convolutional_1d_component_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/convolutional_component_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/copy_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/fixed_affine_component_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/lstm_projected_streams_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/max_pooling_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/normalize_component_ext.py delete mode 100644 model-optimizer/mo/front/kaldi/extractors/pooling_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/rectified_linear_component_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/rescale_ext.py delete mode 100644 model-optimizer/mo/front/kaldi/extractors/reshape.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/softmax_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/splice_component_ext.py create mode 100644 model-optimizer/mo/front/kaldi/extractors/tanh_component_ext.py delete mode 100644 model-optimizer/mo/front/kaldi/loader.py create mode 100644 model-optimizer/mo/front/kaldi/loader/__init__.py create mode 100644 model-optimizer/mo/front/kaldi/loader/loader.py create mode 100644 model-optimizer/mo/front/kaldi/loader/utils.py delete mode 100644 model-optimizer/mo/front/mxnet/extractors/reshape.py delete mode 100644 model-optimizer/mo/front/mxnet/extractors/up_sampling.py create mode 100644 model-optimizer/mo/ops/flatten.py diff --git a/inference-engine/CMakeLists.txt b/inference-engine/CMakeLists.txt index 2f561d9db346d8..46f821d46c5a4b 100644 --- a/inference-engine/CMakeLists.txt +++ b/inference-engine/CMakeLists.txt @@ -1,6 +1,7 @@ # Copyright (C) 2018 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # + cmake_minimum_required (VERSION 3.3) project(InferenceEngine) @@ -18,7 +19,9 @@ endif() option (OS_FOLDER "create OS dedicated folder in output" OFF) -if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l") + set (ARCH_FOLDER armv7l) +elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") set (ARCH_FOLDER intel64) else() set (ARCH_FOLDER ia32) @@ -46,7 +49,6 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "") debug_message(STATUS "CMAKE_BUILD_TYPE not defined, 'Release' will be used") set(CMAKE_BUILD_TYPE "Release") endif() - message(STATUS "BUILD_CONFIGURATION: ${CMAKE_BUILD_TYPE}") if(COVERAGE) @@ -55,17 +57,38 @@ endif() if (UNIX) SET(LIB_DL ${CMAKE_DL_LIBS}) -else() endif() set (OUTPUT_ROOT ${IE_MAIN_SOURCE_DIR}) -if(NOT(UNIX)) - if (WIN32) - #set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") - #set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") - endif() +include(os_flags) +#resolving dependencies for the project +include (dependencies) + +set(CMAKE_DEBUG_POSTFIX ${IE_DEBUG_POSTFIX}) +set(CMAKE_RELEASE_POSTFIX ${IE_RELEASE_POSTFIX}) + +if (WIN32) + # Support CMake multiconfiguration for Visual Studio build + set(IE_BUILD_POSTFIX $<$:${IE_DEBUG_POSTFIX}>$<$:${IE_RELEASE_POSTFIX}>) + set(IE_BUILD_CONFIGURATION $) +else () + if (${CMAKE_BUILD_TYPE} STREQUAL "Debug" ) + set(IE_BUILD_POSTFIX ${IE_DEBUG_POSTFIX}) + else() + set(IE_BUILD_POSTFIX ${IE_RELEASE_POSTFIX}) + endif() + set(IE_BUILD_CONFIGURATION ${CMAKE_BUILD_TYPE}) +endif() + +add_definitions(-DIE_BUILD_POSTFIX=\"${IE_BUILD_POSTFIX}\") + +if(NOT(UNIX)) + if (WIN32) + #set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") + #set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") + endif() set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}) set (CMAKE_LIBRARY_PATH ${OUTPUT_ROOT}/${BIN_FOLDER}) set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}) @@ -75,20 +98,15 @@ if(NOT(UNIX)) set (LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}) set (LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_DIRECTORY}) # compatibility issue: linux uses LIBRARY_OUTPUT_PATH, windows uses LIBRARY_OUTPUT_DIRECTORY else () - set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${CMAKE_BUILD_TYPE}/lib) - set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${CMAKE_BUILD_TYPE}/lib) - set (CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${CMAKE_BUILD_TYPE}) - set (CMAKE_PDB_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${CMAKE_BUILD_TYPE}) - set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${CMAKE_BUILD_TYPE}) - set (LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${CMAKE_BUILD_TYPE}/lib) + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION}/lib) + set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION}/lib) + set (CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION}) + set (CMAKE_PDB_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION}) + set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION}) + set (LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION}/lib) set (LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_DIRECTORY}/lib) endif() -include(os_flags) - -#resolving rependencies for the project -include (dependencies) - if (APPLE) set(CMAKE_MACOSX_RPATH 1) endif(APPLE) @@ -108,9 +126,8 @@ message (STATUS "IE_MAIN_SOURCE_DIR .................... " ${IE_MAIN_SOURCE_DIR} message (STATUS "CMAKE_GENERATOR ....................... " ${CMAKE_GENERATOR}) message (STATUS "CMAKE_C_COMPILER_ID ................... " ${CMAKE_C_COMPILER_ID}) -if("${CMAKE_BUILD_TYPE}" STREQUAL "Release") - include(sdl) -endif() +include(sdl) + set (CMAKE_POSITION_INDEPENDENT_CODE ON) include (sanitizer) @@ -131,6 +148,10 @@ if (ENABLE_SAMPLES_CORE) set(InferenceEngine_DIR "${CMAKE_BINARY_DIR}") #to be able to link - set (LIB_FOLDER ${IE_MAIN_SOURCE_DIR}/${BIN_FOLDER}/${CMAKE_BUILD_TYPE}/lib) + set (LIB_FOLDER ${IE_MAIN_SOURCE_DIR}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION}/lib) add_subdirectory(samples) endif() + +if (ENABLE_PYTHON) + add_subdirectory(ie_bridges/python) +endif() \ No newline at end of file diff --git a/inference-engine/cmake/FindlibGNA.cmake b/inference-engine/cmake/FindlibGNA.cmake new file mode 100644 index 00000000000000..eeb84800e7d602 --- /dev/null +++ b/inference-engine/cmake/FindlibGNA.cmake @@ -0,0 +1,39 @@ +# Copyright (C) 2018 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 +# + +#module to locate GNA libraries + +cmake_minimum_required(VERSION 2.8) + +if (WIN32) + set(GNA_PLATFORM_DIR win64) + set(GNA_LIB_DIR x64) + set(GNA_LIB gna) +elseif (UNIX) + set(GNA_PLATFORM_DIR linux) + set(GNA_LIB_DIR lib) + set(GNA_LIB gna_api) + set(GNA_KERNEL_LIB gna_kernel) +else () + message(FATAL_ERROR "GNA not supported on this platform, only linux, and windows") +endif () + +find_library(GNA_API_LIBRARY + ${GNA_LIB} + HINTS + ${GNA}/${GNA_PLATFORM_DIR}/${GNA_LIB_DIR}) + +set(libGNA_INCLUDE_DIRS ${GNA}/${GNA_PLATFORM_DIR}/include) +set(libGNA_LIBRARY ${GNA_API_LIBRARY}) + +if (UNIX) + #message("Searching for libgna_kernel.so in: ${GNA}/${GNA_PLATFORM_DIR}/${GNA_KERNEL_LIB}") + find_library(GNA_KERNEL_LIBRARY + ${GNA_KERNEL_LIB} + HINTS + ${GNA}/${GNA_PLATFORM_DIR}/${GNA_LIB_DIR}) +endif () + +set(libGNA_LIBRARIES ${libGNA_LIBRARY} ${GNA_KERNEL_LIBRARY}) diff --git a/inference-engine/cmake/arm.toolchain.cmake b/inference-engine/cmake/arm.toolchain.cmake new file mode 100644 index 00000000000000..2890f1aa86cffe --- /dev/null +++ b/inference-engine/cmake/arm.toolchain.cmake @@ -0,0 +1,10 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR armv7l) + +set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) +set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/inference-engine/cmake/check_features.cmake b/inference-engine/cmake/check_features.cmake index 47c2681ad02f3a..88ff23f59081e2 100644 --- a/inference-engine/cmake/check_features.cmake +++ b/inference-engine/cmake/check_features.cmake @@ -2,11 +2,9 @@ # # SPDX-License-Identifier: Apache-2.0 # + include("features") include("mode") -if (THREADING STREQUAL "OMP") - include("omp") -endif() include("itt") #64 bits platform @@ -28,17 +26,15 @@ else() SET(ENABLE_MKL_DNN OFF) endif() - #apple specific if (APPLE) + set(ENABLE_GNA OFF) set(ENABLE_CLDNN OFF) endif() #minGW specific - under wine no support for downloading file and applying them using git if (WIN32) - enable_omp() - if (MINGW) SET(ENABLE_CLDNN OFF) # dont have mingw dll for linking set(ENABLE_SAMPLES OFF) @@ -61,7 +57,7 @@ if (LINUX) endif () if (NOT ENABLE_MKL_DNN) - set(GEMM OPENBLAS) + set(ENABLE_MKL OFF) endif() #next section set defines to be accesible in c++/c code for certain feature @@ -93,6 +89,10 @@ if (ENABLE_OBJECT_DETECTION_TESTS) add_definitions(-DENABLE_OBJECT_DETECTION_TESTS=1) endif() +if (ENABLE_GNA) + add_definitions(-DENABLE_GNA) +endif() + if (DEVELOPMENT_PLUGIN_MODE) message (STATUS "Enabled development plugin mode") @@ -112,9 +112,5 @@ if (VERBOSE_BUILD) set(CMAKE_VERBOSE_MAKEFILE ON) endif() -if (THREADING STREQUAL "TBB" OR THREADING STREQUAL "SEQ") - set(ENABLE_INTEL_OMP OFF) - message(STATUS "ENABLE_INTEL_OMP should be disabled if THREADING is TBB or Sequential. ENABLE_INTEL_OMP option is " ${ENABLE_INTEL_OMP}) -endif() -print_enabled_features() \ No newline at end of file +print_enabled_features() diff --git a/inference-engine/cmake/config.cmake.in b/inference-engine/cmake/config.cmake.in index a17d6da21d2c47..ed3c8803315ce9 100644 --- a/inference-engine/cmake/config.cmake.in +++ b/inference-engine/cmake/config.cmake.in @@ -1,6 +1,8 @@ # Copyright (C) 2018 Intel Corporation +# # SPDX-License-Identifier: Apache-2.0 # + if(DEFINED IE_MAIN_SOURCE_DIR AND TARGET inference_engine) set(InferenceEngine_INCLUDE_DIRS ${IE_MAIN_SOURCE_DIR}/include) set(InferenceEngine_LIBRARIES inference_engine) diff --git a/inference-engine/cmake/debug.cmake b/inference-engine/cmake/debug.cmake index 4a8edf0bc749fb..8d5ad845006edc 100644 --- a/inference-engine/cmake/debug.cmake +++ b/inference-engine/cmake/debug.cmake @@ -67,3 +67,8 @@ function (log_rpath component lib_path) log_rpath_remove_top(${component} TRUE ${lib_path} TRUE) endfunction() +# Just wrapping of the original message() function to make this macro known during IE build. +# This macro is redefined (with additional checks) within the InferenceEngineConfig.cmake file. +macro(ext_message TRACE_LEVEL) + message(${TRACE_LEVEL} "${ARGN}") +endmacro() \ No newline at end of file diff --git a/inference-engine/cmake/dependencies.cmake b/inference-engine/cmake/dependencies.cmake index dc2d89dfc5cd04..89c2d561453fb0 100644 --- a/inference-engine/cmake/dependencies.cmake +++ b/inference-engine/cmake/dependencies.cmake @@ -62,7 +62,8 @@ endif() debug_message(STATUS "mkl_ml=" ${MKLROOT}) endif () -if (ENABLE_INTEL_OMP) +## Intel OMP package +if (THREADING STREQUAL "OMP") if (WIN32) RESOLVE_DEPENDENCY(OMP ARCHIVE_WIN "iomp.zip" @@ -80,36 +81,29 @@ log_rpath_from_dir(OMP "${OMP}/lib") debug_message(STATUS "intel_omp=" ${OMP}) endif () -#TBB package +## TBB package if (THREADING STREQUAL "TBB") if (WIN32) #TODO: add target_path to be platform specific as well, to avoid following if RESOLVE_DEPENDENCY(TBB - ARCHIVE_WIN "tbb2018_20180618_win.zip" #TODO: windows zip archive created incorrectly using old name for folder + ARCHIVE_WIN "tbb2019_20181010_win.zip" #TODO: windows zip archive created incorrectly using old name for folder TARGET_PATH "${TEMP}/tbb" ENVIRONMENT "TBBROOT" VERSION_REGEX ".*_([a-z]*_([a-z0-9]+\\.)*[0-9]+).*") elseif(LINUX) RESOLVE_DEPENDENCY(TBB - ARCHIVE_LIN "tbb2018_20180618_lin.tgz" + ARCHIVE_LIN "tbb2019_20181010_lin.tgz" TARGET_PATH "${TEMP}/tbb" ENVIRONMENT "TBBROOT") endif() -set(TBB_INCLUDE_DIRS "${TBB}/include") -find_path(TBB_INCLUDE_DIRS tbb/tbb.h) -find_library(TBB_LIBRARIES_RELEASE tbb HINTS "${TBB}/lib") -if (TBB_INCLUDE_DIRS AND TBB_LIBRARIES_RELEASE) - log_rpath_from_dir(TBB "${TBB}/lib") -else() - message("FATAL_ERROR" "TBB is unset") -endif() +log_rpath_from_dir(TBB "${TBB}/lib") debug_message(STATUS "tbb=" ${TBB}) endif () if (ENABLE_OPENCV) if (WIN32) RESOLVE_DEPENDENCY(OPENCV - ARCHIVE_WIN "opencv_4.0.0-0256.zip" + ARCHIVE_WIN "opencv_4.0.1-0353.zip" TARGET_PATH "${TEMP}/opencv_4.0.0" ENVIRONMENT "OpenCV_DIR" VERSION_REGEX ".*_([0-9]+.[0-9]+.[0-9]+).*") @@ -118,14 +112,21 @@ if (WIN32) elseif(LINUX) if (${LINUX_OS_NAME} STREQUAL "Ubuntu 16.04") RESOLVE_DEPENDENCY(OPENCV - ARCHIVE_LIN "opencv_4.0.0-0256_ubuntu16.tgz" + ARCHIVE_LIN "opencv_4.0.0-0305_ubuntu16.tgz" TARGET_PATH "${TEMP}/opencv_4.0.0_ubuntu" ENVIRONMENT "OpenCV_DIR" VERSION_REGEX ".*_([0-9]+.[0-9]+.[0-9]+).*") log_rpath_from_dir(OPENCV "opencv_4.0.0_ubuntu/lib") +elseif (${LINUX_OS_NAME} STREQUAL "Ubuntu 18.04") + RESOLVE_DEPENDENCY(OPENCV + ARCHIVE_LIN "opencv_4.0.0-0305_ubuntu18.tgz" + TARGET_PATH "${TEMP}/opencv_4.0.0_ubuntu18" + ENVIRONMENT "OpenCV_DIR" + VERSION_REGEX ".*_([0-9]+.[0-9]+.[0-9]+).*") + log_rpath_from_dir(OPENCV "opencv_4.0.0_ubuntu/lib") elseif (${LINUX_OS_NAME} STREQUAL "CentOS 7") RESOLVE_DEPENDENCY(OPENCV - ARCHIVE_LIN "opencv_4.0.0-0256_centos.tgz" + ARCHIVE_LIN "opencv_4.0.0-0305_centos.tgz" TARGET_PATH "${TEMP}/opencv_4.0.0_centos" ENVIRONMENT "OpenCV_DIR" VERSION_REGEX ".*_([0-9]+.[0-9]+.[0-9]+).*") @@ -136,6 +137,26 @@ endif() debug_message(STATUS "opencv=" ${OPENCV}) endif() -if (THREADING STREQUAL "OMP") - include(omp) -endif () + +include(ie_parallel) + +if (ENABLE_GNA) + RESOLVE_DEPENDENCY(GNA + ARCHIVE_UNIFIED "gna_20181120.zip" + TARGET_PATH "${TEMP}/gna") +endif() + +configure_file( + "${CMAKE_SOURCE_DIR}/cmake/share/InferenceEngineConfig.cmake.in" + "${CMAKE_BINARY_DIR}/share/InferenceEngineConfig.cmake" + @ONLY) + +configure_file( + "${CMAKE_SOURCE_DIR}/cmake/share/InferenceEngineConfig-version.cmake.in" + "${CMAKE_BINARY_DIR}/share/InferenceEngineConfig-version.cmake" + COPYONLY) + +configure_file( + "${CMAKE_SOURCE_DIR}/cmake/ie_parallel.cmake" + "${CMAKE_BINARY_DIR}/share/ie_parallel.cmake" + COPYONLY) diff --git a/inference-engine/cmake/download_and_extract.cmake b/inference-engine/cmake/download_and_extract.cmake index b030b8f60fcf73..513de811bf6b1b 100644 --- a/inference-engine/cmake/download_and_extract.cmake +++ b/inference-engine/cmake/download_and_extract.cmake @@ -144,7 +144,7 @@ function (CheckOrDownloadAndExtract component RELATIVE_URL archive_name unpacked set (status "ON") set (on_master FALSE) - set (URL "https://download.01.org/openvinotoolkit/2018_R4/dldt/inference_engine/${RELATIVE_URL}") + set (URL "https://download.01.org/openvinotoolkit/2018_R5/dldt/inference_engine/${RELATIVE_URL}") #no message on recursive calls if (${use_alternatives}) diff --git a/inference-engine/cmake/features.cmake b/inference-engine/cmake/features.cmake index 021ba8bb5704c2..d9ff98b04681e7 100644 --- a/inference-engine/cmake/features.cmake +++ b/inference-engine/cmake/features.cmake @@ -11,6 +11,8 @@ include ("options") #backed targets +ie_option (ENABLE_GNA "GNA support for inference engine" ON) + ie_option (ENABLE_MKL_DNN "MKL-DNN plugin for inference engine" ON) ie_option (ENABLE_CLDNN "clDnn based plugin for inference engine" ON) @@ -22,23 +24,45 @@ ie_option (ENABLE_PROFILING_RAW "Raw counters profiling (just values, no start/s # # "MKL-DNN library might use MKL-ML or OpenBLAS for gemm tasks: MKL|OPENBLAS|JIT" -if (NOT GEMM STREQUAL "MKL" AND NOT GEMM STREQUAL "OPENBLAS" AND NOT GEMM STREQUAL "JIT") +if (NOT GEMM STREQUAL "MKL" + AND NOT GEMM STREQUAL "OPENBLAS" + AND NOT GEMM STREQUAL "JIT") set (GEMM "JIT") - message(STATUS "GEMM should be set to MKL|OPENBLAS|JIT. Default option is " ${GEMM}) + message(STATUS "GEMM should be set to MKL, OPENBLAS or JIT. Default option is " ${GEMM}) endif() list (APPEND IE_OPTIONS GEMM) # "MKL-DNN library based on OMP or TBB or Sequential implementation: TBB|OMP|SEQ" -if (NOT THREADING STREQUAL "TBB" AND NOT THREADING STREQUAL "OMP" AND NOT THREADING STREQUAL "SEQ") +if (NOT THREADING STREQUAL "TBB" + AND NOT THREADING STREQUAL "OMP" + AND NOT THREADING STREQUAL "SEQ") set (THREADING "OMP") - message(STATUS "THREADING should be set to TBB|OMP|SEQ. Default option is " ${THREADING}) + message(STATUS "THREADING should be set to TBB, OMP or SEQ. Default option is " ${THREADING}) endif() list (APPEND IE_OPTIONS THREADING) -ie_option (ENABLE_INTEL_OMP "MKL-DNN library based on Intel OMP implementation" ON) +# Enable postfixes for Debug/Release builds +set (IE_DEBUG_POSTFIX_WIN "d") +set (IE_RELEASE_POSTFIX_WIN "") +set (IE_DEBUG_POSTFIX_LIN "") +set (IE_RELEASE_POSTFIX_LIN "") +if (WIN32) + set (IE_DEBUG_POSTFIX ${IE_DEBUG_POSTFIX_WIN}) + set (IE_RELEASE_POSTFIX ${IE_RELEASE_POSTFIX_WIN}) +else() + set (IE_DEBUG_POSTFIX ${IE_DEBUG_POSTFIX_LIN}) + set (IE_RELEASE_POSTFIX ${IE_RELEASE_POSTFIX_LIN}) +endif() +list (APPEND IE_OPTIONS IE_DEBUG_POSTFIX) +list (APPEND IE_OPTIONS IE_RELEASE_POSTFIX) ie_option (ENABLE_TESTS "unit and functional tests" OFF) +ie_option (ENABLE_GAPI_TESTS "unit tests for GAPI kernels" OFF) + +ie_option (GAPI_TEST_PERF "if GAPI unit tests should examine performance" OFF) + + ie_option (ENABLE_SAMPLES_CORE "console samples core library" ON) ie_option (ENABLE_SANITIZER "enable checking memory errors via AddressSanitizer" OFF) @@ -63,6 +87,12 @@ ie_option (OS_FOLDER "create OS dedicated folder in output" OFF) ie_option (ENABLE_PLUGIN_RPATH "enables rpath information to be present in plugins binary, and in corresponding test_applications" ON) +ie_option (ENABLE_AFFINITY_GENERATOR "enables affinity generator build" OFF) + +ie_option (ENABLE_DEBUG_SYMBOLS "generates symbols for debugging" OFF) + +ie_option (ENABLE_PYTHON "enables ie python bridge build" OFF) + #environment variables used #name of environment variable stored path to temp directory" diff --git a/inference-engine/cmake/ie_parallel.cmake b/inference-engine/cmake/ie_parallel.cmake new file mode 100644 index 00000000000000..7c183b58bbf13b --- /dev/null +++ b/inference-engine/cmake/ie_parallel.cmake @@ -0,0 +1,100 @@ +# Copyright (C) 2018 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 +# + +function(set_ie_threading_interface_for TARGET_NAME) + set(IE_THREAD_DEFINE "IE_THREAD_SEQ") + + if (THREADING STREQUAL "TBB") + if (NOT (IE_MAIN_SOURCE_DIR)) + set(incl_path ${IE_EXTERNAL_DIR}/tbb/include) + if (WIN32) + set(lib_rel_path ${IE_LIB_REL_DIR}) + set(lib_dbg_path ${IE_LIB_DBG_DIR}) + else () + set(lib_rel_path ${IE_EXTERNAL_DIR}/tbb/lib) + set(lib_dbg_path ${lib_rel_path}) + endif () + else () + set(incl_path ${TBB}/include) + set(lib_rel_path ${TBB}/lib) + set(lib_dbg_path ${lib_rel_path}) + endif () + + if (NOT TBB_INCLUDE_DIRS OR NOT TBB_LIBRARIES_RELEASE OR NOT TBB_LIBRARIES_DEBUG) + find_path(TBB_INCLUDE_DIRS tbb/tbb.h ${incl_path} NO_DEFAULT_PATH) + find_library(TBB_LIBRARIES_RELEASE tbb ${lib_rel_path} NO_DEFAULT_PATH) + find_library(TBB_LIBRARIES_DEBUG tbb_debug ${lib_dbg_path} NO_DEFAULT_PATH) + ext_message(STATUS "TBB include: ${TBB_INCLUDE_DIRS}") + ext_message(STATUS "TBB Release lib: ${TBB_LIBRARIES_RELEASE}") + ext_message(STATUS "TBB Debug lib: ${TBB_LIBRARIES_DEBUG}") + endif () + + if (NOT TBB_INCLUDE_DIRS OR NOT TBB_LIBRARIES_RELEASE OR NOT TBB_LIBRARIES_DEBUG) + ext_message(WARNING "TBB not found. TBB support will be disabled. ${IE_THREAD_DEFINE} is defined") + else () + set(IE_THREAD_DEFINE "IE_THREAD_TBB") + target_include_directories(${TARGET_NAME} PUBLIC ${TBB_INCLUDE_DIRS}) + if (WIN32) + target_link_libraries(${TARGET_NAME} PUBLIC "-nodefaultlib:vcomp") + target_link_libraries(${TARGET_NAME} PUBLIC "$<$:${TBB_LIBRARIES_DEBUG}>;$<$>:${TBB_LIBRARIES_RELEASE}>") + else() + if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + target_link_libraries(${TARGET_NAME} PUBLIC ${TBB_LIBRARIES_DEBUG}) + else() + target_link_libraries(${TARGET_NAME} PUBLIC ${TBB_LIBRARIES_RELEASE}) + endif () + endif () + endif () + elseif (THREADING STREQUAL "OMP") + if (WIN32) + set(omp_lib_name libiomp5md) + else () + set(omp_lib_name iomp5) + endif () + + if (NOT(IE_MAIN_SOURCE_DIR)) + if (WIN32) + set(lib_rel_path ${IE_LIB_REL_DIR}) + set(lib_dbg_path ${IE_LIB_DBG_DIR}) + else () + set(lib_rel_path ${IE_EXTERNAL_DIR}/omp/lib) + set(lib_dbg_path ${lib_rel_path}) + endif () + else () + set(lib_rel_path ${OMP}/lib) + set(lib_dbg_path ${lib_rel_path}) + endif () + + if (NOT OMP_LIBRARIES_RELEASE OR NOT OMP_LIBRARIES_DEBUG) + find_library(OMP_LIBRARIES_RELEASE ${omp_lib_name} ${lib_rel_path} NO_DEFAULT_PATH) + find_library(OMP_LIBRARIES_DEBUG ${omp_lib_name} ${lib_dbg_path} NO_DEFAULT_PATH) + ext_message(STATUS "OMP Release lib: ${OMP_LIBRARIES_RELEASE}") + ext_message(STATUS "OMP Debug lib: ${OMP_LIBRARIES_DEBUG}") + endif () + + if (NOT OMP_LIBRARIES_RELEASE OR NOT OMP_LIBRARIES_DEBUG) + ext_message(WARNING "Intel OpenMP not found. Intel OpenMP support will be disabled. ${IE_THREAD_DEFINE} is defined") + else () + set(IE_THREAD_DEFINE "IE_THREAD_OMP") + + if (WIN32) + target_compile_options(${TARGET_NAME} PUBLIC ${OpenMP_CXX_FLAGS} /openmp) + target_compile_options(${TARGET_NAME} PUBLIC ${OpenMP_CXX_FLAGS} /Qopenmp) + + target_link_libraries(${TARGET_NAME} PUBLIC "-nodefaultlib:vcomp") + target_link_libraries(${TARGET_NAME} PUBLIC "$<$:${OMP_LIBRARIES_DEBUG}>;$<$>:${OMP_LIBRARIES_RELEASE}>") + else() + target_compile_options(${TARGET_NAME} PUBLIC ${OpenMP_CXX_FLAGS} -fopenmp) + if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + target_link_libraries(${TARGET_NAME} PUBLIC ${OMP_LIBRARIES_DEBUG}) + else() + target_link_libraries(${TARGET_NAME} PUBLIC ${OMP_LIBRARIES_RELEASE}) + endif () + endif () + endif () + endif () + + target_compile_definitions(${TARGET_NAME} PUBLIC -DIE_THREAD=${IE_THREAD_DEFINE}) +endfunction(set_ie_threading_interface_for) diff --git a/inference-engine/cmake/omp.cmake b/inference-engine/cmake/omp.cmake deleted file mode 100644 index ab9886a1dada45..00000000000000 --- a/inference-engine/cmake/omp.cmake +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright (C) 2018 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 -# - -cmake_policy(SET CMP0054 NEW) - -if (APPLE OR WIN32) - - find_path(OMP_INC omp.h) - find_library(OMP_LIB iomp5 - PATHS ${OMP}/lib) - - if (OMP_INC AND OMP_LIB) - set(HAVE_OMP TRUE) - get_filename_component(OMP_LIB_DIR "${OMP_LIB}" PATH) - else() - if (THREADING STREQUAL "OMP") - find_package(OpenMP) - if (NOT OPENMP_FOUND) - message(WARNING "OpenMP not found. OpenMP support will be disabled.") - endif() - endif() - endif() -endif() - - -macro(enable_omp) - if (APPLE) ## MacOS - if (HAVE_OMP) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp=libiomp5") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L${OMP_LIB_DIR}") - else() - message(WARNING "Was trying to enable OMP for some target. However OpenMP was not detected on system.") - endif() - elseif(UNIX) # Linux - add_definitions(-fopenmp) - elseif(WIN32) # Windows - if (THREADING STREQUAL "OMP") - set(OPENMP_FLAGS "/Qopenmp /openmp") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CCXX_FLAGS} ${OPENMP_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CCXX_FLAGS} ${OPENMP_FLAGS}") - endif() - endif() - - if (ENABLE_INTEL_OMP) - if (WIN32) - find_library(intel_omp_lib - libiomp5md - PATHS ${OMP}/lib ${ICCLIB}) - set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /nodefaultlib:vcomp") - set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /nodefaultlib:vcomp") - else() - find_library(intel_omp_lib - iomp5 - PATHS ${OMP}/lib) - endif() - endif() -endmacro(enable_omp) diff --git a/inference-engine/cmake/options.cmake b/inference-engine/cmake/options.cmake index b408bea5393b4c..1f44f8758965e9 100644 --- a/inference-engine/cmake/options.cmake +++ b/inference-engine/cmake/options.cmake @@ -2,8 +2,8 @@ # # SPDX-License-Identifier: Apache-2.0 # - # Usage: ie_option( "description" [IF ]) + function (ie_option variable description value) option(${variable} "${description}" ${value}) list (APPEND IE_OPTIONS "${variable}") diff --git a/inference-engine/cmake/os_flags.cmake b/inference-engine/cmake/os_flags.cmake index 70698476902cd0..cb7c6b1abeedd6 100644 --- a/inference-engine/cmake/os_flags.cmake +++ b/inference-engine/cmake/os_flags.cmake @@ -7,12 +7,33 @@ if (WIN32) set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS _CRT_SECURE_NO_WARNINGS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_SCL_SECURE_NO_WARNINGS") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") #no asynchronous structured exception handling - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE") + + if(ENABLE_DEBUG_SYMBOLS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Zi") + + set(DEBUG_SYMBOLS_LINKER_FLAGS "/DEBUG") + if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release") + # Keep default /OPT values. See /DEBUG reference for details. + set(DEBUG_SYMBOLS_LINKER_FLAGS "${DEBUG_SYMBOLS_LINKER_FLAGS} /OPT:REF /OPT:ICF") + endif() + + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${DEBUG_SYMBOLS_LINKER_FLAGS}") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${DEBUG_SYMBOLS_LINKER_FLAGS}") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${DEBUG_SYMBOLS_LINKER_FLAGS}") + endif() + else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Werror=return-type ") if (APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=unused-command-line-argument") elseif(UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wuninitialized -Winit-self -Wmaybe-uninitialized") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wuninitialized -Winit-self") + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-switch") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wmaybe-uninitialized") + endif() endif() endif() diff --git a/inference-engine/cmake/sanitizer.cmake b/inference-engine/cmake/sanitizer.cmake index 17af7db09df972..cdbe108b771c3d 100644 --- a/inference-engine/cmake/sanitizer.cmake +++ b/inference-engine/cmake/sanitizer.cmake @@ -3,9 +3,18 @@ # SPDX-License-Identifier: Apache-2.0 # +include(CheckCXXCompilerFlag) + if (ENABLE_SANITIZER) - set(CMAKE_CCXX_FLAGS "${CMAKE_CCXX_FLAGS} -fsanitize=address -fuse-ld=gold") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fuse-ld=gold") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") -endif() \ No newline at end of file + set(SANITIZER_COMPILER_FLAGS "-fsanitize=address") + CHECK_CXX_COMPILER_FLAG("-fsanitize-recover=address" SANITIZE_RECOVER_SUPPORTED) + if (SANITIZE_RECOVER_SUPPORTED) + set(SANITIZER_COMPILER_FLAGS "${SANITIZER_COMPILER_FLAGS} -fsanitize-recover=address") + endif() + set(SANITIZER_LINKER_FLAGS "-fsanitize=address -fuse-ld=gold") + + set(CMAKE_CC_FLAGS "${CMAKE_CC_FLAGS} ${SANITIZER_COMPILER_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SANITIZER_COMPILER_FLAGS}") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${SANITIZER_LINKER_FLAGS}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${SANITIZER_LINKER_FLAGS}") +endif() diff --git a/inference-engine/cmake/sdl.cmake b/inference-engine/cmake/sdl.cmake index f5a4fb9f708f51..26618c6e555f8f 100644 --- a/inference-engine/cmake/sdl.cmake +++ b/inference-engine/cmake/sdl.cmake @@ -3,7 +3,7 @@ # SPDX-License-Identifier: Apache-2.0 # -if (UNIX OR APPLE) +if (UNIX OR APPLE AND ${CMAKE_BUILD_TYPE} STREQUAL "Release") set(CMAKE_CCXX_FLAGS "${CMAKE_CCXX_FLAGS} -fPIE -fPIC -Wformat -Wformat-security") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2") @@ -16,21 +16,24 @@ if (UNIX OR APPLE) else() set(CMAKE_CCXX_FLAGS "${CMAKE_CCXX_FLAGS} -fstack-protector-strong") endif() + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s -fvisibility=hidden") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s -fvisibility=hidden") elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") set(CMAKE_CCXX_FLAGS "${CMAKE_CCXX_FLAGS} -fstack-protector-all") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fvisibility=hidden") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fvisibility=hidden") elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -z noexecstack -z relro -z now") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -z noexecstack -z relro -z now") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wl,--strip-all -fvisibility=hidden") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wl,--strip-all -fvisibility=hidden") endif() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CCXX_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CCXX_FLAGS}") - - elseif (WIN32) - elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /sdl") - + if (${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC) + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MP /sdl") + endif() endif() - diff --git a/inference-engine/cmake/share/InferenceEngineConfig-version.cmake b/inference-engine/cmake/share/InferenceEngineConfig-version.cmake.in similarity index 92% rename from inference-engine/cmake/share/InferenceEngineConfig-version.cmake rename to inference-engine/cmake/share/InferenceEngineConfig-version.cmake.in index cedd85015a8236..506fc5403ece33 100644 --- a/inference-engine/cmake/share/InferenceEngineConfig-version.cmake +++ b/inference-engine/cmake/share/InferenceEngineConfig-version.cmake.in @@ -1,7 +1,9 @@ # Copyright (C) 2018 Intel Corporation +# # SPDX-License-Identifier: Apache-2.0 # -set(InferenceEngine_VERSION 1.4.0) + +set(InferenceEngine_VERSION 1.5.0) set(PACKAGE_VERSION ${InferenceEngine_VERSION}) set(PACKAGE_VERSION_EXACT False) diff --git a/inference-engine/cmake/share/InferenceEngineConfig.cmake b/inference-engine/cmake/share/InferenceEngineConfig.cmake.in similarity index 74% rename from inference-engine/cmake/share/InferenceEngineConfig.cmake rename to inference-engine/cmake/share/InferenceEngineConfig.cmake.in index db02cb3669afb8..8f806e9c869c9e 100644 --- a/inference-engine/cmake/share/InferenceEngineConfig.cmake +++ b/inference-engine/cmake/share/InferenceEngineConfig.cmake.in @@ -1,6 +1,8 @@ # Copyright (C) 2018 Intel Corporation +# # SPDX-License-Identifier: Apache-2.0 # +# # FindIE # ------ # @@ -17,6 +19,18 @@ # IE::inference_engine - The Inference Engine library # +macro(ext_message TRACE_LEVEL) + if (${TRACE_LEVEL} STREQUAL FATAL_ERROR) + if(InferenceEngine_FIND_REQUIRED) + message(FATAL_ERROR "${ARGN}") + elseif(NOT InferenceEngine_FIND_QUIETLY) + message(WARNING "${ARGN}") + endif() + return() + elseif(NOT InferenceEngine_FIND_QUIETLY) + message(${TRACE_LEVEL} "${ARGN}") + endif () +endmacro() set(InferenceEngine_FOUND FALSE) @@ -28,13 +42,17 @@ else() if (WIN32) set(_ARCH intel64) else() - if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64") + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l") + set(_ARCH armv7l) + elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64") set(_ARCH intel64) elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i386") set(_ARCH ia32) endif() endif() + set(THREADING "@THREADING@") + # check whether setvars.sh is sourced if(NOT IE_ROOT_DIR AND (DEFINED ENV{InferenceEngine_DIR} OR InferenceEngine_DIR OR DEFINED ENV{INTEL_CVSDK_DIR})) if (EXISTS "${InferenceEngine_DIR}") @@ -57,7 +75,7 @@ else() set(_OS_PATH "") else() if (NOT EXISTS "/etc/lsb-release") - execute_process(COMMAND find /etc/ -maxdepth 1 -type f -name *-release -exec cat {} \; + execute_process(COMMAND find -L /etc/ -maxdepth 1 -type f -name *-release -exec cat {} \; OUTPUT_VARIABLE release_data RESULT_VARIABLE result) set(name_regex "NAME=\"([^ \"\n]*).*\"\n") set(version_regex "VERSION=\"([0-9]+(\\.[0-9]+)?)[^\n]*\"") @@ -75,12 +93,7 @@ else() set(os_name "${os_name} ${CMAKE_MATCH_1}") if (NOT os_name) - if(InferenceEngine_FIND_REQUIRED) - message(FATAL_ERROR "Cannot detect OS via reading /etc/*-release:\n ${release_data}") - elseif(NOT InferenceEngine_FIND_QUIETLY) - message(WARNING "Cannot detect OS via reading /etc/*-release:\n ${release_data}") - endif() - return() + ext_message(FATAL_ERROR "Cannot detect OS via reading /etc/*-release:\n ${release_data}") endif() if (NOT InferenceEngine_FIND_QUIETLY) @@ -91,17 +104,18 @@ else() set(_OS_PATH "ubuntu_14.04/") elseif (${os_name} STREQUAL "Ubuntu 16.04") set(_OS_PATH "ubuntu_16.04/") + elseif (${os_name} STREQUAL "Ubuntu 18.04") + set(_OS_PATH "ubuntu_18.04/") elseif (${os_name} STREQUAL "CentOS 7") set(_OS_PATH "centos_7.4/") elseif (${os_name} STREQUAL "poky 2.0") set(_OS_PATH "ubuntu_16.04/") + elseif (${os_name} STREQUAL "poky 2.5") + set(_OS_PATH "ubuntu_18.04/") + elseif (${os_name} STREQUAL "Raspbian 9") + set(_OS_PATH "raspbian_9/") else() - if(InferenceEngine_FIND_REQUIRED) - message(FATAL_ERROR "${os_name} is not supported. List of supported OS: Ubuntu 14.04, Ubuntu 16.04, CentOS 7") - elseif(NOT InferenceEngine_FIND_QUIETLY) - message(WARNING "${os_name} is not supported. List of supported OS: Ubuntu 14.04, Ubuntu 16.04, CentOS 7") - endif() - return() + ext_message(FATAL_ERROR "${os_name} is not supported. List of supported OS: Ubuntu 14.04, Ubuntu 16.04, Ubuntu 18.04, CentOS 7, poky 2.0, poky 2.5, Raspbian 9") endif() endif() endif() @@ -125,21 +139,31 @@ else() find_path(IE_INCLUDE_DIR inference_engine.hpp "${_IE_ROOT_INCLUDE_DIR}") find_path(IE_SRC_DIR extension "${_IE_ROOT_SRC_DIR}") + set(IE_LIB_DIR "${_IE_ROOT_LIBRARY}") + set(IE_LIB_REL_DIR "${IE_LIB_DIR}/Release") + set(IE_LIB_DBG_DIR "${IE_LIB_DIR}/Debug") + set(IE_EXTERNAL_DIR "${IE_ROOT_DIR}/external") + include(FindPackageHandleStandardArgs) if (WIN32) - find_library(IE_RELEASE_LIBRARY inference_engine "${_IE_ROOT_LIBRARY}/Release") - find_library(IE_DEBUG_LIBRARY inference_engine "${_IE_ROOT_LIBRARY}/Debug") - find_package_handle_standard_args( IE + find_library(IE_RELEASE_LIBRARY inference_engine@IE_RELEASE_POSTFIX_WIN@ "${IE_LIB_REL_DIR}") + find_library(IE_DEBUG_LIBRARY inference_engine@IE_DEBUG_POSTFIX_WIN@ "${IE_LIB_DBG_DIR}") + find_package_handle_standard_args( InferenceEngine + FOUND_VAR INFERENCEENGINE_FOUND REQUIRED_VARS IE_RELEASE_LIBRARY IE_DEBUG_LIBRARY IE_INCLUDE_DIR FAIL_MESSAGE "Inference Engine cannot be found at ${_IE_ROOT_LIBRARY}. Please consult InferenceEgnineConfig.cmake module's help page.") else() - find_library(IE_LIBRARY inference_engine "${_IE_ROOT_LIBRARY}") - find_package_handle_standard_args( IE + find_library(IE_LIBRARY inference_engine@IE_RELEASE_POSTFIX_LIN@ "${IE_LIB_DIR}") + find_package_handle_standard_args( InferenceEngine + FOUND_VAR INFERENCEENGINE_FOUND REQUIRED_VARS IE_LIBRARY IE_INCLUDE_DIR FAIL_MESSAGE "Inference Engine cannot be found at ${_IE_ROOT_LIBRARY}. Please consult InferenceEgnineConfig.cmake module's help page.") endif() - if(IE_FOUND) + if(INFERENCEENGINE_FOUND) + # to keep this line for successful execution in CMake 2.8 + set(InferenceEngine_FOUND TRUE) + add_library(IE::inference_engine SHARED IMPORTED GLOBAL) if (WIN32) @@ -162,10 +186,10 @@ else() set(InferenceEngine_INCLUDE_DIRS ${IE_INCLUDE_DIR}) set(InferenceEngine_LIBRARIES IE::inference_engine) - set(InferenceEngine_FOUND TRUE) + + include("${IE_ROOT_DIR}/share/ie_parallel.cmake") add_subdirectory(${IE_SRC_DIR}/extension EXCLUDE_FROM_ALL ie_cpu_extension) add_library(IE::ie_cpu_extension ALIAS ie_cpu_extension) endif() endif() - diff --git a/inference-engine/ie_bridges/python/CMakeLists.txt b/inference-engine/ie_bridges/python/CMakeLists.txt index 0fed2293b30a47..2ce462bd65a3e9 100644 --- a/inference-engine/ie_bridges/python/CMakeLists.txt +++ b/inference-engine/ie_bridges/python/CMakeLists.txt @@ -1,42 +1,49 @@ -# Copyright (C) 2018 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 -# # Defines the CMake commands/policies -cmake_minimum_required( VERSION 2.8.5 ) +cmake_minimum_required (VERSION 3.3) # Set the project name -project( INFERENCE_ENGINE_DRIVER ) - -option(COPY_IE_LIBS "Copy Inference Engine libs to package directory" ${WIN32}) - -set (IE_DEFAULT_PATH computer_vision_sdk/deployment_tools/inference_engine/share) - -find_package(InferenceEngine REQUIRED PATHS /opt/intel/${IE_DEFAULT_PATH} $ENV{HOME}/intel/${IE_DEFAULT_PATH}) - -# Make the scripts available in the 'cmake' directory available for the -# 'include()' command, 'find_package()' command. -set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR}/cmake ) - -# Include the CMake script UseCython.cmake. This defines add_cython_module(). -# Instruction for use can be found at the top of cmake/UseCython.cmake. -include( UseCython ) - -# With CMake, a clean separation can be made between the source tree and the -# build tree. When all source is compiled, as with pure C/C++, the source is -# no-longer needed in the build tree. However, with pure *.py source, the -# source is processed directly. To handle this, we reproduce the availability -# of the source files in the build tree. -add_custom_target( ReplicatePythonSourceTree ALL ${CMAKE_COMMAND} -P - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ReplicatePythonSourceTree.cmake - ${CMAKE_CURRENT_BINARY_DIR} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) - -add_custom_target( CopyIeLibs ${CMAKE_COMMAND} -P - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyIeLibs.cmake - ${IE_ROOT_DIR}/bin/${_ARCH}/Release ${_IE_ROOT_LIBRARY} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ie_driver ) - -include_directories( IE::inference_engine ) - -# Process the CMakeLists.txt in the 'src' and 'bin' directory. -add_subdirectory( inference_engine ) +project (ie_python_api) +set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR}/cmake) + +if (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l") + set (ARCH armv7l) +elseif ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + set (ARCH intel64) +else() + set (ARCH ia32) +endif() + + +# in case of independent python api build (out of Inference Engine root Cmake) +if (NOT(IE_MAIN_SOURCE_DIR)) + if("${CMAKE_BUILD_TYPE}" STREQUAL "") + message(STATUS "CMAKE_BUILD_TYPE not defined, 'Release' will be used") + set(CMAKE_BUILD_TYPE "Release") + endif() + message(STATUS "BUILD_CONFIGURATION: ${CMAKE_BUILD_TYPE}") + + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/${ARCH}) + if(NOT(WIN32)) + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) + endif() +endif() + +include (UseCython) + +if (PYTHONINTERP_FOUND) + set (PYTHON_VERSION python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}) +else() + message(FATAL_ERROR "Python Interpretator was not found!") +endif() + +if(WIN32) + set (PYTHON_BRIDGE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/$/python_api/${PYTHON_VERSION}/openvino) +else() + set (PYTHON_BRIDGE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/python_api/${PYTHON_VERSION}/openvino) +endif() + +find_package (InferenceEngine REQUIRED) + +set (PYTHON_BRIDGE_SRC_ROOT ${CMAKE_CURRENT_SOURCE_DIR}) +add_subdirectory (src/openvino/inference_engine) +add_subdirectory (src/openvino/inference_engine/dnn_builder) \ No newline at end of file diff --git a/inference-engine/ie_bridges/python/cmake/CopyIeLibs.cmake b/inference-engine/ie_bridges/python/cmake/CopyIeLibs.cmake deleted file mode 100644 index 2e96fcfaffd0df..00000000000000 --- a/inference-engine/ie_bridges/python/cmake/CopyIeLibs.cmake +++ /dev/null @@ -1,10 +0,0 @@ -set(IE_WIN_LIBS ${CMAKE_ARGV3}) -set(IE_LIBS ${CMAKE_ARGV4}) - -if (WIN32) - file( GLOB IE_LIBS "${IE_WIN_LIBS}/*.dll") - file( COPY ${IE_LIBS} DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) -else() - file( GLOB IE_LIBS "${IE_LIBS}/*.so") - file( COPY ${IE_LIBS} DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) -endif() diff --git a/inference-engine/ie_bridges/python/cmake/FindCython.cmake b/inference-engine/ie_bridges/python/cmake/FindCython.cmake index 30e1f035cc66f1..3070950fdbd31f 100644 --- a/inference-engine/ie_bridges/python/cmake/FindCython.cmake +++ b/inference-engine/ie_bridges/python/cmake/FindCython.cmake @@ -1,10 +1,19 @@ -# Find the Cython compiler. +# Copyright (c) 2016 Intel Corporation # -# This code sets the following variables: +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# CYTHON_EXECUTABLE +# http://www.apache.org/licenses/LICENSE-2.0 # -# See also UseCython.cmake +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Following changes were done on top of original file: +# Add CYTHON_EXECUTABLE searching hints at lines 50 and 51 #============================================================================= # Copyright 2011 Kitware, Inc. @@ -21,7 +30,13 @@ # See the License for the specific language governing permissions and # limitations under the License. #============================================================================= - +# Find the Cython compiler. +# +# This code sets the following variables: +# +# CYTHON_EXECUTABLE +# +# See also UseCython.cmake # Use the Cython executable that lives next to the Python executable # if it is a local installation. find_package( PythonInterp ) diff --git a/inference-engine/ie_bridges/python/cmake/ReplicatePythonSourceTree.cmake b/inference-engine/ie_bridges/python/cmake/ReplicatePythonSourceTree.cmake deleted file mode 100644 index 4316d6e3dccdbc..00000000000000 --- a/inference-engine/ie_bridges/python/cmake/ReplicatePythonSourceTree.cmake +++ /dev/null @@ -1,7 +0,0 @@ -# Note: when executed in the build dir, then CMAKE_CURRENT_SOURCE_DIR is the -# build dir. - -file( COPY setup.py inference_engine tests DESTINATION "${CMAKE_ARGV3}" - FILES_MATCHING PATTERN "*.py" ) - -file( COPY requirements.txt DESTINATION "${CMAKE_ARGV3}" ) diff --git a/inference-engine/ie_bridges/python/cmake/UseCython.cmake b/inference-engine/ie_bridges/python/cmake/UseCython.cmake index ee631b7246eebc..1b9a0a2b6f9671 100644 --- a/inference-engine/ie_bridges/python/cmake/UseCython.cmake +++ b/inference-engine/ie_bridges/python/cmake/UseCython.cmake @@ -46,6 +46,23 @@ # # See also FindCython.cmake +# Copyright (c) 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Following changes were done on top of the original file: +# added PRIVATE linking mode for target_link_libraries call at lines 298 and 336 + #============================================================================= # Copyright 2011 Kitware, Inc. # diff --git a/inference-engine/ie_bridges/python/docs/api_overview.md b/inference-engine/ie_bridges/python/docs/api_overview.md index 9d877913097d6d..3a182ecf1d9b35 100644 --- a/inference-engine/ie_bridges/python/docs/api_overview.md +++ b/inference-engine/ie_bridges/python/docs/api_overview.md @@ -35,12 +35,15 @@ This class stores main information about the layer and allow to modify some laye * `name` - Name of the layer * `type`- Layer type * `precision` - Layer base operating precision. Provides getter and setter interfaces. +* `layout` - Returns the layout of shape of the layer. +* `shape` - Return the list of the shape of the layer. +* `parents` - Returns a list, which contains names of layers preceding this layer. +* `children` - Returns a list, which contains names of layers following this layer. * `affinity` - Layer affinity set by user or a default affinity set by the `IEPlugin.set_initial_affinity()` method. The affinity attribute provides getter and setter interfaces, so the layer affinity can be modified directly. - For example: - + For example: ```py ->>> net = IENetwork.from_ir(model=path_to_xml_file, weights=path_to_bin_file) +>>> net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file) >>> plugin = IEPlugin(device="HETERO:FPGA,CPU") >>> plugin.set_config({"TARGET_FALLBACK": "HETERO:FPGA,CPU"}) >>> plugin.set_initial_affinity(net) @@ -82,7 +85,12 @@ layers affinity and output layers. ### Class Constructor -There is no explicit class constructor. Use `from_ir` class method to read the Intermediate Representation (IR) and initialize a correct instance of the `IENetwork` class. +* `__init__(model: str, weights: str)` + + * Parameters: + + * model - Path to `.xml` file of the IR + * weights - Path to `.bin` file of the IR ### Class attributes: @@ -91,7 +99,7 @@ There is no explicit class constructor. Use `from_ir` class method to read the I For example, to get a shape of the input layer: ```py ->>> net = IENetwork.from_ir(model=path_to_xml_file, weights=path_to_bin_file) +>>> net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file) >>> net.inputs {'data': } >>> net.inputs['data'].shape @@ -102,7 +110,7 @@ There is no explicit class constructor. Use `from_ir` class method to read the I For example, to get a shape of the output layer: ```py ->>> net = IENetwork.from_ir(model=path_to_xml_file, weights=path_to_bin_file) +>>> net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file) >>> net.inputs {'prob': } >>> net.outputs['prob'].shape @@ -113,7 +121,7 @@ There is no explicit class constructor. Use `from_ir` class method to read the I network batch size. For example: ```py ->>> net = IENetwork.from_ir(model=path_to_xml_file, weights=path_to_bin_file) +>>> net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file) >>> net.batch_size 1 >>> net.batch_size = 4 @@ -124,20 +132,37 @@ There is no explicit class constructor. Use `from_ir` class method to read the I ``` * `layers` - Return dictionary that maps network layer names to `IENetLayer` - objects containing layer properties. For example, to list all network layers: + objects containing layer properties in topological order. For example, to list all network layers: ```py - >>> net = IENetwork.from_ir(model=path_to_xml_file, weights=path_to_bin_file) + >>> net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file) >>> net.layers {'conv0': ... } ``` + * `stats` - Returns `LayersStatsMap` object containing dictionary that maps network layer names to calibration statistics + represented by `LayerStats` objects. + `LayersStatsMap` class inherited from built-in python `dict` and overrides default `update()`method to allow + to set or modify layers calibration statistics. +```py +>>> net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file) +>>> net.stats.update({ + "conv1_2d" : LayserStats(min=(-25, -1, 0), max=(63, 124, 70)), + "conv2_2d" : LayserStats(min=(-5, -1, 0, 1, -7, 2), max=(63, 124, 70, 174, 99, 106)), + }) +``` +For more details about low precision inference please refer to "Low-Precision 8-bit Integer Inference" +section in Inference Engine Developers Guide documentation. + + ### Class Methods * `from_ir(model: str, weights: str)` +**Note:** The function is deprecated. Please use `IENetwork()` class constructor to create valid instance of `IENetwork` + * Description: The class method serves to read the model from the `.xml` and `.bin` files of the IR. @@ -154,7 +179,7 @@ There is no explicit class constructor. Use `from_ir` class method to read the I * Usage example: ```py ->>> net = IENetwork.from_ir(model=path_to_xml_file, weights=path_to_bin_file) +>>> net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file) >>> net ``` @@ -179,7 +204,7 @@ There is no explicit class constructor. Use `from_ir` class method to read the I * Usage example: ```py ->>> net = IENetwork.from_ir(model=path_to_xml_file, weights=path_to_bin_file) +>>> net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file) >>> net.add_outputs(["conv5_1/dwise', conv2_1/expand'])] >>> net.outputs ['prob', 'conv5_1/dwise', 'conv2_1/expand'] @@ -213,12 +238,44 @@ outputs. * Usage example: ```py ->>> net = IENetwork.from_ir(model=path_to_xml_file, weights=path_to_bin_file) +>>> net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file) >>> input_layer = next(iter(net.inputs)) >>> n, c, h, w = net.inputs[input_layer] >>> net.reshape({input_layer: (n, c, h*2, w*2)}] ``` +* `serialize(path_to_xml, path_to_bin)`: + + * Description: + + The method serializes the network and stores it in files. + + * Parameters: + + * `path_to_xml` - path to a file, where a serialized model will be stored. + * `path_to_bin` - path to a file, where serialized weights will be stored. + + * Return value: + + None + + * Usage example: + +```py +>>> net = IENetwork(model=path_to_model, weights=path_to_weights) +>>> net.serialize(path_to_xml, path_to_bin) +``` +## LayerStats +Layer calibration statistic container +### Class Constructor + +* `__init__(min: tuple = (), max: tuple = ())` + + * Parameters: + + * min - Tuple with per-channel minimum layer activation values + * max - Tuple with per-channel maximum layer activation values + ## InputInfo This class contains the information about the network input layers @@ -283,7 +340,7 @@ This class is the main plugin interface and serves to initialize and configure t * Parameters: - * `network` - A valid IENetwork instance created by `IENetwork.from_ir()` method + * `network` - A valid `IENetwork` instance * `num_requests` - A positive integer value of infer requests to be created. Number of infer requests may be limited by device capabilities. * `config` - A dictionary of plugin configuration keys and their values @@ -295,7 +352,7 @@ This class is the main plugin interface and serves to initialize and configure t * Usage example: ```py ->>> net = IENetwork.from_ir(model=path_to_xml_file, weights=path_to_bin_file) +>>> net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file) >>> plugin = IEPlugin(device="CPU") >>> exec_net = plugin.load(network=net, num_requsts=2) >>> exec_net @@ -396,7 +453,7 @@ There is no explicit class constructor. To make a valid instance of `ExecutableN * Usage example: ```py ->>> net = IENetwork.from_ir(model=path_to_xml_file, weights=path_to_bin_file) +>>> net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file) >>> plugin = IEPlugin(device="CPU") >>> exec_net = plugin.load(network=net, num_requsts=3) >>> exec_net.requests @@ -424,7 +481,7 @@ There is no explicit class constructor. To make a valid instance of `ExecutableN * Usage example: ```py ->>> net = IENetwork.from_ir(model=path_to_xml_file, weights=path_to_bin_file) +>>> net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file) >>> plugin = IEPlugin(device="CPU") >>> exec_net = plugin.load(network=net, num_requsts=2) >>> res = exec_net.infer({'data': img}) @@ -609,3 +666,22 @@ array([4.85416055e-01, 1.70385033e-01, 1.21873841e-01, 1.18894853e-01, ... } ``` + +* `set_batch(size)` + * Description: + Sets new batch size for certain infer request when dynamic batching is enabled in executable network that created this request. + + **Note:** Support of dynamic batch size depends on the target plugin. + + * Parameters: + * `batch` - new batch size to be used by all the following inference calls for this request. + + * Usage example: +```py +>>> plugin.set_config({"DYN_BATCH_ENABLED": "YES"}) +>>> exec_net = plugin.load(network=net) +>>> exec_net.requests[0].set_batch(inputs_count) +``` +Please refer to `dynamic_batch_demo.py` to see the full usage example. + + diff --git a/inference-engine/ie_bridges/python/inference_engine/CMakeLists.txt b/inference-engine/ie_bridges/python/inference_engine/CMakeLists.txt deleted file mode 100644 index 2835e0409224a4..00000000000000 --- a/inference-engine/ie_bridges/python/inference_engine/CMakeLists.txt +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright (C) 2018 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 -# -# If the pyx file is a C++ file, we should specify that here. - -set(CMAKE_INCLUDE_CURRENT_DIR ON) - -if (COPY_IE_LIBS) - if (UNIX) - SET(CMAKE_SKIP_BUILD_RPATH FALSE) - SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) - SET(CMAKE_INSTALL_RPATH "$ORIGIN") - SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) - endif (UNIX) -endif() - -set_source_files_properties( - ie_api_impl_defs.pxd - ie_api_impl.hpp - ie_api_impl.cpp - ie_api.pyx - ie_api.pxd - - PROPERTIES CYTHON_IS_CXX TRUE -) - -cython_add_module( - ie_api - - ie_api_impl_defs.pxd - ie_api_impl.hpp - ie_api_impl.cpp - ie_api.pyx -) - -target_link_libraries(ie_api PRIVATE IE::inference_engine) -set_target_properties(ie_api PROPERTIES CXX_STANDARD 11 LINKER_LANGUAGE CXX) - -#if (NOT UNIX AND ${PYTHON_VERSION_STRING} MATCHES "^1.4") -# set(python_subdir "python2.7") -#else() -# set(python_subdir "python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") -#endif() -# -# -# Copy required build artifacts to structure which will be used in final package -#add_custom_command(TARGET ie_api POST_BUILD -# -# COMMAND ${CMAKE_COMMAND} -E make_directory -# ${CMAKE_SOURCE_DIR}/bin/${python_subdir}/openvino/inference_engine/ -# -# COMMAND ${CMAKE_COMMAND} -E touch -# ${CMAKE_SOURCE_DIR}/bin/${python_subdir}/openvino/__init__.py) -# -#if (${WIN32}) -#add_custom_command(TARGET ie_api POST_BUILD -# COMMAND ${CMAKE_COMMAND} -E copy -# ${CMAKE_CURRENT_BINARY_DIR}/Release/ie_api.pyd ${CMAKE_SOURCE_DIR}/bin/${python_subdir}/openvino/inference_engine/ -# -# COMMAND ${CMAKE_COMMAND} -E copy -# ${CMAKE_CURRENT_BINARY_DIR}/__init__.py ${CMAKE_SOURCE_DIR}/bin/${python_subdir}/openvino/inference_engine/) -#else() -#add_custom_command(TARGET ie_api POST_BUILD -# COMMAND ${CMAKE_COMMAND} -E copy -# ${CMAKE_CURRENT_BINARY_DIR}/ie_api.so ${CMAKE_SOURCE_DIR}/bin/${python_subdir}/openvino/inference_engine/ -# -# COMMAND ${CMAKE_COMMAND} -E copy -# ${CMAKE_CURRENT_BINARY_DIR}/__init__.py ${CMAKE_SOURCE_DIR}/bin/${python_subdir}/openvino/inference_engine/) -#endif() diff --git a/inference-engine/ie_bridges/python/inference_engine/__init__.py b/inference-engine/ie_bridges/python/inference_engine/__init__.py deleted file mode 100644 index 07e2717dcc8f60..00000000000000 --- a/inference-engine/ie_bridges/python/inference_engine/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .ie_api import * -__version__ = get_version() -__all__ = ['IENetwork', "IEPlugin", "IENetReader"] diff --git a/inference-engine/ie_bridges/python/inference_engine/ie_api_impl.hpp b/inference-engine/ie_bridges/python/inference_engine/ie_api_impl.hpp deleted file mode 100644 index f2265243e9bc67..00000000000000 --- a/inference-engine/ie_bridges/python/inference_engine/ie_api_impl.hpp +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright (C) 2018 Intel Corporation -// -// SPDX-License-Identifier: Apache-2.0 -// - -#ifndef INFERENCE_ENGINE_DRIVER_IE_API_IMPL_HPP -#define INFERENCE_ENGINE_DRIVER_IE_API_IMPL_HPP - -#include -#include -#include -#include -#include -#include -#include "ie_extension.h" - - -namespace InferenceEnginePython { -struct IENetLayer { - InferenceEngine::CNNLayerPtr layer_ptr; - std::string name; - std::string type; - std::string precision; - std::string affinity; - std::map params; - void setAffinity(const std::string & target_affinity); - void setParams(const std::map & params_map); - std::map getWeights(); - void setPrecision(std::string precision); -}; -struct InputInfo{ - InferenceEngine::InputInfo actual; - std::vector dims; - std::string precision; - std::string layout; - void setPrecision(std::string precision); - void setLayout(std::string layout); -}; -struct OutputInfo{ - InferenceEngine::DataPtr actual; - std::vector dims; - std::string precision; - std::string layout; - void setPrecision(std::string precision); -}; -struct ProfileInfo { - std::string status; - std::string exec_type; - std::string layer_type; - long long real_time; - long long cpu_time; - unsigned execution_index; -}; -struct IENetwork { - InferenceEngine::CNNNetwork actual; - std::string name; - std::size_t batch_size; - void setBatch(const size_t size); - void addOutputs(const std::vector &out_layers, const std::string &precision); - std::map getLayers(); - std::map getInputs(); - std::map getOutputs(); - void reshape(const std::map> & input_shapes); -}; - -struct IENetReader { - static IENetwork read(std::string const &model, std::string const &weights); - std::vector> getLayers(); -}; - -struct InferRequestWrap { - InferenceEngine::IInferRequest::Ptr request_ptr; - InferenceEngine::BlobMap inputs; - InferenceEngine::BlobMap outputs; - - void infer(); - void infer_async(); - int wait(int64_t timeout); - InferenceEngine::Blob::Ptr &getInputBlob(const std::string &blob_name); - InferenceEngine::Blob::Ptr &getOutputBlob(const std::string &blob_name); - std::vector getInputsList(); - std::vector getOutputsList(); - std::map getPerformanceCounts(); -}; - - -struct IEExecNetwork { - InferenceEngine::IExecutableNetwork::Ptr actual; - std::vector infer_requests; - IEExecNetwork(const std::string &name, size_t num_requests); - - std::string name; - int next_req_index = 0; - bool async; - void infer(); -}; - - -struct IEPlugin { - std::unique_ptr load(InferenceEnginePython::IENetwork &net, - int num_requests, - const std::map &config); - std::string device_name; - std::string version; - void setConfig(const std::map &); - void addCpuExtension(const std::string &extension_path); - void setInitialAffinity(InferenceEnginePython::IENetwork &net); - IEPlugin(const std::string &device, const std::vector &plugin_dirs); - IEPlugin() = default; - std::set queryNetwork(InferenceEnginePython::IENetwork &net); - InferenceEngine::InferenceEnginePluginPtr actual; - -}; - -template -T* get_buffer(InferenceEngine::Blob& blob) { - return blob.buffer().as(); -} - -template -std::unique_ptr make_unique(Args&&... args) -{ - return std::unique_ptr(new T(std::forward(args)...)); -} - -std::string get_version(); -}; // InferenceEnginePython - -#endif //INFERENCE_ENGINE_DRIVER_IE_API_IMPL_HPP diff --git a/inference-engine/ie_bridges/python/sample/benchmark_app/README.md b/inference-engine/ie_bridges/python/sample/benchmark_app/README.md new file mode 100644 index 00000000000000..7a9a5260403f45 --- /dev/null +++ b/inference-engine/ie_bridges/python/sample/benchmark_app/README.md @@ -0,0 +1,81 @@ +# Benchmark Application Demo + +This topic demonstrates how to run the Benchmark Application demo, which performs inference using convolutional networks. + +## How It Works + +> **NOTE:** To achieve benchmark results similar to the official published results, set CPU frequency to 2.9GHz and GPU frequency to 1GHz. + +Upon the start-up, the application reads command-line parameters and loads a network and images to the Inference Engine plugin. The number of infer requests and execution approach depend on a mode defined with the `-api` command-line parameter. + + +### Synchronous API +For synchronous mode, the primary metric is latency. The application creates one infer request and executes the `Infer` method. A number of executions is defined by one of the two values: +* Number of iterations defined with the `-niter` command-line argument +* Predefined duration if `-niter` is skipped. Predefined duration value depends on device. + +During the execution, the application collects two types of metrics: +* Latency for each infer request executed with `Infer` method +* Duration of all executions + +Reported latency value is calculated as mean value of all collected latencies. Reported throughput value is a derivative from reported latency and additionally depends on batch size. + +### Asynchronous API +For asynchronous mode, the primary metric is throughput in frames per second (FPS). The application creates a certain number of infer requests and executes the `StartAsync` method. A number of infer is specified with the `-nireq` command-line parameter. A number of executions is defined by one of the two values: +* Number of iterations defined with the `-niter` command-line argument +* Predefined duration if `-niter` is skipped. Predefined duration value depends on device. + +The infer requests are executed asynchronously. `Wait` method is used to wait for previous execution to complete. The application measures all infer requests executions and reports the throughput metric based on batch size and total execution duration. + +## Running + +Running the application with the `-h` or `--help`' option yields the following usage message: +```python3 benchmark_app.py -h + +benchmark_app [OPTION] +Options: + + -h, --help Print a usage message + -i, --path_to_images "" Required. Path to a folder with images or to image files. + -m, --path_to_model "" Required. Path to an .xml file with a trained model. + -pp "" Path to a plugin folder. + -api, --api_type "" Required. Enable using sync/async API. + -d, --target_device "" Specify a target device to infer on: CPU, GPU, FPGA or MYRIAD. Use "-d HETERO:" format to specify HETERO plugin. The application looks for a suitable plugin for the specified device. + -niter, --number_iterations "" Optional. Number of iterations. If not specified, the number of iterations is calculated depending on a device. + -nireq, --number_infer_requests "" Optional. Number of infer requests (default value is 2). + -l, --path_to_extension "" Required for CPU custom layers. Absolute path to a shared library with the kernels implementations. + Or + -c, --path_to_cldnn_config "" Required for GPU custom kernels. Absolute path to an .xml file with the kernels description. + -b, --batch_size "" Optional. Batch size value. If not specified, the batch size value is determined from IR. + -nthreads, --number_threads "" Number of threads to use for inference on the CPU (including Hetero cases). + -pin {YES,NO}, --infer_threads_pinning {YES,NO} Optional. Enable ("YES" is default value) or disable ("NO")CPU threads pinning for CPU-involved inference. +``` + +Running the application with the empty list of options yields the usage message given above and an error message. + +To run the demo, you can use one-layer public models or one-layer pre-trained and optimized models delivered with the package that support images as input. + +For example, to do inference on an image using a trained network with multiple outputs on CPU, run the following command: + +```python3 benchmark_app.py -i /inputImage.bmp -m /multiple-output.xml -d CPU +``` + +> **NOTE**: Public models should be first converted to the Inference Engine format (\*.xml + \*.bin) using the [Model Optimizer tool](./docs/MO_DG/Deep_Learning_Model_Optimizer_DevGuide.md). + +## Demo Output + +Application output depends on a used API. For synchronous API, the application outputs latency and throughput: +``` +[ INFO ] Start inference synchronously (10 s duration) +[BENCHMARK RESULT] Latency is 15.5520 msec +[BENCHMARK RESULT] Throughput is 1286.0082 FPS +``` + +For asynchronous API, the application outputs only throughput: +``` +[ INFO ] Start inference asynchronously (10 s duration, 8 inference requests in parallel) +[BENCHMARK RESULT] Throughput is 1444.2591 FPS +``` + +## See Also +* [Using Inference Engine Samples](./docs/IE_DG/Samples_Overview.md) diff --git a/inference-engine/ie_bridges/python/sample/benchmark_app/benchmark.py b/inference-engine/ie_bridges/python/sample/benchmark_app/benchmark.py new file mode 100644 index 00000000000000..761b63e63d504a --- /dev/null +++ b/inference-engine/ie_bridges/python/sample/benchmark_app/benchmark.py @@ -0,0 +1,204 @@ +#!/usr/bin/env python +""" + Copyright (c) 2018 Intel Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +""" + +from statistics import median +from openvino.inference_engine import IENetwork, IEPlugin + +from utils.benchmark_utils import * + +def main(args=None): + try: + if args is None: + args = parse_args() + + validate_args(args) + + # --------------------------------- 1. Load Plugin for inference engine --------------------------------- + logging.info("Loading plugin") + plugin = IEPlugin(args.target_device) + + config = dict() + if CPU_DEVICE_NAME in args.target_device: + if args.path_to_extension: + plugin.add_cpu_extension(args.path_to_extension) + # limit threading for CPU portion of inference + if args.number_threads is not None: + config.update({'CPU_THREADS_NUM': str(args.number_threads)}) + # pin threads for CPU portion of inference + config.update({'CPU_BIND_THREAD': args.infer_threads_pinning}) + # for pure CPU execution, more throughput-oriented execution via streams + if args.api_type == 'async' and CPU_DEVICE_NAME in args.target_device: + config.update({'CPU_THROUGHPUT_STREAMS': str(args.number_infer_requests)}) + elif GPU_DEVICE_NAME in args.target_device: + if args.path_to_cldnn_config: + config.update({'CONFIG_FILE': args.path_to_cldnn_config}) + logger.info("GPU extensions is loaded {}".format(args.path_to_cldnn_config)) + elif MYRIAD_DEVICE_NAME in args.target_device: + config.update({'LOG_LEVEL': 'LOG_INFO'}) + config.update({'VPU_LOG_LEVEL': 'LOG_INFO'}) + + plugin.set_config(config) + + logger.info("Device is {}".format(plugin.device)) + logger.info("Plugin version is {}".format(plugin.version)) + + # --------------------- 2. Read IR Generated by ModelOptimizer (.xml and .bin files) --------------------- + logger.info("Loading network files") + + xml_filename = os.path.abspath(args.path_to_model) + head, tail = os.path.splitext(xml_filename) + bin_filename = os.path.abspath(head + BIN_EXTENSION) + + ie_network = IENetwork(xml_filename, bin_filename) + + input_info = ie_network.inputs + + if len(input_info) == 0: + raise AttributeError('No inputs info is provided') + elif len(input_info) != 1: + raise AttributeError("only one input layer network is supported") + + # -------------------------------------- 3. Change network batch_size ------------------------------------- + batch_size = ie_network.batch_size + key = list(input_info.keys()).pop() + precision = input_info[key].precision + + if args.batch_size and args.batch_size != ie_network.batch_size: + # deepcopy input_info + shape = input_info[key].shape + # We support models having only one input layers + if input_info[key].layout != LAYOUT_TYPE: + raise Exception('Unsupported model for batch size changing in automatic mode') + shape[BATCH_SIZE_ELEM] = args.batch_size + ie_network.reshape({key: shape}) + + input_info = ie_network.inputs + + batch_size = args.batch_size + + + logger_message = "Network batch size was changed to: " if args.batch_size is not None else "Network batch size: " + logger_message += " {}, precision: {}".format(batch_size, precision) + logger.info(logger_message) + + # ------------------------------------- 4. Loading model to the plugin ------------------------------------- + logger.info("Loading model to the plugin") + exe_network = plugin.load(ie_network, args.number_infer_requests) + + # ------------------------------------ 5. Performance measurements stuff ----------------------------------- + inputs = get_images(os.path.abspath(args.path_to_images), batch_size) + + if batch_size < len(inputs): + logger.warn("Network batch size {} is less then images count {}" + ", some input files will be ignored".format(batch_size, len(inputs))) + + input_images = {key: fill_blob_with_image(inputs, input_info[key].shape)} + + times = list() + duration = 0 + + if args.number_iterations is None: + duration = get_duration_in_secs(args.target_device) + + if args.api_type == 'sync': + + # warming up - out of scope + exe_network.infer(input_images) + + if args.number_iterations is not None: + logger.info( + "Start inference synchronously ({}) sync inference executions".format(args.number_iterations)) + for iteration in range(args.number_iterations): + sync_infer_request(exe_network, times, input_images) + + else: + logger.info("Start inference synchronously ({} s duration)".format(duration)) + start_time = datetime.now() + current_time = start_time + while (current_time - start_time).total_seconds() < duration: + current_time = sync_infer_request(exe_network, times, input_images) + + times.sort() + latency = median(times) + fps = batch_size / latency + + print("[BENCHMARK RESULT] Latency is {:.4f} msec".format(latency * 1e3)) + print("[BENCHMARK RESULT] Throughput is {:.4f} FPS".format(fps)) + else: + infer_requests = exe_network.requests + + if args.number_iterations is not None: + logger.info("Start inference asynchronously ({}" + " async inference executions, {} " + " inference requests in parallel".format(args.number_iterations, + args.number_infer_requests)) + else: + logger.info("Start inference asynchronously ({} s duration, " + "{} inference requests in parallel)".format(duration, args.number_infer_requests)) + + current_inference = 0 + required_inference_requests_were_executed = False + previous_inference = 1 - args.number_infer_requests + step = 0 + steps_count = args.number_infer_requests - 1 + if args.number_iterations is not None: + steps_count += args.number_iterations + + # warming up - out of scope + infer_requests[0].async_infer(input_images) + infer_requests[0].wait() + + start_time = datetime.now() + while not required_inference_requests_were_executed or step < steps_count or \ + args.number_iterations is None and (datetime.now() - start_time).total_seconds() < duration: + exe_network.start_async(current_inference, input_images) + + if previous_inference >= 0: + status = infer_requests[previous_inference].wait() + if status is not 0: + raise Exception("Infer request not completed successfully") + + current_inference += 1 + if current_inference >= args.number_infer_requests: + current_inference = 0 + required_inference_requests_were_executed = True + + previous_inference += 1 + if previous_inference >= args.number_infer_requests: + previous_inference = 0 + + step += 1 + + # wait the latest inference executions + for not_completed_index in range(args.number_infer_requests): + if infer_requests[not_completed_index].wait(0) != 0: + infer_requests[not_completed_index].wait() + + total_duration = (datetime.now() - start_time).total_seconds() + fps = batch_size * step / total_duration + + print("[BENCHMARK RESULT] Throughput is {:.4f} FPS".format(fps)) + + del exe_network + del plugin + + except Exception as e: + logging.exception(e) + + +if __name__ == "__main__": + main() diff --git a/inference-engine/ie_bridges/python/sample/benchmark_app/utils/benchmark_utils.py b/inference-engine/ie_bridges/python/sample/benchmark_app/utils/benchmark_utils.py new file mode 100644 index 00000000000000..42676141f28722 --- /dev/null +++ b/inference-engine/ie_bridges/python/sample/benchmark_app/utils/benchmark_utils.py @@ -0,0 +1,122 @@ +""" + Copyright (c) 2018 Intel Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +""" + +import logging +import argparse +import os +import cv2 +import numpy as np +import sys + +from glob import glob +from random import choice +from datetime import datetime +from fnmatch import fnmatch + +from . constants import * + +logging.basicConfig(format="[ %(levelname)s ] %(message)s", level=logging.INFO, stream=sys.stdout) +logger = logging.getLogger('BenchmarkApp') + + +def validate_args(args): + if args.number_iterations is not None and args.number_iterations < 0: + raise Exception("Number of iterations should be positive (invalid -niter option value)") + if args.number_infer_requests < 0: + raise Exception("Number of inference requests should be positive (invalid -nireq option value)") + if not fnmatch(args.path_to_model, XML_EXTENSION_PATTERN): + raise Exception('Path {} is not xml file.') + + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument('-i', '--path_to_images', type=str, required=True, help=HELP_MESSAGES['IMAGE_MESSAGE']) + parser.add_argument('-m', '--path_to_model', type=str, required=True, help=HELP_MESSAGES['MODEL_MESSAGE']) + parser.add_argument('-c', '--path_to_cldnn_config', type=str, required=False, + help=HELP_MESSAGES['CUSTOM_GPU_LIBRARY_MESSAGE']) + parser.add_argument('-l', '--path_to_extension', type=str, required=False, default=None, + help=HELP_MESSAGES['CUSTOM_GPU_LIBRARY_MESSAGE']) + parser.add_argument('-api', '--api_type', type=str, required=False, default='async', choices=['sync', 'async'], + help=HELP_MESSAGES['API_MESSAGE']) + parser.add_argument('-d', '--target_device', type=str, required=False, default="CPU", + help=HELP_MESSAGES['TARGET_DEVICE_MESSAGE']) + parser.add_argument('-niter', '--number_iterations', type=int, required=False, default=None, + help=HELP_MESSAGES['ITERATIONS_COUNT_MESSAGE']) + parser.add_argument('-nireq', '--number_infer_requests', type=int, required=False, default=2, + help=HELP_MESSAGES['INFER_REQUESTS_COUNT_MESSAGE']) + parser.add_argument('-nthreads', '--number_threads', type=int, required=False, default=None, + help=HELP_MESSAGES['INFER_NUM_THREADS_MESSAGE']) + parser.add_argument('-b', '--batch_size', type=int, required=False, default=None, + help=HELP_MESSAGES['BATCH_SIZE_MESSAGE']) + parser.add_argument('-pin', '--infer_threads_pinning', type=str, required=False, default='YES', + choices=['YES', 'NO'], help=HELP_MESSAGES['INFER_THREADS_PINNING_MESSAGE']) + return parser.parse_args() + + +def get_images(path_to_images, batch_size): + images = list() + if os.path.isfile(path_to_images): + while len(images) != batch_size: + images.append(path_to_images) + else: + path = os.path.join(path_to_images, '*') + files = glob(path, recursive=True) + for file in files: + file_extension = file.rsplit('.').pop().upper() + if file_extension in IMAGE_EXTENSIONS: + images.append(file) + if len(images) == 0: + raise Exception("No images found in {}".format(path_to_images)) + if len(images) < batch_size: + while len(images) != batch_size: + images.append(choice(images)) + return images + + +def get_duration_in_secs(target_device): + duration = 0 + for device in DEVICE_DURATION_IN_SECS: + if device in target_device: + duration = max(duration, DEVICE_DURATION_IN_SECS[device]) + + if duration == 0: + duration = DEVICE_DURATION_IN_SECS[UNKNOWN_DEVICE_TYPE] + logger.warn("Default duration {} seconds for unknown device {} is used".format(duration, target_device)) + + return duration + + +def fill_blob_with_image(images_path, shape): + images = np.ndarray(shape) + for item in range(shape[0]): + image = cv2.imread(images_path[item]) + + new_im_size = tuple(shape[2:]) + if image.shape[:-1] != new_im_size: + logger.warn("Image {} is resize from ({}) to ({})".format(images_path[item], image.shape[:-1], new_im_size)) + image = cv2.resize(image, new_im_size) + + image = image.transpose((2, 0, 1)) + images[item] = image + return images + + +def sync_infer_request(exe_network, times, images): + iteration_start_time = datetime.now() + exe_network.infer(images) + current_time = datetime.now() + times.append((current_time - iteration_start_time).total_seconds()) + return current_time diff --git a/inference-engine/ie_bridges/python/sample/benchmark_app/utils/constants.py b/inference-engine/ie_bridges/python/sample/benchmark_app/utils/constants.py new file mode 100644 index 00000000000000..f68919e5144a7c --- /dev/null +++ b/inference-engine/ie_bridges/python/sample/benchmark_app/utils/constants.py @@ -0,0 +1,63 @@ +""" + Copyright (c) 2018 Intel Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +""" + +HELP_MESSAGES = { + 'IMAGE_MESSAGE': "Path to a folder with images or to image files.", + 'MULTI_INPUT_MESSAGE': "Path to multi input file containing.", + 'MODEL_MESSAGE': "Path to an .xml file with a trained model.", + 'PLUGIN_PATH_MESSAGE': "Path to a plugin folder.", + 'API_MESSAGE': "Enable using sync/async API. Default value is sync", + 'TARGET_DEVICE_MESSAGE': "Specify a target device to infer on: CPU, GPU, FPGA or MYRIAD. " + "Use \"-d HETERO:\" format to specify HETERO plugin. " + "The application looks for a suitable plugin for the specified device.", + 'ITERATIONS_COUNT_MESSAGE': "Number of iterations. " + "If not specified, the number of iterations is calculated depending on a device.", + 'INFER_REQUESTS_COUNT_MESSAGE': "Number of infer requests (default value is 2).", + 'INFER_NUM_THREADS_MESSAGE': "Number of threads to use for inference on the CPU " + "(including Hetero cases).", + 'CUSTOM_CPU_LIBRARY_MESSAGE': "Required for CPU custom layers. " + "Absolute path to a shared library with the kernels implementations.", + 'CUSTOM_GPU_LIBRARY_MESSAGE': "Required for GPU custom kernels. Absolute path to an .xml file with the kernels description.", + 'BATCH_SIZE_MESSAGE': "Optional. Batch size value. If not specified, the batch size value is determined from IR", + 'INFER_THREADS_PINNING_MESSAGE': "Optional. Enable (\"YES\" is default value) or disable (\"NO\")" + "CPU threads pinning for CPU-involved inference." +} + +DEVICE_DURATION_IN_SECS = { + "CPU": 60, + "GPU": 60, + "VPU": 60, + "MYRIAD": 60, + "FPGA": 120, + "HDDL": 60, + "UNKNOWN": 120 +} + +IMAGE_EXTENSIONS = ['JPEG', 'JPG', 'PNG', 'BMP'] + +MYRIAD_DEVICE_NAME = "MYRIAD" +CPU_DEVICE_NAME = "CPU" +GPU_DEVICE_NAME = "GPU" +UNKNOWN_DEVICE_TYPE = "UNKNOWN" + +BATCH_SIZE_ELEM = 0 + +LAYOUT_TYPE = 'NCHW' + +XML_EXTENSION = ".xml" +BIN_EXTENSION = ".bin" + +XML_EXTENSION_PATTERN = '*' + XML_EXTENSION diff --git a/inference-engine/ie_bridges/python/sample/classification_sample.py b/inference-engine/ie_bridges/python/sample/classification_sample.py index 082a84d331cd4d..f02459f2eb14f7 100644 --- a/inference-engine/ie_bridges/python/sample/classification_sample.py +++ b/inference-engine/ie_bridges/python/sample/classification_sample.py @@ -58,7 +58,7 @@ def main(): plugin.add_cpu_extension(args.cpu_extension) # Read IR log.info("Loading network files:\n\t{}\n\t{}".format(model_xml, model_bin)) - net = IENetwork.from_ir(model=model_xml, weights=model_bin) + net = IENetwork(model=model_xml, weights=model_bin) if plugin.device == "CPU": supported_layers = plugin.get_supported_layers(net) @@ -108,8 +108,8 @@ def main(): log.info("Performance counters:") print("{:<70} {:<15} {:<15} {:<15} {:<10}".format('name', 'layer_type', 'exet_type', 'status', 'real_time, us')) for layer, stats in perf_counts.items(): - print ("{:<70} {:<15} {:<15} {:<15} {:<10}".format(layer, stats['layer_type'], stats['exec_type'], - stats['status'], stats['real_time'])) + print("{:<70} {:<15} {:<15} {:<15} {:<10}".format(layer, stats['layer_type'], stats['exec_type'], + stats['status'], stats['real_time'])) # Processing output blob log.info("Processing output blob") diff --git a/inference-engine/ie_bridges/python/sample/classification_sample_async.py b/inference-engine/ie_bridges/python/sample/classification_sample_async.py index 9cf7d2307f4cfd..ae86555700f078 100644 --- a/inference-engine/ie_bridges/python/sample/classification_sample_async.py +++ b/inference-engine/ie_bridges/python/sample/classification_sample_async.py @@ -58,7 +58,7 @@ def main(): plugin.add_cpu_extension(args.cpu_extension) # Read IR log.info("Loading network files:\n\t{}\n\t{}".format(model_xml, model_bin)) - net = IENetwork.from_ir(model=model_xml, weights=model_bin) + net = IENetwork(model=model_xml, weights=model_bin) if plugin.device == "CPU": supported_layers = plugin.get_supported_layers(net) @@ -106,10 +106,10 @@ def main(): if args.perf_counts: perf_counts = infer_request_handle.get_perf_counts() log.info("Performance counters:") - print ("{:<70} {:<15} {:<15} {:<15} {:<10}".format('name', 'layer_type', 'exet_type', 'status', 'real_time, us')) + print("{:<70} {:<15} {:<15} {:<15} {:<10}".format('name', 'layer_type', 'exet_type', 'status', 'real_time, us')) for layer, stats in perf_counts.items(): - print ("{:<70} {:<15} {:<15} {:<15} {:<10}".format(layer, stats['layer_type'], stats['exec_type'], - stats['status'], stats['real_time'])) + print("{:<70} {:<15} {:<15} {:<15} {:<10}".format(layer, stats['layer_type'], stats['exec_type'], + stats['status'], stats['real_time'])) # Processing output blob log.info("Processing output blob") res = infer_request_handle.outputs[out_blob] diff --git a/inference-engine/ie_bridges/python/sample/greengrass_samples/greengrass_classification_sample.py b/inference-engine/ie_bridges/python/sample/greengrass_samples/greengrass_classification_sample.py index 91563b3be0844e..193c5a5bb22482 100644 --- a/inference-engine/ie_bridges/python/sample/greengrass_samples/greengrass_classification_sample.py +++ b/inference-engine/ie_bridges/python/sample/greengrass_samples/greengrass_classification_sample.py @@ -1,7 +1,7 @@ """ BSD 3-clause "New" or "Revised" license -Copyright (C) 2018 Intel Coporation. +Copyright (C) 2018 Intel Corporation. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -38,7 +38,7 @@ import timeit import datetime import json -from collections import OrderedDict +from collections import OrderedDict from openvino.inference_engine import IENetwork, IEPlugin @@ -82,6 +82,7 @@ PARAM_TOPIC_NAME = os.environ.get("PARAM_TOPIC_NAME", "intel/faas/classification") PARAM_NUM_TOP_RESULTS = int(os.environ.get("PARAM_NUM_TOP_RESULTS", "10")) + def report(res_json, frame): now = datetime.datetime.now() date_prefix = str(now).replace(" ", "_") @@ -89,17 +90,18 @@ def report(res_json, frame): data = json.dumps(res_json) client.publish(topic=PARAM_TOPIC_NAME, payload=data) if enable_kinesis_output: - kinesis_client.put_record(StreamName=kinesis_stream_name, Data=json.dumps(res_json), PartitionKey=kinesis_partition_key) + kinesis_client.put_record(StreamName=kinesis_stream_name, Data=json.dumps(res_json), + PartitionKey=kinesis_partition_key) if enable_s3_jpeg_output: temp_image = os.path.join(PARAM_OUTPUT_DIRECTORY, "inference_result.jpeg") cv2.imwrite(temp_image, frame) with open(temp_image) as file: image_contents = file.read() - s3_client.put_object(Body=image_contents, Bucket=s3_bucket_name, Key=date_prefix + ".jpeg") + s3_client.put_object(Body=image_contents, Bucket=s3_bucket_name, Key=date_prefix + ".jpeg") if enable_local_jpeg_output: cv2.imwrite(os.path.join(PARAM_OUTPUT_DIRECTORY, date_prefix + ".jpeg"), frame) - + def greengrass_classification_sample_run(): client.publish(topic=PARAM_TOPIC_NAME, payload="OpenVINO: Initializing...") model_bin = os.path.splitext(PARAM_MODEL_XML)[0] + ".bin" @@ -109,7 +111,7 @@ def greengrass_classification_sample_run(): if "CPU" in PARAM_DEVICE: plugin.add_cpu_extension(PARAM_CPU_EXTENSION_PATH) # Read IR - net = IENetwork.from_ir(model=PARAM_MODEL_XML, weights=model_bin) + net = IENetwork(model=PARAM_MODEL_XML, weights=model_bin) assert len(net.inputs.keys()) == 1, "Sample supports only single input topologies" assert len(net.outputs) == 1, "Sample supports only single output topologies" input_blob = next(iter(net.inputs)) @@ -126,9 +128,9 @@ def greengrass_classification_sample_run(): res_json = [] labeldata = None if PARAM_LABELMAP_FILE is not None: - with open(PARAM_LABELMAP_FILE) as labelmap_file: + with open(PARAM_LABELMAP_FILE) as labelmap_file: labeldata = json.load(labelmap_file) - + while (cap.isOpened()): ret, frame = cap.read() if not ret: @@ -148,17 +150,17 @@ def greengrass_classification_sample_run(): res_json = OrderedDict() res_json["Candidates"] = OrderedDict() frame_timestamp = datetime.datetime.now() - + for i in top_ind: classlabel = labeldata[str(i)] if labeldata else str(i) res_json["Candidates"][classlabel] = round(res[out_blob][0, i], 2) - + frame_count += 1 # Measure elapsed seconds since the last report seconds_elapsed = timeit.default_timer() - start_time if seconds_elapsed >= reporting_interval: res_json["timestamp"] = frame_timestamp.isoformat() - res_json["frame_id"] = int(frameid) + res_json["frame_id"] = int(frameid) res_json["inference_fps"] = frame_count / inf_seconds start_time = timeit.default_timer() report(res_json, frame) @@ -169,8 +171,10 @@ def greengrass_classification_sample_run(): del exec_net del plugin + greengrass_classification_sample_run() + def function_handler(event, context): client.publish(topic=PARAM_TOPIC_NAME, payload='HANDLER_CALLED!') return diff --git a/inference-engine/ie_bridges/python/sample/greengrass_samples/greengrass_object_detection_sample_ssd.py b/inference-engine/ie_bridges/python/sample/greengrass_samples/greengrass_object_detection_sample_ssd.py index 55c2f0f840bbf5..e6898bee33ce93 100644 --- a/inference-engine/ie_bridges/python/sample/greengrass_samples/greengrass_object_detection_sample_ssd.py +++ b/inference-engine/ie_bridges/python/sample/greengrass_samples/greengrass_object_detection_sample_ssd.py @@ -1,7 +1,7 @@ """ BSD 3-clause "New" or "Revised" license -Copyright (C) 2018 Intel Coporation. +Copyright (C) 2018 Intel Corporation. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -38,7 +38,7 @@ import timeit import datetime import json -from collections import OrderedDict +from collections import OrderedDict from openvino.inference_engine import IENetwork, IEPlugin @@ -81,6 +81,7 @@ PARAM_LABELMAP_FILE = os.environ.get("PARAM_LABELMAP_FILE") PARAM_TOPIC_NAME = os.environ.get("PARAM_TOPIC_NAME", "intel/faas/ssd") + def report(res_json, frame): now = datetime.datetime.now() date_prefix = str(now).replace(" ", "_") @@ -88,17 +89,18 @@ def report(res_json, frame): data = json.dumps(res_json) client.publish(topic=PARAM_TOPIC_NAME, payload=data) if enable_kinesis_output: - kinesis_client.put_record(StreamName=kinesis_stream_name, Data=json.dumps(res_json), PartitionKey=kinesis_partition_key) + kinesis_client.put_record(StreamName=kinesis_stream_name, Data=json.dumps(res_json), + PartitionKey=kinesis_partition_key) if enable_s3_jpeg_output: temp_image = os.path.join(PARAM_OUTPUT_DIRECTORY, "inference_result.jpeg") cv2.imwrite(temp_image, frame) with open(temp_image) as file: image_contents = file.read() - s3_client.put_object(Body=image_contents, Bucket=s3_bucket_name, Key=date_prefix + ".jpeg") + s3_client.put_object(Body=image_contents, Bucket=s3_bucket_name, Key=date_prefix + ".jpeg") if enable_local_jpeg_output: cv2.imwrite(os.path.join(PARAM_OUTPUT_DIRECTORY, date_prefix + ".jpeg"), frame) - + def greengrass_object_detection_sample_ssd_run(): client.publish(topic=PARAM_TOPIC_NAME, payload="OpenVINO: Initializing...") model_bin = os.path.splitext(PARAM_MODEL_XML)[0] + ".bin" @@ -108,7 +110,7 @@ def greengrass_object_detection_sample_ssd_run(): if "CPU" in PARAM_DEVICE: plugin.add_cpu_extension(PARAM_CPU_EXTENSION_PATH) # Read IR - net = IENetwork.from_ir(model=PARAM_MODEL_XML, weights=model_bin) + net = IENetwork(model=PARAM_MODEL_XML, weights=model_bin) assert len(net.inputs.keys()) == 1, "Sample supports only single input topologies" assert len(net.outputs) == 1, "Sample supports only single output topologies" input_blob = next(iter(net.inputs)) @@ -124,9 +126,9 @@ def greengrass_object_detection_sample_ssd_run(): frame_count = 0 labeldata = None if PARAM_LABELMAP_FILE is not None: - with open(PARAM_LABELMAP_FILE) as labelmap_file: + with open(PARAM_LABELMAP_FILE) as labelmap_file: labeldata = json.load(labelmap_file) - + while (cap.isOpened()): ret, frame = cap.read() if not ret: @@ -142,26 +144,27 @@ def greengrass_object_detection_sample_ssd_run(): res = exec_net.infer(inputs={input_blob: in_frame}) inf_seconds += timeit.default_timer() - inf_start_time # Parse detection results of the current request - res_json = OrderedDict() - frame_timestamp = datetime.datetime.now() + res_json = OrderedDict() + frame_timestamp = datetime.datetime.now() object_id = 0 for obj in res[out_blob][0][0]: - if obj[2] > 0.5: - xmin = int(obj[3] * initial_w) - ymin = int(obj[4] * initial_h) - xmax = int(obj[5] * initial_w) - ymax = int(obj[6] * initial_h) - cv2.rectangle(frame, (xmin, ymin), (xmax, ymax), (255, 165, 20), 4) - obj_id = "Object" + str(object_id) - classlabel = labeldata[str(int(obj[1]))] if labeldata else "" - res_json[obj_id] = {"label": int(obj[1]), "class": classlabel, "confidence": round(obj[2], 2), "xmin": round(obj[3], 2), "ymin": round(obj[4], 2), "xmax": round(obj[5], 2), "ymax": round(obj[6], 2)} - object_id += 1 + if obj[2] > 0.5: + xmin = int(obj[3] * initial_w) + ymin = int(obj[4] * initial_h) + xmax = int(obj[5] * initial_w) + ymax = int(obj[6] * initial_h) + cv2.rectangle(frame, (xmin, ymin), (xmax, ymax), (255, 165, 20), 4) + obj_id = "Object" + str(object_id) + classlabel = labeldata[str(int(obj[1]))] if labeldata else "" + res_json[obj_id] = {"label": int(obj[1]), "class": classlabel, "confidence": round(obj[2], 2), "xmin": round( + obj[3], 2), "ymin": round(obj[4], 2), "xmax": round(obj[5], 2), "ymax": round(obj[6], 2)} + object_id += 1 frame_count += 1 # Measure elapsed seconds since the last report seconds_elapsed = timeit.default_timer() - start_time if seconds_elapsed >= reporting_interval: res_json["timestamp"] = frame_timestamp.isoformat() - res_json["frame_id"] = int(frameid) + res_json["frame_id"] = int(frameid) res_json["inference_fps"] = frame_count / inf_seconds start_time = timeit.default_timer() report(res_json, frame) @@ -172,8 +175,10 @@ def greengrass_object_detection_sample_ssd_run(): del exec_net del plugin + greengrass_object_detection_sample_ssd_run() + def function_handler(event, context): client.publish(topic=PARAM_TOPIC_NAME, payload='HANDLER_CALLED!') return diff --git a/inference-engine/ie_bridges/python/sample/jupyter_notebooks/classification_demo/classification_demo.ipynb b/inference-engine/ie_bridges/python/sample/jupyter_notebooks/classification_demo/classification_demo.ipynb new file mode 100644 index 00000000000000..632672f96006b8 --- /dev/null +++ b/inference-engine/ie_bridges/python/sample/jupyter_notebooks/classification_demo/classification_demo.ipynb @@ -0,0 +1,463 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook demonstrates the worklflow of a simple image classification task.\n", + "We will go through all the pipeline steps: downloading the model, generating the Intermediate Representation (IR) using the Model Optimizer, running inference in Python, and parsing and interpretating the output results.\n", + "\n", + "To demonstrate the scenario, we will use the pre-trained SquezeNet V1.1 Caffe\\* model. SqueezeNet is a pretty accurate and at the same time lightweight network. For more information about the model, please visit GitHub page and refer to original SqueezeNet paper.\n", + "\n", + "Follow the steps to perform image classification with the SquezeNet V1.1 model:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**1. Download the model files:** " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "echo \"Downloading deploy.protxt ...\"\n", + "if [ -f deploy.prototxt ]; then \n", + " echo \"deploy.protxt file already exists. Downloading skipped\"\n", + "else\n", + " wget https://raw.githubusercontent.com/DeepScale/SqueezeNet/a47b6f13d30985279789d08053d37013d67d131b/SqueezeNet_v1.1/deploy.prototxt -q\n", + " echo \"Finished!\"\n", + "fi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "! echo \"Downloading squeezenet_v1.1.caffemodel ...\"\n", + "if [ -f squeezenet_v1.1.caffemodel ]; then\n", + " echo \"squeezenet_v1.1.caffemodel file already exists. Download skipped\"\n", + "else\n", + " wget https://github.com/DeepScale/SqueezeNet/raw/a47b6f13d30985279789d08053d37013d67d131b/SqueezeNet_v1.1/squeezenet_v1.1.caffemodel -q\n", + " echo \"Finished!\"\n", + "fi" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Run the following command to see the model files:**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!ls -la" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* `deploy.prototxt` contains the network toplogy description in text format. \n", + "* `squeezenet_v1.1.caffemodel` contains weights for all network layers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**2. Optimize and convert the model from intial Caffe representation to the IR representation, which is required for scoring the model using Inference Engine. To convert and optimize the model, use the Model Optimizer command line tool.**\n", + "\n", + "To locate Model Optimizer scripts, specify the path to the Model Optimizer root directory in the `MO_ROOT` variable in the cell bellow and then run it (If you use the installed OpenVINO™ package, you can find the Model Optimizer in `/deployment_tools/model_optimizer`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "MO_ROOT=/localdisk/repos/model-optimizer-tensorflow/\n", + "echo $MO_ROOT\n", + "python3 $MO_ROOT/mo.py --input_model squeezenet_v1.1.caffemodel --input_proto deploy.prototxt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**3. Now, you have the SqueezeNet model converted to the IR, and you can infer it.**\n", + "\n", + "a. First, import required modules:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from openvino.inference_engine import IENetwork, IEPlugin\n", + "import numpy as np\n", + "import cv2\n", + "import logging as log\n", + "from time import time\n", + "import sys\n", + "import glob\n", + "import os\n", + "from matplotlib import pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "b. Initialize required constants:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Configure logging format\n", + "log.basicConfig(format=\"[ %(levelname)s ] %(message)s\", level=log.INFO, stream=sys.stdout)\n", + "\n", + "# Path to IR model files\n", + "MODEL_XML = \"./squeezenet_v1.1.xml\"\n", + "MODEL_BIN = \"./squeezenet_v1.1.bin\"\n", + "\n", + "# Target device to run inference\n", + "TARGET_DEVICE = \"CPU\"\n", + "\n", + "# Folder with input images for the model\n", + "IMAGES_FOLDER = \"./images\"\n", + "\n", + "# File containing information about classes names \n", + "LABELS_FILE = \"./image_net_synset.txt\"\n", + "\n", + "# Number of top prediction results to parse\n", + "NTOP = 5\n", + "\n", + "# Required batch size - number of images which will be processed in parallel\n", + "BATCH = 4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "c. Create a plugin instance for the specified target device \n", + "d. Read the IR files and create an `IENEtwork` instance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plugin = IEPlugin(TARGET_DEVICE)\n", + "net = IENetwork(model=MODEL_XML, weights=MODEL_BIN)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "e. Set the network batch size to the constatns specified above. \n", + "\n", + "Batch size is an \"amount\" of input data that will be infered in parallel. In this cases it is a number of images, which will be classified in parallel. \n", + "\n", + "You can set the network batch size using one of the following options:\n", + "1. On the IR generation stage, run the Model Optimizer with `-b` command line option. For example, to generate the IR with batch size equal to 4, add `-b 4` to Model Optimizer command line options. By default, it takes the batch size from the original network in framework representation (usually, it is equal to 1, but in this case, the original Caffe model is provided with the batch size equal to 10). \n", + "2. Use Inference Engine after reading IR. We will use this option.\n", + "\n", + "To set the batch size with the Inference Engine:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "log.info(\"Current network batch size is {}, will be changed to {}\".format(net.batch_size, BATCH))\n", + "net.batch_size = BATCH" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "f. After setting batch size, you can get required information about network input layers.\n", + "To preprocess input images, you need to know input layer shape.\n", + "\n", + "`inputs` property of `IENetwork` returns the dicitonary with input layer names and `InputInfo` objects, which contain information about an input layer including its shape.\n", + "\n", + "SqueezeNet is a single-input toplogy, so to get the input layer name and its shape, you can get the first item from the `inputs` dictionary:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "input_layer = next(iter(net.inputs))\n", + "n,c,h,w = net.inputs[input_layer].shape\n", + "layout = net.inputs[input_layer].layout\n", + "log.info(\"Network input layer {} has shape {} and layout {}\".format(input_layer, (n,c,h,w), layout))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So what do the shape and layout mean? \n", + "Layout will helps to interprete the shape dimsesnions meaning. \n", + "\n", + "`NCHW` input layer layout means:\n", + "* the fisrt dimension of an input data is a batch of **N** images processed in parallel \n", + "* the second dimension is a numnber of **C**hannels expected in the input images\n", + "* the third and the forth are a spatial dimensions - **H**eight and **W**idth of an input image\n", + "\n", + "Our shapes means that the network expects four 3-channel images running in parallel with size 227x227." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "g. Read and preprocess input images.\n", + "\n", + "For it, go to `IMAGES_FOLDER`, find all `.bmp` files, and take four images for inference:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "search_pattern = os.path.join(IMAGES_FOLDER, \"*.bmp\")\n", + "images = glob.glob(search_pattern)[:BATCH]\n", + "log.info(\"Input images:\\n {}\".format(\"\\n\".join(images)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now you can read and preprocess the image files and create an array with input blob data.\n", + "\n", + "For preprocessing, you must do the following:\n", + "1. Resize the images to fit the HxW input dimenstions.\n", + "2. Transpose the HWC layout.\n", + "\n", + "Transposing is tricky and not really obvious.\n", + "As you alredy saw above, the network has the `NCHW` layout, so each input image should be in `CHW` format. But by deafult, OpenCV\\* reads images in the `HWC` format. That is why you have to swap the axes using the `numpy.transpose()` function:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "input_data = np.ndarray(shape=(n, c, h, w))\n", + "orig_images = [] # Will be used to show image in notebook\n", + "for i, img in enumerate(images):\n", + " image = cv2.imread(img)\n", + " orig_images.append(image)\n", + " if image.shape[:-1] != (h, w):\n", + " log.warning(\"Image {} is resized from {} to {}\".format(img, image.shape[:-1], (h, w)))\n", + " image = cv2.resize(image, (w, h))\n", + " image = image.transpose((2, 0, 1)) # Change data layout from HWC to CHW\n", + " input_data[i] = image" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "i. Infer the model model to classify input images:\n", + "\n", + "1. Load the `IENetwork` object to the plugin to create `ExectuableNEtwork` object. \n", + "2. Start inference using the `infer()` function specifying dictionary with input layer name and prepared data as an argument for the function. \n", + "3. Measure inference time in miliseconds and calculate throughput metric in frames-per-second (FPS)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "exec_net = plugin.load(net)\n", + "t0 = time()\n", + "res_map = exec_net.infer({input_layer: input_data})\n", + "inf_time = (time() - t0) * 1000 \n", + "fps = BATCH * inf_time \n", + "log.info(\"Inference time: {} ms.\".format(inf_time))\n", + "log.info(\"Throughput: {} fps.\".format(fps))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**4. After the inference, you need to parse and interpretate the inference results.**\n", + "\n", + "First, you need to see the shape of the network output layer. It can be done in similar way as for the inputs, but here you need to call `outputs` property of `IENetwork` object:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "output_layer = next(iter(net.outputs))\n", + "n,c,h,w = net.outputs[output_layer].shape\n", + "layout = net.outputs[output_layer].layout\n", + "log.info(\"Network output layer {} has shape {} and layout {}\".format(output_layer, (n,c,h,w), layout))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is not a common case for classification netowrks to have output layer with *NCHW* layout. Usually, it is just *NC*. However, in this case, the last two dimensions are just a feature of the network and do not have much sense. Ignore them as you will remove them on the final parsing stage. \n", + "\n", + "What are the first and second dimensions of the output layer? \n", + "* The first dimension is a batch. We precoessed four images, and the prediction result for a particular image is stored in the first dimension of the output array. For example, prediction results for the third image is `res[2]` (since numeration starts from 0).\n", + "* The second dimension is an array with normalized probabilities (from 0 to 1) for each class. This network is trained using the ImageNet dataset with 1000 classes. Each `n`-th value in the output data for a certain image represent the probability of the image belonging to the `n`-th class. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To parse the output results:\n", + "\n", + "a. Read the `LABELS_FILE`, which maps the class ID to human-readable class names:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open(LABELS_FILE, 'r') as f:\n", + " labels_map = [x.split(sep=' ', maxsplit=1)[-1].strip() for x in f]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "b. Parse the output array with prediction results. The parsing algorith is the following:\n", + "0. Squeeze the last two \"extra\" dimensions of the output data.\n", + "1. Iterate over all batches.\n", + "2. Sort the probabilities vector descendingly to get `NTOP` classes with the highest probabilities (by default, the `numpy.argsort` sorts the data in the ascending order, but using the array slicing `[::-1]`, you can reverse the data order).\n", + "3. Map the `NTOP` probabilities to the corresponding labeles in `labeles_map`.\n", + "\n", + "For the vizualization, you also need to store top-1 class and probability." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "top1_res = [] # will be used for the visualization\n", + "res = np.squeeze(res_map[output_layer])\n", + "log.info(\"Top {} results: \".format(NTOP))\n", + "for i, probs in enumerate(res):\n", + " top_ind = np.argsort(probs)[-NTOP:][::-1]\n", + " print(\"Image {}\".format(images[i]))\n", + " top1_ind = top_ind[0]\n", + " top1_res.append((labels_map[top1_ind], probs[top1_ind]))\n", + " for id in top_ind:\n", + " print(\"label: {} probability: {:.2f}% \".format(labels_map[id], probs[id] * 100))\n", + " print(\"\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The code above prints the results as plain text. \n", + "You can also use OpenCV\\* to visualize the results using the `orig_images` and `top1_res` variables, which you created during images reading and results parsing:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.clf()\n", + "for i, img in enumerate(orig_images):\n", + " label_str = \"{}\".format(top1_res[i][0].split(',')[0])\n", + " prob_str = \"{:.2f}%\".format(top1_res[i][1])\n", + " cv2.putText(img, label_str, (5, 15), cv2.FONT_HERSHEY_COMPLEX, 0.6, (220,100,10), 1)\n", + " cv2.putText(img, prob_str, (5, 35), cv2.FONT_HERSHEY_COMPLEX, 0.6, (220,100,10), 1)\n", + " plt.figure()\n", + " plt.axis(\"off\")\n", + " \n", + " # We have to convert colors, because matplotlib expects an image in RGB color format \n", + " # but by default, the OpenCV read images in BRG format\n", + " im_to_show = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n", + " plt.imshow(im_to_show)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/inference-engine/ie_bridges/python/sample/jupyter_notebooks/classification_demo/image_net_synset.txt b/inference-engine/ie_bridges/python/sample/jupyter_notebooks/classification_demo/image_net_synset.txt new file mode 100644 index 00000000000000..a9e8c7f50d144e --- /dev/null +++ b/inference-engine/ie_bridges/python/sample/jupyter_notebooks/classification_demo/image_net_synset.txt @@ -0,0 +1,1000 @@ +n01440764 tench, Tinca tinca +n01443537 goldfish, Carassius auratus +n01484850 great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias +n01491361 tiger shark, Galeocerdo cuvieri +n01494475 hammerhead, hammerhead shark +n01496331 electric ray, crampfish, numbfish, torpedo +n01498041 stingray +n01514668 cock +n01514859 hen +n01518878 ostrich, Struthio camelus +n01530575 brambling, Fringilla montifringilla +n01531178 goldfinch, Carduelis carduelis +n01532829 house finch, linnet, Carpodacus mexicanus +n01534433 junco, snowbird +n01537544 indigo bunting, indigo finch, indigo bird, Passerina cyanea +n01558993 robin, American robin, Turdus migratorius +n01560419 bulbul +n01580077 jay +n01582220 magpie +n01592084 chickadee +n01601694 water ouzel, dipper +n01608432 kite +n01614925 bald eagle, American eagle, Haliaeetus leucocephalus +n01616318 vulture +n01622779 great grey owl, great gray owl, Strix nebulosa +n01629819 European fire salamander, Salamandra salamandra +n01630670 common newt, Triturus vulgaris +n01631663 eft +n01632458 spotted salamander, Ambystoma maculatum +n01632777 axolotl, mud puppy, Ambystoma mexicanum +n01641577 bullfrog, Rana catesbeiana +n01644373 tree frog, tree-frog +n01644900 tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui +n01664065 loggerhead, loggerhead turtle, Caretta caretta +n01665541 leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea +n01667114 mud turtle +n01667778 terrapin +n01669191 box turtle, box tortoise +n01675722 banded gecko +n01677366 common iguana, iguana, Iguana iguana +n01682714 American chameleon, anole, Anolis carolinensis +n01685808 whiptail, whiptail lizard +n01687978 agama +n01688243 frilled lizard, Chlamydosaurus kingi +n01689811 alligator lizard +n01692333 Gila monster, Heloderma suspectum +n01693334 green lizard, Lacerta viridis +n01694178 African chameleon, Chamaeleo chamaeleon +n01695060 Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis +n01697457 African crocodile, Nile crocodile, Crocodylus niloticus +n01698640 American alligator, Alligator mississipiensis +n01704323 triceratops +n01728572 thunder snake, worm snake, Carphophis amoenus +n01728920 ringneck snake, ring-necked snake, ring snake +n01729322 hognose snake, puff adder, sand viper +n01729977 green snake, grass snake +n01734418 king snake, kingsnake +n01735189 garter snake, grass snake +n01737021 water snake +n01739381 vine snake +n01740131 night snake, Hypsiglena torquata +n01742172 boa constrictor, Constrictor constrictor +n01744401 rock python, rock snake, Python sebae +n01748264 Indian cobra, Naja naja +n01749939 green mamba +n01751748 sea snake +n01753488 horned viper, cerastes, sand viper, horned asp, Cerastes cornutus +n01755581 diamondback, diamondback rattlesnake, Crotalus adamanteus +n01756291 sidewinder, horned rattlesnake, Crotalus cerastes +n01768244 trilobite +n01770081 harvestman, daddy longlegs, Phalangium opilio +n01770393 scorpion +n01773157 black and gold garden spider, Argiope aurantia +n01773549 barn spider, Araneus cavaticus +n01773797 garden spider, Aranea diademata +n01774384 black widow, Latrodectus mactans +n01774750 tarantula +n01775062 wolf spider, hunting spider +n01776313 tick +n01784675 centipede +n01795545 black grouse +n01796340 ptarmigan +n01797886 ruffed grouse, partridge, Bonasa umbellus +n01798484 prairie chicken, prairie grouse, prairie fowl +n01806143 peacock +n01806567 quail +n01807496 partridge +n01817953 African grey, African gray, Psittacus erithacus +n01818515 macaw +n01819313 sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita +n01820546 lorikeet +n01824575 coucal +n01828970 bee eater +n01829413 hornbill +n01833805 hummingbird +n01843065 jacamar +n01843383 toucan +n01847000 drake +n01855032 red-breasted merganser, Mergus serrator +n01855672 goose +n01860187 black swan, Cygnus atratus +n01871265 tusker +n01872401 echidna, spiny anteater, anteater +n01873310 platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus +n01877812 wallaby, brush kangaroo +n01882714 koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus +n01883070 wombat +n01910747 jellyfish +n01914609 sea anemone, anemone +n01917289 brain coral +n01924916 flatworm, platyhelminth +n01930112 nematode, nematode worm, roundworm +n01943899 conch +n01944390 snail +n01945685 slug +n01950731 sea slug, nudibranch +n01955084 chiton, coat-of-mail shell, sea cradle, polyplacophore +n01968897 chambered nautilus, pearly nautilus, nautilus +n01978287 Dungeness crab, Cancer magister +n01978455 rock crab, Cancer irroratus +n01980166 fiddler crab +n01981276 king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica +n01983481 American lobster, Northern lobster, Maine lobster, Homarus americanus +n01984695 spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish +n01985128 crayfish, crawfish, crawdad, crawdaddy +n01986214 hermit crab +n01990800 isopod +n02002556 white stork, Ciconia ciconia +n02002724 black stork, Ciconia nigra +n02006656 spoonbill +n02007558 flamingo +n02009229 little blue heron, Egretta caerulea +n02009912 American egret, great white heron, Egretta albus +n02011460 bittern +n02012849 crane +n02013706 limpkin, Aramus pictus +n02017213 European gallinule, Porphyrio porphyrio +n02018207 American coot, marsh hen, mud hen, water hen, Fulica americana +n02018795 bustard +n02025239 ruddy turnstone, Arenaria interpres +n02027492 red-backed sandpiper, dunlin, Erolia alpina +n02028035 redshank, Tringa totanus +n02033041 dowitcher +n02037110 oystercatcher, oyster catcher +n02051845 pelican +n02056570 king penguin, Aptenodytes patagonica +n02058221 albatross, mollymawk +n02066245 grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus +n02071294 killer whale, killer, orca, grampus, sea wolf, Orcinus orca +n02074367 dugong, Dugong dugon +n02077923 sea lion +n02085620 Chihuahua +n02085782 Japanese spaniel +n02085936 Maltese dog, Maltese terrier, Maltese +n02086079 Pekinese, Pekingese, Peke +n02086240 Shih-Tzu +n02086646 Blenheim spaniel +n02086910 papillon +n02087046 toy terrier +n02087394 Rhodesian ridgeback +n02088094 Afghan hound, Afghan +n02088238 basset, basset hound +n02088364 beagle +n02088466 bloodhound, sleuthhound +n02088632 bluetick +n02089078 black-and-tan coonhound +n02089867 Walker hound, Walker foxhound +n02089973 English foxhound +n02090379 redbone +n02090622 borzoi, Russian wolfhound +n02090721 Irish wolfhound +n02091032 Italian greyhound +n02091134 whippet +n02091244 Ibizan hound, Ibizan Podenco +n02091467 Norwegian elkhound, elkhound +n02091635 otterhound, otter hound +n02091831 Saluki, gazelle hound +n02092002 Scottish deerhound, deerhound +n02092339 Weimaraner +n02093256 Staffordshire bullterrier, Staffordshire bull terrier +n02093428 American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier +n02093647 Bedlington terrier +n02093754 Border terrier +n02093859 Kerry blue terrier +n02093991 Irish terrier +n02094114 Norfolk terrier +n02094258 Norwich terrier +n02094433 Yorkshire terrier +n02095314 wire-haired fox terrier +n02095570 Lakeland terrier +n02095889 Sealyham terrier, Sealyham +n02096051 Airedale, Airedale terrier +n02096177 cairn, cairn terrier +n02096294 Australian terrier +n02096437 Dandie Dinmont, Dandie Dinmont terrier +n02096585 Boston bull, Boston terrier +n02097047 miniature schnauzer +n02097130 giant schnauzer +n02097209 standard schnauzer +n02097298 Scotch terrier, Scottish terrier, Scottie +n02097474 Tibetan terrier, chrysanthemum dog +n02097658 silky terrier, Sydney silky +n02098105 soft-coated wheaten terrier +n02098286 West Highland white terrier +n02098413 Lhasa, Lhasa apso +n02099267 flat-coated retriever +n02099429 curly-coated retriever +n02099601 golden retriever +n02099712 Labrador retriever +n02099849 Chesapeake Bay retriever +n02100236 German short-haired pointer +n02100583 vizsla, Hungarian pointer +n02100735 English setter +n02100877 Irish setter, red setter +n02101006 Gordon setter +n02101388 Brittany spaniel +n02101556 clumber, clumber spaniel +n02102040 English springer, English springer spaniel +n02102177 Welsh springer spaniel +n02102318 cocker spaniel, English cocker spaniel, cocker +n02102480 Sussex spaniel +n02102973 Irish water spaniel +n02104029 kuvasz +n02104365 schipperke +n02105056 groenendael +n02105162 malinois +n02105251 briard +n02105412 kelpie +n02105505 komondor +n02105641 Old English sheepdog, bobtail +n02105855 Shetland sheepdog, Shetland sheep dog, Shetland +n02106030 collie +n02106166 Border collie +n02106382 Bouvier des Flandres, Bouviers des Flandres +n02106550 Rottweiler +n02106662 German shepherd, German shepherd dog, German police dog, alsatian +n02107142 Doberman, Doberman pinscher +n02107312 miniature pinscher +n02107574 Greater Swiss Mountain dog +n02107683 Bernese mountain dog +n02107908 Appenzeller +n02108000 EntleBucher +n02108089 boxer +n02108422 bull mastiff +n02108551 Tibetan mastiff +n02108915 French bulldog +n02109047 Great Dane +n02109525 Saint Bernard, St Bernard +n02109961 Eskimo dog, husky +n02110063 malamute, malemute, Alaskan malamute +n02110185 Siberian husky +n02110341 dalmatian, coach dog, carriage dog +n02110627 affenpinscher, monkey pinscher, monkey dog +n02110806 basenji +n02110958 pug, pug-dog +n02111129 Leonberg +n02111277 Newfoundland, Newfoundland dog +n02111500 Great Pyrenees +n02111889 Samoyed, Samoyede +n02112018 Pomeranian +n02112137 chow, chow chow +n02112350 keeshond +n02112706 Brabancon griffon +n02113023 Pembroke, Pembroke Welsh corgi +n02113186 Cardigan, Cardigan Welsh corgi +n02113624 toy poodle +n02113712 miniature poodle +n02113799 standard poodle +n02113978 Mexican hairless +n02114367 timber wolf, grey wolf, gray wolf, Canis lupus +n02114548 white wolf, Arctic wolf, Canis lupus tundrarum +n02114712 red wolf, maned wolf, Canis rufus, Canis niger +n02114855 coyote, prairie wolf, brush wolf, Canis latrans +n02115641 dingo, warrigal, warragal, Canis dingo +n02115913 dhole, Cuon alpinus +n02116738 African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus +n02117135 hyena, hyaena +n02119022 red fox, Vulpes vulpes +n02119789 kit fox, Vulpes macrotis +n02120079 Arctic fox, white fox, Alopex lagopus +n02120505 grey fox, gray fox, Urocyon cinereoargenteus +n02123045 tabby, tabby cat +n02123159 tiger cat +n02123394 Persian cat +n02123597 Siamese cat, Siamese +n02124075 Egyptian cat +n02125311 cougar, puma, catamount, mountain lion, painter, panther, Felis concolor +n02127052 lynx, catamount +n02128385 leopard, Panthera pardus +n02128757 snow leopard, ounce, Panthera uncia +n02128925 jaguar, panther, Panthera onca, Felis onca +n02129165 lion, king of beasts, Panthera leo +n02129604 tiger, Panthera tigris +n02130308 cheetah, chetah, Acinonyx jubatus +n02132136 brown bear, bruin, Ursus arctos +n02133161 American black bear, black bear, Ursus americanus, Euarctos americanus +n02134084 ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus +n02134418 sloth bear, Melursus ursinus, Ursus ursinus +n02137549 mongoose +n02138441 meerkat, mierkat +n02165105 tiger beetle +n02165456 ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle +n02167151 ground beetle, carabid beetle +n02168699 long-horned beetle, longicorn, longicorn beetle +n02169497 leaf beetle, chrysomelid +n02172182 dung beetle +n02174001 rhinoceros beetle +n02177972 weevil +n02190166 fly +n02206856 bee +n02219486 ant, emmet, pismire +n02226429 grasshopper, hopper +n02229544 cricket +n02231487 walking stick, walkingstick, stick insect +n02233338 cockroach, roach +n02236044 mantis, mantid +n02256656 cicada, cicala +n02259212 leafhopper +n02264363 lacewing, lacewing fly +n02268443 dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk +n02268853 damselfly +n02276258 admiral +n02277742 ringlet, ringlet butterfly +n02279972 monarch, monarch butterfly, milkweed butterfly, Danaus plexippus +n02280649 cabbage butterfly +n02281406 sulphur butterfly, sulfur butterfly +n02281787 lycaenid, lycaenid butterfly +n02317335 starfish, sea star +n02319095 sea urchin +n02321529 sea cucumber, holothurian +n02325366 wood rabbit, cottontail, cottontail rabbit +n02326432 hare +n02328150 Angora, Angora rabbit +n02342885 hamster +n02346627 porcupine, hedgehog +n02356798 fox squirrel, eastern fox squirrel, Sciurus niger +n02361337 marmot +n02363005 beaver +n02364673 guinea pig, Cavia cobaya +n02389026 sorrel +n02391049 zebra +n02395406 hog, pig, grunter, squealer, Sus scrofa +n02396427 wild boar, boar, Sus scrofa +n02397096 warthog +n02398521 hippopotamus, hippo, river horse, Hippopotamus amphibius +n02403003 ox +n02408429 water buffalo, water ox, Asiatic buffalo, Bubalus bubalis +n02410509 bison +n02412080 ram, tup +n02415577 bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis +n02417914 ibex, Capra ibex +n02422106 hartebeest +n02422699 impala, Aepyceros melampus +n02423022 gazelle +n02437312 Arabian camel, dromedary, Camelus dromedarius +n02437616 llama +n02441942 weasel +n02442845 mink +n02443114 polecat, fitch, foulmart, foumart, Mustela putorius +n02443484 black-footed ferret, ferret, Mustela nigripes +n02444819 otter +n02445715 skunk, polecat, wood pussy +n02447366 badger +n02454379 armadillo +n02457408 three-toed sloth, ai, Bradypus tridactylus +n02480495 orangutan, orang, orangutang, Pongo pygmaeus +n02480855 gorilla, Gorilla gorilla +n02481823 chimpanzee, chimp, Pan troglodytes +n02483362 gibbon, Hylobates lar +n02483708 siamang, Hylobates syndactylus, Symphalangus syndactylus +n02484975 guenon, guenon monkey +n02486261 patas, hussar monkey, Erythrocebus patas +n02486410 baboon +n02487347 macaque +n02488291 langur +n02488702 colobus, colobus monkey +n02489166 proboscis monkey, Nasalis larvatus +n02490219 marmoset +n02492035 capuchin, ringtail, Cebus capucinus +n02492660 howler monkey, howler +n02493509 titi, titi monkey +n02493793 spider monkey, Ateles geoffroyi +n02494079 squirrel monkey, Saimiri sciureus +n02497673 Madagascar cat, ring-tailed lemur, Lemur catta +n02500267 indri, indris, Indri indri, Indri brevicaudatus +n02504013 Indian elephant, Elephas maximus +n02504458 African elephant, Loxodonta africana +n02509815 lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens +n02510455 giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca +n02514041 barracouta, snoek +n02526121 eel +n02536864 coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch +n02606052 rock beauty, Holocanthus tricolor +n02607072 anemone fish +n02640242 sturgeon +n02641379 gar, garfish, garpike, billfish, Lepisosteus osseus +n02643566 lionfish +n02655020 puffer, pufferfish, blowfish, globefish +n02666196 abacus +n02667093 abaya +n02669723 academic gown, academic robe, judge's robe +n02672831 accordion, piano accordion, squeeze box +n02676566 acoustic guitar +n02687172 aircraft carrier, carrier, flattop, attack aircraft carrier +n02690373 airliner +n02692877 airship, dirigible +n02699494 altar +n02701002 ambulance +n02704792 amphibian, amphibious vehicle +n02708093 analog clock +n02727426 apiary, bee house +n02730930 apron +n02747177 ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin +n02749479 assault rifle, assault gun +n02769748 backpack, back pack, knapsack, packsack, rucksack, haversack +n02776631 bakery, bakeshop, bakehouse +n02777292 balance beam, beam +n02782093 balloon +n02783161 ballpoint, ballpoint pen, ballpen, Biro +n02786058 Band Aid +n02787622 banjo +n02788148 bannister, banister, balustrade, balusters, handrail +n02790996 barbell +n02791124 barber chair +n02791270 barbershop +n02793495 barn +n02794156 barometer +n02795169 barrel, cask +n02797295 barrow, garden cart, lawn cart, wheelbarrow +n02799071 baseball +n02802426 basketball +n02804414 bassinet +n02804610 bassoon +n02807133 bathing cap, swimming cap +n02808304 bath towel +n02808440 bathtub, bathing tub, bath, tub +n02814533 beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon +n02814860 beacon, lighthouse, beacon light, pharos +n02815834 beaker +n02817516 bearskin, busby, shako +n02823428 beer bottle +n02823750 beer glass +n02825657 bell cote, bell cot +n02834397 bib +n02835271 bicycle-built-for-two, tandem bicycle, tandem +n02837789 bikini, two-piece +n02840245 binder, ring-binder +n02841315 binoculars, field glasses, opera glasses +n02843684 birdhouse +n02859443 boathouse +n02860847 bobsled, bobsleigh, bob +n02865351 bolo tie, bolo, bola tie, bola +n02869837 bonnet, poke bonnet +n02870880 bookcase +n02871525 bookshop, bookstore, bookstall +n02877765 bottlecap +n02879718 bow +n02883205 bow tie, bow-tie, bowtie +n02892201 brass, memorial tablet, plaque +n02892767 brassiere, bra, bandeau +n02894605 breakwater, groin, groyne, mole, bulwark, seawall, jetty +n02895154 breastplate, aegis, egis +n02906734 broom +n02909870 bucket, pail +n02910353 buckle +n02916936 bulletproof vest +n02917067 bullet train, bullet +n02927161 butcher shop, meat market +n02930766 cab, hack, taxi, taxicab +n02939185 caldron, cauldron +n02948072 candle, taper, wax light +n02950826 cannon +n02951358 canoe +n02951585 can opener, tin opener +n02963159 cardigan +n02965783 car mirror +n02966193 carousel, carrousel, merry-go-round, roundabout, whirligig +n02966687 carpenter's kit, tool kit +n02971356 carton +n02974003 car wheel +n02977058 cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM +n02978881 cassette +n02979186 cassette player +n02980441 castle +n02981792 catamaran +n02988304 CD player +n02992211 cello, violoncello +n02992529 cellular telephone, cellular phone, cellphone, cell, mobile phone +n02999410 chain +n03000134 chainlink fence +n03000247 chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour +n03000684 chain saw, chainsaw +n03014705 chest +n03016953 chiffonier, commode +n03017168 chime, bell, gong +n03018349 china cabinet, china closet +n03026506 Christmas stocking +n03028079 church, church building +n03032252 cinema, movie theater, movie theatre, movie house, picture palace +n03041632 cleaver, meat cleaver, chopper +n03042490 cliff dwelling +n03045698 cloak +n03047690 clog, geta, patten, sabot +n03062245 cocktail shaker +n03063599 coffee mug +n03063689 coffeepot +n03065424 coil, spiral, volute, whorl, helix +n03075370 combination lock +n03085013 computer keyboard, keypad +n03089624 confectionery, confectionary, candy store +n03095699 container ship, containership, container vessel +n03100240 convertible +n03109150 corkscrew, bottle screw +n03110669 cornet, horn, trumpet, trump +n03124043 cowboy boot +n03124170 cowboy hat, ten-gallon hat +n03125729 cradle +n03126707 crane +n03127747 crash helmet +n03127925 crate +n03131574 crib, cot +n03133878 Crock Pot +n03134739 croquet ball +n03141823 crutch +n03146219 cuirass +n03160309 dam, dike, dyke +n03179701 desk +n03180011 desktop computer +n03187595 dial telephone, dial phone +n03188531 diaper, nappy, napkin +n03196217 digital clock +n03197337 digital watch +n03201208 dining table, board +n03207743 dishrag, dishcloth +n03207941 dishwasher, dish washer, dishwashing machine +n03208938 disk brake, disc brake +n03216828 dock, dockage, docking facility +n03218198 dogsled, dog sled, dog sleigh +n03220513 dome +n03223299 doormat, welcome mat +n03240683 drilling platform, offshore rig +n03249569 drum, membranophone, tympan +n03250847 drumstick +n03255030 dumbbell +n03259280 Dutch oven +n03271574 electric fan, blower +n03272010 electric guitar +n03272562 electric locomotive +n03290653 entertainment center +n03291819 envelope +n03297495 espresso maker +n03314780 face powder +n03325584 feather boa, boa +n03337140 file, file cabinet, filing cabinet +n03344393 fireboat +n03345487 fire engine, fire truck +n03347037 fire screen, fireguard +n03355925 flagpole, flagstaff +n03372029 flute, transverse flute +n03376595 folding chair +n03379051 football helmet +n03384352 forklift +n03388043 fountain +n03388183 fountain pen +n03388549 four-poster +n03393912 freight car +n03394916 French horn, horn +n03400231 frying pan, frypan, skillet +n03404251 fur coat +n03417042 garbage truck, dustcart +n03424325 gasmask, respirator, gas helmet +n03425413 gas pump, gasoline pump, petrol pump, island dispenser +n03443371 goblet +n03444034 go-kart +n03445777 golf ball +n03445924 golfcart, golf cart +n03447447 gondola +n03447721 gong, tam-tam +n03450230 gown +n03452741 grand piano, grand +n03457902 greenhouse, nursery, glasshouse +n03459775 grille, radiator grille +n03461385 grocery store, grocery, food market, market +n03467068 guillotine +n03476684 hair slide +n03476991 hair spray +n03478589 half track +n03481172 hammer +n03482405 hamper +n03483316 hand blower, blow dryer, blow drier, hair dryer, hair drier +n03485407 hand-held computer, hand-held microcomputer +n03485794 handkerchief, hankie, hanky, hankey +n03492542 hard disc, hard disk, fixed disk +n03494278 harmonica, mouth organ, harp, mouth harp +n03495258 harp +n03496892 harvester, reaper +n03498962 hatchet +n03527444 holster +n03529860 home theater, home theatre +n03530642 honeycomb +n03532672 hook, claw +n03534580 hoopskirt, crinoline +n03535780 horizontal bar, high bar +n03538406 horse cart, horse-cart +n03544143 hourglass +n03584254 iPod +n03584829 iron, smoothing iron +n03590841 jack-o'-lantern +n03594734 jean, blue jean, denim +n03594945 jeep, landrover +n03595614 jersey, T-shirt, tee shirt +n03598930 jigsaw puzzle +n03599486 jinrikisha, ricksha, rickshaw +n03602883 joystick +n03617480 kimono +n03623198 knee pad +n03627232 knot +n03630383 lab coat, laboratory coat +n03633091 ladle +n03637318 lampshade, lamp shade +n03642806 laptop, laptop computer +n03649909 lawn mower, mower +n03657121 lens cap, lens cover +n03658185 letter opener, paper knife, paperknife +n03661043 library +n03662601 lifeboat +n03666591 lighter, light, igniter, ignitor +n03670208 limousine, limo +n03673027 liner, ocean liner +n03676483 lipstick, lip rouge +n03680355 Loafer +n03690938 lotion +n03691459 loudspeaker, speaker, speaker unit, loudspeaker system, speaker system +n03692522 loupe, jeweler's loupe +n03697007 lumbermill, sawmill +n03706229 magnetic compass +n03709823 mailbag, postbag +n03710193 mailbox, letter box +n03710637 maillot +n03710721 maillot, tank suit +n03717622 manhole cover +n03720891 maraca +n03721384 marimba, xylophone +n03724870 mask +n03729826 matchstick +n03733131 maypole +n03733281 maze, labyrinth +n03733805 measuring cup +n03742115 medicine chest, medicine cabinet +n03743016 megalith, megalithic structure +n03759954 microphone, mike +n03761084 microwave, microwave oven +n03763968 military uniform +n03764736 milk can +n03769881 minibus +n03770439 miniskirt, mini +n03770679 minivan +n03773504 missile +n03775071 mitten +n03775546 mixing bowl +n03776460 mobile home, manufactured home +n03777568 Model T +n03777754 modem +n03781244 monastery +n03782006 monitor +n03785016 moped +n03786901 mortar +n03787032 mortarboard +n03788195 mosque +n03788365 mosquito net +n03791053 motor scooter, scooter +n03792782 mountain bike, all-terrain bike, off-roader +n03792972 mountain tent +n03793489 mouse, computer mouse +n03794056 mousetrap +n03796401 moving van +n03803284 muzzle +n03804744 nail +n03814639 neck brace +n03814906 necklace +n03825788 nipple +n03832673 notebook, notebook computer +n03837869 obelisk +n03838899 oboe, hautboy, hautbois +n03840681 ocarina, sweet potato +n03841143 odometer, hodometer, mileometer, milometer +n03843555 oil filter +n03854065 organ, pipe organ +n03857828 oscilloscope, scope, cathode-ray oscilloscope, CRO +n03866082 overskirt +n03868242 oxcart +n03868863 oxygen mask +n03871628 packet +n03873416 paddle, boat paddle +n03874293 paddlewheel, paddle wheel +n03874599 padlock +n03876231 paintbrush +n03877472 pajama, pyjama, pj's, jammies +n03877845 palace +n03884397 panpipe, pandean pipe, syrinx +n03887697 paper towel +n03888257 parachute, chute +n03888605 parallel bars, bars +n03891251 park bench +n03891332 parking meter +n03895866 passenger car, coach, carriage +n03899768 patio, terrace +n03902125 pay-phone, pay-station +n03903868 pedestal, plinth, footstall +n03908618 pencil box, pencil case +n03908714 pencil sharpener +n03916031 perfume, essence +n03920288 Petri dish +n03924679 photocopier +n03929660 pick, plectrum, plectron +n03929855 pickelhaube +n03930313 picket fence, paling +n03930630 pickup, pickup truck +n03933933 pier +n03935335 piggy bank, penny bank +n03937543 pill bottle +n03938244 pillow +n03942813 ping-pong ball +n03944341 pinwheel +n03947888 pirate, pirate ship +n03950228 pitcher, ewer +n03954731 plane, carpenter's plane, woodworking plane +n03956157 planetarium +n03958227 plastic bag +n03961711 plate rack +n03967562 plow, plough +n03970156 plunger, plumber's helper +n03976467 Polaroid camera, Polaroid Land camera +n03976657 pole +n03977966 police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria +n03980874 poncho +n03982430 pool table, billiard table, snooker table +n03983396 pop bottle, soda bottle +n03991062 pot, flowerpot +n03992509 potter's wheel +n03995372 power drill +n03998194 prayer rug, prayer mat +n04004767 printer +n04005630 prison, prison house +n04008634 projectile, missile +n04009552 projector +n04019541 puck, hockey puck +n04023962 punching bag, punch bag, punching ball, punchball +n04026417 purse +n04033901 quill, quill pen +n04033995 quilt, comforter, comfort, puff +n04037443 racer, race car, racing car +n04039381 racket, racquet +n04040759 radiator +n04041544 radio, wireless +n04044716 radio telescope, radio reflector +n04049303 rain barrel +n04065272 recreational vehicle, RV, R.V. +n04067472 reel +n04069434 reflex camera +n04070727 refrigerator, icebox +n04074963 remote control, remote +n04081281 restaurant, eating house, eating place, eatery +n04086273 revolver, six-gun, six-shooter +n04090263 rifle +n04099969 rocking chair, rocker +n04111531 rotisserie +n04116512 rubber eraser, rubber, pencil eraser +n04118538 rugby ball +n04118776 rule, ruler +n04120489 running shoe +n04125021 safe +n04127249 safety pin +n04131690 saltshaker, salt shaker +n04133789 sandal +n04136333 sarong +n04141076 sax, saxophone +n04141327 scabbard +n04141975 scale, weighing machine +n04146614 school bus +n04147183 schooner +n04149813 scoreboard +n04152593 screen, CRT screen +n04153751 screw +n04154565 screwdriver +n04162706 seat belt, seatbelt +n04179913 sewing machine +n04192698 shield, buckler +n04200800 shoe shop, shoe-shop, shoe store +n04201297 shoji +n04204238 shopping basket +n04204347 shopping cart +n04208210 shovel +n04209133 shower cap +n04209239 shower curtain +n04228054 ski +n04229816 ski mask +n04235860 sleeping bag +n04238763 slide rule, slipstick +n04239074 sliding door +n04243546 slot, one-armed bandit +n04251144 snorkel +n04252077 snowmobile +n04252225 snowplow, snowplough +n04254120 soap dispenser +n04254680 soccer ball +n04254777 sock +n04258138 solar dish, solar collector, solar furnace +n04259630 sombrero +n04263257 soup bowl +n04264628 space bar +n04265275 space heater +n04266014 space shuttle +n04270147 spatula +n04273569 speedboat +n04275548 spider web, spider's web +n04277352 spindle +n04285008 sports car, sport car +n04286575 spotlight, spot +n04296562 stage +n04310018 steam locomotive +n04311004 steel arch bridge +n04311174 steel drum +n04317175 stethoscope +n04325704 stole +n04326547 stone wall +n04328186 stopwatch, stop watch +n04330267 stove +n04332243 strainer +n04335435 streetcar, tram, tramcar, trolley, trolley car +n04336792 stretcher +n04344873 studio couch, day bed +n04346328 stupa, tope +n04347754 submarine, pigboat, sub, U-boat +n04350905 suit, suit of clothes +n04355338 sundial +n04355933 sunglass +n04356056 sunglasses, dark glasses, shades +n04357314 sunscreen, sunblock, sun blocker +n04366367 suspension bridge +n04367480 swab, swob, mop +n04370456 sweatshirt +n04371430 swimming trunks, bathing trunks +n04371774 swing +n04372370 switch, electric switch, electrical switch +n04376876 syringe +n04380533 table lamp +n04389033 tank, army tank, armored combat vehicle, armoured combat vehicle +n04392985 tape player +n04398044 teapot +n04399382 teddy, teddy bear +n04404412 television, television system +n04409515 tennis ball +n04417672 thatch, thatched roof +n04418357 theater curtain, theatre curtain +n04423845 thimble +n04428191 thresher, thrasher, threshing machine +n04429376 throne +n04435653 tile roof +n04442312 toaster +n04443257 tobacco shop, tobacconist shop, tobacconist +n04447861 toilet seat +n04456115 torch +n04458633 totem pole +n04461696 tow truck, tow car, wrecker +n04462240 toyshop +n04465501 tractor +n04467665 trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi +n04476259 tray +n04479046 trench coat +n04482393 tricycle, trike, velocipede +n04483307 trimaran +n04485082 tripod +n04486054 triumphal arch +n04487081 trolleybus, trolley coach, trackless trolley +n04487394 trombone +n04493381 tub, vat +n04501370 turnstile +n04505470 typewriter keyboard +n04507155 umbrella +n04509417 unicycle, monocycle +n04515003 upright, upright piano +n04517823 vacuum, vacuum cleaner +n04522168 vase +n04523525 vault +n04525038 velvet +n04525305 vending machine +n04532106 vestment +n04532670 viaduct +n04536866 violin, fiddle +n04540053 volleyball +n04542943 waffle iron +n04548280 wall clock +n04548362 wallet, billfold, notecase, pocketbook +n04550184 wardrobe, closet, press +n04552348 warplane, military plane +n04553703 washbasin, handbasin, washbowl, lavabo, wash-hand basin +n04554684 washer, automatic washer, washing machine +n04557648 water bottle +n04560804 water jug +n04562935 water tower +n04579145 whiskey jug +n04579432 whistle +n04584207 wig +n04589890 window screen +n04590129 window shade +n04591157 Windsor tie +n04591713 wine bottle +n04592741 wing +n04596742 wok +n04597913 wooden spoon +n04599235 wool, woolen, woollen +n04604644 worm fence, snake fence, snake-rail fence, Virginia fence +n04606251 wreck +n04612504 yawl +n04613696 yurt +n06359193 web site, website, internet site, site +n06596364 comic book +n06785654 crossword puzzle, crossword +n06794110 street sign +n06874185 traffic light, traffic signal, stoplight +n07248320 book jacket, dust cover, dust jacket, dust wrapper +n07565083 menu +n07579787 plate +n07583066 guacamole +n07584110 consomme +n07590611 hot pot, hotpot +n07613480 trifle +n07614500 ice cream, icecream +n07615774 ice lolly, lolly, lollipop, popsicle +n07684084 French loaf +n07693725 bagel, beigel +n07695742 pretzel +n07697313 cheeseburger +n07697537 hotdog, hot dog, red hot +n07711569 mashed potato +n07714571 head cabbage +n07714990 broccoli +n07715103 cauliflower +n07716358 zucchini, courgette +n07716906 spaghetti squash +n07717410 acorn squash +n07717556 butternut squash +n07718472 cucumber, cuke +n07718747 artichoke, globe artichoke +n07720875 bell pepper +n07730033 cardoon +n07734744 mushroom +n07742313 Granny Smith +n07745940 strawberry +n07747607 orange +n07749582 lemon +n07753113 fig +n07753275 pineapple, ananas +n07753592 banana +n07754684 jackfruit, jak, jack +n07760859 custard apple +n07768694 pomegranate +n07802026 hay +n07831146 carbonara +n07836838 chocolate sauce, chocolate syrup +n07860988 dough +n07871810 meat loaf, meatloaf +n07873807 pizza, pizza pie +n07875152 potpie +n07880968 burrito +n07892512 red wine +n07920052 espresso +n07930864 cup +n07932039 eggnog +n09193705 alp +n09229709 bubble +n09246464 cliff, drop, drop-off +n09256479 coral reef +n09288635 geyser +n09332890 lakeside, lakeshore +n09399592 promontory, headland, head, foreland +n09421951 sandbar, sand bar +n09428293 seashore, coast, seacoast, sea-coast +n09468604 valley, vale +n09472597 volcano +n09835506 ballplayer, baseball player +n10148035 groom, bridegroom +n10565667 scuba diver +n11879895 rapeseed +n11939491 daisy +n12057211 yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum +n12144580 corn +n12267677 acorn +n12620546 hip, rose hip, rosehip +n12768682 buckeye, horse chestnut, conker +n12985857 coral fungus +n12998815 agaric +n13037406 gyromitra +n13040303 stinkhorn, carrion fungus +n13044778 earthstar +n13052670 hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa +n13054560 bolete +n13133613 ear, spike, capitulum +n15075141 toilet tissue, toilet paper, bathroom tissue diff --git a/inference-engine/ie_bridges/python/sample/segmentation_sample.py b/inference-engine/ie_bridges/python/sample/segmentation_sample.py deleted file mode 100644 index ad660509481390..00000000000000 --- a/inference-engine/ie_bridges/python/sample/segmentation_sample.py +++ /dev/null @@ -1,154 +0,0 @@ -#!/usr/bin/env python -""" - Copyright (c) 2018 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" -from __future__ import print_function -import sys -import os -from argparse import ArgumentParser -import cv2 -import numpy as np -import logging as log -from time import time -from openvino.inference_engine import IENetwork, IEPlugin - -classes_color_map = [ - (150, 150, 150), - (58, 55, 169), - (211, 51, 17), - (157, 80, 44), - (23, 95, 189), - (210, 133, 34), - (76, 226, 202), - (101, 138, 127), - (223, 91, 182), - (80, 128, 113), - (235, 155, 55), - (44, 151, 243), - (159, 80, 170), - (239, 208, 44), - (128, 50, 51), - (82, 141, 193), - (9, 107, 10), - (223, 90, 142), - (50, 248, 83), - (178, 101, 130), - (71, 30, 204) -] - - -def build_argparser(): - parser = ArgumentParser() - parser.add_argument("-m", "--model", help="Path to an .xml file with a trained model.", required=True, type=str) - parser.add_argument("-i", "--input", help="Path to a folder with images or path to an image files", required=True, - type=str, nargs="+") - parser.add_argument("-l", "--cpu_extension", - help="MKLDNN (CPU)-targeted custom layers.Absolute path to a shared library with the kernels " - "impl.", type=str, default=None) - parser.add_argument("-pp", "--plugin_dir", help="Path to a plugin folder", type=str, default=None) - parser.add_argument("-d", "--device", - help="Specify the target device to infer on; CPU, GPU, FPGA or MYRIAD is acceptable. Sample " - "will look for a suitable plugin for device specified (CPU by default)", default="CPU", - type=str) - parser.add_argument("-nt", "--number_top", help="Number of top results", default=10, type=int) - parser.add_argument("-ni", "--number_iter", help="Number of inference iterations", default=1, type=int) - parser.add_argument("-pc", "--perf_counts", help="Report performance counters", default=False, action="store_true") - return parser - - -def main(): - log.basicConfig(format="[ %(levelname)s ] %(message)s", level=log.INFO, stream=sys.stdout) - args = build_argparser().parse_args() - model_xml = args.model - model_bin = os.path.splitext(model_xml)[0] + ".bin" - - # Plugin initialization for specified device and load extensions library if specified - plugin = IEPlugin(device=args.device, plugin_dirs=args.plugin_dir) - if args.cpu_extension and 'CPU' in args.device: - plugin.add_cpu_extension(args.cpu_extension) - # Read IR - log.info("Loading network files:\n\t{}\n\t{}".format(model_xml, model_bin)) - net = IENetwork.from_ir(model=model_xml, weights=model_bin) - - if plugin.device == "CPU": - supported_layers = plugin.get_supported_layers(net) - not_supported_layers = [l for l in net.layers.keys() if l not in supported_layers] - if len(not_supported_layers) != 0: - log.error("Following layers are not supported by the plugin for specified device {}:\n {}". - format(plugin.device, ', '.join(not_supported_layers))) - log.error("Please try to specify cpu extensions library path in sample's command line parameters using -l " - "or --cpu_extension command line argument") - sys.exit(1) - assert len(net.inputs.keys()) == 1, "Sample supports only single input topologies" - assert len(net.outputs) == 1, "Sample supports only single output topologies" - - log.info("Preparing input blobs") - input_blob = next(iter(net.inputs)) - out_blob = next(iter(net.outputs)) - net.batch_size = len(args.input) - - # Read and pre-process input images - n, c, h, w = net.inputs[input_blob].shape - images = np.ndarray(shape=(n, c, h, w)) - for i in range(n): - image = cv2.imread(args.input[i]) - if image.shape[:-1] != (h, w): - log.warning("Image {} is resized from {} to {}".format(args.input[i], image.shape[:-1], (h, w))) - image = cv2.resize(image, (w, h)) - image = image.transpose((2, 0, 1)) # Change data layout from HWC to CHW - images[i] = image - log.info("Batch size is {}".format(n)) - - # Loading model to the plugin - log.info("Loading model to the plugin") - exec_net = plugin.load(network=net) - del net - - # Start sync inference - log.info("Starting inference ({} iterations)".format(args.number_iter)) - infer_time = [] - for i in range(args.number_iter): - t0 = time() - res = exec_net.infer(inputs={input_blob: images}) - infer_time.append((time() - t0) * 1000) - log.info("Average running time of one iteration: {} ms".format(np.average(np.asarray(infer_time)))) - if args.perf_counts: - perf_counts = exec_net.requests[0].get_perf_counts() - log.info("Performance counters:") - print("{:<70} {:<15} {:<15} {:<15} {:<10}".format('name', 'layer_type', 'exet_type', 'status', 'real_time, us')) - for layer, stats in perf_counts.items(): - print ("{:<70} {:<15} {:<15} {:<15} {:<10}".format(layer, stats['layer_type'], stats['exec_type'], - stats['status'], stats['real_time'])) - # Processing output blob - log.info("Processing output blob") - res = res[out_blob] - for batch, data in enumerate(res): - classes_map = np.zeros(shape=(h, w, c), dtype=np.int) - for i in range(h): - for j in range(w): - if len(data[:, i, j]) == 1: - pixel_class = int(data[:, i, j]) - else: - pixel_class = np.argmax(data[:, i, j]) - classes_map[i, j, :] = classes_color_map[min(pixel_class, 20)] - out_img = os.path.join(os.path.dirname(__file__), "out_{}.bmp".format(batch)) - cv2.imwrite(out_img, classes_map) - log.info("Result image was saved to {}".format(out_img)) - del exec_net - del plugin - - -if __name__ == '__main__': - sys.exit(main() or 0) diff --git a/inference-engine/ie_bridges/python/sample/style_transfer_sample.py b/inference-engine/ie_bridges/python/sample/style_transfer_sample.py index fc471a5839eb7f..76fcadaff2c86f 100644 --- a/inference-engine/ie_bridges/python/sample/style_transfer_sample.py +++ b/inference-engine/ie_bridges/python/sample/style_transfer_sample.py @@ -51,7 +51,6 @@ def build_argparser(): type=float) parser.add_argument("-pc", "--perf_counts", help="Report performance counters", default=False, action="store_true") - return parser @@ -67,7 +66,7 @@ def main(): plugin.add_cpu_extension(args.cpu_extension) # Read IR log.info("Loading network files:\n\t{}\n\t{}".format(model_xml, model_bin)) - net = IENetwork.from_ir(model=model_xml, weights=model_bin) + net = IENetwork(model=model_xml, weights=model_bin) if plugin.device == "CPU": supported_layers = plugin.get_supported_layers(net) @@ -117,8 +116,8 @@ def main(): log.info("Performance counters:") print("{:<70} {:<15} {:<15} {:<15} {:<10}".format('name', 'layer_type', 'exet_type', 'status', 'real_time, us')) for layer, stats in perf_counts.items(): - print ("{:<70} {:<15} {:<15} {:<15} {:<10}".format(layer, stats['layer_type'], stats['exec_type'], - stats['status'], stats['real_time'])) + print("{:<70} {:<15} {:<15} {:<15} {:<10}".format(layer, stats['layer_type'], stats['exec_type'], + stats['status'], stats['real_time'])) # Processing output blob log.info("Processing output blob") res = res[out_blob] diff --git a/inference-engine/ie_bridges/python/setup.py b/inference-engine/ie_bridges/python/setup.py index 41f877229a8988..bb9df0ecddec8c 100644 --- a/inference-engine/ie_bridges/python/setup.py +++ b/inference-engine/ie_bridges/python/setup.py @@ -51,8 +51,8 @@ def initialize_options(self): base_init_options(self) def run(self): - global INFERENCE_ENGINE_DIR - global BUNDLE_INFERENCE_ENGINE + global INFERENCE_ENGINE_DIR + global BUNDLE_INFERENCE_ENGINE if self.copy_ie_libs: BUNDLE_INFERENCE_ENGINE = True @@ -187,16 +187,14 @@ def paths_to_str(paths): } setup( - name="inference_engine", - version='0.1.1', + name="src", + version='1.0', description='Python inference for Inference Engine', packages=find_packages(exclude=['tests']), package_data={PACKAGE_NAME: ['*.so', '*.dll', '*dylib*', '*.pyd']}, include_package_data=True, ext_modules=extensions, cmdclass=cmdclass, - author='', author_email='', - tests_require=['pytest'], install_requires=list(requirements), zip_safe=False, ) diff --git a/model-optimizer/extensions/front/kaldi/__init__.py b/inference-engine/ie_bridges/python/src/openvino/__init__.py similarity index 100% rename from model-optimizer/extensions/front/kaldi/__init__.py rename to inference-engine/ie_bridges/python/src/openvino/__init__.py diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt b/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt new file mode 100644 index 00000000000000..aa8ac74b11c38f --- /dev/null +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt @@ -0,0 +1,36 @@ +# If the pyx file is a C++ file, we should specify that here. +set (CMAKE_INCLUDE_CURRENT_DIR ON) +set (TARGET_NAME "ie_api") + +set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/inference_engine) +set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) + +set_source_files_properties( + ie_api_impl_defs.pxd + ie_api_impl.hpp + ie_api_impl.cpp + ie_api.pyx + ie_api.pxd + + PROPERTIES CYTHON_IS_CXX TRUE +) + +cython_add_module ( + ${TARGET_NAME} + + ie_api_impl_defs.pxd + ie_api_impl.hpp + ie_api_impl.cpp + ie_api.pyx +) + +set_target_properties (${TARGET_NAME} PROPERTIES CXX_STANDARD 11 LINKER_LANGUAGE CXX) +target_link_libraries (${TARGET_NAME} PRIVATE ${InferenceEngine_LIBRARIES}) + +# perform copy +ADD_CUSTOM_COMMAND (TARGET ${TARGET_NAME} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_BRIDGE_SRC_ROOT}/src/openvino/inference_engine/__init__.py ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/__init__.py + COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_BRIDGE_SRC_ROOT}/requirements.txt ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/../../requirements.txt + COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_BRIDGE_SRC_ROOT}/src/openvino/__init__.py ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/../__init__.py +) \ No newline at end of file diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/__init__.py b/inference-engine/ie_bridges/python/src/openvino/inference_engine/__init__.py new file mode 100644 index 00000000000000..ff435b3bd9f52f --- /dev/null +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/__init__.py @@ -0,0 +1,3 @@ +from .ie_api import * +__version__ = get_version() +__all__ = ['IENetwork', "IEPlugin", "IENetReader"] \ No newline at end of file diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/CMakeLists.txt b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/CMakeLists.txt new file mode 100644 index 00000000000000..1b25c3ebe36a1f --- /dev/null +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/CMakeLists.txt @@ -0,0 +1,37 @@ +# If the pyx file is a C++ file, we should specify that here. +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(TARGET_NAME "dnn_builder") + +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/inference_engine/${TARGET_NAME}) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) + +set_source_files_properties( + dnn_builder_defs.pxd + dnn_builder_impl.hpp + dnn_builder_impl.cpp + dnn_builder.pyx + dnn_builder.pxd + + PROPERTIES CYTHON_IS_CXX TRUE +) + +cython_add_module( + ${TARGET_NAME} + + dnn_builder_impl_defs.pxd + dnn_builder_impl.hpp + dnn_builder_impl.cpp + dnn_builder.pyx +) + +set_target_properties (${TARGET_NAME} PROPERTIES CXX_STANDARD 11 LINKER_LANGUAGE CXX) +add_dependencies (${TARGET_NAME} ie_api) +target_include_directories (${TARGET_NAME} PRIVATE ${PYTHON_BRIDGE_SRC_ROOT}/src/openvino/inference_engine ) +target_link_libraries (${TARGET_NAME} PRIVATE ${InferenceEngine_LIBRARIES}) + +# perform copy +ADD_CUSTOM_COMMAND (TARGET ${TARGET_NAME} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_BRIDGE_SRC_ROOT}/src/openvino/inference_engine/${TARGET_NAME}/__init__.py ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} +) \ No newline at end of file diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/__init__.py b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/__init__.py new file mode 100644 index 00000000000000..79744ab1469f1a --- /dev/null +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/__init__.py @@ -0,0 +1,2 @@ +from .dnn_builder import * +__all__ = ["NetworkBuilder", "LayerBuilder"] diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder.pxd b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder.pxd new file mode 100644 index 00000000000000..9a5621508ed805 --- /dev/null +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder.pxd @@ -0,0 +1,26 @@ +from .cimport dnn_builder_impl_defs as C +from libcpp.memory cimport shared_ptr + +cdef class NetworkBuilder: + cdef C.NetworkBuilder impl + +cdef class INetwork: + cdef C.INetwork impl + +cdef class ILayer: + cdef C.ILayer impl + +cdef class Port: + cdef C.Port impl + +cdef class PortInfo: + cdef C.PortInfo impl + +cdef class Connection: + cdef C.Connection impl + +cdef class LayerBuilder: + cdef C.LayerBuilder impl + +cdef class LayerConstantData(dict): + cdef shared_ptr[C.LayerBuilder] impl \ No newline at end of file diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder.pyx b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder.pyx new file mode 100644 index 00000000000000..b0754cb5f16cee --- /dev/null +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder.pyx @@ -0,0 +1,423 @@ +# #distutils: language=c++ +#from cython.operator cimport dereference as deref +from libcpp.vector cimport vector +from libcpp.map cimport map +from libcpp.string cimport string +from ..ie_api cimport IENetwork, BlobBuffer +from .cimport dnn_builder_impl_defs as C +from .dnn_builder_impl_defs cimport Blob +import numpy as np + + +np_precision_map = { + "float32": "FP32", + "float16": "FP16", + "int32": "I32", + "int16": "I16", + "uint16": "U16", + "int8": "I8", + "uint8": "U8", + } +cdef class NetworkBuilder: + def __cinit__(self, name=None, IENetwork ie_net=None): + if name is not None and ie_net is not None: + raise AttributeError("Both name and ie_net arguments are defined") + elif name is not None: + self.impl = C.NetworkBuilder(name.encode()) + elif ie_net is not None: + self.impl = C.NetworkBuilder().from_ie_network(ie_net.impl) + + def build(self): + cdef INetwork i_net = INetwork() + i_net.impl = self.impl.build() + return i_net + + def get_layer(self, id: int): + cdef LayerBuilder py_layer = LayerBuilder() + py_layer.impl = self.impl.getLayer(id) + return py_layer + + @property + def layers(self): + cdef vector[C.LayerBuilder] c_layers = self.impl.getLayers() + cdef LayerBuilder py_layer + py_layers = {} + for l in c_layers: + py_layer = LayerBuilder() + py_layer.impl = l + py_layers[l.getName().decode()] = py_layer + return py_layers + + def remove_layer(self, LayerBuilder layer): + self.impl.removeLayer(layer.impl) + + def get_layer_connection(self, LayerBuilder layer): + cdef vector[C.Connection] c_connections = self.impl.getLayerConnections(layer.impl) + cdef Connection connection + connections = [] + for con in c_connections: + connection = Connection() + connection.impl = con + connections.append(connection) + return connections + + def disconnect(self, Connection connection): + self.impl.disconnect(connection.impl) + + def connect(self, PortInfo input, PortInfo output): + self.impl.connect(input.impl, output.impl) + + def add_layer(self, LayerBuilder layer, input_ports: list = None): + cdef vector[C.PortInfo] c_ports + cdef PortInfo c_port + if not input_ports: + return self.impl.addLayer(layer.impl) + else: + for p in input_ports: + c_port = PortInfo(p.layer_id, p.port_id) + c_ports.push_back(c_port.impl) + return self.impl.addAndConnectLayer(c_ports, layer.impl) + +cdef class INetwork: + def __iter__(self): + cdef ILayer layer + layers = [] + cdef vector[C.ILayer] c_layers = self.impl.layers + for l in c_layers: + layer = ILayer() + layer.impl = l + layers.append(layer) + return iter(layers) + + @property + def layers(self): + cdef ILayer layer + layers = {} + cdef vector[C.ILayer] c_layers = self.impl.layers + for l in c_layers: + layer = ILayer() + layer.impl = l + layers[l.name.decode()] = layer + return layers + + @property + def inputs(self): + cdef ILayer layer + layers = {} + cdef vector[C.ILayer] c_layers = self.impl.inputs + for l in c_layers: + layer = ILayer() + layer.impl = l + layers[l.name.decode()] = layer + return layers + + @property + def outputs(self): + cdef ILayer layer + layers = {} + cdef vector[C.ILayer] c_layers = self.impl.outputs + for l in c_layers: + layer = ILayer() + layer.impl = l + layers[l.name.decode()] = layer + return layers + + @property + def name(self): + return self.impl.name.decode() + + + @property + def size(self): + return self.impl.size + + def get_layer_connection(self, layer: ILayer): + cdef Connection connection + connections = [] + cdef vector[C.Connection] c_connections = self.impl.getLayerConnections(layer.id) + for con in c_connections: + connection = Connection() + connection.impl = con + connections.append(connection) + return connections + + def to_ie_network(self): + cdef IENetwork net = IENetwork() + net.impl = self.impl.to_ie_network() + return net + +cdef class ILayer: + @property + def name(self): + return self.impl.name.decode() + + @property + def id(self): + return self.impl.id + + @property + def type(self): + return self.impl.type.decode() + + @property + def params(self): + return {k.decode(): v.decode() for k, v in self.impl.parameters} + + @property + def input_ports(self): + cdef Port port + cdef vector[C.Port] c_ports = self.impl.in_ports + ports = [] + for p in c_ports: + port = Port() + port.impl = p + ports.append(port) + return ports + + @property + def output_ports(self): + cdef Port port + cdef vector[C.Port] c_ports = self.impl.out_ports + ports = [] + for p in c_ports: + port = Port() + port.impl = p + ports.append(port) + return ports + + @property + def constant_data(self): + cdef map[string, Blob.Ptr] c_constant_data + c_constant_data = self.impl.constant_data + constant_data = {} + cdef BlobBuffer weights_buffer + for weights in c_constant_data: + weights_buffer = BlobBuffer() + weights_buffer.reset(weights.second) + constant_data[weights.first.decode()] = weights_buffer.to_numpy() + return constant_data + + +cdef class Port: + def __cinit__(self, shape: list=[]): + cdef vector[size_t] c_shape + for d in shape: + c_shape.push_back(d) + self.impl = C.Port(c_shape) + @property + def shape(self): + return self.impl.shape + +cdef class PortInfo: + def __cinit__(self, layer_id: int = -1, port_id: int = -1): + if layer_id != -1 and port_id != -1: + self.impl = C.PortInfo(layer_id, port_id) + else: + self.impl = C.PortInfo() + @property + def layer_id(self): + return self.impl.layer_id + + @property + def port_id(self): + return self.impl.port_id + + def __eq__(self, other): + return self.layer_id == other.layer_id and self.port_id == other.port_id + + def __ne__(self, other): + return self.layer_id != other.layer_id and self.port_id != other.port_id + +cdef class Connection: + def __cinit__(self, PortInfo input = None, PortInfo output = None): + if input and output: + self.impl = C.Connection(input.impl, output.impl) + else: + self.impl = C.Connection() + @property + def _from(self): + cdef PortInfo port_info = PortInfo() + port_info.impl = self.impl._from + return port_info + + @property + def to(self): + cdef PortInfo port_info = PortInfo() + port_info.impl = self.impl.to + return port_info + + def __eq__(self, other): + return self._from == other._from and self.to == other.to + + def __ne__(self, other): + return self._from != other._from and self.to != other.to + + +def check_constant_data(data): + for k, v in data.items(): + if not all([isinstance(x, type(v[0])) for x in v]): + raise TypeError("Elements of list for key {} have different data types! " + "Please specify list of 'int' or 'float' values.".format(k)) + if isinstance(v, list): + if isinstance(v[0], float): + dtype = np.float32 + elif isinstance(v[0], int): + dtype = np.int32 + else: + raise TypeError("Unsupported precision of the data for key {}! Given {} but 'float or 'int' precision expected". + format(k, str(v.dtype))) + data[k] = np.asanyarray(v, dtype=dtype) + elif isinstance(v, np.ndarray): + pass + else: + raise TypeError("Unsupported data type for key '{}'. {} given but 'list' or 'numpy.ndarray' expected". + format(k, type(v))) + return data + + +# TODO: Fix LAyerBuilder object copying - pass by reference +# cdef class LayerConstantData(dict): +# def update(self, other=None, **kwargs): +# if other: +# other = check_constant_data(other) +# cdef vector[size_t] dims +# cdef Blob.Ptr blob_ptr +# cdef BlobBuffer buffer +# for k, v in other.items(): +# if k in self.keys() and (v.shape == self[k].shape and v.dtype == self[k].dtype): +# print("Reuse blob for {}\n".format(k)) +# self[k][:] = v +# else: +# for dim in v.shape: +# dims.push_back(dim) +# ie_precision = np_precision_map.get(str(v.dtype), None) +# if not ie_precision: +# raise BufferError("Unsupported precision of the data for key {}! Given {} but one of the {} precisions expected". +# format(k, str(v.dtype), ", ".join(np_precision_map.keys()))) +# blob_ptr = deref(self.impl).allocateBlob(dims, ie_precision.encode()) +# buffer = BlobBuffer() +# buffer.reset(blob_ptr) +# np_buffer = buffer.to_numpy() +# np_buffer[:] = v +# deref(self.impl).addConstantData(k.encode(), blob_ptr) + +cdef class LayerBuilder: + + def __cinit__(self, type: str=None, name: str=None): + if name and type: + self.impl = C.LayerBuilder(name.encode(), type.encode()) + else: + self.impl = C.LayerBuilder() + + @property + def id(self): + return self.impl.id + @property + def name(self): + return self.impl.getName().decode() + @name.setter + def name(self, name: str): + self.impl.setName(name.encode()) + + @property + def type(self): + return self.impl.getType().decode() + @type.setter + def type(self, type: str): + self.impl.setType(type.encode()) + + @property + def input_ports(self): + cdef Port port + cdef vector[C.Port] c_ports = self.impl.getInputPorts() + py_ports = [] + for p in c_ports: + port = Port() + port.impl = p + py_ports.append(port) + return py_ports + + @input_ports.setter + def input_ports(self, ports: list): + cdef vector[C.Port] c_ports + cdef Port c_port + for p in ports: + c_port = Port(p.shape) + c_ports.push_back(c_port.impl) + self.impl.setInputPorts(c_ports) + + @property + def output_ports(self): + cdef Port port + cdef vector[C.Port] c_ports = self.impl.getOutputPorts() + py_ports = [] + for p in c_ports: + port = Port() + port.impl = p + py_ports.append(port) + return py_ports + + @output_ports.setter + def output_ports(self, ports: list): + cdef vector[C.Port] c_ports + cdef Port c_port + for p in ports: + c_port = Port(p.shape) + c_ports.push_back(c_port.impl) + self.impl.setOutputPorts(c_ports) + + @property + def params(self): + return {k.decode(): v.decode() for k, v in self.impl.getParameters()} + + @params.setter + def params(self, params_map: dict): + cdef map[string, string] c_params_map + for k, v in params_map.items(): + c_params_map[k.encode()] = str(v).encode() + self.impl.setParameters(c_params_map) + + def build(self): + cdef ILayer layer = ILayer() + layer.impl = self.impl.build() + return layer + + @property + def constant_data(self): + cdef map[string, Blob.Ptr] c_constant_data + c_constant_data = self.impl.getConstantData() + constant_data = {} + # TODO: Fix LAyerBuilder object copying - pass by reference + # constant_data = LayerConstantData() + # constant_data.impl = make_shared[C.LayerBuilder](self.impl) + cdef BlobBuffer weights_buffer + for weights in c_constant_data: + weights_buffer = BlobBuffer() + weights_buffer.reset(weights.second) + constant_data[weights.first.decode()] = weights_buffer.to_numpy() + return constant_data + + @constant_data.setter + def constant_data(self, data: dict): + cdef vector[size_t] dims + cdef map[string, Blob.Ptr] c_constant_data + cdef Blob.Ptr blob_ptr + cdef BlobBuffer buffer + data = check_constant_data(data) + for k, v in data.items(): + for dim in v.shape: + dims.push_back(dim) + ie_precision = np_precision_map.get(str(v.dtype), None) + if not ie_precision: + raise BufferError("Unsupported precision of the data for key {}! Given {} but one of the {} precisions expected". + format(k, str(v.dtype), ", ".join(np_precision_map.keys()))) + blob_ptr = self.impl.allocateBlob(dims, ie_precision.encode()) + buffer = BlobBuffer() + buffer.reset(blob_ptr) + np_buffer = buffer.to_numpy() + np_buffer[:] = v + c_constant_data[k.encode()] = blob_ptr + + self.impl.setConstantData(c_constant_data) + + # TODO: Implement get\setGraph when will be supported \ No newline at end of file diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder_impl.cpp b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder_impl.cpp new file mode 100644 index 00000000000000..fc9ab4edfa8cff --- /dev/null +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder_impl.cpp @@ -0,0 +1,330 @@ +// Copyright (c) 2018 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "dnn_builder_impl.hpp" + +// using namespace InferenceEnginePython; +// using namespace std; + +std::map precision_map = {{"FP32", InferenceEngine::Precision::FP32}, + {"FP16", InferenceEngine::Precision::FP16}, + {"Q78", InferenceEngine::Precision::Q78}, + {"I32", InferenceEngine::Precision::I32}, + {"I16", InferenceEngine::Precision::I16}, + {"I8", InferenceEngine::Precision::I8}, + {"U16", InferenceEngine::Precision::U16}, + {"U8", InferenceEngine::Precision::U8}}; + +InferenceEnginePython::ILayer buildILayer(InferenceEngine::ILayer::CPtr it) { + std::vector in_ports; + std::vector out_ports; + for (const auto &port : it->getInputPorts()) { + in_ports.push_back(InferenceEnginePython::Port(port.shape())); + } + for (const auto &port : it->getOutputPorts()) { + out_ports.push_back(InferenceEnginePython::Port(port.shape())); + } + + std::map params_map; + for (const auto ¶ms : it->getParameters()->getParameters()) { + params_map.emplace(params.first, params.second); + } + std::map data_map; + for (const auto &data : it->getParameters()->getConstantData()) { + data_map.emplace(data.first, std::const_pointer_cast(data.second)); + } + return {it, + it->getName(), + it->getId(), + it->getType(), + params_map, + data_map, + in_ports, + out_ports, + }; +} + +// NetworkBuilder +InferenceEnginePython::NetworkBuilder::NetworkBuilder(const std::string &name) { + // TODO( ): std::move or instance in heap? Please check in other places. + InferenceEngine::Builder::Network network(name); + network_ptr = std::make_shared(network); +} + +InferenceEnginePython::NetworkBuilder InferenceEnginePython::NetworkBuilder::from_ie_network( + const InferenceEnginePython::IENetwork &icnn_net) { + InferenceEngine::Builder::Network network((InferenceEngine::ICNNNetwork &) icnn_net.actual); + NetworkBuilder net_builder = NetworkBuilder(); + net_builder.network_ptr = std::make_shared(network); + return net_builder; +} + +InferenceEnginePython::INetwork InferenceEnginePython::NetworkBuilder::build() { + InferenceEngine::INetwork::Ptr i_net = network_ptr->build(); + std::vector layers; + for (const auto &it : *i_net) { + layers.push_back(buildILayer(it)); + } + std::vector inputs; + for (const auto &it : i_net->getInputs()) { + inputs.push_back(buildILayer(it)); + } + std::vector outputs; + for (const auto &it : i_net->getInputs()) { + outputs.push_back(buildILayer(it)); + } + return {i_net, // INetwork ptr + i_net->getName(), // name + i_net->size(), // Number of layers + layers, + inputs, + outputs + }; +} + +std::vector InferenceEnginePython::NetworkBuilder::getLayers() { + std::vector layers; + for (const auto &it : network_ptr->getLayers()) { + LayerBuilder layer; + layer.actual = it; + layer.id = it.getId(); + layers.push_back(layer); + } + return layers; +} + +InferenceEnginePython::LayerBuilder InferenceEnginePython::NetworkBuilder::getLayer(size_t layer_id) { + LayerBuilder layer; + InferenceEngine::Builder::Layer ie_layer = network_ptr->getLayer(layer_id); + layer.actual = ie_layer; + layer.id = ie_layer.getId(); + return layer; +} + +void InferenceEnginePython::NetworkBuilder::removeLayer(const LayerBuilder &layer) { + network_ptr->removeLayer(layer.id); +} + +const std::vector InferenceEnginePython::NetworkBuilder::getLayerConnections( + const LayerBuilder &layer) { + std::vector ie_connections = network_ptr->getLayerConnections(layer.id); + std::vector connections; + for (auto const &it : ie_connections) { + PortInfo input(it.from().layerId(), it.from().portId()); + PortInfo output(it.to().layerId(), it.to().portId()); + connections.push_back(Connection(input, output)); + } + return connections; +} + +void InferenceEnginePython::NetworkBuilder::disconnect(const Connection &connection) { + network_ptr->disconnect(connection.actual); +} + +void InferenceEnginePython::NetworkBuilder::connect(const PortInfo &input, const PortInfo &output) { + network_ptr->connect(input.actual, output.actual); +} + +size_t InferenceEnginePython::NetworkBuilder::addLayer(const LayerBuilder &layer) { + return network_ptr->addLayer(layer.actual); +} + +size_t InferenceEnginePython::NetworkBuilder::addAndConnectLayer(const std::vector &input, + const LayerBuilder &layer) { + std::vector ie_ports; + for (const auto &it : input) { + ie_ports.push_back(it.actual); + } + return network_ptr->addLayer(ie_ports, layer.actual); +} +// NetworkBuilder end +// NetworkBuilder end + +// Port +InferenceEnginePython::Port::Port(const std::vector &shapes) { + actual = InferenceEngine::Port(shapes); + shape = actual.shape(); +} + +InferenceEnginePython::PortInfo::PortInfo(size_t layer_id, size_t port_id) : PortInfo() { + this->actual = InferenceEngine::PortInfo(layer_id, port_id); + this->layer_id = layer_id; + this->port_id = port_id; +} +// Port end + +// INetwork +std::vector InferenceEnginePython::INetwork::getLayerConnections(size_t layer_id) { + std::vector connections; + for (const auto &it : actual->getLayerConnections(layer_id)) { + PortInfo input = PortInfo(it.from().layerId(), it.from().portId()); + PortInfo output = PortInfo(it.to().layerId(), it.to().portId()); + connections.push_back(Connection(input, output)); + } + return connections; +} + +InferenceEnginePython::IENetwork InferenceEnginePython::INetwork::to_ie_network() { + std::shared_ptr icnn_net = InferenceEngine::Builder::convertToICNNNetwork(actual); + InferenceEngine::CNNNetwork cnn_net(icnn_net); + IENetwork ie_net = IENetwork(); + ie_net.actual = cnn_net; + ie_net.name = name; + ie_net.batch_size = cnn_net.getBatchSize(); + return ie_net; +} +// INetwork end + +// Connection +InferenceEnginePython::Connection::Connection(PortInfo input, PortInfo output) : Connection() { + this->actual = InferenceEngine::Connection(InferenceEngine::PortInfo(input.layer_id, input.port_id), + InferenceEngine::PortInfo(output.layer_id, output.port_id)); + this->_from = PortInfo(actual.from().layerId(), actual.from().portId()); + this->to = PortInfo(actual.to().layerId(), actual.to().portId()); +} +// Connection end + +// LayerBuilder +InferenceEnginePython::LayerBuilder::LayerBuilder(const std::string &type, const std::string &name) : LayerBuilder() { + InferenceEngine::Builder::Layer layer(type, name); + this->actual = layer; + this->id = layer.getId(); +} + +const std::string &InferenceEnginePython::LayerBuilder::getName() { + return actual.getName(); +} + +const std::string &InferenceEnginePython::LayerBuilder::getType() { + return actual.getType(); +} + +std::vector InferenceEnginePython::LayerBuilder::getInputPorts() { + std::vector ports; + for (const auto &it : actual.getInputPorts()) { + ports.push_back(Port(it.shape())); + } + return ports; +} + +std::vector InferenceEnginePython::LayerBuilder::getOutputPorts() { + std::vector ports; + for (const auto &it : actual.getOutputPorts()) { + ports.push_back(Port(it.shape())); + } + return ports; +} + +std::map InferenceEnginePython::LayerBuilder::getParameters() { + std::map params_map; + for (const auto &it : actual.getParameters()) { + params_map.emplace(it.first, it.second); + } + return params_map; +} + +void InferenceEnginePython::LayerBuilder::setParameters(std::map params_map) { + std::map ie_params_map; + for (const auto &it : params_map) { + InferenceEngine::Parameter ie_param((it.second)); + ie_params_map.emplace(it.first, ie_param); + } + actual = actual.setParameters(ie_params_map); +} + +void InferenceEnginePython::LayerBuilder::setName(const std::string &name) { + actual = actual.setName(name); +} + +void InferenceEnginePython::LayerBuilder::setType(const std::string &type) { + actual = actual.setType(type); +} + +void InferenceEnginePython::LayerBuilder::setInputPorts(const std::vector ports) { + std::vector ie_ports; + for (const auto &it : ports) { + ie_ports.push_back(it.actual); + } + actual = actual.setInputPorts(ie_ports); +} + +void InferenceEnginePython::LayerBuilder::setOutputPorts(const std::vector ports) { + std::vector ie_ports; + for (const auto &it : ports) { + ie_ports.push_back(it.actual); + } + actual = actual.setOutputPorts(ie_ports); +} + +InferenceEnginePython::ILayer InferenceEnginePython::LayerBuilder::build() { + return buildILayer(actual.build()); +} + +std::map InferenceEnginePython::LayerBuilder::getConstantData() { + std::map data_map; + for (const auto &it : actual.getConstantData()) { + data_map.emplace(it.first, std::const_pointer_cast(it.second)); + } + return data_map; +} + +InferenceEngine::Blob::Ptr InferenceEnginePython::LayerBuilder::allocateBlob(std::vector dims, + const std::string &precision) { + InferenceEngine::Layout ie_layout; + ie_layout = InferenceEngine::TensorDesc::getLayoutByDims(dims); + InferenceEngine::Precision ie_precision = precision_map.at(precision); + const InferenceEngine::TensorDesc &tdesc = InferenceEngine::TensorDesc(ie_precision, dims, ie_layout); + InferenceEngine::Blob::Ptr blob; + switch (ie_precision) { + case InferenceEngine::Precision::FP32: + blob = InferenceEngine::make_shared_blob(tdesc); + break; + case InferenceEngine::Precision::FP16: + blob = InferenceEngine::make_shared_blob(tdesc); + break; + case InferenceEngine::Precision::I16: + blob = InferenceEngine::make_shared_blob(tdesc); + break; + case InferenceEngine::Precision::U16: + blob = InferenceEngine::make_shared_blob(tdesc); + break; + case InferenceEngine::Precision::U8: + blob = InferenceEngine::make_shared_blob(tdesc); + break; + case InferenceEngine::Precision::I8: + blob = InferenceEngine::make_shared_blob(tdesc); + break; + case InferenceEngine::Precision::I32: + blob = InferenceEngine::make_shared_blob(tdesc); + break; + default: + blob = InferenceEngine::make_shared_blob(tdesc); + break; + } + + blob->allocate(); + return blob; +} + +void InferenceEnginePython::LayerBuilder::setConstantData(const std::map &const_data) { + actual.setConstantData(const_data); +} +// TODO( ): Fix LAyerBuilder object copying - pass by reference +// void LayerBuilder::addConstantData(const std::string & name, InferenceEngine::Blob::Ptr data){ +// InferenceEngine::Blob::CPtr c_data = const_pointer_cast(data); +// actual.addConstantData(name, c_data); +// } + +// LayerBuilder end diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder_impl.hpp b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder_impl.hpp new file mode 100644 index 00000000000000..b58994abcf5599 --- /dev/null +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder_impl.hpp @@ -0,0 +1,161 @@ +// Copyright (c) 2018 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once + +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + + +// namespace IE Python +namespace InferenceEnginePython { +struct LayerBuilder; + +struct Port { + Port() = default; + + explicit Port(const std::vector &shapes); + + InferenceEngine::Port actual; + std::vector shape; +}; + +struct ILayer { + InferenceEngine::ILayer::CPtr layer_ptr; + std::string name; + size_t id; + std::string type; + std::map parameters; + std::map constant_data; + std::vector in_ports; + std::vector out_ports; +}; + +struct PortInfo { + PortInfo(size_t layer_id, size_t port_id); + + PortInfo() : actual(0, 0) {} + + InferenceEngine::PortInfo actual; + size_t layer_id; + size_t port_id; +}; + +struct Connection { + Connection() : actual(InferenceEngine::PortInfo(0), InferenceEngine::PortInfo(0)) {} + + Connection(PortInfo input, PortInfo output); + + InferenceEngine::Connection actual; + PortInfo _from; + PortInfo to; +}; + +struct INetwork { + InferenceEngine::INetwork::Ptr actual; + std::string name; + size_t size; + std::vector layers; + std::vector inputs; + std::vector outputs; + + std::vector getLayerConnections(size_t layer_id); + + IENetwork to_ie_network(); +}; + +struct NetworkBuilder { + InferenceEngine::Builder::Network::Ptr network_ptr; + + explicit NetworkBuilder(const std::string &name); + + NetworkBuilder() = default; + + NetworkBuilder from_ie_network(const InferenceEnginePython::IENetwork &icnn_net); + + INetwork build(); + + std::vector getLayers(); + + LayerBuilder getLayer(size_t layer_id); + + void removeLayer(const LayerBuilder &layer); + + size_t addLayer(const LayerBuilder &layer); + + size_t addAndConnectLayer(const std::vector &input, const LayerBuilder &layer); + + const std::vector getLayerConnections(const LayerBuilder &layer); + + void disconnect(const Connection &connection); + + void connect(const PortInfo &input, const PortInfo &output); +}; + +struct LayerBuilder { + InferenceEngine::Builder::Layer actual; + size_t id; + + LayerBuilder(const std::string &type, const std::string &name); + + LayerBuilder() : actual("", "") {} + + LayerBuilder from_ilayer(const ILayer &ilayer); + + const std::string &getName(); + + void setName(const std::string &name); + + const std::string &getType(); + + void setType(const std::string &type); + + std::vector getInputPorts(); + + void setInputPorts(const std::vector ports); + + std::vector getOutputPorts(); + + void setOutputPorts(const std::vector ports); + + + std::map getParameters(); + + void setParameters(std::map params_map); + + ILayer build(); + + std::map getConstantData(); + + InferenceEngine::Blob::Ptr allocateBlob(std::vector dims, const std::string &precision); + + void setConstantData(const std::map &const_data); + +// TODO( ): Fix LAyerBuilder object copying - pass by reference +// void addConstantData(const std::string & name, InferenceEngine::Blob::Ptr data); +}; +} // namespace InferenceEnginePython diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder_impl_defs.pxd b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder_impl_defs.pxd new file mode 100644 index 00000000000000..29795f26aae5ae --- /dev/null +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/dnn_builder/dnn_builder_impl_defs.pxd @@ -0,0 +1,97 @@ +from libcpp.string cimport string +from libcpp.vector cimport vector +from libc.stddef cimport size_t +from libcpp.memory cimport shared_ptr +from libcpp.map cimport map +from ..ie_api_impl_defs cimport IENetwork + +cdef extern from "" namespace "InferenceEngine": + ctypedef vector[size_t] SizeVector + + cdef cppclass TensorDesc: + SizeVector& getDims() + const Precision& getPrecision() const + + cdef cppclass Blob: + ctypedef shared_ptr[Blob] Ptr + const TensorDesc& getTensorDesc() const + size_t element_size() const + + cdef cppclass Precision: + const char*name() const + +cdef extern from "dnn_builder_impl.hpp" namespace "InferenceEnginePython": + cdef cppclass ILayer: + const string name + size_t id + string type + map[string, string] parameters + vector[Port] in_ports + vector[Port] out_ports + map[string, Blob.Ptr] constant_data; + + + cdef cppclass INetwork: + string name + size_t size + vector[ILayer] layers + vector[ILayer] inputs + vector[ILayer] outputs + vector[Port] in_ports; + vector[Port] out_ports; + vector[Connection] getLayerConnections(size_t layer_id); + IENetwork to_ie_network(); + + cdef cppclass NetworkBuilder: + NetworkBuilder() except + + NetworkBuilder(string name) except + + NetworkBuilder from_ie_network(IENetwork &icnn_net) except + + INetwork build() except + + vector[LayerBuilder] getLayers() except + + LayerBuilder getLayer(size_t layer_id) except + + void removeLayer(const LayerBuilder& layer) except + + const vector[Connection] getLayerConnections(const LayerBuilder& layer) except + + void disconnect(const Connection& connection) except + + void connect(const PortInfo& input, const PortInfo& output) except + + size_t addLayer(const LayerBuilder& layer) except + + size_t addAndConnectLayer(const vector[PortInfo]& input, const LayerBuilder& layer); + + cdef cppclass Port: + Port() except + + Port(const vector[size_t] & shapes) except + + const vector[size_t] shape + + + cdef cppclass PortInfo: + PortInfo(size_t layer_id, size_t port_id) except + + PortInfo() except + + size_t layer_id + size_t port_id + + cdef cppclass Connection: + Connection(PortInfo input, PortInfo output) except + + Connection() except + + PortInfo _from + PortInfo to + + cdef cppclass LayerBuilder: + LayerBuilder() + LayerBuilder(const string& type, const string& name ) except + + size_t id + LayerBuilder from_ilayer(const ILayer& ilayer) except + + string getName() except + + string getType() except + + vector[Port] getInputPorts() except + + vector[Port] getOutputPorts() except + + map[string, string] getParameters() except + + void setParameters(map[string, string] params_map) except + + void setName(const string & name) except + + void setType(const string & type) except + + void setInputPorts(const vector[Port] ports) except + + void setOutputPorts(const vector[Port] ports) except + + ILayer build() except + + map[string, Blob.Ptr] getConstantData() + void setConstantData(map[string, Blob.Ptr] &const_data) + # TODO: Fix LAyerBuilder object copying - pass by reference + # void addConstantData(const string & name, Blob.Ptr data) + Blob.Ptr allocateBlob(vector[size_t] dims, const string & precision) diff --git a/inference-engine/ie_bridges/python/inference_engine/ie_api.pxd b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pxd similarity index 78% rename from inference-engine/ie_bridges/python/inference_engine/ie_api.pxd rename to inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pxd index 8bf75be82c83c7..52bb27e1a1e22c 100644 --- a/inference-engine/ie_bridges/python/inference_engine/ie_api.pxd +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pxd @@ -1,8 +1,3 @@ -# Copyright (C) 2018 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 -# - from .cimport ie_api_impl_defs as C from .ie_api_impl_defs cimport Blob, TensorDesc @@ -24,24 +19,22 @@ cdef class BlobBuffer: cdef class InferRequest: cdef C.InferRequestWrap *impl - cpdef BlobBuffer _get_input_buffer(self, const string & blob_name) - cpdef BlobBuffer _get_output_buffer(self, const string & blob_name) + cpdef BlobBuffer _get_blob_buffer(self, const string & blob_name) cpdef infer(self, inputs = ?) cpdef async_infer(self, inputs = ?) cpdef wait(self, timeout = ?) cpdef get_perf_counts(self) cdef public: - _inputs, _outputs + _inputs_list, _outputs_list cdef class IENetwork: cdef C.IENetwork impl - cdef class ExecutableNetwork: cdef unique_ptr[C.IEExecNetwork] impl cdef public: - _requests, async, _request_iterator + _requests, inputs, outputs cdef class IEPlugin: cdef C.IEPlugin impl @@ -51,9 +44,6 @@ cdef class IEPlugin: cpdef void set_initial_affinity(self, IENetwork network) except * cpdef set get_supported_layers(self, IENetwork net) -cdef class IENetReader: - cdef C.IENetReader impl - cdef class IENetLayer: cdef C.IENetLayer impl @@ -61,4 +51,7 @@ cdef class InputInfo: cdef C.InputInfo impl cdef class OutputInfo: - cdef C.OutputInfo impl \ No newline at end of file + cdef C.OutputInfo impl + +cdef class LayersStatsMap(dict): + cdef C.IENetwork net_impl diff --git a/inference-engine/ie_bridges/python/inference_engine/ie_api.pyx b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pyx similarity index 75% rename from inference-engine/ie_bridges/python/inference_engine/ie_api.pyx rename to inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pyx index 4d8c0da5ee273c..518125ebebd4ff 100644 --- a/inference-engine/ie_bridges/python/inference_engine/ie_api.pyx +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pyx @@ -1,20 +1,18 @@ -# Copyright (C) 2018 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 -# - #distutils: language=c++ from cython.operator cimport dereference as deref from .cimport ie_api_impl_defs as C from .ie_api_impl_defs cimport Blob, TensorDesc, SizeVector, Precision from libcpp.string cimport string from libcpp.vector cimport vector +from libcpp.pair cimport pair from libcpp.map cimport map from libcpp.memory cimport unique_ptr from libc.stdint cimport int64_t import os import numpy as np from copy import deepcopy +import warnings +from collections import OrderedDict cdef extern from "" namespace "std" nogil: cdef unique_ptr[C.IEExecNetwork] move(unique_ptr[C.IEExecNetwork]) @@ -35,7 +33,7 @@ cdef dict_to_c_map(py_dict): supported_precisions = ["FP32", "FP16", "Q78", "I32", "I16", "I8", "U32", "U16"] supported_layouts = ["NCHW", "NHWC", "OIHW", "C", "CHW", "HW", "NC", "CN", "BLOCKED"] -known_plugins = ['CPU', 'GPU', 'FPGA', 'MYRIAD', 'HETERO'] +known_plugins = ['CPU', 'GPU', 'FPGA', 'MYRIAD', 'HETERO', 'HDDL'] def get_version(): return C.get_version().decode() @@ -68,7 +66,23 @@ cdef class IENetLayer: @property def params(self): return {k.decode(): v.decode() for k, v in self.impl.params} - + @property + def parents(self): + cdef vector[string] c_parents = self.impl.parents + parents = [] + return [parent.decode() for parent in c_parents] + @property + def children(self): + cdef vector[string] c_children = self.impl.children + children = [] + return [child.decode() for child in c_children] + @property + def shape(self): + string_shape = self.impl.shape.decode() + return [int(i) for i in string_shape.split(' ')] + @property + def layout(self): + return self.impl.layout.decode() @affinity.setter def affinity(self, target_affinity): self.impl.setAffinity(target_affinity.encode()) @@ -80,7 +94,6 @@ cdef class IENetLayer: def precision(self, precision: str): self.impl.setPrecision(precision.upper().encode()) - cdef class InputInfo: @property def precision(self): @@ -105,7 +118,6 @@ cdef class InputInfo: "Unsupported layout {}! List of supported layouts: {}".format(layout, supported_layouts)) self.impl.setLayout(layout.encode()) - cdef class OutputInfo: @property def precision(self): @@ -122,20 +134,18 @@ cdef class OutputInfo: raise AttributeError( "Unsupported precision {}! List of supported precisions: {}".format(precision, supported_precisions)) self.impl.setPrecision(precision.encode()) - # @layout.setter - # def layout(self, layout): - # self.impl.setLayout(layout.encode()) cdef class ExecutableNetwork: def __init__(self): self._requests = [] + self.inputs = [] + self.outputs = [] def infer(self, inputs=None): current_request = self.requests[0] current_request.infer(inputs) return deepcopy(current_request.outputs) - def start_async(self, request_id, inputs=None): if request_id not in list(range(len(self.requests))): raise ValueError("Incorrect request_id specified!") @@ -145,21 +155,25 @@ cdef class ExecutableNetwork: @property def requests(self): - return self._requests + requests = [] + for i in range(deref(self.impl).infer_requests.size()): + infer_request = InferRequest() + infer_request.impl = &(deref(self.impl).infer_requests[i]) + infer_request._inputs_list = self.inputs + infer_request._outputs_list = self.outputs + requests.append(infer_request) + return requests cdef class InferRequest: def __init__(self): - self._inputs = {} - self._outputs = {} - - cpdef BlobBuffer _get_input_buffer(self, const string & blob_name): - cdef BlobBuffer buffer = BlobBuffer() - buffer.reset(deref(self.impl).getInputBlob(blob_name)) - return buffer + self._inputs_list = [] + self._outputs_list = [] - cpdef BlobBuffer _get_output_buffer(self, const string & blob_name): + cpdef BlobBuffer _get_blob_buffer(self, const string & blob_name): cdef BlobBuffer buffer = BlobBuffer() - buffer.reset(deref(self.impl).getOutputBlob(blob_name)) + cdef Blob.Ptr blob_ptr + deref(self.impl).getBlobPtr(blob_name, blob_ptr) + buffer.reset(blob_ptr) return buffer cpdef infer(self, inputs=None): @@ -192,17 +206,66 @@ cdef class InferRequest: @property def inputs(self): - return self._inputs + inputs = {} + for input in self._inputs_list: + inputs[input] = self._get_blob_buffer(input.encode()).to_numpy() + return inputs @property def outputs(self): - return self._outputs + outputs = {} + for output in self._outputs_list: + outputs[output] = self._get_blob_buffer(output.encode()).to_numpy() + return deepcopy(outputs) + + def set_batch(self, size): + if size <= 0: + raise ValueError("Batch size should be positive integer number but {} specified".format(size)) + deref(self.impl).setBatch(size) def _fill_inputs(self, inputs): for k, v in inputs.items(): - self._inputs[k][:] = v + self.inputs[k][:] = v + + +class LayerStats: + def __init__(self, min: tuple = (), max: tuple = ()): + self._min = min + self._max = max + + @property + def min(self): + return self._min + @property + def max(self): + return self._max + + +cdef class LayersStatsMap(dict): + def update(self, other=None, **kwargs): + super(LayersStatsMap, self).update(other, **kwargs) + cdef map[string, map[string, vector[float]]] c_stats_map + cdef map[string, vector[float]] c_node_stats + for k, v in self.items(): + c_node_stats["min".encode()] = v.min + c_node_stats["max".encode()] = v.max + c_stats_map[k.encode()] = c_node_stats + self.net_impl.setStats(c_stats_map) cdef class IENetwork: + def __cinit__(self, model: str="", weights: str=""): + cdef string model_ + cdef string weights_ + if model and weights: + if not os.path.isfile(model): + raise Exception("Path to the model {} doesn't exists or it's a directory".format(model)) + if not os.path.isfile(weights): + raise Exception("Path to the weights {} doesn't exists or it's a directory".format(weights)) + model_ = model.encode() + weights_ = weights.encode() + self.impl = C.IENetwork(model_, weights_) + else: + self.impl = C.IENetwork() @property def name(self): name = bytes(self.impl.name) @@ -213,7 +276,7 @@ cdef class IENetwork: cdef map[string, C.InputInfo] c_inputs = self.impl.getInputs() inputs = {} cdef InputInfo in_info - for input in c_inputs: + for input in c_inputs: in_info = InputInfo() in_info.impl = input.second inputs[input.first.decode()] = in_info @@ -224,7 +287,7 @@ cdef class IENetwork: cdef map[string, C.OutputInfo] c_outputs = self.impl.getOutputs() outputs = {} cdef OutputInfo out_info - for out in c_outputs: + for out in c_outputs: out_info = OutputInfo() out_info.impl = out.second outputs[out.first.decode()] = out_info @@ -243,23 +306,37 @@ cdef class IENetwork: @property def layers(self): - cdef map[string, C.IENetLayer] c_layers = self.impl.getLayers() - layers = {} + cdef vector[pair[string, C.IENetLayer]] c_layers = self.impl.getLayers() + layers = OrderedDict() cdef IENetLayer net_l = IENetLayer() for l in c_layers: net_l = IENetLayer() net_l.impl = l.second layers[l.first.decode()] = net_l return layers + @property + def stats(self): + cdef map[string, map[string, vector[float]]] c_stats_map = self.impl.getStats() + py_stats_map = LayersStatsMap() + py_stats_map.net_impl = self.impl + for it in c_stats_map: + stats_map = LayersStatsMap() + py_stats_map[it.first.decode()] = LayerStats(min=tuple(it.second["min".encode()]), + max=tuple(it.second["max".encode()])) + return py_stats_map @classmethod def from_ir(cls, model: str, weights: str): + warnings.filterwarnings("always",category=DeprecationWarning) + warnings.warn("from_ir() method of IENetwork is deprecated. " + "Please use IENetwork class constructor to create valid IENetwork instance", + DeprecationWarning) if not os.path.isfile(model): raise Exception("Path to the model {} doesn't exists or it's a directory".format(model)) if not os.path.isfile(weights): raise Exception("Path to the weights {} doesn't exists or it's a directory".format(weights)) - net_reader = IENetReader() - return net_reader.read(model, weights) + cdef IENetwork net = IENetwork(model, weights) + return net # TODO: Use enum with precision type instead of srting parameter when python2 support will not be required. def add_outputs(self, outputs, precision="FP32"): @@ -273,6 +350,8 @@ cdef class IENetwork: _outputs.push_back(l.encode()) self.impl.addOutputs(_outputs, precision.upper().encode()) + def serialize(self, path_to_xml, path_to_bin): + self.impl.serialize(path_to_xml.encode(), path_to_bin.encode()) def reshape(self, input_shapes: dict): cdef map[string, vector[size_t]] c_input_shapes; cdef vector[size_t] c_shape @@ -312,8 +391,6 @@ cdef class IEPlugin: raise ValueError( "Incorrect number of requests specified: {}. Expected positive integer number.".format(num_requests)) cdef ExecutableNetwork exec_net = ExecutableNetwork() - cdef vector[string] inputs_list - cdef vector[string] outputs_list cdef map[string, string] c_config if config: @@ -321,27 +398,8 @@ cdef class IEPlugin: c_config[to_std_string(k)] = to_std_string(v) exec_net.impl = move(self.impl.load(network.impl, num_requests, c_config)) - - requests = [] - for i in range(deref(exec_net.impl).infer_requests.size()): - infer_request = InferRequest() - infer_request.impl = &(deref(exec_net.impl).infer_requests[i]) - - inputs_list = infer_request.impl.getInputsList() - outputs_list = infer_request.impl.getOutputsList() - - for input_b in inputs_list: - input_s = input_b.decode() - infer_request._inputs[input_s] = infer_request._get_input_buffer(input_b).to_numpy() - - for output_b in outputs_list: - output_s = output_b.decode() - infer_request._outputs[output_s] = infer_request._get_output_buffer(output_b).to_numpy() - - # create blob buffers - requests.append(infer_request) - exec_net._requests = tuple(requests) - + exec_net.inputs = network.inputs.keys() + exec_net.outputs = list(network.outputs.keys()) return exec_net cpdef void set_initial_affinity(self, IENetwork net) except *: @@ -374,11 +432,6 @@ cdef class IEPlugin: c_config[to_std_string(k)] = to_std_string(v) self.impl.setConfig(c_config) -cdef class IENetReader: - def read(self, model: str, weights: str) -> IENetwork: - cdef IENetwork net = IENetwork() - net.impl = self.impl.read(model.encode(), weights.encode()) - return net cdef class BlobBuffer: """Copy-less accessor for Inference Engine Blob""" diff --git a/inference-engine/ie_bridges/python/inference_engine/ie_api_impl.cpp b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.cpp similarity index 51% rename from inference-engine/ie_bridges/python/inference_engine/ie_api_impl.cpp rename to inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.cpp index 798cd702163c3e..296b1bfe443633 100644 --- a/inference-engine/ie_bridges/python/inference_engine/ie_api_impl.cpp +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.cpp @@ -1,31 +1,42 @@ -// Copyright (C) 2018 Intel Corporation +// Copyright (c) 2018 Intel Corporation // -// SPDX-License-Identifier: Apache-2.0 +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #include "ie_api_impl.hpp" #include "hetero/hetero_plugin_config.hpp" #include "ie_iinfer_request.hpp" -std::map precision_map = {{"FP32", InferenceEngine::Precision::FP32}, - {"FP16", InferenceEngine::Precision::FP16}, - {"Q78", InferenceEngine::Precision::Q78}, - {"I32", InferenceEngine::Precision::I32}, - {"I16", InferenceEngine::Precision::I16}, - {"I8", InferenceEngine::Precision::I8}, - {"U16", InferenceEngine::Precision::U16}, - {"U8", InferenceEngine::Precision::U8}}; - -std::map layout_map = {{"ANY", InferenceEngine::Layout::ANY}, - {"NCHW", InferenceEngine::Layout::NCHW}, - {"NHWC", InferenceEngine::Layout::NHWC}, - {"OIHW", InferenceEngine::Layout::OIHW}, - {"C", InferenceEngine::Layout::C}, - {"CHW", InferenceEngine::Layout::CHW}, - {"HW", InferenceEngine::Layout::HW}, - {"NC", InferenceEngine::Layout::NC}, - {"CN", InferenceEngine::Layout::CN}, - {"BLOCKED", InferenceEngine::Layout::BLOCKED}}; -#define stringify( name ) # name +#include "details/ie_cnn_network_tools.h" + +std::map precision_map = {{"FP32", InferenceEngine::Precision::FP32}, + {"FP16", InferenceEngine::Precision::FP16}, + {"Q78", InferenceEngine::Precision::Q78}, + {"I32", InferenceEngine::Precision::I32}, + {"I16", InferenceEngine::Precision::I16}, + {"I8", InferenceEngine::Precision::I8}, + {"U16", InferenceEngine::Precision::U16}, + {"U8", InferenceEngine::Precision::U8}}; + +std::map layout_map = {{"ANY", InferenceEngine::Layout::ANY}, + {"NCHW", InferenceEngine::Layout::NCHW}, + {"NHWC", InferenceEngine::Layout::NHWC}, + {"OIHW", InferenceEngine::Layout::OIHW}, + {"C", InferenceEngine::Layout::C}, + {"CHW", InferenceEngine::Layout::CHW}, + {"HW", InferenceEngine::Layout::HW}, + {"NC", InferenceEngine::Layout::NC}, + {"CN", InferenceEngine::Layout::CN}, + {"BLOCKED", InferenceEngine::Layout::BLOCKED}}; +#define stringify(name) # name #define IE_CHECK_CALL(expr) { \ auto ret = (expr); \ if (ret != InferenceEngine::StatusCode::OK) { \ @@ -34,119 +45,121 @@ std::map layout_map = {{"ANY", InferenceEn } \ - -InferenceEnginePython::IENetwork InferenceEnginePython::IENetReader::read(std::string const &model, - std::string const &weights) -{ +InferenceEnginePython::IENetwork::IENetwork(const std::string &model, const std::string &weights) { InferenceEngine::CNNNetReader net_reader; net_reader.ReadNetwork(model); net_reader.ReadWeights(weights); - const std::string &net_name = net_reader.getName(); - InferenceEngine::CNNNetwork network = net_reader.getNetwork(); - std::size_t batch_size = network.getBatchSize(); - return {network, net_name, batch_size}; + name = net_reader.getName(); + actual = net_reader.getNetwork(); + batch_size = actual.getBatchSize(); } -std::map InferenceEnginePython::IENetwork::getLayers() -{ - std::map result; - std::unordered_set visisted; - const InferenceEngine::InputsDataMap &networkInputs = actual.getInputsInfo(); +void InferenceEnginePython::IENetwork::serialize(const std::string &path_to_xml, const std::string &path_to_bin) { + actual.serialize(path_to_xml, path_to_bin); +} - using CNNLayerPtrCref = const InferenceEngine::CNNLayerPtr &; - std::function DFS = [&](CNNLayerPtrCref layer) { +const std::vector> +InferenceEnginePython::IENetwork::getLayers() { + std::vector> result; + std::vector sorted_layers = InferenceEngine::details::CNNNetSortTopologically(actual); + for (const auto &layer : sorted_layers) { InferenceEnginePython::IENetLayer layer_info; - /* Assumes no cycles in graph */ - for (auto &od : layer->outData) - { - for (auto nl : od->getInputTo()) - { - auto i = visisted.find(nl.second->name); - if (i != visisted.end()) - { - continue; - } - DFS(nl.second); - } - } - visisted.emplace(layer->name); + layer_info.layer_ptr = layer; + layer_info.network_ptr = actual; layer_info.name = layer->name; layer_info.type = layer->type; - std::string precision = layer->precision.name(); - layer_info.precision = precision; + layer_info.precision = layer->precision.name(); layer_info.params = layer->params; layer_info.affinity = layer->affinity; - result[layer->name] = layer_info; - }; - - std::set inputs; - for (auto input : networkInputs) { - for (auto l : input.second->getInputData()->inputTo) { - inputs.insert(l.second); + std::vector parents; + for (const auto &i : layer->insData) { + auto data = i.lock(); + if (data) { + parents.emplace_back(data->getName()); + } } + layer_info.parents = parents; + std::vector children; + for (const auto &data : layer->outData) { + auto inputTo = data->getInputTo(); + for (auto layer_iter : inputTo) { + InferenceEngine::CNNLayerPtr layer_in_data = layer_iter.second; + if (!layer_in_data) { + THROW_IE_EXCEPTION << "Layer which takes data " << data->name << " is nullptr"; + } + children.emplace_back(layer_in_data->name); + } + } + layer_info.children = children; + const InferenceEngine::TensorDesc &inputTensorDesc = layer->outData[0]->getTensorDesc(); + for (const auto &it : layout_map) { + if (it.second == inputTensorDesc.getLayout()) { + layer_info.layout = it.first; + } + } + auto dims = inputTensorDesc.getDims(); + std::string string_dims = ""; + for (const auto &it : dims) { + string_dims += std::to_string(it) + " "; + } + string_dims = string_dims.substr(0, string_dims.size() - 1); + layer_info.shape = string_dims; + result.emplace_back(std::make_pair(layer->name, layer_info)); } - - for (auto &layer : inputs) - { - DFS(layer); - } - return result; - } -std::map InferenceEnginePython::IENetwork::getInputs(){ + +const std::map InferenceEnginePython::IENetwork::getInputs() { std::map inputs; const InferenceEngine::InputsDataMap &inputsInfo = actual.getInputsInfo(); - for (auto & in : inputsInfo){ + for (auto &in : inputsInfo) { InferenceEnginePython::InputInfo info; info.actual = *in.second; const InferenceEngine::TensorDesc &inputTensorDesc = in.second->getTensorDesc(); info.dims = inputTensorDesc.getDims(); - for (auto it : precision_map ) + for (auto it : precision_map) if (it.second == in.second->getPrecision()) - info.precision = it.first; - for (auto it : layout_map ) + info.precision = it.first; + for (auto it : layout_map) if (it.second == in.second->getLayout()) - info.layout = it.first; + info.layout = it.first; inputs[in.first] = info; } return inputs; } -std::map InferenceEnginePython::IENetwork::getOutputs(){ +const std::map InferenceEnginePython::IENetwork::getOutputs() { std::map outputs; const InferenceEngine::OutputsDataMap &outputsInfo = actual.getOutputsInfo(); - for (auto & out : outputsInfo){ + for (auto &out : outputsInfo) { InferenceEnginePython::OutputInfo info; info.actual = out.second; const InferenceEngine::TensorDesc &inputTensorDesc = out.second->getTensorDesc(); info.dims = inputTensorDesc.getDims(); - for (auto it : precision_map ) + for (auto it : precision_map) if (it.second == out.second->getPrecision()) - info.precision = it.first; - for (auto it : layout_map ) + info.precision = it.first; + for (auto it : layout_map) if (it.second == out.second->getLayout()) - info.layout = it.first; + info.layout = it.first; outputs[out.first] = info; } return outputs; } -void InferenceEnginePython::IENetwork::addOutputs(const std::vector & out_layers, const std::string &precision) -{ - - for (auto && l : out_layers) - { +void +InferenceEnginePython::IENetwork::addOutputs(const std::vector &out_layers, const std::string &precision) { + for (auto &&l : out_layers) { InferenceEngine::OutputsDataMap outputsDataMap = actual.getOutputsInfo(); - if (outputsDataMap.find(l) != outputsDataMap.end()) - { + if (outputsDataMap.find(l) != outputsDataMap.end()) { continue; } InferenceEngine::CNNLayerPtr cnnLayer = actual.getLayerByName(l.c_str()); std::vector outData = cnnLayer->outData; if (outData.size() != 1) { - std::cout << "Layer " << l << " has " << outData.size() << " output blobs and can not be set as output." << std::endl; + std::cout << "Layer " << l << " has " << outData.size() << " output blobs and can not be set as output." + << std::endl; continue; } actual.addOutput(l); @@ -155,29 +168,59 @@ void InferenceEnginePython::IENetwork::addOutputs(const std::vector } } -void InferenceEnginePython::IENetwork::setBatch(const size_t size) -{ +void InferenceEnginePython::IENetwork::setBatch(const size_t size) { actual.setBatchSize(size); } -void InferenceEnginePython::IENetwork::reshape(const std::map> & input_shapes){ + +void InferenceEnginePython::IENetwork::reshape(const std::map> &input_shapes) { actual.reshape(input_shapes); } -void InferenceEnginePython::InputInfo::setPrecision(std::string precision){ +const std::map>> InferenceEnginePython::IENetwork::getStats() { + InferenceEngine::ICNNNetworkStats *pstats = nullptr; + InferenceEngine::ResponseDesc response; + IE_CHECK_CALL(((InferenceEngine::ICNNNetwork &) actual).getStats(&pstats, &response)); + auto statsMap = pstats->getNodesStats(); + std::map>> map; + for (const auto &it : statsMap) { + std::map> stats; + stats.emplace("min", it.second->_minOutputs); + stats.emplace("max", it.second->_maxOutputs); + map.emplace(it.first, stats); + } + return map; +} + +void +InferenceEnginePython::IENetwork::setStats( + const std::map>> &stats) { + InferenceEngine::ICNNNetworkStats *pstats = nullptr; + InferenceEngine::ResponseDesc response; + IE_CHECK_CALL(((InferenceEngine::ICNNNetwork &) actual).getStats(&pstats, &response)); + std::map newNetNodesStats; + for (const auto &it : stats) { + InferenceEngine::NetworkNodeStatsPtr nodeStats = InferenceEngine::NetworkNodeStatsPtr( + new InferenceEngine::NetworkNodeStats()); + newNetNodesStats.emplace(it.first, nodeStats); + nodeStats->_minOutputs = it.second.at("min"); + nodeStats->_maxOutputs = it.second.at("max"); + } + pstats->setNodesStats(newNetNodesStats); +} + +void InferenceEnginePython::InputInfo::setPrecision(std::string precision) { actual.setPrecision(precision_map[precision]); } -void InferenceEnginePython::InputInfo::setLayout(std::string layout){ +void InferenceEnginePython::InputInfo::setLayout(std::string layout) { actual.setLayout(layout_map[layout]); } -void InferenceEnginePython::OutputInfo::setPrecision(std::string precision){ +void InferenceEnginePython::OutputInfo::setPrecision(std::string precision) { actual->setPrecision(precision_map[precision]); } -InferenceEnginePython::IEPlugin::IEPlugin(const std::string &device, const std::vector &plugin_dirs) -{ - +InferenceEnginePython::IEPlugin::IEPlugin(const std::string &device, const std::vector &plugin_dirs) { InferenceEngine::PluginDispatcher dispatcher{plugin_dirs}; actual = dispatcher.getPluginByDevice(device); const InferenceEngine::Version *pluginVersion; @@ -188,65 +231,63 @@ InferenceEnginePython::IEPlugin::IEPlugin(const std::string &device, const std:: device_name = device; } -void InferenceEnginePython::IEPlugin::setInitialAffinity(InferenceEnginePython::IENetwork &net) -{ +void InferenceEnginePython::IEPlugin::setInitialAffinity(const InferenceEnginePython::IENetwork &net) { InferenceEngine::HeteroPluginPtr hetero_plugin(actual); InferenceEngine::ResponseDesc response; auto &network = net.actual; IE_CHECK_CALL(hetero_plugin->SetAffinity(network, {}, &response)); } -std::set InferenceEnginePython::IEPlugin::queryNetwork(InferenceEnginePython::IENetwork &net) -{ - InferenceEngine::CNNNetwork &network = net.actual; + +std::set InferenceEnginePython::IEPlugin::queryNetwork(const InferenceEnginePython::IENetwork &net) { + const InferenceEngine::CNNNetwork &network = net.actual; InferenceEngine::QueryNetworkResult queryRes; actual->QueryNetwork(network, queryRes); return queryRes.supportedLayers; } -void InferenceEnginePython::IENetLayer::setAffinity(const std::string & target_affinity){ +void InferenceEnginePython::IENetLayer::setAffinity(const std::string &target_affinity) { layer_ptr->affinity = target_affinity; } -void InferenceEnginePython::IENetLayer::setParams(const std::map & params_map){ +void InferenceEnginePython::IENetLayer::setParams(const std::map ¶ms_map) { layer_ptr->params = params_map; } -std::map InferenceEnginePython::IENetLayer::getWeights(){ +std::map InferenceEnginePython::IENetLayer::getWeights() { auto w_layer = std::dynamic_pointer_cast(layer_ptr); // IF current layer is weightable gather weights and biases from casted WeightableLayer and all other blobs // considered as custom and gathered from blobs field pf CNNLayer. std::map weights; - if (w_layer != nullptr){ - if (w_layer->_weights != nullptr){ + if (w_layer != nullptr) { + if (w_layer->_weights != nullptr) { weights["weights"] = w_layer->_weights; } - if (w_layer->_biases != nullptr){ + if (w_layer->_biases != nullptr) { weights["biases"] = w_layer->_biases; } - for (auto it : w_layer->blobs){ - if (it.first == "weights" || it.first == "biases"){ + for (auto it : w_layer->blobs) { + if (it.first == "weights" || it.first == "biases") { continue; } weights[it.first] = it.second; } - } - // Otherwise all layer's blobs are considered as custom and gathered from CNNLayer - else { + } else { + // Otherwise all layer's blobs are considered as custom and gathered from CNNLayer std::map map_placeholder; - weights = map_placeholder; // If layer has no blobs it should not be missed from weights map - for (auto it : layer_ptr->blobs){ + weights = map_placeholder; // If layer has no blobs it should not be missed from weights map + for (auto it : layer_ptr->blobs) { weights[it.first] = it.second; } } return weights; } -void InferenceEnginePython::IENetLayer::setPrecision(std::string precision){ +void InferenceEnginePython::IENetLayer::setPrecision(std::string precision) { layer_ptr->precision = precision_map[precision]; } -void InferenceEnginePython::IEPlugin::addCpuExtension(const std::string &extension_path) -{ + +void InferenceEnginePython::IEPlugin::addCpuExtension(const std::string &extension_path) { InferenceEngine::ResponseDesc response; auto extension_ptr = InferenceEngine::make_so_pointer(extension_path); auto extension = std::dynamic_pointer_cast(extension_ptr); @@ -254,78 +295,49 @@ void InferenceEnginePython::IEPlugin::addCpuExtension(const std::string &extensi } std::unique_ptr -InferenceEnginePython::IEPlugin::load(InferenceEnginePython::IENetwork &net, +InferenceEnginePython::IEPlugin::load(const InferenceEnginePython::IENetwork &net, int num_requests, - const std::map &config) -{ + const std::map &config) { InferenceEngine::ResponseDesc response; - auto exec_network = InferenceEnginePython::make_unique(net.name, num_requests); + auto exec_network = InferenceEnginePython::make_unique(net.name, + num_requests); IE_CHECK_CALL(actual->LoadNetwork(exec_network->actual, net.actual, config, &response)) - const InferenceEngine::InputsDataMap &inputs_info = net.actual.getInputsInfo(); - const InferenceEngine::OutputsDataMap &outputs_info = net.actual.getOutputsInfo(); - for (size_t i = 0; i < num_requests; ++i) { InferRequestWrap &infer_request = exec_network->infer_requests[i]; IE_CHECK_CALL(exec_network->actual->CreateInferRequest(infer_request.request_ptr, &response)) - - for (const auto& input : inputs_info) { - infer_request.inputs[input.first] = nullptr; - infer_request.request_ptr->GetBlob(input.first.c_str(), infer_request.inputs[input.first], &response); - } - for (const auto& output : outputs_info) { - infer_request.request_ptr->GetBlob(output.first.c_str(), infer_request.outputs[output.first], &response); - } } return exec_network; } -void InferenceEnginePython::IEPlugin::setConfig(const std::map & config) { +void InferenceEnginePython::IEPlugin::setConfig(const std::map &config) { InferenceEngine::ResponseDesc response; IE_CHECK_CALL(actual->SetConfig(config, &response)) } InferenceEnginePython::IEExecNetwork::IEExecNetwork(const std::string &name, size_t num_requests) : - infer_requests(num_requests), name(name) -{ + infer_requests(num_requests), name(name) { } -void InferenceEnginePython::IEExecNetwork::infer() -{ +void InferenceEnginePython::IEExecNetwork::infer() { InferenceEngine::ResponseDesc response; InferRequestWrap &request = infer_requests[0]; request.request_ptr->Infer(&response); } -InferenceEngine::Blob::Ptr &InferenceEnginePython::InferRequestWrap::getInputBlob(const std::string &blob_name) +void InferenceEnginePython::InferRequestWrap::getBlobPtr(const std::string &blob_name, InferenceEngine::Blob::Ptr &blob_ptr) { - return inputs.at(blob_name); -} - -InferenceEngine::Blob::Ptr &InferenceEnginePython::InferRequestWrap::getOutputBlob(const std::string &blob_name) -{ - return outputs.at(blob_name); + InferenceEngine::ResponseDesc response; + IE_CHECK_CALL(request_ptr->GetBlob(blob_name.c_str(), blob_ptr, &response)); } -std::vector InferenceEnginePython::InferRequestWrap::getInputsList() { - std::vector inputs_list; - inputs_list.reserve(inputs.size()); - std::transform(inputs.begin(), inputs.end(), std::back_inserter(inputs_list), [] (InferenceEngine::BlobMap::value_type it) -> std::string { - return it.first; - }); - return inputs_list; -} -std::vector InferenceEnginePython::InferRequestWrap::getOutputsList() { - std::vector outputs_list; - outputs_list.reserve(inputs.size()); - std::transform(outputs.begin(), outputs.end(), std::back_inserter(outputs_list), [] (InferenceEngine::BlobMap::value_type it) -> std::string { - return it.first; - }); - return outputs_list; +void InferenceEnginePython::InferRequestWrap::setBatch(int size) { + InferenceEngine::ResponseDesc response; + IE_CHECK_CALL(request_ptr->SetBatch(size, &response)); } void InferenceEnginePython::InferRequestWrap::infer() { @@ -344,13 +356,14 @@ int InferenceEnginePython::InferRequestWrap::wait(int64_t timeout) { return static_cast(code); } -std::map InferenceEnginePython::InferRequestWrap::getPerformanceCounts(){ +std::map +InferenceEnginePython::InferRequestWrap::getPerformanceCounts() { std::map perf_counts; InferenceEngine::ResponseDesc response; request_ptr->GetPerformanceCounts(perf_counts, &response); std::map perf_map; - for (auto it : perf_counts){ + for (auto it : perf_counts) { InferenceEnginePython::ProfileInfo profile_info; switch (it.second.status) { case InferenceEngine::InferenceEngineProfileInfo::EXECUTED: diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.hpp b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.hpp new file mode 100644 index 00000000000000..7bb2dd37a27068 --- /dev/null +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.hpp @@ -0,0 +1,174 @@ +// Copyright (c) 2018 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once + +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +namespace InferenceEnginePython { +struct IENetLayer { + InferenceEngine::CNNLayerPtr layer_ptr; + InferenceEngine::CNNNetwork network_ptr; + std::string name; + std::string type; + std::string precision; + std::string shape; + std::string layout; + std::vector children; + std::vector parents; + std::string affinity; + std::map params; + + void setAffinity(const std::string &target_affinity); + + void setParams(const std::map ¶ms_map); + + std::map getWeights(); + + void setPrecision(std::string precision); +}; + +struct InputInfo { + InferenceEngine::InputInfo actual; + std::vector dims; + std::string precision; + std::string layout; + + void setPrecision(std::string precision); + + void setLayout(std::string layout); +}; + +struct OutputInfo { + InferenceEngine::DataPtr actual; + std::vector dims; + std::string precision; + std::string layout; + + void setPrecision(std::string precision); +}; + +struct ProfileInfo { + std::string status; + std::string exec_type; + std::string layer_type; + int64_t real_time; + int64_t cpu_time; + unsigned execution_index; +}; + +struct IENetwork { + InferenceEngine::CNNNetwork actual; + std::string name; + std::size_t batch_size; + + void setBatch(const size_t size); + + void addOutputs(const std::vector &out_layers, const std::string &precision); + + const std::vector> getLayers(); + + const std::map getInputs(); + + const std::map getOutputs(); + + void reshape(const std::map> &input_shapes); + + void serialize(const std::string &path_to_xml, const std::string &path_to_bin); + + void setStats(const std::map>> &stats); + + const std::map>> getStats(); + + IENetwork(const std::string &model, const std::string &weights); + + IENetwork() = default; +}; + +struct InferRequestWrap { + InferenceEngine::IInferRequest::Ptr request_ptr; + + void infer(); + + void infer_async(); + + int wait(int64_t timeout); + + void getBlobPtr(const std::string &blob_name, InferenceEngine::Blob::Ptr &blob_ptr); + + void setBatch(int size); + + std::map getPerformanceCounts(); +}; + + +struct IEExecNetwork { + InferenceEngine::IExecutableNetwork::Ptr actual; + std::vector infer_requests; + std::string name; + + IEExecNetwork(const std::string &name, size_t num_requests); + + void infer(); +}; + + +struct IEPlugin { + std::unique_ptr load(const InferenceEnginePython::IENetwork &net, + int num_requests, + const std::map &config); + + std::string device_name; + std::string version; + + void setConfig(const std::map &); + + void addCpuExtension(const std::string &extension_path); + + void setInitialAffinity(const InferenceEnginePython::IENetwork &net); + + IEPlugin(const std::string &device, const std::vector &plugin_dirs); + + IEPlugin() = default; + + std::set queryNetwork(const InferenceEnginePython::IENetwork &net); + + InferenceEngine::InferenceEnginePluginPtr actual; +}; + +template +T *get_buffer(InferenceEngine::Blob &blob) { + return blob.buffer().as(); +} + +template +std::unique_ptr make_unique(Args &&... args) { + return std::unique_ptr(new T(std::forward(args)...)); +} + +std::string get_version(); +}; // namespace InferenceEnginePython diff --git a/inference-engine/ie_bridges/python/inference_engine/ie_api_impl_defs.pxd b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl_defs.pxd similarity index 75% rename from inference-engine/ie_bridges/python/inference_engine/ie_api_impl_defs.pxd rename to inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl_defs.pxd index ea5e2bb60bd954..78f2a62a0b8607 100644 --- a/inference-engine/ie_bridges/python/inference_engine/ie_api_impl_defs.pxd +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl_defs.pxd @@ -1,8 +1,3 @@ -# Copyright (C) 2018 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 -# - from libc.stddef cimport size_t from libcpp.string cimport string from libcpp.vector cimport vector @@ -10,7 +5,6 @@ from libcpp.map cimport map from libcpp.set cimport set from libcpp.pair cimport pair from libcpp.memory cimport unique_ptr, shared_ptr -from libcpp cimport bool from libc.stdint cimport int64_t @@ -28,7 +22,7 @@ cdef extern from "" namespace "InferenceEngine": size_t element_size() const cdef cppclass Precision: - const char* name() const + const char*name() const cdef extern from "ie_api_impl.hpp" namespace "InferenceEnginePython": @@ -37,9 +31,11 @@ cdef extern from "ie_api_impl.hpp" namespace "InferenceEnginePython": string type string precision string affinity + string shape + string layout + vector[string] children + vector[string] parents map[string, string] params - # map[string, BlobInfo] blob_info - # map[string, Blob.Ptr] weights; void setAffinity(const string & target_affinity) except + void setParams(const map[string, string] & params_map) except + map[string, Blob.Ptr] getWeights() except + @@ -58,7 +54,6 @@ cdef extern from "ie_api_impl.hpp" namespace "InferenceEnginePython": string layout void setPrecision(string precision) - cdef cppclass ProfileInfo: string status string exec_type @@ -68,51 +63,50 @@ cdef extern from "ie_api_impl.hpp" namespace "InferenceEnginePython": unsigned int execution_index cdef cppclass WeightsInfo: - Blob.Ptr &weights; - Blob.Ptr &biases; + Blob.Ptr & weights; + Blob.Ptr & biases; map[string, Blob.Ptr] custom_blobs; - cdef cppclass IEExecNetwork: vector[InferRequestWrap] infer_requests cdef cppclass IENetwork: + IENetwork() except + + IENetwork(const string &, const string &) except + string name size_t batch_size map[string, vector[size_t]] inputs - map[string, IENetLayer] getLayers() except + + const vector[pair[string, IENetLayer]] getLayers() except + map[string, InputInfo] getInputs() except + map[string, OutputInfo] getOutputs() except + void addOutputs(vector[string] &, string &) except + - void setAffinity(map[string, string] &types_affinity_map, map[string, string] &layers_affinity_map) except + + void setAffinity(map[string, string] & types_affinity_map, map[string, string] & layers_affinity_map) except + void setBatch(size_t size) except + void setLayerParams(map[string, map[string, string]] params_map) except + + void serialize(const string& path_to_xml, const string& path_to_bin) except + void reshape(map[string, vector[size_t]] input_shapes) except + + void setStats(map[string, map[string, vector[float]]] & stats) except + + map[string, map[string, vector[float]]] getStats() except + cdef cppclass IEPlugin: IEPlugin() except + IEPlugin(const string &, const vector[string] &) except + unique_ptr[IEExecNetwork] load(IENetwork & net, int num_requests, const map[string, string]& config) except + void addCpuExtension(const string &) except + - void setConfig(const map[string, string]&) except + + void setConfig(const map[string, string] &) except + void setInitialAffinity(IENetwork & net) except + - set[string] queryNetwork(const IENetwork &net) except + + set[string] queryNetwork(const IENetwork & net) except + string device_name string version - cdef cppclass IENetReader: - IENetwork read(const string &, const string &) except + - cdef cppclass InferRequestWrap: - vector[string] getInputsList() except + - vector[string] getOutputsList() except + - Blob.Ptr& getOutputBlob(const string &blob_name) except + - Blob.Ptr& getInputBlob(const string &blob_name) except + + void getBlobPtr(const string &blob_name, Blob.Ptr &blob_ptr) map[string, ProfileInfo] getPerformanceCounts() except + void infer() except + void infer_async() except + int wait(int64_t timeout) except + + void setBatch(int size) except + - cdef T* get_buffer[T](Blob &) + cdef T*get_buffer[T](Blob &) cdef string get_version() diff --git a/inference-engine/include/builders/ie_argmax_layer.hpp b/inference-engine/include/builders/ie_argmax_layer.hpp new file mode 100644 index 00000000000000..9ac1b5d521b761 --- /dev/null +++ b/inference-engine/include/builders/ie_argmax_layer.hpp @@ -0,0 +1,83 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for ArgMax layer + */ +class INFERENCE_ENGINE_API_CLASS(ArgMaxLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ArgMaxLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ArgMaxLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ArgMaxLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + ArgMaxLayer& setPort(const Port& port); + /** + * @brief Returns axis + * @return Axis + */ + int getAxis() const; + /** + * @brief Sets axis + * @param axis Axis + * @return reference to layer builder + */ + ArgMaxLayer& setAxis(int axis); + /** + * @brief Returns top K + * @return Top K + */ + size_t getTopK() const; + /** + * @brief Sets top K + * @param topK Top K + * @return reference to layer builder + */ + ArgMaxLayer& setTopK(size_t topK); + /** + * @brief Returns output maximum value + * @return Output maximum value + */ + size_t getOutMaxVal() const; + /** + * @brief Sets output maximum value + * @param size Maximum value + * @return reference to layer builder + */ + ArgMaxLayer& setOutMaxVal(size_t size); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_batch_normalization_layer.hpp b/inference-engine/include/builders/ie_batch_normalization_layer.hpp new file mode 100644 index 00000000000000..dbdf538c80f833 --- /dev/null +++ b/inference-engine/include/builders/ie_batch_normalization_layer.hpp @@ -0,0 +1,81 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for BatchNormalization layer + */ +class INFERENCE_ENGINE_API_CLASS(BatchNormalizationLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit BatchNormalizationLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit BatchNormalizationLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + BatchNormalizationLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + BatchNormalizationLayer& setPort(const Port &port); + + /** + * @brief Sets weights for layer + * @param weights Constant blob with weights + * @return reference to layer builder + */ + BatchNormalizationLayer& setWeights(const Blob::CPtr& weights); + /** + * @brief Sets biases for layer + * @param biases Constant blob with biases + * @return reference to layer builder + */ + BatchNormalizationLayer& setBiases(const Blob::CPtr& biases); + + /** + * @brief Returns epsilon + * @return Epsilon + */ + float getEpsilon() const; + /** + * @brief Sets epsilon + * @param eps Epsilon + * @return reference to layer builder + */ + BatchNormalizationLayer& setEpsilon(float eps); + + /** + * @brief Validates layer before creation + * @param layer generic layer builder + */ + static void validate(const Layer& layer); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_clamp_layer.hpp b/inference-engine/include/builders/ie_clamp_layer.hpp new file mode 100644 index 00000000000000..a5759623072ee6 --- /dev/null +++ b/inference-engine/include/builders/ie_clamp_layer.hpp @@ -0,0 +1,72 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Clamp layer + */ +class INFERENCE_ENGINE_API_CLASS(ClampLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ClampLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ClampLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ClampLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + ClampLayer& setPort(const Port& port); + /** + * @brief Returns minimum value + * @return minimum value + */ + float getMinValue() const; + /** + * @brief Sets minimum value + * @param minValue Minimum value + * @return reference to layer builder + */ + ClampLayer& setMinValue(float minValue); + /** + * @brief Returns maximum value + * @return Maximum value + */ + float getMaxValue() const; + /** + * @brief Sets maximum value + * @param maxValue Maximum value + * @return reference to layer builder + */ + ClampLayer& setMaxValue(float maxValue); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_concat_layer.hpp b/inference-engine/include/builders/ie_concat_layer.hpp new file mode 100644 index 00000000000000..96cd23b9728060 --- /dev/null +++ b/inference-engine/include/builders/ie_concat_layer.hpp @@ -0,0 +1,76 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Concat layer + */ +class INFERENCE_ENGINE_API_CLASS(ConcatLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ConcatLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ConcatLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ConcatLayer& setName(const std::string& name); + + /** + * @brief Returns vector with input ports + * @return vector with ports + */ + const std::vector& getInputPorts() const; + /** + * @brief Sets input ports + * @param ports Vector of input ports + * @return reference to layer builder + */ + ConcatLayer& setInputPorts(const std::vector& ports); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + ConcatLayer& setOutputPort(const Port& port); + /** + * @brief Returns axis + * @return Axis + */ + size_t getAxis() const; + /** + * @brief Sets axis + * @param axis Axis + * @return reference to layer builder + */ + ConcatLayer& setAxis(size_t axis); + +private: + size_t axis; +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_const_layer.hpp b/inference-engine/include/builders/ie_const_layer.hpp new file mode 100644 index 00000000000000..db0b31a20ba9f8 --- /dev/null +++ b/inference-engine/include/builders/ie_const_layer.hpp @@ -0,0 +1,57 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Const layer + */ +class INFERENCE_ENGINE_API_CLASS(ConstLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ConstLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ConstLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ConstLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + ConstLayer& setPort(const Port& port); + + /** + * @brief Sets constant data + * @param data constant blob with data + * @return reference to layer builder + */ + ConstLayer& setData(const Blob::CPtr& data); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_convolution_layer.hpp b/inference-engine/include/builders/ie_convolution_layer.hpp new file mode 100644 index 00000000000000..a577d5e87993d3 --- /dev/null +++ b/inference-engine/include/builders/ie_convolution_layer.hpp @@ -0,0 +1,163 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for ArgMax layer + */ +class INFERENCE_ENGINE_API_CLASS(ConvolutionLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ConvolutionLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ConvolutionLayer(Layer& genLayer); + /** + * @brief Operator creates generic layer builder + * @return Generic layer builder + */ + operator Layer() const override; + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ConvolutionLayer& setName(const std::string& name); + + /** + * @brief Sets weights for layer + * @param weights Constant blob with weights + * @return reference to layer builder + */ + ConvolutionLayer& setWeights(const Blob::CPtr& weights); + /** + * @brief Sets biases for layer + * @param biases Constant blob with biases + * @return reference to layer builder + */ + ConvolutionLayer& setBiases(const Blob::CPtr& biases); + + /** + * @brief Returns input port + * @return Input port + */ + const Port& getInputPort() const; + /** + * @brief Sets input port + * @param port Input port + * @return reference to layer builder + */ + ConvolutionLayer& setInputPort(const Port& port); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + ConvolutionLayer& setOutputPort(const Port& port); + /** + * @brief Returns kernel size + * @return Kernel size + */ + const std::vector getKernel() const; + /** + * @brief Sets kernel size + * @param kernel Kernel size + * @return reference to layer builder + */ + ConvolutionLayer& setKernel(const std::vector& kernel); + /** + * @brief Returns vector of strides + * @return vector of strides + */ + const std::vector getStrides() const; + /** + * @brief Sets strides + * @param strides vector of strides + * @return reference to layer builder + */ + ConvolutionLayer& setStrides(const std::vector& strides); + /** + * @brief Returns dilations + * @return vector of dilations + */ + const std::vector getDilation() const; + /** + * @brief Sets dilations + * @param dilation Vector of dilations + * @return reference to layer builder + */ + ConvolutionLayer& setDilation(const std::vector& dilation); + /** + * @brief Returns begin paddings + * @return vector of paddings + */ + const std::vector getPaddingsBegin() const; + /** + * @brief Sets begin paddings + * @param paddings Vector of paddings + * @return reference to layer builder + */ + ConvolutionLayer& setPaddingsBegin(const std::vector& paddings); + /** + * @brief Return end paddings + * @return Vector of paddings + */ + const std::vector getPaddingsEnd() const; + /** + * @brief Sets end paddings + * @param paddings Vector of paddings + * @return reference to layer builder + */ + ConvolutionLayer& setPaddingsEnd(const std::vector& paddings); + /** + * @brief Returns group + * @return Group + */ + size_t getGroup() const; + /** + * @brief Sets group + * @param group Group + * @return reference to layer builder + */ + ConvolutionLayer& setGroup(size_t group); + /** + * @brief Return output depth + * @return Output depth + */ + size_t getOutDepth() const; + /** + * @brief Sets output depth + * @param outDepth Output depth + * @return reference to layer builder + */ + ConvolutionLayer& setOutDepth(size_t outDepth); + + /** + * @brief Validates layer before creation + * @param layer generic layer builder + */ + static void validate(const Layer& layer); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_crop_layer.hpp b/inference-engine/include/builders/ie_crop_layer.hpp new file mode 100644 index 00000000000000..7bfbe94d487c53 --- /dev/null +++ b/inference-engine/include/builders/ie_crop_layer.hpp @@ -0,0 +1,90 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Crop layer + */ +class INFERENCE_ENGINE_API_CLASS(CropLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit CropLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit CropLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + CropLayer& setName(const std::string& name); + + /** + * @brief Returns input ports + * @return Vector of input ports + */ + const std::vector& getInputPorts() const; + /** + * @brief Sets input ports + * @param port Vector of input ports + * @return reference to layer builder + */ + CropLayer& setInputPorts(const std::vector& ports); + /** + * @brief Return output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + CropLayer& setOutputPort(const Port& port); + /** + * @brief Returns axis + * @return Vector of axis + */ + const std::vector getAxis() const; + /** + * @brief Sets axis + * @param axis Vector of axis + * @return reference to layer builder + */ + CropLayer& setAxis(const std::vector& axis); + /** + * @brief Returns offsets + * @return Vector of offsets + */ + const std::vector getOffset() const; + /** + * @brief Sets offsets + * @param offsets Vector of offsets + * @return reference to layer builder + */ + CropLayer& setOffset(const std::vector& offsets); + + /** + * @brief Validates layer before creation + * @param layer generic layer builder + */ + static void validate(const Layer& layer); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_ctc_greedy_decoder_layer.hpp b/inference-engine/include/builders/ie_ctc_greedy_decoder_layer.hpp new file mode 100644 index 00000000000000..78cdbd357ef869 --- /dev/null +++ b/inference-engine/include/builders/ie_ctc_greedy_decoder_layer.hpp @@ -0,0 +1,74 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for CTCGreedyDecoder layer + */ +class INFERENCE_ENGINE_API_CLASS(CTCGreedyDecoderLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit CTCGreedyDecoderLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit CTCGreedyDecoderLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + CTCGreedyDecoderLayer& setName(const std::string& name); + + /** + * @brief Returns input ports + * @return Vector of input ports + */ + const std::vector& getInputPorts() const; + /** + * @brief Sets input ports + * @param ports Vector of input ports + * @return reference to layer builder + */ + CTCGreedyDecoderLayer& setInputPorts(const std::vector& ports); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + CTCGreedyDecoderLayer& setOutputPort(const Port& port); + /** + * @brief Returns CTCMergeRepeated + * @return true if merge repeated + */ + bool getCTCMergeRepeated() const; + /** + * @brief Sets CTCMergeRepeated + * @param flag bool value + * @return reference to layer builder + */ + CTCGreedyDecoderLayer& setCTCMergeRepeated(bool flag); +}; + +} // namespace Builder +} // namespace InferenceEngine + diff --git a/inference-engine/include/builders/ie_deconvolution_layer.hpp b/inference-engine/include/builders/ie_deconvolution_layer.hpp new file mode 100644 index 00000000000000..c8d39250b1e411 --- /dev/null +++ b/inference-engine/include/builders/ie_deconvolution_layer.hpp @@ -0,0 +1,32 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Deconvolution layer + */ +class INFERENCE_ENGINE_API_CLASS(DeconvolutionLayer): public ConvolutionLayer { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit DeconvolutionLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit DeconvolutionLayer(Layer& genLayer); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_detection_output_layer.hpp b/inference-engine/include/builders/ie_detection_output_layer.hpp new file mode 100644 index 00000000000000..e4ee5422302734 --- /dev/null +++ b/inference-engine/include/builders/ie_detection_output_layer.hpp @@ -0,0 +1,183 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for ArgMax layer + */ +class INFERENCE_ENGINE_API_CLASS(DetectionOutputLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit DetectionOutputLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit DetectionOutputLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + DetectionOutputLayer& setName(const std::string& name); + + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + DetectionOutputLayer& setOutputPort(const Port& port); + /** + * @brief Returns input ports + * @return Vector of input ports + */ + const std::vector& getInputPorts() const; + /** + * @brief Sets input ports + * @param ports Vector of input ports + * @return reference to layer builder + */ + DetectionOutputLayer& setInputPorts(const std::vector& ports); + /** + * @brief Returns number of classes + * @return Number of classes + */ + size_t getNumClasses() const; + /** + * @brief Sets number of classes to be predict + * @param num Number of classes + * @return reference to layer builder + */ + DetectionOutputLayer& setNumClasses(size_t num); + /** + * @brief Returns background label ID + * @return Background ID + */ + int getBackgroudLabelId() const; + /** + * @brief Sets background label ID + * @param labelId Background ID if there is no background class, set it to -1. + * @return reference to layer builder + */ + DetectionOutputLayer& setBackgroudLabelId(int labelId); + /** + * @brief Returns maximum number of results to be kept on NMS stage + * @return Top K + */ + int getTopK() const; + /** + * @brief Sets maximum number of results to be kept on NMS stage + * @param topK Top K + * @return reference to layer builder + */ + DetectionOutputLayer& setTopK(int topK); + /** + * @brief Returns number of total boxes to be kept per image after NMS step + * @return Keep top K + */ + int getKeepTopK() const; + /** + * @brief Sets number of total boxes to be kept per image after NMS step + * @param topK Keep top K + * @return reference to layer builder + */ + DetectionOutputLayer& setKeepTopK(int topK); + /** + * @brief Returns number of oriented classes + * @return Number of oriented classes + */ + int getNumOrientClasses() const; + /** + * @brief Sets number of oriented classes + * @param numClasses Number of classes + * @return reference to layer builder + */ + DetectionOutputLayer& setNumOrientClasses(int numClasses); + /** + * @brief Returns type of coding method for bounding boxes + * @return String with code type + */ + std::string getCodeType() const; + /** + * @brief Sets type of coding method for bounding boxes + * @param type Type + * @return reference to layer builder + */ + DetectionOutputLayer& setCodeType(std::string type); + /** + * @brief Returns interpolate orientation + * @return Interpolate orientation + */ + int getInterpolateOrientation() const; + /** + * @brief Sets interpolate orientation + * @param orient Orientation + * @return reference to layer builder + */ + DetectionOutputLayer& setInterpolateOrientation(int orient); + /** + * @brief Returns threshold to be used in NMS stage + * @return Threshold + */ + float getNMSThreshold() const; + /** + * @brief Sets threshold to be used in NMS stage + * @param threshold NMS threshold + * @return reference to layer builder + */ + DetectionOutputLayer& setNMSThreshold(float threshold); + /** + * @brief Returns confidence threshold + * @return Threshold + */ + float getConfidenceThreshold() const; + /** + * @brief Sets confidence threshold + * @param threshold Threshold + * @return reference to layer builder + */ + DetectionOutputLayer& setConfidenceThreshold(float threshold); + /** + * @brief Returns share location + * @return true if bounding boxes are shared among different classes + */ + bool getShareLocation() const; + /** + * @brief Sets share location + * @param flag true if bounding boxes are shared among different classes + * @return reference to layer builder + */ + DetectionOutputLayer& setShareLocation(bool flag); + /** + * @brief Returns encoded settings + * @return true if variance is encoded in target + */ + bool getVariantEncodedInTarget() const; + /** + * @brief Sets encoded settings + * @param flag true if variance is encoded in target + * @return reference to layer builder + */ + DetectionOutputLayer& setVariantEncodedInTarget(bool flag); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_eltwise_layer.hpp b/inference-engine/include/builders/ie_eltwise_layer.hpp new file mode 100644 index 00000000000000..ffdacba156e7a5 --- /dev/null +++ b/inference-engine/include/builders/ie_eltwise_layer.hpp @@ -0,0 +1,96 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Eltwise layer + */ +class INFERENCE_ENGINE_API_CLASS(EltwiseLayer): public LayerFragment { +public: + /** + * @brief The enum defines all Eltwise types + */ + enum EltwiseType { + SUM = 1, + MAX, + MUL + }; + + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit EltwiseLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit EltwiseLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + EltwiseLayer& setName(const std::string& name); + + /** + * @brief Returns input ports + * @return Vector of input ports + */ + const std::vector& getInputPorts() const; + /** + * @brief Sets input ports + * @param ports Vector of input ports + * @return reference to layer builder + */ + EltwiseLayer& setInputPorts(const std::vector& ports); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + EltwiseLayer& setOutputPort(const Port& port); + /** + * @brief Returns eltwise type + * @return Eltwise type + */ + EltwiseType getEltwiseType() const; + /** + * @brief Sets eltwise type + * @param type Eltwise type + * @return reference to layer builder + */ + EltwiseLayer& setEltwiseType(EltwiseType type); + /** + * @brief Returns eltwise scales + * @return Vector of scales + */ + const std::vector getScales() const; + /** + * @brief Sets eltwise scales + * @param scales Vector of scales + * @return reference to layer builder + */ + EltwiseLayer& setScales(const std::vector& scales); + +private: + EltwiseType type; +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_elu_layer.hpp b/inference-engine/include/builders/ie_elu_layer.hpp new file mode 100644 index 00000000000000..ad5b3b48b660d1 --- /dev/null +++ b/inference-engine/include/builders/ie_elu_layer.hpp @@ -0,0 +1,62 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for ELU layer + */ +class INFERENCE_ENGINE_API_CLASS(ELULayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ELULayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ELULayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ELULayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + ELULayer& setPort(const Port& port); + + /** + * @brief Returns alpha + * @return alpha + */ + float getAlpha() const; + /** + * @brief Sets alpha + * @param alpha Alpha + * @return reference to layer builder + */ + ELULayer& setAlpha(float alpha); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_fully_connected_layer.hpp b/inference-engine/include/builders/ie_fully_connected_layer.hpp new file mode 100644 index 00000000000000..9b03f7ddb3d1c6 --- /dev/null +++ b/inference-engine/include/builders/ie_fully_connected_layer.hpp @@ -0,0 +1,85 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for FullyConnected layer + */ +class INFERENCE_ENGINE_API_CLASS(FullyConnectedLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit FullyConnectedLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit FullyConnectedLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + FullyConnectedLayer& setName(const std::string& name); + + /** + * @brief Sets weights for layer + * @param weights Constant blob with weights + * @return reference to layer builder + */ + FullyConnectedLayer& setWeights(const Blob::CPtr& weights); + /** + * @brief Sets biases for layer + * @param biases Constant blob with biases + * @return reference to layer builder + */ + FullyConnectedLayer& setBiases(const Blob::CPtr& biases); + + /** + * @brief Returns input port + * @return Input port + */ + const Port& getInputPort() const; + /** + * @brief Sets input port + * @param port Input port + * @return reference to layer builder + */ + FullyConnectedLayer& setInputPort(const Port& port); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + FullyConnectedLayer& setOutputPort(const Port& port); + /** + * @brief Return output size + * @return Output size + */ + size_t getOutputNum() const; + /** + * @brief Sets output size + * @param outNum Output size + * @return reference to layer builder + */ + FullyConnectedLayer& setOutputNum(size_t outNum); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_grn_layer.hpp b/inference-engine/include/builders/ie_grn_layer.hpp new file mode 100644 index 00000000000000..f06f9034baf8b4 --- /dev/null +++ b/inference-engine/include/builders/ie_grn_layer.hpp @@ -0,0 +1,61 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for ArgMax layer + */ +class INFERENCE_ENGINE_API_CLASS(GRNLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit GRNLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit GRNLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + GRNLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + GRNLayer& setPort(const Port& port); + /** + * @brief Returns beta + * @return Beta + */ + float getBeta() const; + /** + * @brief Sets beta + * @param beta Beta + * @return reference to layer builder + */ + GRNLayer& setBeta(float beta); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_input_layer.hpp b/inference-engine/include/builders/ie_input_layer.hpp new file mode 100644 index 00000000000000..5312fcd5947928 --- /dev/null +++ b/inference-engine/include/builders/ie_input_layer.hpp @@ -0,0 +1,56 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Input layer + */ +class INFERENCE_ENGINE_API_CLASS(InputLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit InputLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit InputLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + InputLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + InputLayer& setPort(const Port &port); + + /** + * @brief Validates layer before creation + * @param layer generic layer builder + */ + static void validate(const Layer& layer); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_layer_builder.hpp b/inference-engine/include/builders/ie_layer_builder.hpp new file mode 100644 index 00000000000000..47620fa6c7ef9d --- /dev/null +++ b/inference-engine/include/builders/ie_layer_builder.hpp @@ -0,0 +1,247 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include
+#include +#include +#include +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +class Layer; + +/** + * @brief This structure implements a holder for validators + */ +struct ValidatorsHolder { + /** + * @brief Caseless map connects type with validator + */ + details::caseless_map> validators; +}; + +/** + * @brief This class implements a builder for IE Layer + */ +class INFERENCE_ENGINE_API_CLASS(Layer) { +public: + /** + * @brief The constructor creates a Layer builder with layer type and layer name + * @param type Layer type + * @param name Layer name + */ + explicit Layer(const std::string& type, const std::string& name = ""); + /** + * @brief The constructor creates a Layer builder from shared pointer to ILayer + * @param layer shared pointer to ILayer + */ + explicit Layer(const ILayer::Ptr& layer); + /** + * @brief The constructor creates a Layer builder from shared pointer to constant ILayer + * @param layer shared pointer to constant ILayer + */ + explicit Layer(const ILayer::CPtr& layer); + /** + * @brief The constructor creates a Layer builder with layer ID and layer builder + * @param id Layer ID + * @param layer layer builder + */ + Layer(idx_t id, const Layer& layer); + + /** + * @brief Returns layer builder ID + * @return ID + */ + idx_t getId() const; + + /** + * @brief Returns a reference to layer type + * @return Layer type + */ + std::string& getType(); + /** + * @brief Returns a reference to constant layer type + * @return constant layer type + */ + const std::string& getType() const; + /** + * @brief Sets layer type + * @param type Layer type + * @return Reference to Layer builder + */ + Layer& setType(const std::string& type); + + /** + * @brief Returns a reference to layer name + * @return Layer name + */ + std::string& getName(); + /** + * @brief Returns a reference to constant layer name + * @return constant layer name + */ + const std::string& getName() const; + /** + * @brief Sets layer name + * @param name Layer name + * @return Reference to Layer builder + */ + Layer& setName(const std::string& name); + + /** + * @brief Returns layer subgraph + * @return shared pointer to INetwork + */ + INetwork::Ptr& getGraph(); + /** + * @brief Returns constant layer subgraph + * @return constant shared pointer to INetwork + */ + const INetwork::Ptr& getGraph() const; + /** + * @brief Sets layer subgraph + * @param graph constant shared pointer to INetwork + * @return Reference to Layer builder + */ + Layer& setGraph(const INetwork::Ptr& graph); + + /** + * @brief Returns map of parameters + * @return map of parameters + */ + std::map& getParameters(); + /** + * @brief Returns constant map of parameters + * @return constant map of parameters + */ + const std::map& getParameters() const; + /** + * @brief Sets parameters for layer + * @param params constant map of parameters + * @return Reference to Layer builder + */ + Layer& setParameters(const std::map& params); + + /** + * @brief Returns map of internal blobs + * @return map of internal blobs + */ + std::map& getConstantData(); + /** + * @brief Returns constant map of internal blobs + * @return constant map of internal blobs + */ + const std::map& getConstantData() const; + /** + * @brief Sets constant data for layer + * @param constData constant map of shared pointers to blobs + * @return Reference to Layer builder + */ + Layer& setConstantData(const std::map& constData); + /** + * @brief Sets constant data for layer + * @param constData constant map of shared pointers to constant blobs + * @return Reference to Layer builder + */ + Layer& setConstantData(const std::map& constData); + /** + * @brief Adds constant data for layer by name + * @param name Name of constant data + * @param data shared pointer to constant blob + * @return Reference to Layer builder + */ + Layer& addConstantData(const std::string& name, const Blob::CPtr& data); + + /** + * @brief Returns vector of input ports + * @return Vector of input ports + */ + std::vector& getInputPorts(); + /** + * @brief Returns constant vector of input ports + * @return constant vector of input ports + */ + const std::vector& getInputPorts() const; + /** + * @brief Sets input ports + * @param ports vector of ports + * @return Reference to Layer builder + */ + Layer& setInputPorts(const std::vector &ports); + + /** + * @brief Returns vector of output ports + * @return Vector of output ports + */ + std::vector& getOutputPorts(); + /** + * @brief Returns constant vector of output ports + * @return constant vector of output ports + */ + const std::vector& getOutputPorts() const; + /** + * @brief Sets output ports + * @param ports vector of ports + * @return Reference to Layer builder + */ + Layer& setOutputPorts(const std::vector &ports); + + /** + * @brief Validates the current builder and generates ILayer object + * @return constant shared pointer to ILayer + */ + const ILayer::Ptr build() const; + + /** + * @brief Validates layer builder + */ + void validate() const; + + /** + * @brief Registers a new validator for type + * @param type Layer type + * @param validator Layer validator + */ + static void addValidator(const std::string& type, const std::function& validator); + +private: + idx_t id; + std::string type; + std::string name; + INetwork::Ptr graph; + std::vector inPorts; + std::vector outPorts; + std::map params; + std::map constData; + + static std::shared_ptr getValidatorsHolder(); +}; + +/** + * @brief This class registers layer validators + */ +class ValidatorRegisterBase { +public: + /** + * @brief The constructor registers new layer validator + * @param type Layer type + * @param validator Layer validator + */ + explicit ValidatorRegisterBase(const std::string& type, const std::function& validator) { + InferenceEngine::Builder::Layer::addValidator(type, validator); + } +}; + +#define REG_VALIDATOR_FOR(__type, __validator) \ +static InferenceEngine::Builder::ValidatorRegisterBase _reg_##__type(#__type, __validator) + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_layer_fragment.hpp b/inference-engine/include/builders/ie_layer_fragment.hpp new file mode 100644 index 00000000000000..a9723b3c10f476 --- /dev/null +++ b/inference-engine/include/builders/ie_layer_fragment.hpp @@ -0,0 +1,76 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief This class defines the basic functional for layer builders + */ +class INFERENCE_ENGINE_API_CLASS(LayerFragment) { +public: + /** + * @brief The constructor creates layer builders with layer type and layer name + * @param type Layer type + * @param name Layer name + */ + LayerFragment(const std::string& type, const std::string& name); + /** + * @brief The constructor creates layer builders from reference to generic layer builder + * @param genLayer Generic layer builder + */ + explicit LayerFragment(Layer& genLayer); + /** + * @brief The copy constructor + * @param rval Source builder + */ + explicit LayerFragment(const LayerFragment& rval); + + /** + * @brief Copy operator for LayerFragment + * @param rval + * @return Layer builder + */ + LayerFragment& operator=(const LayerFragment& rval); + + /** + * @brief Virtual destructor + */ + virtual ~LayerFragment() = default; + + /** + * @brief The operator creates generic builder + * @return Generic builder + */ + virtual operator Layer() const; + + /** + * @brief Returns layer type + * @return Layer type + */ + const std::string& getType() const; + /** + * @brief Returns layer name + * @return Layer name + */ + const std::string& getName() const; + +protected: + const std::vector uInts2size_t(const std::vector& vector) const; + Layer& getLayer() const; + +private: + Layer layer; + Layer& refLayer; +}; + +} // namespace Builder + +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_memory_layer.hpp b/inference-engine/include/builders/ie_memory_layer.hpp new file mode 100644 index 00000000000000..b399e9501a5df2 --- /dev/null +++ b/inference-engine/include/builders/ie_memory_layer.hpp @@ -0,0 +1,94 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Memory layer + */ +class INFERENCE_ENGINE_API_CLASS(MemoryLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit MemoryLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit MemoryLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + MemoryLayer& setName(const std::string& name); + + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + MemoryLayer& setOutputPort(const Port& port); + /** + * @brief Returns input port + * @return Input port + */ + const Port& getInputPort() const; + /** + * @brief Sets input port + * @param port Input port + * @return reference to layer builder + */ + MemoryLayer& setInputPort(const Port& port); + /** + * @brief Returns memory ID + * @return String with memory ID + */ + const std::string getId() const; + /** + * @brief Sets memory ID + * @param id Memory ID + * @return reference to layer builder + */ + MemoryLayer& setId(const std::string& id); + /** + * @brief Returns the index of memory layer + * @return Index + */ + size_t getIndex() const; + /** + * @brief Sets the index of memory layer + * @param index Index equal 0 means this layer is output one. + * @return reference to layer builder + */ + MemoryLayer& setIndex(size_t index); + /** + * @brief Returns size of the group + * @return Size of the group + */ + size_t getSize() const; + /** + * @brief Sets size of the group + * @param size Size if size equals 2 means this group is a pair (only 2 is supported). + * @return reference to layer builder + */ + MemoryLayer& setSize(size_t size); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_mvn_layer.hpp b/inference-engine/include/builders/ie_mvn_layer.hpp new file mode 100644 index 00000000000000..ef92351041b7c8 --- /dev/null +++ b/inference-engine/include/builders/ie_mvn_layer.hpp @@ -0,0 +1,83 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for MVN layer + */ +class INFERENCE_ENGINE_API_CLASS(MVNLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit MVNLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit MVNLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + MVNLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + MVNLayer& setPort(const Port& port); + /** + * @brief Returns across channels value + * @return true if mean values are shared across channels + */ + bool getAcrossChannels() const; + /** + * @brief Sets across channels + * @param flag true if mean values are shared across channels + * @return reference to layer builder + */ + MVNLayer& setAcrossChannels(bool flag); + /** + * @brief Returns normalize variance + * @return true if variance normalization is performed + */ + bool getNormalize() const; + /** + * @brief Sets normalize variance + * @param flag true if variance normalization is performed + * @return reference to layer builder + */ + MVNLayer& setNormalize(bool flag); + /** + * @brief Return epsilon + * @return Epsilon + */ + float getEpsilon() const; + /** + * @brief Sets epsilon + * @param eps Epsilon + * @return reference to layer builder + */ + MVNLayer& setEpsilon(float eps); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_network_builder.hpp b/inference-engine/include/builders/ie_network_builder.hpp new file mode 100644 index 00000000000000..586a267c5e890f --- /dev/null +++ b/inference-engine/include/builders/ie_network_builder.hpp @@ -0,0 +1,185 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief This class implements a builder for IE Network + */ +class INFERENCE_ENGINE_API_CLASS(Network) { +public: + /** + * @brief A shared pointer to the Network builder + */ + using Ptr = std::shared_ptr; + + /** + * @brief The constructor creates a builder based on ICNNNetwork + * + * @param network constant reference to ICNNNetwork object + */ + explicit Network(const ICNNNetwork& network); + /** + * @brief The constructor creates a empty builder with network name + * + * @param name Network name + */ + explicit Network(const std::string& name); + /** + * @brief The constructor creates a builder based on INetwork + * + * @param network constant reference to INetwork object + */ + explicit Network(const INetwork& network); + + /** + * @brief The constructor creates a builder based on ICNNNetwork with custom Context + * + * @param network constant reference to ICNNNetwork object + */ + Network(const Context& ieContext, const ICNNNetwork& network); + /** + * @brief The constructor creates a empty builder with network name and custom Context + * + * @param name Network name + */ + Network(const Context& ieContext, const std::string& name); + /** + * @brief The constructor creates a builder based on INetwork with custom Context + * + * @param network constant reference to INetwork object + */ + Network(const Context& ieContext, const INetwork& network); + + /** + * @brief Virtual destructor + */ + virtual ~Network() = default; + + /** + * @brief Adds new layer and connects it with previous layers + * + * @param inputs Vector with PortInfo objects from previous layers + * @param layer Layer builder for new layer + * + * @return Id of new builder for the current network + */ + idx_t addLayer(const std::vector& inputs, const Layer& layer); + /** + * @brief Adds new layer + * + * @param layer Layer builder for new layer + * + * @return Id of new builder for the current network + */ + idx_t addLayer(const Layer& layer); + /** + * @brief Removes a layer by ID + * + * @param layerId Layer ID + */ + void removeLayer(idx_t layerId); + + /** + * @brief Connects two layers + * + * @param input PortInfo object from previous layer + * @param output PortInfo object from next layer + */ + void connect(const PortInfo& input, const PortInfo& output); + /** + * @brief Removes connection from the network + * + * @param connection Connection + */ + void disconnect(const Connection& connection); + + /** + * @brief Returns layer builder by ID + * + * @param layerId Layer ID + * + * @return Layer buider + */ + Layer& getLayer(idx_t layerId); + /** + * @brief Returns constant layer builder by ID + * + * @param layerId Layer ID + * + * @return constant layer builder + */ + const Layer& getLayer(idx_t layerId) const; + + /** + * @brief Returns vector of layer builders + * + * @return Vector of layer builders + */ + std::vector& getLayers(); + /** + * @brief Returns constant vector of layer builders + * + * @return constant vector of layer builders + */ + const std::vector& getLayers() const; + + /** + * @brief Returns all connections for layer + * + * @param layerId Layer ID + * + * @return Vector of connections for the current layer + */ + const std::vector getLayerConnections(idx_t layerId) const noexcept; + + /** + * @brief Builds and validate networks + * + * @return const shared pointer to INetwork + */ + const INetwork::Ptr build() const; + + /** + * @brief The operator builds network + * + * @return const shared pointer to INetwork + */ + explicit operator const INetwork::Ptr() const; + +private: + const Context ctx; + const size_t version; + std::string name; + std::vector layers; + std::vector connections; +}; + +/** + * @brief This function converts INetwork to ICNNNetwork + * + * @param network constant shared pointer to INetwork object + * @return constant shared pointer to ICNNNetwork + */ +INFERENCE_ENGINE_API_CPP(const std::shared_ptr) convertToICNNNetwork(const INetwork::Ptr& network); + +} // namespace Builder + +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_norm_layer.hpp b/inference-engine/include/builders/ie_norm_layer.hpp new file mode 100644 index 00000000000000..58d972bd199c80 --- /dev/null +++ b/inference-engine/include/builders/ie_norm_layer.hpp @@ -0,0 +1,112 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Norm layer + */ +class INFERENCE_ENGINE_API_CLASS(NormLayer): public LayerFragment { +public: + /** + * @brief The enum defines all Norm types + */ + enum NormType { + WITHIN_CHANNEL = 0, + ACROSS_CHANNELS = 1 + }; + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit NormLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit NormLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + NormLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + NormLayer& setPort(const Port& port); + /** + * @brief Returns side length of the region + * @return Size + */ + size_t getSize() const; + /** + * @brief Sets side length of the region + * @param size Size + * @return reference to layer builder + */ + NormLayer& setSize(size_t size); + /** + * @brief Returns scaling parameter for the normalizing sum + * @return Scaling parameter + */ + float getAlpha() const; + /** + * @brief Sets scaling parameter for the normalizing sum + * @param alpha Scaling parameter + * @return reference to layer builder + */ + NormLayer& setAlpha(float alpha); + /** + * @brief Returns exponent for the normalizing sum + * @return Exponent + */ + float getBeta() const; + /** + * @brief Sets exponent for the normalizing sum + * @param beta Exponent + * @return reference to layer builder + */ + NormLayer& setBeta(float beta); + /** + * @brief Returns region type + * @return true if normalizing sum is performed over adjacent channels + */ + bool getAcrossMaps() const; + /** + * @brief Sets region type + * @param acrossMap true if normalizing sum is performed over adjacent channels + * @return reference to layer builder + */ + NormLayer& setAcrossMaps(bool acrossMap); + /** + * @brief Returns region type + * @return Norm type + */ + NormType getRegion() const; + /** + * @brief Sets region type + * @param type region type + * @return reference to layer builder + */ + NormLayer& setRegion(NormType type); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_normalize_layer.hpp b/inference-engine/include/builders/ie_normalize_layer.hpp new file mode 100644 index 00000000000000..bc05381df82396 --- /dev/null +++ b/inference-engine/include/builders/ie_normalize_layer.hpp @@ -0,0 +1,85 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Normalize layer + */ +class INFERENCE_ENGINE_API_CLASS(NormalizeLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit NormalizeLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit NormalizeLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + NormalizeLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + NormalizeLayer& setPort(const Port& port); + + /** + * @brief Returns channel shared flag + * @return true if scale parameters are shared across channels + */ + bool getChannelShared() const; + /** + * @brief Sets channel shared flag + * @param acrossMap true if scale parameters are shared across channels + * @return reference to layer builder + */ + NormalizeLayer& setChannelShared(bool acrossMap); + /** + * @brief Returns across maps + * @return true if normalization is shared across channels + */ + bool getAcrossMaps() const; + /** + * @brief Sets across map + * @param acrossMap true if normalization is shared across channels + * @return reference to layer builder + */ + NormalizeLayer& setAcrossMaps(bool acrossMap); + + /** + * @brief Returns epsilon + * @return Epsilon + */ + float getEpsilon() const; + /** + * @brief Sets epsilon + * @param eps Epsilon + * @return reference to layer builder + */ + NormalizeLayer& setEpsilon(float eps); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_output_layer.hpp b/inference-engine/include/builders/ie_output_layer.hpp new file mode 100644 index 00000000000000..71abd38fc61346 --- /dev/null +++ b/inference-engine/include/builders/ie_output_layer.hpp @@ -0,0 +1,50 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Output layer + */ +class INFERENCE_ENGINE_API_CLASS(OutputLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit OutputLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit OutputLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + OutputLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + OutputLayer& setPort(const Port &port); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_permute_layer.hpp b/inference-engine/include/builders/ie_permute_layer.hpp new file mode 100644 index 00000000000000..54cfcf31856fc8 --- /dev/null +++ b/inference-engine/include/builders/ie_permute_layer.hpp @@ -0,0 +1,86 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Permute layer + */ +class INFERENCE_ENGINE_API_CLASS(PermuteLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit PermuteLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit PermuteLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + PermuteLayer& setName(const std::string& name); + + /** + * @brief Sets weights for layer + * @param weights Constant blob with weights + * @return reference to layer builder + */ + PermuteLayer& setWeights(const Blob::CPtr& weights); + /** + * @brief Sets biases for layer + * @param biases Constant blob with biases + * @return reference to layer builder + */ + PermuteLayer& setBiases(const Blob::CPtr& biases); + + /** + * @brief Returns input port + * @return Input port + */ + const Port& getInputPort() const; + /** + * @brief Sets input port + * @param port Input port + * @return reference to layer builder + */ + PermuteLayer& setInputPort(const Port& port); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + PermuteLayer& setOutputPort(const Port& port); + /** + * @brief Return vector of dimensions indexes for output blob + * @return Order of dimensions for output blob + */ + const std::vector getOrder() const; + /** + * @brief Sets the order of dimensions for output blob + * @param order dimensions indexes for output blob + * @return reference to layer builder + */ + PermuteLayer& setOrder(const std::vector& order); +}; + +} // namespace Builder +} // namespace InferenceEngine + diff --git a/inference-engine/include/builders/ie_pooling_layer.hpp b/inference-engine/include/builders/ie_pooling_layer.hpp new file mode 100644 index 00000000000000..80150ae51c413e --- /dev/null +++ b/inference-engine/include/builders/ie_pooling_layer.hpp @@ -0,0 +1,170 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Pooling layer + */ +class INFERENCE_ENGINE_API_CLASS(PoolingLayer): public LayerFragment { +public: + /** + * @brief The enum defines available pooling types + */ + enum PoolingType { + MAX = 1, + AVG = 2 + }; + + /** + * @brief The enum defines available rounding types + */ + enum RoundingType { + CEIL = 1, + FLOOR = 2 + }; + + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit PoolingLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit PoolingLayer(Layer& genLayer); + /** + * @brief Operator creates generic layer builder + * @return Generic layer builder + */ + operator Layer() const override; + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + PoolingLayer& setName(const std::string& name); + + /** + * @brief Returns input port + * @return Input port + */ + const Port& getInputPort() const; + /** + * @brief Sets input port + * @param port Input port + * @return reference to layer builder + */ + PoolingLayer& setInputPort(const Port& port); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + PoolingLayer& setOutputPort(const Port& port); + /** + * @brief Returns kernel size + * @return Kernel size + */ + const std::vector getKernel() const; + /** + * @brief Sets kernel size + * @param kernel Kernel size + * @return reference to layer builder + */ + PoolingLayer& setKernel(const std::vector& kernel); + /** + * @brief Returns vector of strides + * @return vector of strides + */ + const std::vector getStrides() const; + /** + * @brief Sets strides + * @param strides vector of strides + * @return reference to layer builder + */ + PoolingLayer& setStrides(const std::vector& strides); + /** + * @brief Returns begin paddings + * @return vector of paddings + */ + const std::vector getPaddingsBegin() const; + /** + * @brief Sets begin paddings + * @param paddings Vector of paddings + * @return reference to layer builder + */ + PoolingLayer& setPaddingsBegin(const std::vector& paddings); + /** + * @brief Return end paddings + * @return Vector of paddings + */ + const std::vector getPaddingsEnd() const; + /** + * @brief Sets end paddings + * @param paddings Vector of paddings + * @return reference to layer builder + */ + PoolingLayer& setPaddingsEnd(const std::vector& paddings); + /** + * @brief Returns pooling type + * @return Pooling type + */ + PoolingType getPoolingType() const; + /** + * @brief Sets pooling type + * @param type Pooling type + * @return reference to layer builder + */ + PoolingLayer& setPoolingType(PoolingType type); + /** + * @brief Returns rounding type + * @return Rounding type + */ + RoundingType getRoundingType() const; + /** + * @brief Sets rounding types + * @param type Rounding type + * @return reference to layer builder + */ + PoolingLayer& setRoundingType(RoundingType type); + /** + * @brief Returns a type of pooling strategy + * @return true if zero-values in the padding are not used + */ + bool getExcludePad() const; + /** + * @brief Sets a type of pooling strategy + * @param exclude zero-values in the padding are not used if true + * @return reference to layer builder + */ + PoolingLayer& setExcludePad(bool exclude); + + /** + * @brief Validates layer before creation + * @param layer generic layer builder + */ + static void validate(const Layer& layer); + +private: + PoolingType type; + RoundingType roundingType; +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_power_layer.hpp b/inference-engine/include/builders/ie_power_layer.hpp new file mode 100644 index 00000000000000..94ef1cc9ffb28b --- /dev/null +++ b/inference-engine/include/builders/ie_power_layer.hpp @@ -0,0 +1,83 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Power layer + */ +class INFERENCE_ENGINE_API_CLASS(PowerLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit PowerLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit PowerLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + PowerLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + PowerLayer& setPort(const Port& port); + /** + * @brief Returns power + * @return Power parameter + */ + float getPower() const; + /** + * @brief Sets the power parameter + * @param power Power parameter + * @return reference to layer builder + */ + PowerLayer& setPower(float power); + /** + * @brief Returns scaling parameter + * @return Scaling + */ + float getScale() const; + /** + * @brief Sets scaling parameter + * @param scale Scaling parameter + * @return reference to layer builder + */ + PowerLayer& setScale(float scale); + /** + * @brief Returns shifting parameter + * @return Shift + */ + float getShift() const; + /** + * @brief Sets shift for the layer + * @param shift Shifting parameter + * @return reference to layer builder + */ + PowerLayer& setShift(float shift); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_prelu_layer.hpp b/inference-engine/include/builders/ie_prelu_layer.hpp new file mode 100644 index 00000000000000..5e7dedda140701 --- /dev/null +++ b/inference-engine/include/builders/ie_prelu_layer.hpp @@ -0,0 +1,67 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for PReLU layer + */ +class INFERENCE_ENGINE_API_CLASS(PReLULayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit PReLULayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit PReLULayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + PReLULayer& setName(const std::string& name); + + /** + * @brief Sets weights for layer + * @param weights Constant blob with weights + * @return reference to layer builder + */ + PReLULayer& setWeights(const Blob::CPtr& weights); + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + PReLULayer& setPort(const Port& port); + /** + * @brief Returns channel shared flag + * @return true if negative slope shared across channels + */ + bool getChannelShared() const; + /** + * @brief Sets channel shared flag + * @param flag true if negative slope shared across channels + * @return reference to layer builder + */ + PReLULayer& setChannelShared(bool flag); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_prior_box_clustered_layer.hpp b/inference-engine/include/builders/ie_prior_box_clustered_layer.hpp new file mode 100644 index 00000000000000..61d7f165370743 --- /dev/null +++ b/inference-engine/include/builders/ie_prior_box_clustered_layer.hpp @@ -0,0 +1,161 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for PriorBoxClustered layer + */ +class INFERENCE_ENGINE_API_CLASS(PriorBoxClusteredLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit PriorBoxClusteredLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit PriorBoxClusteredLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + PriorBoxClusteredLayer& setName(const std::string& name); + + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + PriorBoxClusteredLayer& setOutputPort(const Port& port); + /** + * @brief Returns input ports + * @return Vector of input ports + */ + const std::vector& getInputPorts() const; + /** + * @brief Sets input ports + * @param port Vector of input ports + * @return reference to layer builder + */ + PriorBoxClusteredLayer& setInputPorts(const std::vector& port); + /** + * @brief Returns height and width of input image + * @return input image sizes + */ + const std::vector getImgSizes() const; + /** + * @brief Sets height and width sizes + * @param sizes Height and width sizes + * @return reference to layer builder + */ + PriorBoxClusteredLayer& setImgSizes(const std::vector sizes); + /** + * @brief returns distances between (height and width) box centers + * @return distances + */ + const std::vector getSteps() const; + /** + * @brief Sets distances between box centers for height and width + * @param steps Distances between box centers + * @return reference to layer builder + */ + PriorBoxClusteredLayer& setSteps(const std::vector steps); + /** + * @brief returns a distance between box centers + * @return distance + */ + float getStep() const; + /** + * @brief Sets a distance between box centers + * @param steps A distance between box centers + * @return reference to layer builder + */ + PriorBoxClusteredLayer& setStep(float step); + /** + * @brief Returns shift of box respectively to top left corner + * @return Shift + */ + float getOffset() const; + /** + * @brief Sets shift of box respectively to top left corner + * @param offset Shift + * @return reference to layer builder + */ + PriorBoxClusteredLayer& setOffset(float offset); + /** + * @brief Returns a variance of adjusting bounding boxes + * @return Variance + */ + float getVariance() const; + /** + * @brief Sets a variance of adjusting bounding boxes + * @param variance Variance + * @return reference to layer builder + */ + PriorBoxClusteredLayer& setVariance(float variance); + /** + * @brief Returns desired boxes width in pixels + * @return width of desired boxes + */ + float getWidth() const; + /** + * @brief Sets desired boxes width in pixels + * @param width Width of desired boxes + * @return reference to layer builder + */ + PriorBoxClusteredLayer& setWidth(float width); + /** + * @brief Returns desired boxes height in pixels + * @return height of desired boxes + */ + float getHeight() const; + /** + * @brief Sets desired boxes height in pixels + * @param height Height of desired boxes + * @return reference to layer builder + */ + PriorBoxClusteredLayer& setHeight(float height); + /** + * @brief Returns clip flag + * @return true if each value in the output blob is within [0,1] + */ + bool getClip() const; + /** + * @brief sets clip flag + * @param flag true if each value in the output blob is within [0,1] + * @return reference to layer builder + */ + PriorBoxClusteredLayer& setClip(bool flag); + /** + * @brief Returns flip flag + * @return list of boxes is augmented with the flipped ones if true + */ + bool getFlip() const; + /** + * @brief Sets flip flag + * @param flag true if list of boxes is augmented with the flipped ones + * @return reference to layer builder + */ + PriorBoxClusteredLayer& setFlip(bool flag); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_prior_box_layer.hpp b/inference-engine/include/builders/ie_prior_box_layer.hpp new file mode 100644 index 00000000000000..8051d6c6ad3ec1 --- /dev/null +++ b/inference-engine/include/builders/ie_prior_box_layer.hpp @@ -0,0 +1,161 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for PriorBox layer + */ +class INFERENCE_ENGINE_API_CLASS(PriorBoxLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit PriorBoxLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit PriorBoxLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + PriorBoxLayer& setName(const std::string& name); + + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + PriorBoxLayer& setOutputPort(const Port& port); + /** + * @brief Returns input ports + * @return Vector of input ports + */ + const std::vector& getInputPorts() const; + /** + * @brief Sets input ports + * @param ports Vector of input ports + * @return reference to layer builder + */ + PriorBoxLayer& setInputPorts(const std::vector& ports); + /** + * @brief Returns the minimum box size in pixels + * @return Minimum box size + */ + size_t getMinSize() const; + /** + * @brief Sets the minimum box size in pixels + * @param minSize Minimum size + * @return reference to layer builder + */ + PriorBoxLayer& setMinSize(size_t minSize); + /** + * @brief Returns the maximum box size in pixels + * @return maximum size + */ + size_t getMaxSize() const; + /** + * @brief Sets the maximum box size in pixels + * @param maxSize Maximum size + * @return reference to layer builder + */ + PriorBoxLayer& setMaxSize(size_t maxSize); + /** + * @brief Returns a distance between box centers + * @return Distance + */ + float getStep() const; + /** + * @brief Sets a distance between box centers + * @param step Distance + * @return reference to layer builder + */ + PriorBoxLayer& setStep(float step); + /** + * @brief Returns a shift of box respectively to top left corner + * @return Shift + */ + float getOffset() const; + /** + * @brief Sets a shift of box respectively to top left corner + * @param offset Shift + * @return reference to layer builder + */ + PriorBoxLayer& setOffset(float offset); + /** + * @brief Returns a variance of adjusting bounding boxes + * @return Variance + */ + float getVariance() const; + /** + * @brief Sets a variance of adjusting bounding boxes + * @param variance Variance + * @return reference to layer builder + */ + PriorBoxLayer& setVariance(float variance); + /** + * @brief Returns a flag that denotes type of inference + * @return true if max_size is used + */ + bool getScaleAllSizes() const; + /** + * @brief Sets a flag that denotes a type of inference + * @param flag max_size is used if true + * @return reference to layer builder + */ + PriorBoxLayer& setScaleAllSizes(bool flag); + /** + * @brief Returns clip flag + * @return true if each value in the output blob is within [0,1] + */ + bool getClip() const; + /** + * @brief sets clip flag + * @param flag true if each value in the output blob is within [0,1] + * @return reference to layer builder + */ + PriorBoxLayer& setClip(bool flag); + /** + * @brief Returns flip flag + * @return list of boxes is augmented with the flipped ones if true + */ + bool getFlip() const; + /** + * @brief Sets flip flag + * @param flag true if list of boxes is augmented with the flipped ones + * @return reference to layer builder + */ + PriorBoxLayer& setFlip(bool flag); + /** + * @brief Returns a variance of aspect ratios + * @return Vector of aspect ratios + */ + const std::vector getAspectRatio() const; + /** + * @brief Sets a variance of aspect ratios + * @param aspectRatio Vector of aspect ratios + * @return reference to layer builder + */ + PriorBoxLayer& setAspectRatio(const std::vector& aspectRatio); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_proposal_layer.hpp b/inference-engine/include/builders/ie_proposal_layer.hpp new file mode 100644 index 00000000000000..e7fcac461eae64 --- /dev/null +++ b/inference-engine/include/builders/ie_proposal_layer.hpp @@ -0,0 +1,151 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Proposal layer + */ +class INFERENCE_ENGINE_API_CLASS(ProposalLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ProposalLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ProposalLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ProposalLayer& setName(const std::string& name); + + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + ProposalLayer& setOutputPort(const Port& port); + /** + * @brief Returns input ports + * @return Vector of input ports + */ + const std::vector& getInputPorts() const; + /** + * @brief Sets input ports + * @param ports Vector of input ports + * @return reference to layer builder + */ + ProposalLayer& setInputPorts(const std::vector& ports); + /** + * @brief Returns the quantity of bounding boxes after applying NMS + * @return Quantity of bounding boxes + */ + size_t getPostNMSTopN() const; + /** + * @brief Sets the quantity of bounding boxes after applying NMS + * @param topN Quantity of bounding boxes + * @return reference to layer builder + */ + ProposalLayer& setPostNMSTopN(size_t topN); + /** + * @brief Returns the quantity of bounding boxes before applying NMS + * @return Quantity of bounding boxes + */ + size_t getPreNMSTopN() const; + /** + * @brief Sets the quantity of bounding boxes before applying NMS + * @param topN Quantity of bounding boxes + * @return reference to layer builder + */ + ProposalLayer& setPreNMSTopN(size_t topN); + /** + * @brief Returns minimum value of the proposal to be taken into consideration + * @return Threshold + */ + float getNMSThresh() const; + /** + * @brief Sets minimum value of the proposal to be taken into consideration + * @param thresh Threshold + * @return reference to layer builder + */ + ProposalLayer& setNMSThresh(float thresh); + /** + * @brief Returns base size for anchor generation + * @return Base size + */ + size_t getBaseSize() const; + /** + * @brief Sets base size for anchor generation + * @param baseSize Base size for anchor generation + * @return reference to layer builder + */ + ProposalLayer& setBaseSize(size_t baseSize); + /** + * @brief Returns minimum size of box to be taken into consideration + * @return Minimum size + */ + size_t getMinSize() const; + /** + * @brief Sets minimum size of box to be taken into consideration + * @param minSize Minimum size of the box + * @return reference to layer builder + */ + ProposalLayer& setMinSize(size_t minSize); + /** + * @brief Returns step size to slide over boxes in pixels + * @return Step size + */ + size_t getFeatStride() const; + /** + * @brief Sets step size to slide over boxes in pixels + * @param featStride Step size + * @return reference to layer builder + */ + ProposalLayer& setFeatStride(size_t featStride); + /** + * @brief Returns scales for anchor generation + * @return Vector of scales + */ + const std::vector getScale() const; + /** + * @brief Sets scales for anchor generation + * @param scales Vector of scales + * @return reference to layer builder + */ + ProposalLayer& setScale(const std::vector& scales); + /** + * @brief Returns ratios for anchor generation + * @return Vector of ratios + */ + const std::vector getRatio() const; + /** + * @brief Sets ratios for anchor generation + * @param ratios Vector of scales + * @return reference to layer builder + */ + ProposalLayer& setRatio(const std::vector& ratios); +}; + +} // namespace Builder +} // namespace InferenceEngine + diff --git a/inference-engine/include/builders/ie_psroi_pooling_layer.hpp b/inference-engine/include/builders/ie_psroi_pooling_layer.hpp new file mode 100644 index 00000000000000..82c9f47c87ada4 --- /dev/null +++ b/inference-engine/include/builders/ie_psroi_pooling_layer.hpp @@ -0,0 +1,98 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for PSROIPooling layer + */ +class INFERENCE_ENGINE_API_CLASS(PSROIPoolingLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit PSROIPoolingLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit PSROIPoolingLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + PSROIPoolingLayer& setName(const std::string& name); + + /** + * @brief Returns input ports + * @return Vector of input ports + */ + const std::vector& getInputPorts() const; + /** + * @brief Sets input ports + * @param ports Vector of input ports + * @return reference to layer builder + */ + PSROIPoolingLayer& setInputPorts(const std::vector& ports); + /** + * @brief Returns output ports + * @return Vector of output ports + */ + const Port& getOutputPort() const; + /** + * @brief Sets output ports + * @param port Vector of output ports + * @return reference to layer builder + */ + PSROIPoolingLayer& setOutputPort(const Port& port); + /** + * @brief Returns multiplicative spatial scale factor to translate ROI coordinates + * @return Spatial scale factor + */ + float getSpatialScale() const; + /** + * @brief Sets multiplicative spatial scale factor to translate ROI coordinates + * @param spatialScale Spatial scale factor + * @return reference to layer builder + */ + PSROIPoolingLayer& setSpatialScale(float spatialScale); + /** + * @brief Returns pooled output channel number + * @return Output channel number + */ + size_t getOutputDim() const; + /** + * @brief Sets pooled output channel number + * @param outDim Output channel number + * @return reference to layer builder + */ + PSROIPoolingLayer& setOutputDim(size_t outDim); + /** + * @brief Returns number of groups to encode position-sensitive score maps + * @return Number of groups + */ + size_t getGroupSize() const; + /** + * @brief Sets number of groups to encode position-sensitive score maps + * @param size Number of groups + * @return reference to layer builder + */ + PSROIPoolingLayer& setGroupSize(size_t size); +}; + +} // namespace Builder +} // namespace InferenceEngine + + + diff --git a/inference-engine/include/builders/ie_region_yolo_layer.hpp b/inference-engine/include/builders/ie_region_yolo_layer.hpp new file mode 100644 index 00000000000000..1a2d645eff6ee0 --- /dev/null +++ b/inference-engine/include/builders/ie_region_yolo_layer.hpp @@ -0,0 +1,155 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for RegionYolo layer + */ +class INFERENCE_ENGINE_API_CLASS(RegionYoloLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit RegionYoloLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit RegionYoloLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + RegionYoloLayer& setName(const std::string& name); + + /** + * @brief Returns input port + * @return Input port + */ + const Port& getInputPort() const; + /** + * @brief Sets input port + * @param port Input port + * @return reference to layer builder + */ + RegionYoloLayer& setInputPort(const Port& port); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + RegionYoloLayer& setOutputPort(const Port& port); + /** + * @brief Returns number of coordinates for each region + * @return Number of coordinates + */ + int getCoords() const; + /** + * @brief Sets number of coordinates for each region + * @param coords Number of coordinates + * @return reference to layer builder + */ + RegionYoloLayer& setCoords(int coords); + /** + * @brief Returns number of classes for each region + * @return Number of classes + */ + int getClasses() const; + /** + * @brief Sets number of classes for each region + * @param classes number of classes + * @return reference to layer builder + */ + RegionYoloLayer& setClasses(int classes); + /** + * @brief Returns number of regions + * @return Number of regions + */ + int getNum() const; + /** + * @brief Sets number of regions + * @param num Number of regions + * @return reference to layer builder + */ + RegionYoloLayer& setNum(int num); + /** + * @brief Returns a flag which specifies the method of infer + * @return true if softmax is performed + */ + bool getDoSoftMax() const; + /** + * @brief Sets a flag which specifies the method of infer + * @param flag softmax is performed if true + * @return reference to layer builder + */ + RegionYoloLayer& setDoSoftMax(bool flag); + /** + * @brief Returns anchors coordinates of regions + * @return anchors coordinates + */ + float getAnchors() const; + /** + * @brief Sets anchors coordinates of regions + * @param anchors Anchors coordinates + * @return reference to layer builder + */ + RegionYoloLayer& setAnchors(float anchors); + /** + * @brief Returns mask + * @return Mask + */ + int getMask() const; + /** + * @brief Sets mask + * @param mask Specifies which anchors to use + * @return reference to layer builder + */ + RegionYoloLayer& setMask(int mask); + /** + * @brief Returns the number of the dimension from which flattening is performed + * @return Axis + */ + size_t getAxis() const; + /** + * @brief Sets the number of the dimension from which flattening is performed + * @param axis Axis + * @return reference to layer builder + */ + RegionYoloLayer& setAxis(size_t axis); + /** + * @brief Returns the number of the dimension on which flattening is ended + * @return End axis + */ + size_t getEndAxis() const; + /** + * @brief Sets the number of the dimension on which flattening is ended + * @param axis End axis + * @return reference to layer builder + */ + RegionYoloLayer& setEndAxis(size_t axis); +}; + +} // namespace Builder +} // namespace InferenceEngine + + + + + diff --git a/inference-engine/include/builders/ie_relu6_layer.hpp b/inference-engine/include/builders/ie_relu6_layer.hpp new file mode 100644 index 00000000000000..3bc3360fb6dfe9 --- /dev/null +++ b/inference-engine/include/builders/ie_relu6_layer.hpp @@ -0,0 +1,62 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for ReLU6 layer + */ +class INFERENCE_ENGINE_API_CLASS(ReLU6Layer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ReLU6Layer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ReLU6Layer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ReLU6Layer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + ReLU6Layer& setPort(const Port& port); + + /** + * @brief Returns N value + * @return N + */ + float getN() const; + /** + * @brief Sets N value + * @param n N value (6 by default) + * @return reference to layer builder + */ + ReLU6Layer& setN(float n); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_relu_layer.hpp b/inference-engine/include/builders/ie_relu_layer.hpp new file mode 100644 index 00000000000000..9422e19244a781 --- /dev/null +++ b/inference-engine/include/builders/ie_relu_layer.hpp @@ -0,0 +1,62 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for ReLU layer + */ +class INFERENCE_ENGINE_API_CLASS(ReLULayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ReLULayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ReLULayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ReLULayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + ReLULayer& setPort(const Port& port); + + /** + * @brief Returns negative slope + * @return Negative slope + */ + float getNegativeSlope() const; + /** + * @brief Sets negative slope + * @param negativeSlope Negative slope + * @return reference to layer builder + */ + ReLULayer& setNegativeSlope(float negativeSlope); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_reorg_yolo_layer.hpp b/inference-engine/include/builders/ie_reorg_yolo_layer.hpp new file mode 100644 index 00000000000000..4719873a015329 --- /dev/null +++ b/inference-engine/include/builders/ie_reorg_yolo_layer.hpp @@ -0,0 +1,77 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for ReorgYolo layer + */ +class INFERENCE_ENGINE_API_CLASS(ReorgYoloLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ReorgYoloLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ReorgYoloLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ReorgYoloLayer& setName(const std::string& name); + + /** + * @brief Returns input port + * @return Input port + */ + const Port& getInputPort() const; + /** + * @brief Sets input port + * @param ports Input port + * @return reference to layer builder + */ + ReorgYoloLayer& setInputPort(const Port& ports); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + ReorgYoloLayer& setOutputPort(const Port& port); + /** + * @brief Returns distance of cut throws in output blobs + * @return Stride + */ + int getStride() const; + /** + * @brief Sets distance of cut throws in output blobs + * @param stride Stride + * @return reference to layer builder + */ + ReorgYoloLayer& setStride(int stride); +}; + +} // namespace Builder +} // namespace InferenceEngine + + + + diff --git a/inference-engine/include/builders/ie_reshape_layer.hpp b/inference-engine/include/builders/ie_reshape_layer.hpp new file mode 100644 index 00000000000000..42eacea50aa3c7 --- /dev/null +++ b/inference-engine/include/builders/ie_reshape_layer.hpp @@ -0,0 +1,73 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Reshape layer + */ +class INFERENCE_ENGINE_API_CLASS(ReshapeLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ReshapeLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ReshapeLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ReshapeLayer& setName(const std::string& name); + + /** + * @brief Returns input port + * @return Input port + */ + const Port& getInputPort() const; + /** + * @brief Sets input port + * @param port Input port + * @return reference to layer builder + */ + ReshapeLayer& setInputPort(const Port& port); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + ReshapeLayer& setOutputPort(const Port& port); + /** + * @brief Returns reshape dimensions + * @return Dimensions + */ + const std::vector getDims() const; + /** + * @brief Sets reshape dimensions + * @param dims Dimensions + * @return reference to layer builder + */ + ReshapeLayer& setDims(const std::vector& dims); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_roi_pooling_layer.hpp b/inference-engine/include/builders/ie_roi_pooling_layer.hpp new file mode 100644 index 00000000000000..d6bb5786002810 --- /dev/null +++ b/inference-engine/include/builders/ie_roi_pooling_layer.hpp @@ -0,0 +1,84 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for ROIPooling layer + */ +class INFERENCE_ENGINE_API_CLASS(ROIPoolingLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ROIPoolingLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ROIPoolingLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ROIPoolingLayer& setName(const std::string& name); + + /** + * @brief Returns input ports + * @return Vector of input ports + */ + const std::vector& getInputPorts() const; + /** + * @brief Sets input ports + * @param ports Vector of input ports + * @return reference to layer builder + */ + ROIPoolingLayer& setInputPorts(const std::vector& ports); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + ROIPoolingLayer& setOutputPort(const Port& port); + /** + * @brief Returns a ratio of the input feature map over the input image size + * @return Spatial scale + */ + float getSpatialScale() const; + /** + * @brief Sets a ratio of the input feature map over the input image size + * @param spatialScale Spatial scale + * @return reference to layer builder + */ + ROIPoolingLayer& setSpatialScale(float spatialScale); + /** + * @brief Returns height and width of the ROI output feature map + * @return Vector contains height and width + */ + const std::vector getPooled() const; + /** + * @brief Sets height and width of the ROI output feature map + * @param pooled Vector with height and width + * @return reference to layer builder + */ + ROIPoolingLayer& setPooled(const std::vector& pooled); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_scale_shift_layer.hpp b/inference-engine/include/builders/ie_scale_shift_layer.hpp new file mode 100644 index 00000000000000..361664e608ef36 --- /dev/null +++ b/inference-engine/include/builders/ie_scale_shift_layer.hpp @@ -0,0 +1,63 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for ScaleShift layer + */ +class INFERENCE_ENGINE_API_CLASS(ScaleShiftLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit ScaleShiftLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit ScaleShiftLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + ScaleShiftLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + ScaleShiftLayer& setPort(const Port &port); + + /** + * @brief Sets weights for layer + * @param weights Constant blob with weights + * @return reference to layer builder + */ + ScaleShiftLayer& setWeights(const Blob::CPtr& weights); + /** + * @brief Sets biases for layer + * @param biases Constant blob with biases + * @return reference to layer builder + */ + ScaleShiftLayer& setBiases(const Blob::CPtr& biases); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_sigmoid_layer.hpp b/inference-engine/include/builders/ie_sigmoid_layer.hpp new file mode 100644 index 00000000000000..6c483588ab325f --- /dev/null +++ b/inference-engine/include/builders/ie_sigmoid_layer.hpp @@ -0,0 +1,50 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Sigmoid layer + */ +class INFERENCE_ENGINE_API_CLASS(SigmoidLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit SigmoidLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit SigmoidLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + SigmoidLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + SigmoidLayer& setPort(const Port& port); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_simpler_nms_layer.hpp b/inference-engine/include/builders/ie_simpler_nms_layer.hpp new file mode 100644 index 00000000000000..28cf6ee7e91ce1 --- /dev/null +++ b/inference-engine/include/builders/ie_simpler_nms_layer.hpp @@ -0,0 +1,140 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for SimplerNMS layer + */ +class INFERENCE_ENGINE_API_CLASS(SimplerNMSLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit SimplerNMSLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit SimplerNMSLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + SimplerNMSLayer& setName(const std::string& name); + + /** + * @brief Returns input ports + * @return Vector of input ports + */ + const std::vector& getInputPorts() const; + /** + * @brief Sets input ports + * @param ports Vector of input ports + */ + SimplerNMSLayer& setInputPorts(const std::vector& ports); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + SimplerNMSLayer& setOutputPort(const Port& port); + /** + * @brief Returns the quantity of bounding boxes before applying NMS + * @return Quantity of bounding boxes + */ + size_t getPreNMSTopN() const; + /** + * @brief Sets the quantity of bounding boxes before applying NMS + * @param topN Quantity of bounding boxes + * @return reference to layer builder + */ + SimplerNMSLayer& setPreNMSTopN(size_t topN); + /** + * @brief Returns the quantity of bounding boxes after applying NMS + * @return Quantity of bounding boxes + */ + size_t getPostNMSTopN() const; + /** + * @brief Sets the quantity of bounding boxes after applying NMS + * @param topN Quantity of bounding boxes + * @return reference to layer builder + */ + SimplerNMSLayer& setPostNMSTopN(size_t topN); + /** + * @brief Returns the step size to slide over boxes in pixels + * @return Step size + */ + size_t getFeatStride() const; + /** + * @brief Sets the step size to slide over boxes in pixels + * @param featStride Step size + * @return reference to layer builder + */ + SimplerNMSLayer& setFeatStride(size_t featStride); + /** + * @brief Returns the minimum size of box to be taken into consideration + * @return Minimum size + */ + size_t getMinBoxSize() const; + /** + * @brief Sets the minimum size of box to be taken into consideration + * @param minSize Minimum size + * @return reference to layer builder + */ + SimplerNMSLayer& setMinBoxSize(size_t minSize); + /** + * @brief Returns scale for anchor boxes generating + * @return Scale for anchor boxes + */ + size_t getScale() const; + /** + * @brief Sets scale for anchor boxes generating + * @param scale Scale for anchor boxes + * @return reference to layer builder + */ + SimplerNMSLayer& setScale(size_t scale); + + /** + * @brief Returns the minimum value of the proposal to be taken into consideration + * @return Threshold + */ + float getCLSThreshold() const; + /** + * @brief Sets the minimum value of the proposal to be taken into consideration + * @param threshold Minimum value + * @return reference to layer builder + */ + SimplerNMSLayer& setCLSThreshold(float threshold); + /** + * @brief Returns the minimum ratio of boxes overlapping to be taken into consideration + * @return Threshold + */ + float getIOUThreshold() const; + /** + * @brief Sets the minimum ratio of boxes overlapping to be taken into consideration + * @param threshold Minimum value + * @return reference to layer builder + */ + SimplerNMSLayer& setIOUThreshold(float threshold); +}; + +} // namespace Builder +} // namespace InferenceEngine + diff --git a/inference-engine/include/builders/ie_softmax_layer.hpp b/inference-engine/include/builders/ie_softmax_layer.hpp new file mode 100644 index 00000000000000..1ce13b87cd1283 --- /dev/null +++ b/inference-engine/include/builders/ie_softmax_layer.hpp @@ -0,0 +1,61 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for SoftMax layer + */ +class INFERENCE_ENGINE_API_CLASS(SoftMaxLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit SoftMaxLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit SoftMaxLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + SoftMaxLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + SoftMaxLayer& setPort(const Port& port); + /** + * @brief Returns axis + * @return Axis + */ + size_t getAxis() const; + /** + * @brief Sets axis + * @param axis Axis + * @return reference to layer builder + */ + SoftMaxLayer& setAxis(size_t axis); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_split_layer.hpp b/inference-engine/include/builders/ie_split_layer.hpp new file mode 100644 index 00000000000000..526ed79e78ecc6 --- /dev/null +++ b/inference-engine/include/builders/ie_split_layer.hpp @@ -0,0 +1,73 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Split layer + */ +class INFERENCE_ENGINE_API_CLASS(SplitLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit SplitLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit SplitLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + SplitLayer& setName(const std::string& name); + + /** + * @brief Returns output ports + * @return Vector of output ports + */ + const std::vector& getOutputPorts() const; + /** + * @brief Sets output ports + * @param ports Vector of output ports + * @return reference to layer builder + */ + SplitLayer& setOutputPorts(const std::vector& ports); + /** + * @brief Returns input port + * @return Input port + */ + const Port& getInputPort() const; + /** + * @brief Sets input port + * @param port Input port + * @return reference to layer builder + */ + SplitLayer& setInputPort(const Port& port); + /** + * @brief Returns axis + * @return Axis + */ + size_t getAxis() const; + /** + * @brief Sets axis + * @param axis Axis + * @return reference to layer builder + */ + SplitLayer& setAxis(size_t axis); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_tanh_layer.hpp b/inference-engine/include/builders/ie_tanh_layer.hpp new file mode 100644 index 00000000000000..acb00027a50c53 --- /dev/null +++ b/inference-engine/include/builders/ie_tanh_layer.hpp @@ -0,0 +1,50 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for TanH layer + */ +class INFERENCE_ENGINE_API_CLASS(TanHLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit TanHLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit TanHLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + TanHLayer& setName(const std::string& name); + + /** + * @brief Returns port with shapes for the layer + * @return Port with shapes + */ + const Port& getPort() const; + /** + * @brief Sets port shapes for the layer + * @param port Port with shapes + * @return reference to layer builder + */ + TanHLayer& setPort(const Port& port); +}; + +} // namespace Builder +} // namespace InferenceEngine diff --git a/inference-engine/include/builders/ie_tile_layer.hpp b/inference-engine/include/builders/ie_tile_layer.hpp new file mode 100644 index 00000000000000..de03ba2802d186 --- /dev/null +++ b/inference-engine/include/builders/ie_tile_layer.hpp @@ -0,0 +1,89 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { +namespace Builder { + +/** + * @brief The class represents a builder for Tile layer + */ +class INFERENCE_ENGINE_API_CLASS(TileLayer): public LayerFragment { +public: + /** + * @brief The constructor creates a builder with the name + * @param name Layer name + */ + explicit TileLayer(const std::string& name = ""); + /** + * @brief The constructor creates a builder from generic builder + * @param genLayer generic builder + */ + explicit TileLayer(Layer& genLayer); + /** + * @brief Sets the name for the layer + * @param name Layer name + * @return reference to layer builder + */ + TileLayer& setName(const std::string& name); + + /** + * @brief Returns input port + * @return Input port + */ + const Port& getInputPort() const; + /** + * @brief Sets input port + * @param port Input port + * @return reference to layer builder + */ + TileLayer& setInputPort(const Port& port); + /** + * @brief Returns output port + * @return Output port + */ + const Port& getOutputPort() const; + /** + * @brief Sets output port + * @param port Output port + * @return reference to layer builder + */ + TileLayer& setOutputPort(const Port& port); + /** + * @brief Returns axis + * @return Axis + */ + size_t getAxis() const; + /** + * @brief Sets axis + * @param axis Axis + * @return reference to layer builder + */ + TileLayer& setAxis(size_t axis); + /** + * @brief Returns tiles + * @return Tiles + */ + size_t getTiles() const; + /** + * @brief Sets tiles + * @param tiles Tiles + * @return reference to layer builder + */ + TileLayer& setTiles(size_t tiles); +}; + +} // namespace Builder +} // namespace InferenceEngine + + + + + diff --git a/inference-engine/include/cldnn/cldnn_config.hpp b/inference-engine/include/cldnn/cldnn_config.hpp index 3fac6a28530671..dc440ba47ba772 100644 --- a/inference-engine/include/cldnn/cldnn_config.hpp +++ b/inference-engine/include/cldnn/cldnn_config.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/cpp/ie_cnn_net_reader.h b/inference-engine/include/cpp/ie_cnn_net_reader.h index 5a9b55a1db6b5e..7bc0b254e19483 100644 --- a/inference-engine/include/cpp/ie_cnn_net_reader.h +++ b/inference-engine/include/cpp/ie_cnn_net_reader.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/cpp/ie_cnn_network.h b/inference-engine/include/cpp/ie_cnn_network.h index 68052473189b89..82d13cf0be68ae 100644 --- a/inference-engine/include/cpp/ie_cnn_network.h +++ b/inference-engine/include/cpp/ie_cnn_network.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -69,6 +68,11 @@ class CNNNetwork { } } + /** + * @brief A destructor + */ + virtual ~CNNNetwork() {} + /** * @brief Wraps original method * ICNNNetwork::getPrecision @@ -215,6 +219,15 @@ class CNNNetwork { CALL_STATUS_FNC(reshape, inputShapes); } + /** + * @brief Serialize network to IR and weights files. + * @param xmlPath Path to output IR file. + * @param binPath Path to output weights file. + */ + void serialize(const std::string &xmlPath, const std::string &binPath) const { + CALL_STATUS_FNC(serialize, xmlPath, binPath); + } + protected: /** * @brief reader extra reference, might be nullptr diff --git a/inference-engine/include/cpp/ie_executable_network.hpp b/inference-engine/include/cpp/ie_executable_network.hpp index 46ea081ade0494..dd8e942ac688aa 100644 --- a/inference-engine/include/cpp/ie_executable_network.hpp +++ b/inference-engine/include/cpp/ie_executable_network.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/cpp/ie_infer_request.hpp b/inference-engine/include/cpp/ie_infer_request.hpp index 6e169fea55f0ab..10317af8e789a3 100644 --- a/inference-engine/include/cpp/ie_infer_request.hpp +++ b/inference-engine/include/cpp/ie_infer_request.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -137,9 +136,8 @@ class InferRequest { } /** - * @brief Sets data that will contain result of the inference - * @param results - a reference to a map of result blobs accessed by output names. - * The type of Blob must correspond to the network output precision and size. + * @brief Sets new batch size when dynamic batching is enabled in executable network that created this request. + * @param batch new batch size to be used by all the following inference calls for this request. */ void SetBatch(const int batch) { CALL_STATUS_FNC(SetBatch, batch); diff --git a/inference-engine/include/cpp/ie_memory_state.hpp b/inference-engine/include/cpp/ie_memory_state.hpp index 99d32c867d47a0..f9bd90aafbb7ab 100644 --- a/inference-engine/include/cpp/ie_memory_state.hpp +++ b/inference-engine/include/cpp/ie_memory_state.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/cpp/ie_plugin_cpp.hpp b/inference-engine/include/cpp/ie_plugin_cpp.hpp index 045819e7d7cc15..5605209d9f5247 100644 --- a/inference-engine/include/cpp/ie_plugin_cpp.hpp +++ b/inference-engine/include/cpp/ie_plugin_cpp.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/caseless.hpp b/inference-engine/include/details/caseless.hpp index b4a4ba22500064..f3e0d7a0aba5de 100644 --- a/inference-engine/include/details/caseless.hpp +++ b/inference-engine/include/details/caseless.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/ie_blob_iterator.hpp b/inference-engine/include/details/ie_blob_iterator.hpp index 85d224f121c3f4..6b083e1ad342c3 100644 --- a/inference-engine/include/details/ie_blob_iterator.hpp +++ b/inference-engine/include/details/ie_blob_iterator.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/ie_cnn_network_iterator.hpp b/inference-engine/include/details/ie_cnn_network_iterator.hpp index a5c0e45bf8bc98..9cc65c977c81a1 100644 --- a/inference-engine/include/details/ie_cnn_network_iterator.hpp +++ b/inference-engine/include/details/ie_cnn_network_iterator.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/ie_cnn_network_tools.h b/inference-engine/include/details/ie_cnn_network_tools.h index 82a0c92464e152..b80978bd90c091 100644 --- a/inference-engine/include/details/ie_cnn_network_tools.h +++ b/inference-engine/include/details/ie_cnn_network_tools.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/ie_exception.hpp b/inference-engine/include/details/ie_exception.hpp index 0acff44ba7d9a6..514a639f1b724f 100644 --- a/inference-engine/include/details/ie_exception.hpp +++ b/inference-engine/include/details/ie_exception.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -141,7 +140,7 @@ class InferenceEngineException : public std::exception { } template - std::pair status_code_assign(const T & arg) { + std::pair status_code_assign(const T &) { return {static_cast(0), false}; } }; diff --git a/inference-engine/include/details/ie_exception_conversion.hpp b/inference-engine/include/details/ie_exception_conversion.hpp index 1ec3d041bc795b..3c2b9471d8592a 100644 --- a/inference-engine/include/details/ie_exception_conversion.hpp +++ b/inference-engine/include/details/ie_exception_conversion.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/ie_inetwork_iterator.hpp b/inference-engine/include/details/ie_inetwork_iterator.hpp new file mode 100644 index 00000000000000..84f8deecc9b44d --- /dev/null +++ b/inference-engine/include/details/ie_inetwork_iterator.hpp @@ -0,0 +1,137 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief A header file for the CNNNetworkIterator class + * @file ie_cnn_network_iterator.hpp + */ +#pragma once +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace InferenceEngine { +namespace details { + +template +class INetworkIterator: public std::iterator> { +public: + explicit INetworkIterator(NT * network, bool toEnd = false): network(network), currentIdx(0) { + if (!network || toEnd) + return; + const auto& inputs = network->getInputs(); + + std::vector> allInputs; + for (const auto& input : inputs) { + allInputs.push_back(std::dynamic_pointer_cast(input)); + } + + bool res = forestDFS(allInputs, [&](std::shared_ptr current) { + sortedLayers.push_back(current); + }, false); + + if (!res) { + THROW_IE_EXCEPTION << "Sorting not possible, due to existed loop."; + } + + std::reverse(std::begin(sortedLayers), std::end(sortedLayers)); + currentLayer = getNextLayer(); + } + bool operator!=(const INetworkIterator& that) const { + return !operator==(that); + } + bool operator==(const INetworkIterator& that) const { + return network == that.network && currentLayer == that.currentLayer; + } + typename INetworkIterator::reference operator*() { + if (nullptr == currentLayer) { + THROW_IE_EXCEPTION << "iterator out of bound"; + } + return currentLayer; + } + + INetworkIterator& operator++() { + currentLayer = getNextLayer(); + return *this; + } + + const INetworkIterator operator++(int) { + INetworkIterator retval = *this; + ++(*this); + return retval; + } + +private: + std::vector> sortedLayers; + std::shared_ptr currentLayer; + size_t currentIdx; + NT *network = nullptr; + + std::shared_ptr getNextLayer() { + return (sortedLayers.size() > currentIdx) ? sortedLayers[currentIdx++] : nullptr; + } + + template + inline bool forestDFS(const std::vector>& heads, const T &visit, bool bVisitBefore) { + if (heads.empty()) { + return true; + } + + std::unordered_map visited; + for (auto & layer : heads) { + if (!DFS(visited, layer, visit, bVisitBefore)) { + return false; + } + } + return true; + } + + template + inline bool DFS(std::unordered_map &visited, + const std::shared_ptr &layer, + const T &visit, + bool visitBefore) { + if (layer == nullptr) { + return true; + } + + if (visitBefore) + visit(layer); + + visited[layer->getId()] = false; + for (const auto &connection : network->getLayerConnections(layer->getId())) { + if (connection.to().layerId() == layer->getId()) { + continue; + } + const auto outLayer = network->getLayer(connection.to().layerId()); + auto i = visited.find(outLayer->getId()); + if (i != visited.end()) { + /** + * cycle detected we entered still not completed node + */ + if (!i->second) { + return false; + } + continue; + } + + if (!DFS(visited, outLayer, visit, visitBefore)) { + return false; + } + } + if (!visitBefore) + visit(layer); + visited[layer->getId()] = true; + return true; + } +}; + +} // namespace details +} // namespace InferenceEngine diff --git a/inference-engine/include/details/ie_irelease.hpp b/inference-engine/include/details/ie_irelease.hpp index 6f5aa01d748a7c..a1b55ddded7664 100644 --- a/inference-engine/include/details/ie_irelease.hpp +++ b/inference-engine/include/details/ie_irelease.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/ie_no_copy.hpp b/inference-engine/include/details/ie_no_copy.hpp index 588dc2445aa877..8d823add574eab 100644 --- a/inference-engine/include/details/ie_no_copy.hpp +++ b/inference-engine/include/details/ie_no_copy.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/ie_no_release.hpp b/inference-engine/include/details/ie_no_release.hpp index 6e348ee826a541..3afe7c52dc6843 100644 --- a/inference-engine/include/details/ie_no_release.hpp +++ b/inference-engine/include/details/ie_no_release.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/ie_pre_allocator.hpp b/inference-engine/include/details/ie_pre_allocator.hpp index 6953bc1d5b73e5..b280cc13870ddb 100644 --- a/inference-engine/include/details/ie_pre_allocator.hpp +++ b/inference-engine/include/details/ie_pre_allocator.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -37,9 +36,8 @@ class PreAllocator : public IAllocator { } /** * @brief The PreAllocator class does not utilize this function - * @param handle Memory handle to unlock */ - void unlock(void * handle) noexcept override {} + void unlock(void *) noexcept override {} // NOLINT /** * @brief Returns a pointer to preallocated memory @@ -55,10 +53,11 @@ class PreAllocator : public IAllocator { } /** * @brief The PreAllocator class cannot release the handle - * @param handle Memory handle to release * @return false */ - bool free(void* handle) noexcept override { return false;} + bool free(void *) noexcept override { // NOLINT + return false; + } /** * @brief Deletes current allocator. diff --git a/inference-engine/include/details/ie_so_loader.h b/inference-engine/include/details/ie_so_loader.h index 4c6dd3f533b0f6..6b93d26bd44f46 100644 --- a/inference-engine/include/details/ie_so_loader.h +++ b/inference-engine/include/details/ie_so_loader.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/ie_so_pointer.hpp b/inference-engine/include/details/ie_so_pointer.hpp index 6932360082b10d..a4973ff697ec2d 100644 --- a/inference-engine/include/details/ie_so_pointer.hpp +++ b/inference-engine/include/details/ie_so_pointer.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -86,7 +85,7 @@ class SOPointer { * @brief The main constructor * @param name Name of a shared library file */ - explicit SOPointer(const std::string &name) + explicit SOPointer(const file_name_t &name) : _so_loader(new Loader(name.c_str())) , _pointedObj(details::shared_from_irelease( SymbolLoader(_so_loader).template instantiateSymbol(SOCreatorTrait::name))) { @@ -161,6 +160,6 @@ class SOPointer { * @param name Name of the shared library file */ template -inline std::shared_ptr make_so_pointer(const std::string & name) = delete; +inline std::shared_ptr make_so_pointer(const file_name_t & name) = delete; } // namespace InferenceEngine diff --git a/inference-engine/include/details/os/lin_shared_object_loader.h b/inference-engine/include/details/os/lin_shared_object_loader.h index e9ad2f8ca3722f..9e883f3d7663a7 100644 --- a/inference-engine/include/details/os/lin_shared_object_loader.h +++ b/inference-engine/include/details/os/lin_shared_object_loader.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/os/win_shared_object_loader.h b/inference-engine/include/details/os/win_shared_object_loader.h index 75b192e72163e3..27be89824af3ac 100644 --- a/inference-engine/include/details/os/win_shared_object_loader.h +++ b/inference-engine/include/details/os/win_shared_object_loader.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -15,7 +14,9 @@ // Avoidance of Windows.h to include winsock library. #define _WINSOCKAPI_ // Avoidance of Windows.h to define min/max. +#ifndef NOMINMAX #define NOMINMAX +#endif #include #include @@ -35,7 +36,7 @@ class SharedObjectLoader { * WinAPI LoadLibrary rules * @param pluginName Full or relative path to the plugin library */ - explicit SharedObjectLoader(const char* pluginName) { + explicit SharedObjectLoader(LPCTSTR pluginName) { char cwd[1024]; shared_object = LoadLibrary(pluginName); if (!shared_object) { diff --git a/inference-engine/include/gna/gna_config.hpp b/inference-engine/include/gna/gna_config.hpp new file mode 100644 index 00000000000000..29b4342d44aca4 --- /dev/null +++ b/inference-engine/include/gna/gna_config.hpp @@ -0,0 +1,78 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief A header that defines advanced related properties for VPU plugins. + * These properties should be used in SetConfig() and LoadNetwork() methods of plugins + * + * @file vpu_plugin_config.hpp + */ + +#pragma once + +#include +#include "../ie_plugin_config.hpp" + +namespace InferenceEngine { + +namespace GNAConfigParams { + +#define GNA_CONFIG_KEY(name) InferenceEngine::GNAConfigParams::_CONFIG_KEY(GNA_##name) +#define GNA_CONFIG_VALUE(name) InferenceEngine::GNAConfigParams::GNA_##name + +#define DECLARE_GNA_CONFIG_KEY(name) DECLARE_CONFIG_KEY(GNA_##name) +#define DECLARE_GNA_CONFIG_VALUE(name) DECLARE_CONFIG_VALUE(GNA_##name) + +/** +* @brief Scale factor that is calculated by user, in order to use static quantisation feature +* This option should be used with floating point value serialized to string with decimal separator equals to . (dot) +*/ +DECLARE_GNA_CONFIG_KEY(SCALE_FACTOR); + +/** +* @brief By default gna api work in Int16 precision, however this can be adjusted if necessary, +* currently supported values are I16, I8 +*/ +DECLARE_GNA_CONFIG_KEY(PRECISION); + + +/** +* @brief if turned on, dump GNA firmware model into specified file +*/ +DECLARE_GNA_CONFIG_KEY(FIRMWARE_MODEL_IMAGE); + +/** +* @brief GNA proc_type setting that should be one of GNA_AUTO, GNA_HW, GNA_SW, GNA_SW_EXACT +*/ +DECLARE_GNA_CONFIG_KEY(DEVICE_MODE); + +DECLARE_GNA_CONFIG_VALUE(AUTO); +DECLARE_GNA_CONFIG_VALUE(HW); +DECLARE_GNA_CONFIG_VALUE(SW); +DECLARE_GNA_CONFIG_VALUE(SW_EXACT); + +/** +* @brief if enabled produced minimum memory footprint for loaded network in GNA memory, default value is YES +*/ +DECLARE_GNA_CONFIG_KEY(COMPACT_MODE); + +/** +* @brief The option to enable/disable uniformly distributed PWL algorithm. +* By default (in case of NO value set) the optimized algorithm called "Recursive Descent Algorithm for Finding +* the Optimal Minimax Piecewise Linear Approximation of Convex Functions is used. +* If value is YES then simple uniform distribution used to create PWL approximation of activation functions +* Uniform distribution usually gives poor approximation with same number of segments +*/ +DECLARE_GNA_CONFIG_KEY(PWL_UNIFORM_DESIGN); + +/** +* @brief By default, the GNA plugin uses one worker thread for inference computations. +* This parameter allows you to create up to 127 threads for software modes. +* +* Note that multithreading mode does not guarantee the same computation order as order +* of issuing. Additionally, in this case, software modes do not implement any serializations. +*/ +DECLARE_GNA_CONFIG_KEY(LIB_N_THREADS); +} // namespace GNAConfigParams +} // namespace InferenceEngine diff --git a/inference-engine/include/hetero/hetero_plugin_config.hpp b/inference-engine/include/hetero/hetero_plugin_config.hpp index 249392edc700cf..4330e1ef70b5aa 100644 --- a/inference-engine/include/hetero/hetero_plugin_config.hpp +++ b/inference-engine/include/hetero/hetero_plugin_config.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_allocator.hpp b/inference-engine/include/ie_allocator.hpp index b326e1dc6aa345..b9f5f5cc9bb922 100644 --- a/inference-engine/include/ie_allocator.hpp +++ b/inference-engine/include/ie_allocator.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_api.h b/inference-engine/include/ie_api.h index 9a77c4ba1d3ec4..3a71e753d52b71 100644 --- a/inference-engine/include/ie_api.h +++ b/inference-engine/include/ie_api.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -11,20 +10,33 @@ #include "details/ie_no_copy.hpp" -#if defined(_WIN32) && !defined(USE_STATIC_IE) - #define INFERENCE_ENGINE_CDECL - #ifdef IMPLEMENT_INFERENCE_ENGINE_API +#if defined(USE_STATIC_IE) || ( defined(__GNUC__) && (__GNUC__ < 4) ) + #define INFERENCE_ENGINE_API(TYPE) extern "C" TYPE + #define INFERENCE_ENGINE_API_CPP(type) type + #define INFERENCE_ENGINE_API_CLASS(type) type + #define INFERENCE_ENGINE_CDECL __attribute__((cdecl)) +#else + #if defined(_WIN32) + #define INFERENCE_ENGINE_CDECL + #ifdef IMPLEMENT_INFERENCE_ENGINE_API #define INFERENCE_ENGINE_API(type) extern "C" __declspec(dllexport) type __cdecl #define INFERENCE_ENGINE_API_CPP(type) __declspec(dllexport) type __cdecl #define INFERENCE_ENGINE_API_CLASS(type) __declspec(dllexport) type - #else + #else #define INFERENCE_ENGINE_API(type) extern "C" __declspec(dllimport) type __cdecl #define INFERENCE_ENGINE_API_CPP(type) __declspec(dllimport) type __cdecl #define INFERENCE_ENGINE_API_CLASS(type) __declspec(dllimport) type + #endif + #else + #define INFERENCE_ENGINE_CDECL __attribute__((cdecl)) + #ifdef IMPLEMENT_INFERENCE_ENGINE_API + #define INFERENCE_ENGINE_API(type) extern "C" __attribute__((visibility("default"))) type + #define INFERENCE_ENGINE_API_CPP(type) __attribute__((visibility("default"))) type + #define INFERENCE_ENGINE_API_CLASS(type) __attribute__((visibility("default"))) type + #else + #define INFERENCE_ENGINE_API(type) extern "C" type + #define INFERENCE_ENGINE_API_CPP(type) type + #define INFERENCE_ENGINE_API_CLASS(type) type + #endif #endif -#else -#define INFERENCE_ENGINE_API(TYPE) extern "C" TYPE -#define INFERENCE_ENGINE_API_CPP(type) type -#define INFERENCE_ENGINE_API_CLASS(type) type -#define INFERENCE_ENGINE_CDECL __attribute__((cdecl)) #endif diff --git a/inference-engine/include/ie_blob.h b/inference-engine/include/ie_blob.h index c6d02031ab9539..21267a36157798 100644 --- a/inference-engine/include/ie_blob.h +++ b/inference-engine/include/ie_blob.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -126,7 +125,7 @@ class Blob { * @param layout New layout to set * @return Total number of elements (a product of all the dimensions) */ - size_t Resize(const SizeVector &dims, Layout layout = Layout::ANY) { + size_t Resize(const SizeVector &dims, Layout layout = Layout::ANY) noexcept { bool bret = deallocate(); if (layout != Layout::ANY) { @@ -147,9 +146,9 @@ class Blob { * @param layout New layout to set * @return The total number of elements (a product of all the dims) */ - size_t Reshape(const SizeVector &dims, Layout layout = Layout::ANY) { + size_t Reshape(const SizeVector &dims, Layout layout = Layout::ANY) noexcept { if (product(tensorDesc.getDims()) != product(dims)) { - THROW_IE_EXCEPTION << "cannot reshape when total size changes"; + return 0; } if (layout != Layout::ANY) { @@ -164,28 +163,28 @@ class Blob { * @deprecated Please use TensorDesc for working with dimensions. * @brief Returns the tensor dimensions vector with reversed order. */ - const SizeVector dims() const { + const SizeVector dims() const noexcept { return SizeVector(tensorDesc.getDims().rbegin(), tensorDesc.getDims().rend()); } /** * @brief Returns the tensor description */ - const TensorDesc &getTensorDesc() const { + const TensorDesc &getTensorDesc() const noexcept { return tensorDesc; } /** * @brief Returns the total number of elements (a product of all the dims) */ - size_t size() const { + size_t size() const noexcept { return product(tensorDesc.getDims()); } /** * @brief Returns the size of the current Blob in bytes. */ - size_t byteSize() const { + size_t byteSize() const noexcept { return product(tensorDesc.getDims()) * element_size(); } @@ -199,27 +198,27 @@ class Blob { * @brief Allocates memory to store the data. * Abstract method. */ - virtual void allocate() = 0; + virtual void allocate() noexcept = 0; /** * @brief Releases previously allocated data. * Abstract method. */ - virtual bool deallocate() = 0; + virtual bool deallocate() noexcept = 0; /** * @brief Gets access to the allocated memory. * Abstract method. * @return A LockedMemory object */ - virtual LockedMemory buffer() = 0; + virtual LockedMemory buffer() noexcept = 0; /** * @brief Gets read-only access to the allocated memory. * Abstract method. * @return A LockedMemory object */ - virtual LockedMemory cbuffer() const = 0; + virtual LockedMemory cbuffer() const noexcept = 0; protected: /** @@ -232,7 +231,7 @@ class Blob { * @param dims Reference to a vector with dimension values of type size_t * @return Result of multiplication */ - static size_t product(const SizeVector &dims) { + static size_t product(const SizeVector &dims) noexcept { if (dims.empty()) return 0; return std::accumulate(std::begin(dims), std::end(dims), (size_t) 1, std::multiplies()); @@ -401,7 +400,7 @@ class TBlob : public Blob { * @brief Creates an new empty rvalue LockedMemory object. * @return rvalue for the empty locked object of type T */ - virtual LockedMemory data() { + virtual LockedMemory data() noexcept { return std::move(lockme()); } @@ -409,7 +408,7 @@ class TBlob : public Blob { * @brief Creates a new empty rvalue read-only LockedMemory object. * @return rvalue for the empty locked const object of type T. */ - virtual LockedMemory readOnly() const { + virtual LockedMemory readOnly() const noexcept { return std::move(lockme()); } @@ -418,7 +417,7 @@ class TBlob : public Blob { * @brief Copies data from the given vector to the blob. * @param that Vector of values to copy to the blob */ - void set(const std::vector &that) { + void set(const std::vector &that) { if (tensorDesc.getDims().size() != 0 && that.size() != product(tensorDesc.getDims())) THROW_IE_EXCEPTION << "Size mismatch between dims and vector"; if (tensorDesc.getDims().size() == 0) { @@ -435,7 +434,7 @@ class TBlob : public Blob { /** * @brief Allocates or reallocates memory */ - void allocate() override { + void allocate() noexcept override { if (_handle != nullptr) { getAllocator()->free(_handle); } @@ -445,7 +444,7 @@ class TBlob : public Blob { /** * @brief Frees all allocated data */ - bool deallocate() override { + bool deallocate() noexcept override { return free(); } @@ -453,7 +452,7 @@ class TBlob : public Blob { * @brief Creates a new LockedMemory instance holding void pointer. * @return LockedMemory instance holding void pointer */ - LockedMemory buffer() override { + LockedMemory buffer() noexcept override { return std::move(lockme()); } @@ -461,7 +460,7 @@ class TBlob : public Blob { * @brief Creates a new LockedMemory instance holding constant void pointer. * @return LockedMemory instance holding constant void pointer */ - LockedMemory cbuffer() const override { + LockedMemory cbuffer() const noexcept override { return std::move(lockme()); } @@ -589,6 +588,7 @@ class TBlob : public Blob { */ template inline typename TBlob::Ptr make_shared_blob(Precision p, Layout l, const SizeVector &dims) { + IE_ASSERT(p.hasStorageType()); return std::make_shared>(p, l, dims); } @@ -602,6 +602,7 @@ inline typename TBlob::Ptr make_shared_blob(Precision p, Layout l, const S */ template inline typename TBlob::Ptr make_shared_blob(Precision p, const SizeVector &dims) { + IE_ASSERT(p.hasStorageType()); return make_shared_blob(p, TensorDesc::getLayoutByDims(dims), dims); } @@ -615,6 +616,7 @@ inline typename TBlob::Ptr make_shared_blob(Precision p, const SizeVector */ template inline typename InferenceEngine::TBlob::Ptr make_shared_blob(Precision p, Layout l, const TArg &arg) { + IE_ASSERT(p.hasStorageType()); return std::make_shared>(p, l, arg); } @@ -628,6 +630,7 @@ inline typename InferenceEngine::TBlob::Ptr make_shared_blob(Precision p, */ template inline typename InferenceEngine::TBlob::Ptr make_shared_blob(Precision p, const TArg &arg) { + IE_ASSERT(p.hasStorageType()); return make_shared_blob(p, TensorDesc::getLayoutByDims(arg), arg); } @@ -639,6 +642,7 @@ inline typename InferenceEngine::TBlob::Ptr make_shared_blob(Precision p, */ template inline typename InferenceEngine::TBlob::Ptr make_shared_blob(const TensorDesc& tensorDesc) { + IE_ASSERT(tensorDesc.getPrecision().hasStorageType()); return std::make_shared>(tensorDesc); } @@ -652,6 +656,7 @@ inline typename InferenceEngine::TBlob::Ptr make_shared_blob(const TensorD */ template inline typename InferenceEngine::TBlob::Ptr make_shared_blob(const TensorDesc& tensorDesc, Type * ptr, size_t size = 0) { + IE_ASSERT(tensorDesc.getPrecision().hasStorageType()); return std::make_shared>(tensorDesc, ptr, size); } @@ -682,13 +687,14 @@ inline typename InferenceEngine::TBlob::Ptr make_shared_blob(const TBlob /** * @deprecated Use TensorDesc in order to create Blob::Ptr. * @brief Creates a blob with the given precision. - * @tparam Type Type of the shared pointer to be created + * @tparam TypeTo Type of the shared pointer to be created * @param p Given precision * @return A shared pointer to the blob created */ -template -inline typename InferenceEngine::TBlob::Ptr make_shared_blob(Precision p, Layout l = NCHW) { - return std::make_shared>(p, l); +template +inline typename InferenceEngine::TBlob::Ptr make_shared_blob(Precision p, Layout l = NCHW) { + IE_ASSERT(p.hasStorageType()); + return std::make_shared>(p, l); } /** @@ -703,6 +709,7 @@ inline typename InferenceEngine::TBlob::Ptr make_shared_blob(Precision p, */ template inline typename TBlob::Ptr make_shared_blob(Precision p, Layout l, SizeVector dims, const std::vector &arg) { + IE_ASSERT(p.hasStorageType()); auto blob = std::make_shared>(p, l, dims); blob->set(arg); return blob; @@ -719,6 +726,7 @@ inline typename TBlob::Ptr make_shared_blob(Precision p, Layout l, SizeV */ template inline typename TBlob::Ptr make_shared_blob(Precision p, Layout l, const std::vector &arg) { + IE_ASSERT(p.hasStorageType()); auto blob = std::make_shared>(p, l); blob->set(arg); return blob; @@ -734,6 +742,7 @@ inline typename TBlob::Ptr make_shared_blob(Precision p, Layout l, const */ template inline typename TBlob::Ptr make_shared_blob(Precision p, const std::vector &arg) { + IE_ASSERT(p.hasStorageType()); return make_shared_blob(p, TensorDesc::getLayoutByDims(arg), arg); } @@ -749,6 +758,7 @@ inline typename TBlob::Ptr make_shared_blob(Precision p, const std::vect */ template inline typename TBlob::Ptr make_shared_blob(Precision p, Layout l, const SizeVector &dims, TypeTo * ptr, size_t size = 0) { + IE_ASSERT(p.hasStorageType()); auto blob = std::make_shared>(p, l, dims, ptr, size); return blob; } @@ -764,6 +774,7 @@ inline typename TBlob::Ptr make_shared_blob(Precision p, Layout l, const */ template inline typename TBlob::Ptr make_shared_blob(Precision p, const SizeVector &dims, TypeTo * ptr, size_t size = 0) { + IE_ASSERT(p.hasStorageType()); return make_shared_blob(p, TensorDesc::getLayoutByDims(dims), dims, ptr, size); } diff --git a/inference-engine/include/ie_builders.hpp b/inference-engine/include/ie_builders.hpp new file mode 100644 index 00000000000000..ad2543fa8b7fd4 --- /dev/null +++ b/inference-engine/include/ie_builders.hpp @@ -0,0 +1,49 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/inference-engine/include/ie_common.h b/inference-engine/include/ie_common.h index 6489e8a7db8dcf..e08c2652fc15f9 100644 --- a/inference-engine/include/ie_common.h +++ b/inference-engine/include/ie_common.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -14,8 +13,11 @@ #include #include #include +#include #include
+#include "ie_unicode.hpp" + namespace InferenceEngine { /** * @brief Represents tensor size. @@ -67,12 +69,6 @@ union UserValue { void *v_ptr; }; -enum CellType { - ORIG, - LSTM, - GRU -}; - /** * @enum Layout * @brief Layouts that the inference engine supports @@ -83,6 +79,8 @@ enum Layout : uint8_t { // I/O data layouts NCHW = 1, NHWC = 2, + NCDHW = 3, + NDHWC = 4, // weight layouts OIHW = 64, diff --git a/inference-engine/include/ie_context.hpp b/inference-engine/include/ie_context.hpp new file mode 100644 index 00000000000000..d7aca9061781d9 --- /dev/null +++ b/inference-engine/include/ie_context.hpp @@ -0,0 +1,50 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief This is a header file for the IE Context class + * @file ie_context.hpp + */ +#pragma once + +#include
+#include +#include +#include +#include + +namespace InferenceEngine { + +/** + * @brief This class implements object + */ +class INFERENCE_ENGINE_API_CLASS(Context) { +public: + Context(); + + /** + * @brief Registers extension within the context + * @param ext Pointer to already loaded extension + */ + void addExtension(const IShapeInferExtensionPtr& ext); + + /** + * @brief Registers Shape Infer implementation within the Context + * @param type Layer type + * @param impl Shape Infer implementation + */ + void addShapeInferImpl(const std::string& type, const IShapeInferImpl::Ptr& impl); + + /** + * @brief Returns the shape infer implementation by layer type + * @param type Layer type + * @return Shape Infer implementation + */ + IShapeInferImpl::Ptr getShapeInferImpl(const std::string& type); + +private: + details::caseless_map shapeInferImpls; +}; + +} // namespace InferenceEngine diff --git a/inference-engine/include/ie_data.h b/inference-engine/include/ie_data.h index 818594e4c39af0..2088919d7c79ba 100644 --- a/inference-engine/include/ie_data.h +++ b/inference-engine/include/ie_data.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -160,6 +159,6 @@ class INFERENCE_ENGINE_API_CLASS(Data) { */ const UserValue& getUserObject() const; private: - TensorDesc tensorDesc; + mutable TensorDesc tensorDesc; }; } // namespace InferenceEngine diff --git a/inference-engine/include/ie_device.hpp b/inference-engine/include/ie_device.hpp index 2a2b9b6d750b5a..2cc67cc8225304 100644 --- a/inference-engine/include/ie_device.hpp +++ b/inference-engine/include/ie_device.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -28,6 +27,7 @@ enum class TargetDevice : uint8_t { eGPU = 3, eFPGA = 4, eMYRIAD = 5, + eHDDL = 6, eGNA = 7, eHETERO = 8 }; @@ -51,6 +51,7 @@ class TargetDeviceInfo { DECL_DEVICE(GPU), DECL_DEVICE(FPGA), DECL_DEVICE(MYRIAD), + DECL_DEVICE(HDDL), DECL_DEVICE(GNA), DECL_DEVICE(HETERO) }; @@ -65,6 +66,7 @@ class TargetDeviceInfo { { "GPU", InferenceEngine::TargetDevice::eGPU }, { "FPGA", InferenceEngine::TargetDevice::eFPGA }, { "MYRIAD", InferenceEngine::TargetDevice::eMYRIAD }, + { "HDDL", InferenceEngine::TargetDevice::eHDDL }, { "GNA", InferenceEngine::TargetDevice::eGNA }, { "BALANCED", InferenceEngine::TargetDevice::eBalanced }, { "HETERO", InferenceEngine::TargetDevice::eHETERO } diff --git a/inference-engine/include/ie_error.hpp b/inference-engine/include/ie_error.hpp index 3f0e80c2c92535..a934a78566dbff 100644 --- a/inference-engine/include/ie_error.hpp +++ b/inference-engine/include/ie_error.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_extension.h b/inference-engine/include/ie_extension.h index 871d8c99f2c48e..926dbd6c8cb993 100644 --- a/inference-engine/include/ie_extension.h +++ b/inference-engine/include/ie_extension.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -53,7 +52,7 @@ class Extension : public IExtension { * @brief Loads extension from a shared library * @param name Full or relative path to extension library */ - explicit Extension(const std::string &name) + explicit Extension(const file_name_t &name) : actual(name) {} /** @@ -127,7 +126,7 @@ class ShapeInferExtension : public IShapeInferExtension { * @brief Loads extension from a shared library * @param name Full or relative path to extension library */ - explicit ShapeInferExtension(const std::string &name) + explicit ShapeInferExtension(const file_name_t &name) : actual(name) {} /** @@ -192,7 +191,7 @@ class ShapeInferExtension : public IShapeInferExtension { * @return shared_pointer A wrapper for the given type from a specific shared module */ template<> -inline std::shared_ptr make_so_pointer(const std::string &name) { +inline std::shared_ptr make_so_pointer(const file_name_t &name) { return std::make_shared(name); } @@ -202,7 +201,7 @@ inline std::shared_ptr make_so_pointer(const std::string & * @return shared_pointer A wrapper for the given type from a specific shared module */ template<> -inline std::shared_ptr make_so_pointer(const std::string &name) { +inline std::shared_ptr make_so_pointer(const file_name_t &name) { return std::make_shared(name); } diff --git a/inference-engine/include/ie_icnn_net_reader.h b/inference-engine/include/ie_icnn_net_reader.h index 0a060b121adbec..820c2b442d5c24 100644 --- a/inference-engine/include/ie_icnn_net_reader.h +++ b/inference-engine/include/ie_icnn_net_reader.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_icnn_network.hpp b/inference-engine/include/ie_icnn_network.hpp index 6aa1f84e3923ca..07b244412c16bf 100644 --- a/inference-engine/include/ie_icnn_network.hpp +++ b/inference-engine/include/ie_icnn_network.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -29,8 +28,6 @@ namespace InferenceEngine { * @brief A collection that contains string as key, and Data smart pointer as value */ using OutputsDataMap = std::map; -class IShapeInferExtension; -using IShapeInferExtensionPtr = std::shared_ptr; /** * @brief This is the main interface to describe the NN topology @@ -148,8 +145,9 @@ class ICNNNetwork : public details::IRelease { * @return Status code of the operation * @note: Current implementation of the function sets batch size to the first dimension of all layers in the networks. * Before calling it make sure that all your layers have batch in the first dimension, otherwise the method works incorrectly. - * This limitation is resolved via [Shape Inference feature](./docs/Inference_Engine_Developer_Guide/ShapeInference.md) + * This limitation is resolved via shape inference feature * by using InferenceEngine::ICNNNetwork::reshape method. + * To read more refer to the Shape Inference section in documentation */ virtual StatusCode setBatchSize(size_t size, ResponseDesc* responseDesc) noexcept = 0; @@ -170,7 +168,7 @@ class ICNNNetwork : public details::IRelease { * @param resp Pointer to the response message that holds a description of an error if any occurred * @return Status code of the operation */ - virtual StatusCode reshape(const InputShapes& inputShapes, ResponseDesc* resp) noexcept { return NOT_IMPLEMENTED; }; + virtual StatusCode reshape(const InputShapes& /*inputShapes*/, ResponseDesc* /*resp*/) noexcept { return NOT_IMPLEMENTED; }; /** * @brief Registers extension within the plugin @@ -179,8 +177,16 @@ class ICNNNetwork : public details::IRelease { * @return Status code of the operation. OK if succeeded */ virtual StatusCode - AddExtension(const IShapeInferExtensionPtr& extension, ResponseDesc* resp) noexcept { return NOT_IMPLEMENTED; }; + AddExtension(const IShapeInferExtensionPtr& /*extension*/, ResponseDesc* /*resp*/) noexcept { return NOT_IMPLEMENTED; }; + + virtual StatusCode getStats(ICNNNetworkStats** /*stats*/, ResponseDesc* /*resp*/) const noexcept { return NOT_IMPLEMENTED; }; - virtual StatusCode getStats(ICNNNetworkStats** stats, ResponseDesc* resp) const noexcept { return NOT_IMPLEMENTED; }; + /** + * @brief Serialize network to IR and weights files. + * @param xmlPath Path to output IR file. + * @param binPath Path to output weights file. + * @return Status code of the operation + */ + virtual StatusCode serialize(const std::string &xmlPath, const std::string &binPath, ResponseDesc* resp) const noexcept = 0; }; } // namespace InferenceEngine diff --git a/inference-engine/include/ie_icnn_network_stats.hpp b/inference-engine/include/ie_icnn_network_stats.hpp index 904a5f2b828fa3..440c202677bab9 100644 --- a/inference-engine/include/ie_icnn_network_stats.hpp +++ b/inference-engine/include/ie_icnn_network_stats.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_iexecutable_network.hpp b/inference-engine/include/ie_iexecutable_network.hpp index efc6f5b35d4a84..0b0a915d419c7e 100644 --- a/inference-engine/include/ie_iexecutable_network.hpp +++ b/inference-engine/include/ie_iexecutable_network.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_iextension.h b/inference-engine/include/ie_iextension.h index 54e0b7051c23e0..c0ea3f82d30b5e 100644 --- a/inference-engine/include/ie_iextension.h +++ b/inference-engine/include/ie_iextension.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -135,8 +134,8 @@ class ILayerImplFactory { * @param resp Response descriptor * @return Status code */ - virtual StatusCode getShapes(const std::vector& inShapes, std::vector& outShapes, - ResponseDesc* resp) noexcept { + virtual StatusCode getShapes(const std::vector& /*inShapes*/, std::vector& /*outShapes*/, + ResponseDesc* /*resp*/) noexcept { return NOT_IMPLEMENTED; } @@ -230,11 +229,11 @@ class IExtension : public IShapeInferExtension { */ virtual StatusCode getPrimitiveTypes(char**& types, unsigned int& size, ResponseDesc* resp) noexcept = 0; - StatusCode getShapeInferTypes(char**& types, unsigned int& size, ResponseDesc* resp) noexcept override { + StatusCode getShapeInferTypes(char**&, unsigned int&, ResponseDesc*) noexcept override { return NOT_IMPLEMENTED; }; - StatusCode getShapeInferImpl(IShapeInferImpl::Ptr& impl, const char* type, ResponseDesc* resp) noexcept override { + StatusCode getShapeInferImpl(IShapeInferImpl::Ptr&, const char*, ResponseDesc*) noexcept override { return NOT_IMPLEMENTED; }; }; diff --git a/inference-engine/include/ie_ihetero_plugin.hpp b/inference-engine/include/ie_ihetero_plugin.hpp index a202fb39a28c7c..326c35003ad743 100644 --- a/inference-engine/include/ie_ihetero_plugin.hpp +++ b/inference-engine/include/ie_ihetero_plugin.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -80,7 +79,7 @@ class IHeteroDeviceLoader { */ virtual void QueryNetwork(const std::string &device, const ICNNNetwork &network, - const std::map& config, + const std::map& /*config*/, QueryNetworkResult &res) noexcept { QueryNetwork(device, network, res); }; diff --git a/inference-engine/include/ie_iinfer_request.hpp b/inference-engine/include/ie_iinfer_request.hpp index 708babad04e0d1..fe09be70ccc264 100644 --- a/inference-engine/include/ie_iinfer_request.hpp +++ b/inference-engine/include/ie_iinfer_request.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_imemory_state.hpp b/inference-engine/include/ie_imemory_state.hpp index f2bfbf811dc28f..2c007dfb05d865 100644 --- a/inference-engine/include/ie_imemory_state.hpp +++ b/inference-engine/include/ie_imemory_state.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_inetwork.hpp b/inference-engine/include/ie_inetwork.hpp new file mode 100644 index 00000000000000..41c02f00c16ef8 --- /dev/null +++ b/inference-engine/include/ie_inetwork.hpp @@ -0,0 +1,366 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief a header file for the Inference Engine Network interface + * @file ie_inetwork.hpp + */ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace InferenceEngine { + +/** + * @brief A type of network objects indexes. + */ +using idx_t = size_t; + +/** + * @brief This class contains a pair from layerId and port index + */ +class PortInfo { +public: + /** + * @brief The constructor creates a PortInfo object for port 0 + * @param layerID Layer id + */ + PortInfo(idx_t layerID): layer(layerID), port(0) {} // NOLINT + + /** + * @brief The constructor creates a PortInfo object + * @param layerID Layer id + * @param portID Port id + */ + PortInfo(idx_t layerID, idx_t portID): layer(layerID), port(portID) {} + + /** + * @brief Get layer id + * @return Layer id + */ + idx_t layerId() const { + return layer; + } + + /** + * @brief Get port id + * @return Port id + */ + idx_t portId() const { + return port; + } + + /** + * @brief Compares the given PortInfo object with the current one + * @param portInfo PortInfo object to compare with + * @return true if the given PortInfo object is equal to the current one, false - otherwise + */ + bool operator==(const PortInfo& portInfo) const { + return layer == portInfo.layerId() && port == portInfo.portId(); + } + + /** + * @brief Checks if the given PortInfo object is not equal to the current one + * @param portInfo PortInfo object to compare with + * @return true if the given PortInfo object is not equal to the current one, false - otherwise + */ + bool operator!=(const PortInfo& portInfo) const { + return !(*this == portInfo); + } + +private: + idx_t layer; + idx_t port; +}; + +/** + * @brief This class is the main object to describe the Inference Engine connection. + */ +class Connection { +public: + /** + * @brief Constructor of a connection object. + * @param input pair of the index of input layer and the index of output port + * @param output pair of the index of output layer and the index of input port + */ + Connection(const PortInfo& input, const PortInfo& output): input(input), output(output) {} + + /** + * @brief Compares the given Connection with the current one + * @param connection Connection to compare with + * @return true if the given Connection is equal to the current one, false - otherwise + */ + bool operator==(const Connection& connection) const { + return input == connection.from() && output == connection.to(); + } + + /** + * @brief Checks if the given Connection is not equal to the current one + * @param connection Connection to compare with + * @return true if the given Connection is not equal to the current one, false - otherwise + */ + bool operator!=(const Connection& connection) const { + return !(*this == connection); + } + + /** + * Returns a constant reference to a pair of input layer index and output port index. + * @return pair of the index of input layer and the index of output port + */ + const PortInfo& from() const { + return input; + } + + /** + * Returns a constant reference to a pair of output layer index and input port index. + * @return pair of the index of output layer and the index of input port + */ + const PortInfo& to() const { + return output; + } + +private: + PortInfo input; + PortInfo output; +}; + +/** + * @brief This class is the main object to describe the Inference Engine port. + */ +class Port { +public: + /** + * @brief Default constructor of a port object. + */ + Port() = default; + /** + * @brief Constructor of a port object with shapes. + * @param shapes port shapes + */ + explicit Port(const SizeVector& shapes): pShapes(shapes) {} + + /** + * @brief Copy constructor. + * @param port object to copy + */ + Port(const Port& port) { + this->pShapes = port.pShapes; + } + + /** + * @brief Returns a constant reference to a vector with shapes. + * Shapes should be initialized if shape is empty. + * @return constant reference to shapes + */ + const SizeVector& shape() const noexcept { + return pShapes; + } + + /** + * @brief Returns a reference to a vector with shapes. + * Shapes should be initialized if shape is empty. + * @return reference to shapes + */ + SizeVector& shape() noexcept { + return pShapes; + } + +private: + SizeVector pShapes; +}; + +/** + * @brief This class is the main interface to describe the Inference Engine layer parameters. + * All methods here are constant and do not throw exceptions. + */ +class IParameters { +public: + /** + * @brief A shared pointer to the IParameters object. + */ + using Ptr = std::shared_ptr; + + /** + * @brief Virtual destructor for the parameters interface + */ + virtual ~IParameters() = default; + + /** + * @brief Returns a constant reference to a map with parameters. + * @return Map of parameters + */ + virtual const std::map& getParameters() const noexcept = 0; + + /** + * @brief Returns a constant reference to a constant pointers to constant data. + * @return Map of constant pointers to constant data + */ + virtual const std::map& getConstantData() const noexcept = 0; +}; + +class INetwork; +template +class INetwotkIterator; + +/** + * @brief This class is the main interface to describe the Inference Engine layer. + * All methods here are constant and do not throw exceptions. + */ +class ILayer { +public: + /** + * @brief A shared pointer to the ILayer object + */ + using Ptr = std::shared_ptr; + /** + * @brief A shared pointer to the const ILayer object + */ + using CPtr = std::shared_ptr; + + /** + * @brief Virtual destructor for the layer interface + */ + virtual ~ILayer() = default; + + /** + * @brief Returns a id of the layer. + * @return Layer id + */ + virtual idx_t getId() const noexcept = 0; + + /** + * @brief Returns a layer name. + * @return Layer name + */ + virtual const std::string& getName() const noexcept = 0; + + /** + * @brief Returns a layer type. + * @return Layer type + */ + virtual const std::string& getType() const noexcept = 0; + + /** + * @brief Returns a constant smart pointer reference to a Network interface. + * @return Network interface smart pointer + */ + virtual const std::shared_ptr& getGraph() const noexcept = 0; + + /** + * @brief Returns a constant smart pointer reference to a Parameters interface. + * @return Parameters interface smart pointer + */ + virtual const IParameters::Ptr& getParameters() const noexcept = 0; + + /** + * @brief Returns a constant reference to a vector with input ports. + * @return Vector of input ports + */ + virtual const std::vector& getInputPorts() const noexcept = 0; + + /** + * @brief Returns a constant reference to a vector with output ports. + * @return Vector of output ports + */ + virtual const std::vector& getOutputPorts() const noexcept = 0; +}; + +namespace details { + +template +class INetworkIterator; + +} // namespace details + +/** + * @brief This class is the main interface to describe the Inference Engine network. + * + * All methods here are constant and do not throw exceptions. + */ +class INetwork { +public: + /** + * @brief A shared pointer to the INetwork object. + */ + using Ptr = std::shared_ptr; + /** + * @brief A constant iterator for INetwork objects definition + */ + using const_iterator = details::INetworkIterator; + + /** + * @brief Virtual destructor for the network interface + */ + virtual ~INetwork() = default; + + /** + * @brief Begin network iterator + * @return const INetwork iterator + */ + virtual const_iterator begin() const noexcept = 0; + + /** + * @brief End network iterator + * @return const INetwork iterator + */ + virtual const_iterator end() const noexcept = 0; + + /** + * @brief Returns a number of layers in the network. + * @return Layers count + */ + virtual size_t size() const noexcept = 0; + + /** + * @brief Returns a constant smart pointer to a Layer interface. + * If the layer is missing, returns nullptr. + * @param id Id of the Layer + * @return Layer interface smart pointer + */ + virtual const ILayer::Ptr getLayer(idx_t id) const noexcept = 0; + + /** + * @brief Returns a constant vector of input layers. + * @return Vector of input layers + */ + virtual const std::vector getInputs() const noexcept = 0; + + /** + * @brief Returns a constant vector of output layers. + * @return Vector of output layers + */ + virtual const std::vector getOutputs() const noexcept = 0; + + /** + * @brief Returns a constant vector of connections for specific layer. + * If the layer is missing, returns empty vector. + * @param layerId layer index + * @return Vector of connections + */ + virtual const std::vector getLayerConnections(idx_t layerId) const noexcept = 0; + + /** + * @brief Returns a network name. + * @return Network name + */ + virtual const std::string& getName() const noexcept = 0; + + /** + * @brief Returns a network context + * @return const reference to Context + */ + virtual const Context& getContext() const noexcept = 0; +}; + +} // namespace InferenceEngine + +#include
diff --git a/inference-engine/include/ie_input_info.hpp b/inference-engine/include/ie_input_info.hpp index 24a99bdc168b9f..17f6a67f80aa4c 100644 --- a/inference-engine/include/ie_input_info.hpp +++ b/inference-engine/include/ie_input_info.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_layers.h b/inference-engine/include/ie_layers.h index 46d5d3efc4355b..4582842b2464b3 100644 --- a/inference-engine/include/ie_layers.h +++ b/inference-engine/include/ie_layers.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -22,8 +21,6 @@ #include "ie_device.hpp" #include "ie_layers_property.hpp" -#include "ie_icnn_network.hpp" - namespace InferenceEngine { /** * @brief This is an internal common Layer parameter parsing arguments @@ -503,6 +500,10 @@ class ConvolutionLayer : public WeightableLayer { * @brief Number of groups */ unsigned int _group = 1u; + /** + * @brief Auto padding type + */ + std::string _auto_pad; /** * @brief Creates a new ConvolutionLayer instance. @@ -593,6 +594,10 @@ class PoolingLayer : public CNNLayer { * @brief A flag that indicates if padding is excluded or not */ bool _exclude_pad = false; + /** + * @brief Auto padding type + */ + std::string _auto_pad; /** * @brief Creates a new PoolingLayer instance. @@ -926,61 +931,33 @@ class ScaleShiftLayer : public WeightableLayer { }; /** -* @brief This class represents RNN sequence layer -*/ -class RNNLayer : public WeightableLayer { -public: - CellType cellType; - - /** - * @brief An axis by which iteration is performed. Axis=0 means first input blob dimension is sequence, axis=1 means first dimension is batch. - */ - unsigned int _axis = 1; - - using WeightableLayer::WeightableLayer; - - /** - * @brief Creates a new RNNLayer instance. - */ - explicit RNNLayer(const LayerParams &p) : WeightableLayer(p) {} -}; - -/** -* @brief This class represents LSTMCell pseudo-layer to be used in TensorIterator -*/ -class LSTMCell : public WeightableLayer { -public: - using WeightableLayer::WeightableLayer; -}; - -class ICNNNetReader; -/** -* @brief This class represents TensorIterator layer -*/ + * @brief This class represents TensorIterator layer + */ class TensorIterator : public CNNLayer { public: - using CNNNetReaderPtr = std::shared_ptr; - CNNNetReaderPtr reader; - - struct BackEdge { - int fromLayer; - int fromPort; - int toLayer; - int toPort; + struct PortMap { + // Data map rule + int from; /**< Index of exteral data from ins/outs fields of CNNLayer */ + int to; /**< Index of internal data in iterator body */ + + // Iteration rule + int axis; /**< Axis to iterate throught */ + int stride; /**< Stride to iterate throught */ + int start; /**< Start index of iteration range */ + int end; /**< Last index of iteration range */ + int part_size; /**< Part size which will be transfered to body subnetwork */ }; - struct Port { - int external_port_id; - int internal_layer_id; - int internal_port_id; - int axis; - int part_size; - int stride; + struct Body { + std::vector inputs; + std::vector outputs; }; - std::vector input_ports; - std::vector output_ports; - std::vector backEdges; + std::vector input_port_map; + std::vector output_port_map; + std::vector back_edges; + + Body body; using CNNLayer::CNNLayer; }; @@ -1045,4 +1022,83 @@ class BatchNormalizationLayer : public WeightableLayer { using WeightableLayer::WeightableLayer; }; +/** + * @brief This class represents a general matrix multiplication operation layer + * Formula is: dst := alpha*src1*src2 + beta*src3 + */ +class GemmLayer : public CNNLayer { +public: + /** + * @brief A scale factor of src1 matrix + */ + float alpha = 1.f; + /** + * @brief A scale factor of src3 matrix + */ + float beta = 1.f; + /** + * @brief A flag that indicates if the src1 matrix is to be transposed + */ + bool transpose_a = false; + /** + * @brief A flag that indicates if the src2 matrix is to be transposed + */ + bool transpose_b = false; + /** + * @brief Creates a new GemmLayer instance. + */ + using CNNLayer::CNNLayer; +}; + +/** + * @brief This class represents a standard Pad layer + * Adds paddings to input tensor + */ +class PadLayer : public CNNLayer { +public: + /** + * @enum ePadMode + * @brief Defines possible modes of pad operation + */ + enum ePadMode { + Constant = 0, Edge, Reflect, Symmetric + }; + + /** + * @brief Size of padding in the beginning of each axis + */ + PropertyVector pads_begin; + /** + * @brief Size of padding in the end of each axis + */ + PropertyVector pads_end; + /** + * @brief Mode of pad operation + */ + ePadMode pad_mode = Constant; + /** + * @brief A pad value which is used for filling in Constant mode + */ + float pad_value = 0.0f; + /** + * @brief Creates a new PadLayer instance. + */ + using CNNLayer::CNNLayer; +}; + +/** + * @brief This class represents a standard Gather layer + * Gather slices from Dictionary according to Indexes + */ +class GatherLayer : public CNNLayer { +public: + /** + * @brief The axis in Dictionary to gather Indexes from + */ + int axis = 0; + /** + * @brief Creates a new GatherLayer instance. + */ + using CNNLayer::CNNLayer; +}; } // namespace InferenceEngine diff --git a/inference-engine/include/ie_layers_property.hpp b/inference-engine/include/ie_layers_property.hpp index d0dcc8a57b81d9..52d434c47801bc 100644 --- a/inference-engine/include/ie_layers_property.hpp +++ b/inference-engine/include/ie_layers_property.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -9,6 +8,8 @@ */ #pragma once +#include + namespace InferenceEngine { constexpr const int MAX_DIMS_NUMBER = 12; @@ -32,13 +33,20 @@ class PropertyVector { if (len > N) { THROW_IE_EXCEPTION << "Property size exceeed limit of: " << N; } - for (int i = 0; i < len; i++) { + for (size_t i = 0; i < len; i++) { _axises[i] = val; _allocated[i] = true; } _length = len; } + explicit PropertyVector(const std::vector& values) { + size_t i = 0; + for (const auto val : values) { + insert(i++, val); + } + } + /** * @brief allows access up-to capacity size * @param index diff --git a/inference-engine/include/ie_layouts.h b/inference-engine/include/ie_layouts.h index 7e5055e1f7e6b1..f4c0e4dd6d4e9c 100644 --- a/inference-engine/include/ie_layouts.h +++ b/inference-engine/include/ie_layouts.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -218,11 +217,18 @@ class INFERENCE_ENGINE_API_CLASS(TensorDesc) { * @param l memory layout */ void setLayout(Layout l) { - bool inconsistentLayout = false; - switch (layout) { + bool inconsistentLayout = true; + switch (l) { case Layout::C: inconsistentLayout = dims.size() != 1; break; + case Layout::BLOCKED: + inconsistentLayout = false; + break; + case Layout::NCDHW: + case Layout::NDHWC: + inconsistentLayout = dims.size() != 5; + break; case Layout::OIHW: case Layout::NCHW: case Layout::NHWC: @@ -240,7 +246,7 @@ class INFERENCE_ENGINE_API_CLASS(TensorDesc) { break; } if (inconsistentLayout) - THROW_IE_EXCEPTION << "Dims and format are inconsistent."; + THROW_IE_EXCEPTION << "Dims(" << std::to_string(dims.size()) << ") and format(" << std::to_string(l) << ") are inconsistent."; layout = l; } diff --git a/inference-engine/include/ie_locked_memory.hpp b/inference-engine/include/ie_locked_memory.hpp index 0269895a8b049d..59e81f07928f5f 100644 --- a/inference-engine/include/ie_locked_memory.hpp +++ b/inference-engine/include/ie_locked_memory.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_parallel.hpp b/inference-engine/include/ie_parallel.hpp index 708da98f2ef056..4dbd3f4af8a863 100644 --- a/inference-engine/include/ie_parallel.hpp +++ b/inference-engine/include/ie_parallel.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -17,20 +16,28 @@ #define IE_THREAD_SEQ 2 #if IE_THREAD == IE_THREAD_TBB +#define TBB_PREVIEW_LOCAL_OBSERVER 1 +#include "tbb/task_scheduler_observer.h" #include "tbb/parallel_for.h" #include "tbb/task_arena.h" #include "tbb/parallel_reduce.h" #include "tbb/blocked_range.h" #include "tbb/blocked_range2d.h" +#include "tbb/blocked_range3d.h" inline int parallel_get_max_threads() { return tbb::this_task_arena::max_concurrency(); } inline int parallel_get_num_threads() { return parallel_get_max_threads(); } inline int parallel_get_thread_num() { return tbb::this_task_arena::current_thread_index(); } inline void parallel_set_num_threads(int n) { return; } +inline int parallel_get_env_threads() { return 0; } #elif IE_THREAD == IE_THREAD_OMP +#include +#include #include + + /* MSVC still supports omp 2.0 only */ #if defined(_MSC_VER) && !defined(__INTEL_COMPILER) # define collapse(x) @@ -39,8 +46,20 @@ inline int parallel_get_max_threads() { return omp_get_max_threads(); } inline int parallel_get_num_threads() { return omp_get_num_threads(); } inline int parallel_get_thread_num() { return omp_get_thread_num(); } inline void parallel_set_num_threads(int n) { omp_set_num_threads(n); } +inline int parallel_get_env_threads() { + int env_cores = 0; + if (getenv("OMP_NUM_THREADS") != nullptr) { + try { + env_cores = std::stoi(getenv("OMP_NUM_THREADS")); + } catch (const std::exception&) { + env_cores = 0; + } + } + return env_cores; +} #elif IE_THREAD == IE_THREAD_SEQ +inline int parallel_get_env_threads() { return 1; } inline int parallel_get_max_threads() { return 1; } inline int parallel_get_num_threads() { return 1; } inline int parallel_get_thread_num() { return 0; } @@ -75,6 +94,35 @@ void parallel_nt(int nthr, F func) { #endif } +template +void parallel_nt_static(int nthr, F func) { +#if IE_THREAD == IE_THREAD_SEQ + const bool serial = true; +#else + const bool serial = false; +#endif + + if (serial || nthr == 1) { + func(0, 1); + return; + } + + if (nthr == 0) nthr = parallel_get_max_threads(); +#if IE_THREAD == IE_THREAD_TBB + tbb::parallel_for(0, nthr, [&](int ithr) { + func(ithr, nthr); + } + , tbb::static_partitioner{}); + +#elif IE_THREAD == IE_THREAD_OMP + +# pragma omp parallel num_threads(nthr) + { + func(parallel_get_thread_num(), parallel_get_num_threads()); + } +#endif +} + template R parallel_sum(const T0 D0, R &input, F func) { #if IE_THREAD == IE_THREAD_TBB @@ -91,10 +139,17 @@ R parallel_sum(const T0 D0, R &input, F func) { }); #else R sum = input; + +#ifdef _MSC_VER + using T0_IT = typename std::make_signed::type; +#else + using T0_IT = T0; +#endif + #if IE_THREAD == IE_THREAD_OMP #pragma omp parallel for reduction(+ : sum) schedule(static) #endif - for (T0 dim1 = 0; dim1 < D0; dim1++) { + for (T0_IT dim1 = 0; dim1 < D0; dim1++) { sum += func(dim1); } return sum; @@ -120,17 +175,71 @@ R parallel_sum2d(const T0 D0, const T1 D1, R input, F func) { }); #else R sum = input; + +#ifdef _MSC_VER + using T0_IT = typename std::make_signed::type; + using T1_IT = typename std::make_signed::type; +#else + using T0_IT = T0; + using T1_IT = T1; +#endif + #if IE_THREAD == IE_THREAD_OMP #pragma omp parallel for collapse(2) reduction(+ : sum) schedule(static) #endif - for (T0 dim2 = 0; dim2 < D0; dim2++) { - for (T1 dim1 = 0; dim1 < D1; dim1++) { + for (T0_IT dim2 = 0; dim2 < D0; dim2++) { + for (T1_IT dim1 = 0; dim1 < D1; dim1++) { sum += func(dim2, dim1); } } return sum; #endif } +template +R parallel_sum3d(const T0 D0, const T1 D1, const T2 D2, R input, F func) { +#if IE_THREAD == IE_THREAD_TBB + return tbb::parallel_reduce( + tbb::blocked_range3d(0, D0, 0, D1, 0, D2), input, + [&](const tbb::blocked_range3d& r, R init)->R { + R sum = init; + for (T0 dim1 = r.pages().begin(); dim1 < r.pages().end(); dim1++) { + for (T1 dim2 = r.rows().begin(); dim2 < r.rows().end(); dim2++) { + for (T2 dim3 = r.cols().begin(); dim3 < r.cols().end(); dim3++) { + sum += func(dim1, dim2, dim3); + } + } + } + return sum; + }, + [](R x, R y)->R { + return x + y; + }); +#else + R sum = input; + +#ifdef _MSC_VER + using T0_IT = typename std::make_signed::type; + using T1_IT = typename std::make_signed::type; + using T2_IT = typename std::make_signed::type; +#else + using T0_IT = T0; + using T1_IT = T1; + using T2_IT = T2; +#endif + +#if IE_THREAD == IE_THREAD_OMP + #pragma omp parallel for collapse(3) reduction(+ : sum) schedule(static) +#endif + for (T0_IT dim1 = 0; dim1 < D0; dim1++) { + for (T1_IT dim2 = 0; dim2 < D1; dim2++) { + for (T2_IT dim3 = 0; dim3 < D2; dim3++) { + sum += func(dim1, dim2, dim3); + } + } + } + return sum; +#endif +} template inline T parallel_it_init(T start) { return start; } diff --git a/inference-engine/include/ie_parameter.hpp b/inference-engine/include/ie_parameter.hpp new file mode 100644 index 00000000000000..59526ad6a8c332 --- /dev/null +++ b/inference-engine/include/ie_parameter.hpp @@ -0,0 +1,365 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief A header file for the CNNNetworkIterator class + * @file ie_cnn_network_iterator.hpp + */ +#pragma once + +#include
+#include +#include +#include +#include +#include +#include + +namespace InferenceEngine { + +/** + * @brief This class represents an object to work with different parameters + */ +class Parameter { +public: + /** + * @brief Default constructor + */ + Parameter() = default; + + /** + * @brief The constructor creates a Parameter object with string value + * @param value string value + */ + Parameter(const std::string& value): initialized(true), value(value) {} // NOLINT + + /** + * @brief The constructor creates a Parameter object with template value + * @param value template value + */ + template + Parameter(const T& value): initialized(true), value(std::to_string(value)) {} // NOLINT + + /** + * @brief The constructor creates a Parameter object with a vector of template values + * @param values vector of template values + */ + template + Parameter(const std::vector& values): initialized(true) { // NOLINT + for (const auto& val : values) { + if (!value.empty()) + value += ","; + value += std::to_string(val); + } + } + + /** + * @brief The cast to string object + * Throws exception if parameter was not found. + * @return string value + */ + operator std::string() const { // NOLINT + return asString(); + } + + /** + * @brief Returns a string value for the given parameter or returns the default one + * @param def Default value of the parameter if not found + * @return A string value + */ + std::string asString(std::string def) const { + if (!initialized) { + return def; + } + return value; + } + + /** + * @brief Returns a string value for the given parameter. + * Throws exception if parameter was not found. + * @return A string value + */ + std::string asString() const { + if (!initialized) { + THROW_IE_EXCEPTION << "Parameter was not initialized!"; + } + return value; + } + + /** + * @brief Gets float value for the given parameter + * @param def - default value of the parameter if not found + * @return float value + */ + float asFloat(float def) const { + std::string val = asString(std::to_string(def)); + try { + return std::stof(val); + } catch (...) { + THROW_IE_EXCEPTION << "Value " << val << " cannot be casted to float."; + } + } + + /** + * @brief Returns a float value for the given layer parameter + * @return A float value for the specified parameter + */ + float asFloat() const { + std::string val = asString(); + try { + return std::stof(val); + } catch (...) { + THROW_IE_EXCEPTION << "Value " << val << " cannot be casted to float."; + } + } + + /** + * @brief Returns a vector of float values for the given parameter or returns the default value + * @param def Default value of the parameter if not found + * @return vector of float values + */ + std::vector asFloats(std::vector def) const { + std::string vals = asString(""); + std::vector result; + std::istringstream stream(vals); + std::string str; + if (vals.empty()) + return def; + while (getline(stream, str, ',')) { + try { + result.push_back(std::stof(str)); + } catch (...) { + THROW_IE_EXCEPTION << "Value " << vals << " cannot be casted to floats."; + } + } + return result; + } + + /** + * @brief Returns a vector of float values for the given parameter + * @return vector of float values + */ + std::vector asFloats() const { + std::string vals = asString(); + std::vector result; + std::istringstream stream(vals); + std::string str; + while (getline(stream, str, ',')) { + try { + result.push_back(std::stof(str)); + } catch (...) { + THROW_IE_EXCEPTION << "Value " << vals << " cannot be casted to floats."; + } + } + return result; + } + + /** + * @brief Returns an integer value for the given parameter or returns the default value + * @param def Default value of the parameter if not found + * @return An int value for the specified parameter + */ + int asInt(int def) const { + std::string val = asString(std::to_string(def)); + try { + return std::stoi(val); + } catch (...) { + THROW_IE_EXCEPTION << "Value " << val << " cannot be casted to int."; + } + } + + /** + * @brief Returns an integer value for the given parameter + * @return An int value for the specified parameter + */ + int asInt() const { + std::string val = asString(); + try { + return std::stoi(val); + } catch (...) { + THROW_IE_EXCEPTION << "Value " << val << " cannot be casted to int."; + } + } + + + /** + * @brief Returns a vector of int values for the given parameter or returns the default value + * @param def Default value of the parameter if not found + * @return vector of int values + */ + std::vector asInts(std::vector def) const { + std::string vals = asString(""); + std::vector result; + std::istringstream stream(vals); + std::string str; + if (vals.empty()) + return def; + while (getline(stream, str, ',')) { + try { + result.push_back(std::stoi(str)); + } catch (...) { + THROW_IE_EXCEPTION << "Value " << vals << " cannot be casted to ints."; + } + } + return result; + } + + /** + * @brief Returns a vector of int values for the given parameter + * @return vector of int values + */ + std::vector asInts() const { + std::string vals = asString(); + std::vector result; + std::istringstream stream(vals); + std::string str; + while (getline(stream, str, ',')) { + try { + result.push_back(std::stoi(str)); + } catch (...) { + THROW_IE_EXCEPTION << "Value " << vals << " cannot be casted to ints."; + } + } + return result; + } + /** + * @brief Returns an unsigned integer value for the given parameter or returns the default value + * @param def Default value of the parameter if not found + * @return An unsigned integer value for the specified parameter + */ + unsigned int asUInt(unsigned int def) const { + std::string val = asString(std::to_string(def)); + std::string message = "Value " + val + " cannot be casted to unsigned int."; + try { + int value = std::stoi(val); + if (value < 0) { + THROW_IE_EXCEPTION << message; + } + return static_cast(value); + } catch (...) { + THROW_IE_EXCEPTION << message; + } + } + + /** + * @brief Returns an unsigned integer value for the given parameter + * @return An unsigned integer value for the specified parameter + */ + unsigned int asUInt() const { + std::string val = asString(); + std::string message = "Value " + val + " cannot be casted to unsigned int."; + try { + int value = std::stoi(val); + if (value < 0) { + THROW_IE_EXCEPTION << message; + } + return static_cast(value); + } catch (...) { + THROW_IE_EXCEPTION << message; + } + } + + + /** + * @brief Returns a vector of unsigned int values for the given parameter or returns the default value + * @param def Default value of the parameter if not found + * @return vector of unsigned int values + */ + std::vector asUInts(std::vector def) const { + std::string vals = asString(""); + std::vector result; + std::istringstream stream(vals); + std::string str; + std::string message = "Value " + vals + " cannot be casted to unsigned ints."; + if (vals.empty()) + return def; + while (getline(stream, str, ',')) { + try { + int value = std::stoi(str); + if (value < 0) { + THROW_IE_EXCEPTION << message; + } + result.push_back(static_cast(value)); + } catch (...) { + THROW_IE_EXCEPTION << message; + } + } + return result; + } + + /** + * @brief Returns a vector of unsigned int values for the given parameter + * @return vector of unsigned int values + */ + std::vector asUInts() const { + std::string vals = asString(); + std::vector result; + std::istringstream stream(vals); + std::string str; + std::string message = "Value " + vals + " cannot be casted to unsigned ints."; + while (getline(stream, str, ',')) { + try { + int value = std::stoi(str); + if (value < 0) { + THROW_IE_EXCEPTION << message; + } + result.push_back(static_cast(value)); + } catch (...) { + THROW_IE_EXCEPTION << message; + } + } + return result; + } + + /** + * @brief Returns an boolean value for the given parameter. + * The valid values are (true, false, 1, 0). + * @param def Default value of the parameter if not found + * @return An bool value for the specified parameter + */ + bool asBool(bool def) const { + std::string val = asString(std::to_string(def)); + std::string loweredCaseValue; + std::transform(val.begin(), val.end(), std::back_inserter(loweredCaseValue), [](char value) { + return std::tolower(value); + }); + + bool result = false; + + if (!(std::istringstream(loweredCaseValue) >> std::boolalpha >> result)) { + // attempting parse using non alpha bool + return static_cast(asInt(def)); + } + + return result; + } + + /** + * @brief Returns an boolean value for the given parameter. + * The valid values are (true, false, 1, 0). + * @return An bool value for the specified parameter + */ + bool asBool() const { + std::string val = asString(); + std::string loweredCaseValue; + std::transform(val.begin(), val.end(), std::back_inserter(loweredCaseValue), [](char value) { + return std::tolower(value); + }); + + bool result = false; + + if (!(std::istringstream(loweredCaseValue) >> std::boolalpha >> result)) { + // attempting parse using non alpha bool + return static_cast(asInt()); + } + + return result; + } + +private: + bool initialized; + std::string value; +}; + +} // namespace InferenceEngine diff --git a/inference-engine/include/ie_plugin.hpp b/inference-engine/include/ie_plugin.hpp index df94b6db2fd0fa..5623dd6f0924ce 100644 --- a/inference-engine/include/ie_plugin.hpp +++ b/inference-engine/include/ie_plugin.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -24,14 +23,19 @@ #if defined(_WIN32) -#ifdef IMPLEMENT_INFERENCE_ENGINE_PLUGIN -#define INFERENCE_PLUGIN_API(type) extern "C" __declspec(dllexport) type -#else -#define INFERENCE_PLUGIN_API(type) extern "C" type -#endif - + #ifdef IMPLEMENT_INFERENCE_ENGINE_PLUGIN + #define INFERENCE_PLUGIN_API(type) extern "C" __declspec(dllexport) type + #else + #define INFERENCE_PLUGIN_API(type) extern "C" type + #endif +#elif(__GNUC__ >= 4) + #ifdef IMPLEMENT_INFERENCE_ENGINE_PLUGIN + #define INFERENCE_PLUGIN_API(type) extern "C" __attribute__((visibility("default"))) type + #else + #define INFERENCE_PLUGIN_API(type) extern "C" type + #endif #else -#define INFERENCE_PLUGIN_API(TYPE) extern "C" TYPE + #define INFERENCE_PLUGIN_API(TYPE) extern "C" TYPE #endif namespace InferenceEngine { @@ -162,7 +166,7 @@ class IInferencePlugin : public details::IRelease { * @param network Network object to query * @param resp Pointer to the response message that holds a description of an error if any occurred */ - virtual void QueryNetwork(const ICNNNetwork& network, QueryNetworkResult& res) const noexcept { + virtual void QueryNetwork(const ICNNNetwork& /*network*/, QueryNetworkResult& res) const noexcept { res.rc = InferenceEngine::NOT_IMPLEMENTED; } @@ -172,8 +176,8 @@ class IInferencePlugin : public details::IRelease { * @param config Map of pairs: (config parameter name, config parameter value) * @param resp Pointer to the response message that holds a description of an error if any occurred */ - virtual void QueryNetwork(const ICNNNetwork& network, - const std::map &config, QueryNetworkResult& res) const noexcept { + virtual void QueryNetwork(const ICNNNetwork& /*network*/, + const std::map &/*config*/, QueryNetworkResult& res) const noexcept { res.rc = InferenceEngine::NOT_IMPLEMENTED; } }; diff --git a/inference-engine/include/ie_plugin_config.hpp b/inference-engine/include/ie_plugin_config.hpp index 6fba66db16bfd8..0e3397d9526b4a 100644 --- a/inference-engine/include/ie_plugin_config.hpp +++ b/inference-engine/include/ie_plugin_config.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -38,13 +37,34 @@ namespace PluginConfigParams { DECLARE_CONFIG_VALUE(YES); DECLARE_CONFIG_VALUE(NO); +/** +* @brief Limit #threads that are used by Inference Engine for inference on the CPU. +*/ +DECLARE_CONFIG_KEY(CPU_THREADS_NUM); + /** * @brief The name for setting CPU affinity per thread option. * It is passed to IInferencePlugin::SetConfig(), this option should be used with values: * PluginConfigParams::YES or PluginConfigParams::NO +* Ignored, if the OpenVINO compiled with OpenMP threading and any affinity-related OpenMP's +* environment variable is set */ DECLARE_CONFIG_KEY(CPU_BIND_THREAD); +/** +* @brief Optimize CPU execution to maximize throughput. +* It is passed to IInferencePlugin::SetConfig(), this option should be used with values: +* - KEY_CPU_THROUGHPUT_NUMA creates as many streams as needed to accomodate NUMA and avoid associated penalties +* - KEY_CPU_THROUGHPUT_AUTO creates bare minimum of streams to improve the performance, +* this is the most portable option if you have no insights into how many cores you target machine will have +* (and what is the optimal number of streams) +* - finally, specifying the positive integer value creates the requested number of streams +*/ +DECLARE_CONFIG_VALUE(CPU_THROUGHPUT_NUMA); +DECLARE_CONFIG_VALUE(CPU_THROUGHPUT_AUTO); +DECLARE_CONFIG_KEY(CPU_THROUGHPUT_STREAMS); + + /** * @brief The name for setting performance counters option. * It is passed to IInferencePlugin::SetConfig(), this option should be used with values: @@ -125,10 +145,21 @@ DECLARE_CONFIG_KEY(DEVICE_ID); /** * @brief the key for enabling exclusive mode for async requests of different executable networks and the same plugin. * Sometimes it's necessary to avoid oversubscription requests that are sharing the same device in parallel. -* E.g. There 2 task executors for CPU device: one - in FPGA, another - in MKLDNN. Parallel execution both of them leads to -* not optimal CPU usage. More efficient to run the corresponding tasks one by one via single executor. +* E.g. There 2 task executors for CPU device: one - in the Hetero plugin, another - in pure CPU plugin. +* Parallel execution both of them might lead to oversubscription and not optimal CPU usage. More efficient +* to run the corresponding tasks one by one via single executor. +* By default, the option is set to YES for hetero cases, and to NO for conventional (single-plugin) cases +* Notice that setting YES disables the CPU streams feature (see another config key in this file) */ DECLARE_CONFIG_KEY(EXCLUSIVE_ASYNC_REQUESTS); +/** + * @brief This key enables dumping of the internal primitive graph. + * Should be passed into LoadNetwork method to enable dumping of internal graph of primitives and + * corresponding configuration information. Value is a name of output dot file without extension. + * Files _init.dot and _perf.dot will be produced. + */ +DECLARE_CONFIG_KEY(DUMP_EXEC_GRAPH_AS_DOT); + } // namespace PluginConfigParams } // namespace InferenceEngine diff --git a/inference-engine/include/ie_plugin_dispatcher.hpp b/inference-engine/include/ie_plugin_dispatcher.hpp index 257b4946ab5736..60d729dbf9f751 100644 --- a/inference-engine/include/ie_plugin_dispatcher.hpp +++ b/inference-engine/include/ie_plugin_dispatcher.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -24,24 +23,24 @@ class PluginDispatcher { * @brief A constructor * @param pp Vector of paths to plugin directories */ - explicit PluginDispatcher(const std::vector &pp) : pluginDirs(pp) {} + explicit PluginDispatcher(const std::vector &pp) : pluginDirs(pp) {} /** * @brief Loads a plugin from plugin directories * @param name Plugin name * @return A pointer to the loaded plugin */ - virtual InferencePlugin getPluginByName(const std::string& name) const { + virtual InferencePlugin getPluginByName(const file_name_t& name) const { std::stringstream err; for (auto &pluginPath : pluginDirs) { try { return InferencePlugin(InferenceEnginePluginPtr(make_plugin_name(pluginPath, name))); } catch (const std::exception &ex) { - err << "cannot load plugin: " << name << " from " << pluginPath << ": " << ex.what() << ", skipping\n"; + err << "cannot load plugin: " << fileNameToString(name) << " from " << fileNameToString(pluginPath) << ": " << ex.what() << ", skipping\n"; } } - THROW_IE_EXCEPTION << "Plugin " << name << " cannot be loaded: " << err.str() << "\n"; + THROW_IE_EXCEPTION << "Plugin " << fileNameToString(name) << " cannot be loaded: " << err.str() << "\n"; } /** @@ -77,7 +76,7 @@ class PluginDispatcher { std::stringstream err; for (std::string& name : result.names) { try { - return getPluginByName(name); + return getPluginByName(stringToFileName(name)); } catch (const std::exception &ex) { err << "Tried load plugin : " << name << ", error: " << ex.what() << "\n"; @@ -93,17 +92,26 @@ class PluginDispatcher { * @param input Plugin name * @return The path to the plugin */ - std::string make_plugin_name(const std::string &path, const std::string &input) const { - std::string separator = + file_name_t make_plugin_name(const file_name_t &path, const file_name_t &input) const { + file_name_t separator = #if defined _WIN32 || defined __CYGWIN__ - "\\"; +# if defined UNICODE + L"\\"; +# else + "\\"; +# endif #else - "/"; + "/"; #endif if (path.empty()) - separator = ""; + separator = file_name_t(); #ifdef _WIN32 - return path + separator + input + ".dll"; + return path + separator + input + +# if defined UNICODE + L".dll"; +# else + ".dll"; +# endif #elif __APPLE__ return path + separator + "lib" + input + ".dylib"; #else @@ -111,7 +119,8 @@ class PluginDispatcher { #endif } + private: - std::vector pluginDirs; + std::vector pluginDirs; }; } // namespace InferenceEngine diff --git a/inference-engine/include/ie_plugin_ptr.hpp b/inference-engine/include/ie_plugin_ptr.hpp index 56870930843921..6c10cf5978ecca 100644 --- a/inference-engine/include/ie_plugin_ptr.hpp +++ b/inference-engine/include/ie_plugin_ptr.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_precision.hpp b/inference-engine/include/ie_precision.hpp index 72589c8c956726..d50fe5cd6e790f 100644 --- a/inference-engine/include/ie_precision.hpp +++ b/inference-engine/include/ie_precision.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -80,20 +79,44 @@ class Precision { return Precision(8 * sizeof(T), typeName == nullptr ? typeid(T).name() : typeName); } + /** @brief checks whether given storage class T can be used for store objects of current precision */ + template + bool hasStorageType(const char * typeName = nullptr) const noexcept { + if (sizeof(T) != size()) { + return false; + } +#define CASE(x, y) case x: return std::is_same() +#define CASE2(x, y1, y2) case x: return std::is_same() || std::is_same() + + switch (precisionInfo.value) { + CASE(FP32, float); + CASE2(FP16, int16_t, uint16_t); + CASE(I16, int16_t); + CASE(I32, int32_t); + CASE(U16, uint16_t); + CASE(U8, uint8_t); + CASE(I8, int8_t); + CASE2(Q78, int16_t, uint16_t); + default : return areSameStrings(name(), typeName == nullptr ? typeid(T).name() : typeName); +#undef CASE +#undef CASE2 + } + } + /** @brief Equality operator with Precision object */ - bool operator == (const Precision & p) const noexcept { + bool operator == (const Precision & p) const noexcept { return precisionInfo.value == p && precisionInfo.bitsSize == p.precisionInfo.bitsSize && areSameStrings(precisionInfo.name, p.precisionInfo.name); } /** @brief Equality operator with ePrecision enum value */ - bool operator == (const ePrecision p) const noexcept { + bool operator == (const ePrecision p) const noexcept { return precisionInfo.value == p; } /** @brief Inequality operator with ePrecision enum value */ - bool operator != (const ePrecision p) const noexcept { + bool operator != (const ePrecision p) const noexcept { return precisionInfo.value != p; } @@ -103,7 +126,7 @@ class Precision { return *this; } - /** @brief Cust operator to a bool */ + /** @brief Cast operator to a bool */ explicit operator bool() const noexcept { return precisionInfo.value != UNSPECIFIED; } @@ -113,7 +136,7 @@ class Precision { return precisionInfo.value == UNSPECIFIED; } - /** @brief Cust operator to a ePrecision */ + /** @brief Cast operator to a ePrecision */ operator Precision::ePrecision () const noexcept { return precisionInfo.value; } @@ -162,7 +185,7 @@ class Precision { template static PrecisionInfo makePrecisionInfo(const char * name); - static bool areSameStrings(const char *l, const char *r) { + static bool areSameStrings(const char *l, const char *r) noexcept { if (l == r) return true; @@ -208,7 +231,7 @@ struct PrecisionTrait { template<> struct PrecisionTrait { - using value_type = uint16_t; + using value_type = int16_t; }; template<> struct PrecisionTrait { diff --git a/inference-engine/include/ie_preprocess.hpp b/inference-engine/include/ie_preprocess.hpp index bc5d7bd21ec418..1b984ff265868f 100644 --- a/inference-engine/include/ie_preprocess.hpp +++ b/inference-engine/include/ie_preprocess.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_primitive_info.hpp b/inference-engine/include/ie_primitive_info.hpp index e24f2762b29013..d4e4fbc6827ab7 100644 --- a/inference-engine/include/ie_primitive_info.hpp +++ b/inference-engine/include/ie_primitive_info.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_tensor_info.hpp b/inference-engine/include/ie_tensor_info.hpp index 4b11ffb018c8ad..5f71dc9caa6eb4 100644 --- a/inference-engine/include/ie_tensor_info.hpp +++ b/inference-engine/include/ie_tensor_info.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_unicode.hpp b/inference-engine/include/ie_unicode.hpp new file mode 100644 index 00000000000000..f8231fa8665ff8 --- /dev/null +++ b/inference-engine/include/ie_unicode.hpp @@ -0,0 +1,61 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief This is a header file with common inference engine definitions. + * @file ie_common.h + */ +#pragma once + +#include +#include +#include +#include +#include +#include +#include
+ +#ifdef UNICODE +typedef wchar_t tchar; +typedef std::wstring file_name_t; +#else +typedef char tchar; +typedef std::string file_name_t; +#endif + +namespace InferenceEngine { + +/** +* @brief Conversion from possibly-wide character string to a single-byte chain. +*/ +inline std::string fileNameToString(const file_name_t& str) { +#ifdef UNICODE + size_t maxlen = (str.length() + 1) * sizeof(wchar_t) / sizeof(char); + std::vector mbstr(maxlen); + mbstr[0] = 0; + std::wcstombs(&mbstr[0], str.c_str(), maxlen); + std::string res = std::string(&mbstr[0]); + return res; +#else + return str; +#endif +} + +/** +* @brief Conversion from single-byte character string to a possibly-wide one +*/ +inline file_name_t stringToFileName(const std::string& str) { +#ifdef UNICODE + size_t maxlen = str.length() + 1; + std::vector wcstr(maxlen); + wcstr[0] = 0; + std::mbstowcs(&wcstr[0], str.c_str(), maxlen); + file_name_t res = file_name_t(&wcstr[0]); + return res; +#else + return str; +#endif +} + +} // namespace InferenceEngine diff --git a/inference-engine/include/ie_utils.hpp b/inference-engine/include/ie_utils.hpp index bd2981e1912f73..2ba9f02ec00d58 100644 --- a/inference-engine/include/ie_utils.hpp +++ b/inference-engine/include/ie_utils.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_version.hpp b/inference-engine/include/ie_version.hpp index 36ab0937c1276d..d7431150b480b7 100644 --- a/inference-engine/include/ie_version.hpp +++ b/inference-engine/include/ie_version.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/inference_engine.hpp b/inference-engine/include/inference_engine.hpp index 08f043e377ab0b..352d943276ab8f 100644 --- a/inference-engine/include/inference_engine.hpp +++ b/inference-engine/include/inference_engine.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/install_dependencies.sh b/inference-engine/install_dependencies.sh index 88be5464143cc2..fdb70e26610023 100755 --- a/inference-engine/install_dependencies.sh +++ b/inference-engine/install_dependencies.sh @@ -22,7 +22,6 @@ function yes_or_no { # install dependencies if [[ -f /etc/lsb-release ]]; then # Ubuntu - system_ver=`cat /etc/lsb-release | grep -i "DISTRIB_RELEASE" | cut -d "=" -f2` sudo -E apt update sudo -E apt-get install -y \ build-essential \ @@ -41,6 +40,7 @@ if [[ -f /etc/lsb-release ]]; then automake \ libtool \ autoconf \ + libpng12-dev \ libcairo2-dev \ libpango1.0-dev \ libglib2.0-dev \ @@ -52,11 +52,6 @@ if [[ -f /etc/lsb-release ]]; then gstreamer1.0-plugins-base \ libusb-1.0-0-dev \ libopenblas-dev - if [ $system_ver = "18.04" ]; then - sudo -E apt-get install -y libpng-dev - else - sudo -E apt-get install -y libpng12-dev - fi else # CentOS 7.x sudo -E yum install -y centos-release-scl epel-release diff --git a/inference-engine/samples/CMakeLists.txt b/inference-engine/samples/CMakeLists.txt index a3eb1470758d27..1f7bb9f8bea94b 100644 --- a/inference-engine/samples/CMakeLists.txt +++ b/inference-engine/samples/CMakeLists.txt @@ -1,6 +1,7 @@ # Copyright (C) 2018 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # + cmake_minimum_required (VERSION 2.8) project(Samples) @@ -11,7 +12,9 @@ if (CMAKE_BUILD_TYPE STREQUAL "") endif() if (NOT(BIN_FOLDER)) - if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l") + set (ARCH armv7l) + elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") set (ARCH intel64) else() set (ARCH ia32) @@ -47,42 +50,54 @@ else () set (LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_DIRECTORY}/lib) endif() -find_package(InferenceEngine 1.4 REQUIRED) +# use this flag if you need to throw custom message in case if the IE package is not found. +if (IE_NOT_FOUND_MESSAGE) + find_package(InferenceEngine 1.5 QUIET) + if (NOT(InferenceEngine_FOUND)) + message(FATAL_ERROR ${IE_NOT_FOUND_MESSAGE}) + endif() +else() + find_package(InferenceEngine 1.5 REQUIRED) +endif() if (WIN32) - if(NOT "${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + if (NOT "${CMAKE_SIZEOF_VOID_P}" EQUAL "8") message(FATAL_ERROR "Only 64-bit supported on Windows") endif() - set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS _CRT_SECURE_NO_WARNINGS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_SCL_SECURE_NO_WARNINGS -DNOMINMAX") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") #no asynchronous structured exception handling - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE") - if (THREADING STREQUAL "OMP") - find_package(OpenMP) - if (OPENMP_FOUND) - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") - endif() - endif() + set_property (DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS _CRT_SECURE_NO_WARNINGS) + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_SCL_SECURE_NO_WARNINGS -DNOMINMAX") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") #no asynchronous structured exception handling + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE") else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Werror=return-type ") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Werror=return-type ") if (APPLE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=unused-command-line-argument") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=unused-command-line-argument") elseif(UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wuninitialized -Winit-self -Wmaybe-uninitialized") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wuninitialized -Winit-self") + if(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wmaybe-uninitialized") + endif() endif() endif() + #################################### ## to use C++11 set (CMAKE_CXX_STANDARD 11) set (CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") +set (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") #################################### -set(GFLAGS_IS_SUBPROJECT TRUE) -add_subdirectory(thirdparty/gflags) +set (GFLAGS_IS_SUBPROJECT TRUE) +set (HAVE_SYS_STAT_H 1) +set (HAVE_INTTYPES_H 1) + +if (WIN32) + # add_compile_options("/WX") +else() + add_compile_options("-Werror") +endif() # Properties->C/C++->General->Additional Include Directories include_directories ( @@ -93,38 +108,32 @@ include_directories ( ) if (UNIX) - SET(LIB_DL dl) -endif() - -# Find OpenCV library if exists -find_package(OpenCV) -if(OpenCV_FOUND) - include_directories(${OpenCV_INCLUDE_DIRS}) - add_definitions(-DUSE_OPENCV) -else() - set (BUILD_VALIDATION_APP OFF) - message(WARNING "No suitable OpenCV version detected, BUILD_VALIDATION_APP is set to OFF") + set (LIB_DL dl) endif() +add_subdirectory(thirdparty/gflags) add_subdirectory(common/format_reader) -#################################################### -# SAMPLES list -#################################################### -add_subdirectory(classification_sample) -add_subdirectory(classification_sample_async) -add_subdirectory(hello_autoresize_classification) -add_subdirectory(hello_classification) -add_subdirectory(hello_request_classification) -add_subdirectory(hello_shape_infer_ssd) -add_subdirectory(object_detection_sample_ssd) -add_subdirectory(style_transfer_sample) - -add_subdirectory(benchmark_app) -add_subdirectory(calibration_tool) -if (BUILD_VALIDATION_APP) - add_subdirectory(validation_app) -else() - message(STATUS "Validation app build is switched off") -endif() -#################################################### +# collect all samples subdirectories +file(GLOB subdirs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *) +# skip building of unnecessary subdirs +list(REMOVE_ITEM subdirs archived common thirdparty) + +foreach (dir ${subdirs}) + if (IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${dir}) + # check if a subdirectory contains CMakeLists.txt. In this case we can build it. + file(GLOB is_sample_dir "${CMAKE_CURRENT_SOURCE_DIR}/${dir}/CMakeLists.txt") + if(is_sample_dir) + # check if specified sample/demo is found. + if (BUILD_SAMPLE_NAME) + list(FIND BUILD_SAMPLE_NAME ${dir} index) + endif() + if (index EQUAL -1) + message(STATUS "${dir} SKIPPED") + else() + # Include subdirectory to the project. + add_subdirectory(${dir}) + endif() + endif() + endif() +endforeach() diff --git a/inference-engine/samples/benchmark_app/CMakeLists.txt b/inference-engine/samples/benchmark_app/CMakeLists.txt index f3d606101ed16a..87db73046679df 100644 --- a/inference-engine/samples/benchmark_app/CMakeLists.txt +++ b/inference-engine/samples/benchmark_app/CMakeLists.txt @@ -1,25 +1,11 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (C) 2018 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. cmake_minimum_required(VERSION 2.8) set (TARGET_NAME "benchmark_app") -if( BUILD_SAMPLE_NAME AND NOT ${BUILD_SAMPLE_NAME} STREQUAL ${TARGET_NAME} ) - message(STATUS "SAMPLE ${TARGET_NAME} SKIPPED") - return() -endif() - file (GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) diff --git a/inference-engine/samples/benchmark_app/README.md b/inference-engine/samples/benchmark_app/README.md index e3a125cb01ba8b..ab0bbd73c3f6e2 100644 --- a/inference-engine/samples/benchmark_app/README.md +++ b/inference-engine/samples/benchmark_app/README.md @@ -1,10 +1,13 @@ # Benchmark Application Demo -This topic demonstrates how to run the Benchmark Application demo, which performs inference using convolutional networks. +This topic demonstrates how to use the Benchmark Application to estimate deep learning inference performance on supported devices. Performance can be measured for two inference modes: synchronous and asynchronous. + +> **NOTE:** This topic describes usage of C++ implementation of the Benchmark Application. For the Python* implementation, refer to [Benchmark Application (Python*)](./samples/python_samples/benchmark_app/README.md) + ## How It Works -**NOTE:** To achieve benchmark results similar to the official published results, set CPU frequency to 2.9GHz and GPU frequency to 1GHz. +> **NOTE:** To achieve benchmark results similar to the official published results, set CPU frequency to 2.9GHz and GPU frequency to 1GHz. Upon the start-up, the application reads command-line parameters and loads a network and images to the Inference Engine plugin. The number of infer requests and execution approach depend on a mode defined with the `-api` command-line parameter. @@ -56,15 +59,24 @@ Options: Running the application with the empty list of options yields the usage message given above and an error message. -To run the demo, you can use one-layer public models or one-layer pre-trained and optimized models delivered with the package that support images as input. +You can run the application for one input layer four-dimensional models that support images as input, for example, public +AlexNet and GoogLeNet models that can be downloaded +with the OpenVINO [Model Downloader](https://github.com/opencv/open_model_zoo/tree/2018/model_downloader). + +> **NOTE**: To run the application, the model should be first converted to the Inference Engine format (\*.xml + \*.bin) +using the [Model Optimizer tool](./docs/MO_DG/Deep_Learning_Model_Optimizer_DevGuide.md). -For example, to do inference on an image using a trained network with multiple outputs on CPU, run the following command: +For example, to perform inference on CPU in the synchronous mode and get estimated performance metrics for AlexNet model, run the following command: + +```sh +./benchmark_app -i /inputImage.bmp -m /alexnet_fp32.xml -d CPU -api sync +``` +For the asynchronous mode: ```sh -./benchmark_app -i /inputImage.bmp -m /multiple-output.xml -d CPU +./benchmark_app -i /inputImage.bmp -m /alexnet_fp32.xml -d CPU -api async ``` -**NOTE**: Public models should be first converted to the Inference Engine format (\*.xml + \*.bin) using the [Model Optimizer tool](./docs/Model_Optimizer_Developer_Guide/Deep_Learning_Model_Optimizer_DevGuide.md). ## Demo Output @@ -84,4 +96,6 @@ For asynchronous API, the application outputs only throughput: ``` ## See Also -* [Using Inference Engine Samples](./docs/Inference_Engine_Developer_Guide/Samples_Overview.md) +* [Using Inference Engine Samples](./docs/IE_DG/Samples_Overview.md) +* [Model Optimizer tool](./docs/MO_DG/Deep_Learning_Model_Optimizer_DevGuide.md) +* [Model Downloader](https://github.com/opencv/open_model_zoo/tree/2018/model_downloader) diff --git a/inference-engine/samples/benchmark_app/benchmark_app.h b/inference-engine/samples/benchmark_app/benchmark_app.h index 3d92cb2bb18227..6ae2ffa6a03976 100644 --- a/inference-engine/samples/benchmark_app/benchmark_app.h +++ b/inference-engine/samples/benchmark_app/benchmark_app.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -44,16 +43,24 @@ static const char target_device_message[] = "Specify a target device to infer on static const char iterations_count_message[] = "Optional. Number of iterations. " \ "If not specified, the number of iterations is calculated depending on a device."; -/// @brief message for iterations count +/// @brief message for requests count static const char infer_requests_count_message[] = "Optional. Number of infer requests (default value is 2)."; +/// @brief message for #threads for CPU inference +static const char infer_num_threads_message[] = "Optional. Number of threads to use for inference on the CPU " + "(including Hetero cases)."; + /// @brief message for user library argument static const char custom_cpu_library_message[] = "Required for CPU custom layers. Absolute path to a shared library with the kernels implementations."; /// @brief message for clDNN custom kernels desc static const char custom_cldnn_message[] = "Required for GPU custom kernels. Absolute path to an .xml file with the kernels description."; -static const char batch_size_message[] = "Batch size value. If not specified, the batch size value is determined from IR"; +static const char batch_size_message[] = "Optional. Batch size value. If not specified, the batch size value is determined from IR"; + +// @brief message for CPU threads pinning option +static const char infer_threads_pinning_message[] = "Optional. Enable (\"YES\" is default value) or disable (\"NO\")" \ + "CPU threads pinning for CPU-involved inference."; /// @brief Define flag for showing help message
DEFINE_bool(h, false, help_message); @@ -91,11 +98,15 @@ DEFINE_int32(niter, 0, iterations_count_message); /// @brief Number of infer requests in parallel DEFINE_int32(nireq, 2, infer_requests_count_message); +/// @brief Number of threads to use for inference on the CPU (also affects Hetero cases) +DEFINE_int32(nthreads, 0, infer_num_threads_message); + /// @brief Define parameter for batch size
/// Default is 0 (that means don't specify) DEFINE_int32(b, 0, batch_size_message); - +// @brief Enable plugin messages +DEFINE_string(pin, "YES", infer_threads_pinning_message); /** * @brief This function show a help message */ @@ -116,4 +127,7 @@ static void showUsage() { std::cout << " -c \"\" " << custom_cldnn_message << std::endl; std::cout << " -nireq \"\" " << infer_requests_count_message << std::endl; std::cout << " -b \"\" " << batch_size_message << std::endl; + std::cout << " Some CPU-specific performance options" << std::endl; + std::cout << " -nthreads \"\" " << infer_num_threads_message << std::endl; + std::cout << " -pin \"YES\"/\"NO\" " << infer_threads_pinning_message << std::endl; } diff --git a/inference-engine/samples/benchmark_app/main.cpp b/inference-engine/samples/benchmark_app/main.cpp index 68b7bf7908a819..134287b6830a02 100644 --- a/inference-engine/samples/benchmark_app/main.cpp +++ b/inference-engine/samples/benchmark_app/main.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -177,7 +176,7 @@ int main(int argc, char *argv[]) { const InferenceEngine::Precision outputPrecision = InferenceEngine::Precision::FP32; /** Set the precision of output data provided by the user, should be called before load of the network to the plugin **/ - outData->precision = outputPrecision; + outData->setPrecision(outputPrecision); InferenceEngine::TBlob::Ptr output = InferenceEngine::make_shared_blob(item.second->getTensorDesc()); output->allocate(); outputBlobs[item.first] = output; @@ -186,7 +185,17 @@ int main(int argc, char *argv[]) { // --------------------------- 5. Loading model to the plugin ------------------------------------------ slog::info << "Loading model to the plugin" << slog::endl; - const std::map networkConfig; + std::map networkConfig; + if (FLAGS_d.find("CPU") != std::string::npos) { // CPU supports few special performance-oriented keys + // limit threading for CPU portion of inference + if (FLAGS_nthreads != 0) + networkConfig[PluginConfigParams::KEY_CPU_THREADS_NUM] = std::to_string(FLAGS_nthreads); + // pin threads for CPU portion of inference + networkConfig[PluginConfigParams::KEY_CPU_BIND_THREAD] = FLAGS_pin; + // for pure CPU execution, more throughput-oriented execution via streams + if (FLAGS_api == "async" && FLAGS_d == "CPU") + networkConfig[PluginConfigParams::KEY_CPU_THROUGHPUT_STREAMS] = std::to_string(FLAGS_nireq); + } InferenceEngine::ExecutableNetwork exeNetwork = plugin.LoadNetwork(cnnNetwork, networkConfig); // --------------------------- 6. Performance measurements stuff ------------------------------------------ @@ -218,6 +227,10 @@ int main(int argc, char *argv[]) { slog::info << "Start inference synchronously (" << durationInNanoseconds * 0.000001 << " ms duration)" << slog::endl << slog::endl; } + // warming up - out of scope + inferRequest.Infer(); + inferRequest.Wait(InferenceEngine::IInferRequest::WaitMode::RESULT_READY); + const auto startTime = Time::now(); auto currentTime = Time::now(); diff --git a/inference-engine/samples/calibration_tool/CMakeLists.txt b/inference-engine/samples/calibration_tool/CMakeLists.txt index 7ec85ed429e3a1..f69a6e7aaf4612 100644 --- a/inference-engine/samples/calibration_tool/CMakeLists.txt +++ b/inference-engine/samples/calibration_tool/CMakeLists.txt @@ -1,16 +1,7 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (C) 2018 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. cmake_minimum_required(VERSION 2.8) set (TARGET_NAME "calibration_tool") @@ -36,14 +27,11 @@ file (GLOB MAIN_HEADERS source_group("src" FILES ${MAIN_SRC}) source_group("include" FILES ${MAIN_HEADERS}) -# opencv include folders -find_package(OpenCV QUIET COMPONENTS core imgproc highgui imgcodecs) +# Find OpenCV components if exist +find_package(OpenCV COMPONENTS imgcodecs QUIET) if(NOT(OpenCV_FOUND)) - find_package(OpenCV QUIET COMPONENTS world) - if(NOT(OpenCV_FOUND)) - message(WARNING "No suitable OpenCV version detected, " ${TARGET_NAME} " skipped") - return() - endif() + message(WARNING "OPENCV is disabled or not found, " ${TARGET_NAME} " skipped") + return() endif() # Properties->C/C++->General->Additional Include Directories @@ -51,7 +39,6 @@ include_directories (${CMAKE_CURRENT_SOURCE_DIR}/../classification_sample/core ${CMAKE_CURRENT_SOURCE_DIR}/../common ${CMAKE_CURRENT_SOURCE_DIR}/../common/os/windows ${CMAKE_CURRENT_SOURCE_DIR}/../../include - ${OpenCV_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/../validation_app) link_directories(${LIB_FOLDER}) diff --git a/inference-engine/samples/calibration_tool/README.md b/inference-engine/samples/calibration_tool/README.md index b05b11bfd088f9..f40c671f35d326 100644 --- a/inference-engine/samples/calibration_tool/README.md +++ b/inference-engine/samples/calibration_tool/README.md @@ -22,6 +22,7 @@ Available options: -t "RawOD" to collect only statistics for Object Detection network and write statistics to IR. With this option, a model is not calibrated. For calibration and statisctics collection, use "-t OD" instead -i Required. Path to a directory with validation images. For Classification models, the directory must contain folders named as labels with images inside or a .txt file with a list of images. For Object Detection models, the dataset must be in VOC format. -m Required. Path to an .xml file with a trained model, including model name and extension. + -lbl Labels file path. The labels file contains names of the dataset classes -l Required for CPU custom layers. Absolute path to a shared library with the kernel implementations. -c Required for GPU custom kernels. Absolute path to an .xml file with the kernel descriptions. -d Target device to infer on: CPU (default), GPU, FPGA, or MYRIAD. The application looks for a suitable plugin for the specified device. @@ -31,9 +32,10 @@ Available options: -ppWidth W Preprocessing width (overrides -ppSize, used with ppType="ResizeCrop") -ppHeight H Preprocessing height (overrides -ppSize, used with ppType="ResizeCrop") --dump Dump file names and inference results to a .csv file - -subset Number of pictures from the whole validation set tocreate the calibration dataset. Default value is 0, which stands forthe whole provided dataset - -output Output name for calibrated model. Default is _i8.xml|bin - -threshold Threshold for a maximum accuracy drop of quantized model. Must be an integer number (percents) without a percent sign. Default value is 1, which stands for accepted accuracy drop in 1% + -subset Number of pictures from the whole validation set tocreate the calibration dataset. Default value is 0, which stands forthe whole provided dataset + -output Output name for calibrated model. Default is _i8.xml|bin + -threshold Threshold for a maximum accuracy drop of quantized model. Must be an integer number (percents) without a percent sign. Default value is 1, which stands for accepted accuracy drop in 1% + - stream_output Flag for printing progress as a plain text.When used, interactive progress bar is replaced with multiline output Classification-specific options: -Czb true "Zero is a background" flag. Some networks are trained with a modified dataset where the class IDs are enumerated from 1, but 0 is an undefined "background" class (which is never detected) @@ -72,18 +74,21 @@ If you decide to use the subset of the given dataset, use the ImageNet-like form instead of "folder as classes" format. This brings a more accurate calibration as you are likely to get images representing different classes. -For example, to calibrate the pretrained TensorFlow\* `inception_v4_tf.xml` classification model, -run the following command: +To run the sample you can use classification models that can be downloaded with the OpenVINO [Model Downloader](https://github.com/opencv/open_model_zoo/tree/2018/model_downloader) or other image classification models. + +For example, to calibrate the trained Caffe\* `resnet-50` classification model, run the following command: ```bash -./calibration_tool -t C -m inception_v4_tf.xml -i ILSVRC2012_val.txt -Czb false -ppType "ResizeCrop" -ppSize 342 -b 1 -d CPU -subset 2000 +./calibration_tool -t C -m resnet-50.xml -i ILSVRC2012_val.txt -Czb false -ppType "ResizeCrop" -ppSize 342 -b 1 -d CPU -subset 2000 ``` +> **NOTE**: To run the tool for a model, the model should be first converted to the Inference Engine format (\*.xml + \*.bin) using the [Model Optimizer tool](./docs/MO_DG/Deep_Learning_Model_Optimizer_DevGuide.md). + ## Calibrate Object Detection Model This topic demonstrates how to run the Calibration Tool on the Object Detection CNN on a set of images. Please review the list of Object Detection models used for validation of the Calibration Tool -in the [8-bit Inference Introduction](./docs/Inference_Engine_Developer_Guide/Int8Inference.md). +in the [8-bit Inference Introduction](./docs/IE_DG/Int8Inference.md). Any network that can be inferred with the Inference Engine and has the same input and output format as the SSD CNN should be supported as well. @@ -100,4 +105,4 @@ Once you have prepared the dataset, you can calibrate the model on it by running ## See Also -* [Using Inference Engine Samples](./docs/Inference_Engine_Developer_Guide/Samples_Overview.md) +* [Using Inference Engine Samples](./docs/IE_DG/Samples_Overview.md) diff --git a/inference-engine/samples/calibration_tool/calibrator_processors.cpp b/inference-engine/samples/calibration_tool/calibrator_processors.cpp index 21ce5f160dc195..d4cf7fe37807f9 100644 --- a/inference-engine/samples/calibration_tool/calibrator_processors.cpp +++ b/inference-engine/samples/calibration_tool/calibrator_processors.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -155,7 +154,13 @@ void Int8Calibrator::collectFP32Statistic() { _cBatch = networkReaderC.getNetwork().getBatchSize(); } else { // Not zero means "use the specified value" - networkReaderC.getNetwork().setBatchSize(_cBatch); + auto input_shapes = networkReaderC.getNetwork().getInputShapes(); + std::string input_name; + SizeVector input_shape; + std::tie(input_name, input_shape) = *input_shapes.begin(); + input_shape[0] = _cBatch; + input_shapes[input_name] = input_shape; + networkReaderC.getNetwork().reshape(input_shapes); } /** Extract model name and load weights **/ @@ -213,7 +218,13 @@ void Int8Calibrator::validateInt8Config(const InferenceEngine::NetworkStatsMap & _cBatch = networkReaderC.getNetwork().getBatchSize(); } else { // Not zero means "use the specified value" - networkReaderC.getNetwork().setBatchSize(_cBatch); + auto input_shapes = networkReaderC.getNetwork().getInputShapes(); + std::string input_name; + SizeVector input_shape; + std::tie(input_name, input_shape) = *input_shapes.begin(); + input_shape[0] = _cBatch; + input_shapes[input_name] = input_shape; + networkReaderC.getNetwork().reshape(input_shapes); } /** Extract model name and load weights **/ @@ -237,90 +248,97 @@ void Int8Calibrator::validateInt8Config(const InferenceEngine::NetworkStatsMap & _inferRequestI8C = executable_network.CreateInferRequest(); } -CNNNetwork Int8Calibrator::createICNNNetworkForLayer(CNNLayer::Ptr layerToClone) { +CNNNetwork Int8Calibrator::createICNNNetworkForLayer(CNNLayer::Ptr layerToClone, bool hasReLU) { CNNLayer::Ptr layerRelU = layerToClone->outData[0]->inputTo.begin()->second; InferenceEngine::CNNNetReader reader1; - std::string inpuitName = layerToClone->insData[0].lock()->name; - std::string model = " " \ + DataPtr inputData = layerToClone->insData[0].lock(); + std::string inputName = inputData->name; + + size_t inputBatch = inputData->getTensorDesc().getDims()[0]; + size_t inputChannels = inputData->getTensorDesc().getDims()[1]; + size_t inputHeight = inputData->getTensorDesc().getDims()[2]; + size_t inputWidth = inputData->getTensorDesc().getDims()[3]; + + DataPtr outputData = layerToClone->outData[0]; + size_t outputBatch = outputData->getTensorDesc().getDims()[0]; + size_t outputChannels = outputData->getTensorDesc().getDims()[1]; + size_t outputHeight = outputData->getTensorDesc().getDims()[2]; + size_t outputWidth = outputData->getTensorDesc().getDims()[3]; + + ConvolutionLayer *pConvS = dynamic_cast(layerToClone.get()); + + std::string model = " "\ " "\ ""\ ""\ - "1"\ - "3"\ - "224"\ - "224"\ + "" + std::to_string(inputBatch) + ""\ + "" + std::to_string(inputChannels) + ""\ + "" + std::to_string(inputHeight) + ""\ + "" + std::to_string(inputWidth) + ""\ ""\ ""\ - "" \ + ""\ "name + - "\" type=\"Convolution\" precision=\"FP32\" id=\"1\">" \ - ""\ + "\" type=\"Convolution\" precision=\"FP32\" id=\"1\">"\ + "_stride_x) + + "\" stride-y=\"" + std::to_string(pConvS->_stride_y) + + "\" pad-x=\"" + std::to_string(pConvS->_padding_x) + + "\" pad-y=\"" + std::to_string(pConvS->_padding_y) + + "\" kernel-x=\"" + std::to_string(pConvS->_kernel_x) + + "\" kernel-y=\"" + std::to_string(pConvS->_kernel_y) + + "\" dilation-x=\"" + std::to_string(pConvS->_dilation_x) + + "\" dilation-y=\"" + std::to_string(pConvS->_dilation_y) + + "\" output=\"" + std::to_string(pConvS->_out_depth) + + "\" group=\"" + std::to_string(pConvS->_group) + "\" />"\ ""\ ""\ - "1"\ - "3"\ - "224"\ - "224"\ + "" + std::to_string(inputBatch) + ""\ + "" + std::to_string(inputChannels) + ""\ + "" + std::to_string(inputHeight) + ""\ + "" + std::to_string(inputWidth) + ""\ ""\ ""\ ""\ ""\ - "1"\ - "64"\ - "112"\ - "112"\ - ""\ - ""\ - ""\ - "name + - "\" type=\"ReLU\" precision=\"FP32\" id=\"2\">"\ - "" - ""\ - "1"\ - "64"\ - "112"\ - "112"\ - ""\ - ""\ - ""\ - ""\ - "1"\ - "64"\ - "112"\ - "112"\ - ""\ - ""\ - ""\ - "name + - "_\" type=\"ScaleShift\" precision=\"FP32\" id=\"3\">"\ - "" - ""\ - "1"\ - "64"\ - "112"\ - "112"\ - ""\ - ""\ - ""\ - ""\ - "1"\ - "64"\ - "112"\ - "112"\ + "" + std::to_string(outputBatch) + ""\ + "" + std::to_string(outputChannels) + ""\ + "" + std::to_string(outputHeight) + ""\ + "" + std::to_string(outputWidth) + ""\ ""\ ""\ - ""\ - " "\ - " "\ - " "\ - " "\ - ""; + ""; + if (hasReLU) { + model += "name + + "\" type=\"ReLU\" precision=\"FP32\" id=\"2\">"\ + "" + ""\ + "" + std::to_string(outputBatch) + ""\ + "" + std::to_string(outputChannels) + ""\ + "" + std::to_string(outputHeight) + ""\ + "" + std::to_string(outputWidth) + ""\ + ""\ + ""\ + ""\ + ""\ + "" + std::to_string(outputBatch) + ""\ + "" + std::to_string(outputChannels) + ""\ + "" + std::to_string(outputHeight) + ""\ + "" + std::to_string(outputWidth) + ""\ + ""\ + ""\ + ""; + } + model += " "\ + " "; + if (hasReLU) { + model += " "; + } + model += ""; reader1.ReadNetwork(model.c_str(), model.length()); ICNNNetwork &n = reader1.getNetwork(); @@ -331,107 +349,11 @@ CNNNetwork Int8Calibrator::createICNNNetworkForLayer(CNNLayer::Ptr layerToClone) CNNLayerPtr convLayer; n.getLayerByName(layerToClone->name.c_str(), convLayer, nullptr); - ConvolutionLayer *pConvS = dynamic_cast(layerToClone.get()); ConvolutionLayer *pConvT = dynamic_cast(convLayer.get()); - pConvT->_kernel_x = pConvS->_kernel_x; - pConvT->_kernel_y = pConvS->_kernel_y; - pConvT->_stride_x = pConvS->_stride_x; - pConvT->_stride_y = pConvS->_stride_y; - pConvT->_out_depth = pConvS->_out_depth; - pConvT->_padding_x = pConvS->_padding_x; - pConvT->_padding_y = pConvS->_padding_y; - pConvT->_dilation_x = pConvS->_dilation_x; - pConvT->_dilation_y = pConvS->_dilation_y; - pConvT->_group = pConvS->_group; pConvT->_weights = pConvS->_weights; pConvT->_biases = pConvS->_biases; pConvT->blobs = pConvS->blobs; - std::shared_ptr cur = layerToClone->insData[0].lock(); - if (cur == nullptr) { - THROW_IE_EXCEPTION << "[Samples] shared ptr layerToClone->insData[0].lock() return nullptr"; - } - DataPtr inputEdge = std::make_shared(*cur.get()); - - inputEdge->getInputTo().clear(); - inputEdge->name = inpuitName; - inputEdge->creatorLayer = inputLayer; - inputEdge->inputTo[layerToClone->name] = convLayer; - inputEdge->getInputTo().clear(); - inputEdge->inputTo[layerToClone->name] = convLayer; - - inputs.begin()->second->setInputData(inputEdge); - - convLayer->insData.clear(); - convLayer->insData.push_back(inputEdge); - - inputLayer->outData.clear(); - inputLayer->outData.push_back(inputEdge); - - DataPtr convEdge = std::make_shared(*layerToClone->outData[0].get()); - convEdge->getInputTo().clear(); - convEdge->creatorLayer = convLayer; - convEdge->name = convLayer->name; - convLayer->outData.clear(); - convLayer->outData.push_back(convEdge); - - CNNLayerPtr reluLayer; - n.getLayerByName(layerRelU->name.c_str(), reluLayer, nullptr); - DataPtr reluEdge = std::make_shared(*layerRelU->outData[0].get()); - reluEdge->getInputTo().clear(); - reluEdge->creatorLayer = reluLayer; - reluEdge->name = reluLayer->name; - reluLayer->insData.clear(); - reluLayer->insData.push_back(convEdge); - reluLayer->outData.clear(); - reluLayer->outData.push_back(reluEdge); - - convEdge->inputTo[reluLayer->name] = reluLayer; - - CNNLayerPtr ssLayer; - std::string ssLayerName = convLayer->name + "_"; - n.getLayerByName(ssLayerName.c_str(), ssLayer, nullptr); - DataPtr ssEdge = std::make_shared(*layerRelU->outData[0].get()); - ssEdge->getInputTo().clear(); - ssEdge->creatorLayer = ssLayer; - ssEdge->name = ssLayer->name; - ssLayer->insData.clear(); - ssLayer->insData.push_back(reluEdge); - ssLayer->outData.clear(); - ssLayer->outData.push_back(ssEdge); - - reluEdge->inputTo[ssLayer->name] = ssLayer; - - n.addOutput(ssLayer->name); - - // filling weights and biases - size_t channels = ssEdge->getTensorDesc().getDims()[1]; - Blob::Ptr weights = nullptr; - SizeVector wdims; - wdims.push_back(channels); - weights = make_shared_blob(Precision::FP32, Layout::C, wdims); - weights->allocate(); - float *dataw = weights->buffer().as(); - for (size_t i = 0; i < channels; i++) { - dataw[i] = 1.0f; - } - ssLayer->blobs["weights"] = weights; - - Blob::Ptr biases = nullptr; - SizeVector bdims; - bdims.push_back(channels); - biases = make_shared_blob(Precision::FP32, Layout::C, bdims); - biases->allocate(); - float *datab = biases->buffer().as(); - for (size_t i = 0; i < channels; i++) { - datab[i] = 0.0f; - } - ssLayer->blobs["biases"] = biases; - - auto wss = dynamic_cast(ssLayer.get()); - wss->_weights = weights; - wss->_biases = biases; - return reader1.getNetwork(); } @@ -442,7 +364,13 @@ void Int8Calibrator::collectByLayerStatistic(const InferenceEngine::NetworkStats networkReaderC.ReadNetwork(_modelFileNameI8C); if (!networkReaderC.isParseSuccess()) THROW_IE_EXCEPTION << "cannot load a failed Model"; if (_cBatch != 0) { - networkReaderC.getNetwork().setBatchSize(_cBatch); + auto input_shapes = networkReaderC.getNetwork().getInputShapes(); + std::string input_name; + SizeVector input_shape; + std::tie(input_name, input_shape) = *input_shapes.begin(); + input_shape[0] = _cBatch; + input_shapes[input_name] = input_shape; + networkReaderC.getNetwork().reshape(input_shapes); } /** Extract model name and load weights **/ @@ -474,49 +402,51 @@ void Int8Calibrator::collectByLayerStatistic(const InferenceEngine::NetworkStats // if only one output from conv and if it is an output to relu bool quattization = false; - if (layerToClone->outData.size() == 1 && layerToClone->outData[0]->inputTo.size() == 1) { + if (layerToClone->outData.size() == 1 + && layerToClone->outData[0]->inputTo.size() == 1 + && CaselessEq()(layerToClone->outData[0]->inputTo.begin()->second->name, "relu")) { layerRelU = layerToClone->outData[0]->inputTo.begin()->second; - if (layerRelU->type == "ReLU") { - quattization = true; - } } - if (quattization) { - CNNNetwork n = createICNNNetworkForLayer(layerToClone); - if (_cBatch != 0) { - n.setBatchSize(_cBatch); - } + CNNNetwork n = createICNNNetworkForLayer(layerToClone, layerRelU ? true : false); + if (_cBatch != 0) { + auto input_shapes = n.getInputShapes(); + std::string input_name; + SizeVector input_shape; + std::tie(input_name, input_shape) = *input_shapes.begin(); + input_shape[0] = _cBatch; + input_shapes[input_name] = input_shape; + n.reshape(input_shapes); + } - // Initialize statistic - ICNNNetworkStats *pstats = nullptr; - ICNNNetwork &in = n; - StatusCode s = in.getStats(&pstats, nullptr); - if (s == StatusCode::OK && pstats) { - pstats->setNodesStats(stat); - } + // Initialize statistic + ICNNNetworkStats *pstats = nullptr; + ICNNNetwork &in = n; + StatusCode s = in.getStats(&pstats, nullptr); + if (s == StatusCode::OK && pstats) { + pstats->setNodesStats(stat); + } - InferenceEngine::InputsDataMap inputs = n.getInputsInfo(); - DataPtr q = inputs.begin()->second->getInputData(); + InferenceEngine::InputsDataMap inputs = n.getInputsInfo(); + DataPtr q = inputs.begin()->second->getInputData(); - ExecutableNetwork enetwork = _pluginI8C.LoadNetwork(n, { { CONFIG_KEY(EXCLUSIVE_ASYNC_REQUESTS), CONFIG_VALUE(YES) } }); - _singleLayerNetworks.push_back(enetwork); - InferenceEngine::InferRequest request = enetwork.CreateInferRequest(); - std::string inpuitName = layerToClone->insData[0].lock()->name; - request.SetBlob(inpuitName, _inferRequestI8C.GetBlob(inpuitName)); - _singleLayerRequests[layerToClone->name] = { request, layerRelU->name, layerToClone->name }; - } + ExecutableNetwork enetwork = _pluginI8C.LoadNetwork(n, { { CONFIG_KEY(EXCLUSIVE_ASYNC_REQUESTS), CONFIG_VALUE(YES) } }); + _singleLayerNetworks.push_back(enetwork); + InferenceEngine::InferRequest request = enetwork.CreateInferRequest(); + std::string inputName = layerToClone->insData[0].lock()->name; + request.SetBlob(inputName, _inferRequestI8C.GetBlob(inputName)); + _singleLayerRequests[layerToClone->name] = { request, layerRelU ? layerRelU->name : layerToClone->name, layerToClone->name }; } } -void Int8Calibrator::collectCalibrationStatistic() { +void Int8Calibrator::collectCalibrationStatistic(size_t pics) { if (_collectByLayer) { std::map::iterator it = _singleLayerRequests.begin(); while (it != _singleLayerRequests.end()) { it->second._request.Infer(); Blob::Ptr expected = _inferRequestI8C.GetBlob(it->second._outputName); - std::string i8Out = it->second._outputI8Name + "_"; - Blob::Ptr result = it->second._request.GetBlob(i8Out.c_str()); + Blob::Ptr result = it->second._request.GetBlob(it->second._outputName); float diff = compare_NRMSD(result, expected); it->second._int8Accuracy.push_back(diff); it++; @@ -533,11 +463,12 @@ void Int8Calibrator::collectCalibrationStatistic() { size_t N, C, statCount; if (outBlob->dims().size() == 4 && outBlob->layout() == Layout::NCHW) { - N = outBlob->dims()[3]; + // TODO(amalyshe) cahnge to using of tensor desc + N = pics; C = outBlob->dims()[2]; statCount = C; } else if (outBlob->dims().size() == 2 && outBlob->layout() == Layout::NC) { - N = outBlob->dims()[1]; + N = pics; C = outBlob->dims()[0]; statCount = 1; } else { @@ -627,13 +558,23 @@ ClassificationCalibrator::ClassificationCalibrator(int nPictures, const std::str _cBatch = flags_b; } -shared_ptr ClassificationCalibrator::Process() { +shared_ptr ClassificationCalibrator::Process(bool stream_output) { inferRequest = _inferRequestI8C; int top1Result = 0, total = 0; ClassificationSetGenerator generator; + try { + generator.readLabels(labelFileName); + } catch (InferenceEngine::details::InferenceEngineException& ex) { + slog::warn << "Can't read labels file " << labelFileName << slog::endl; + } auto validationMap = generator.getValidationMap(imagesPath); + + if (validationMap.size() == 0) { + THROW_IE_EXCEPTION << "The validation dataset in " << imagesPath << "is empty. Check the dataset file or folder and the labels file"; + } + ImageDecoder decoder; // ----------------------------Do inference------------------------------------------------------------- @@ -646,7 +587,7 @@ shared_ptr ClassificationCalibrator::Process() { } - ConsoleProgress progress(_nPictures); + ConsoleProgress progress(_nPictures, stream_output); CalibrationMetrics im; @@ -675,12 +616,11 @@ shared_ptr ClassificationCalibrator::Process() { ipics += batch; Infer(progress, filesWatched, im); - collectCalibrationStatistic(); + collectCalibrationStatistic(b); std::vector results; auto firstOutputData = firstOutputBlob->buffer().as::value_type *>(); InferenceEngine::TopResults(1, *firstOutputBlob, results); - for (int i = 0; i < b; i++) { int expc = expected[i]; if (zeroBackground) expc++; @@ -712,15 +652,17 @@ SSDObjectDetectionCalibrator::SSDObjectDetectionCalibrator(int nPictures, const _modelFileNameI8C = modelFileName; _pluginI8C = plugin; _nPictures = nPictures; + _cBatch = flags_b; } -shared_ptr SSDObjectDetectionCalibrator::Process() { +shared_ptr SSDObjectDetectionCalibrator::Process(bool stream_output) { inferRequest = _inferRequestI8C; // Parsing PASCAL VOC2012 format VOCAnnotationParser vocAnnParser; VOCAnnotationCollector annCollector(annotationsPath); + if (annCollector.annotations().size() == 0) { ObjectDetectionInferenceMetrics emptyIM(this->threshold); @@ -762,7 +704,7 @@ shared_ptr SSDObjectDetectionCalibrator::Process() _nPictures = annCollector.annotations().size(); } - ConsoleProgress progress(_nPictures); + ConsoleProgress progress(_nPictures, stream_output); ObjectDetectionInferenceMetrics im(threshold); @@ -807,23 +749,21 @@ shared_ptr SSDObjectDetectionCalibrator::Process() ipics++; } - if (files.size() == batch) { - InferenceEngine::StatusCode sts; - InferenceEngine::ResponseDesc dsc; + InferenceEngine::StatusCode sts; + InferenceEngine::ResponseDesc dsc; - // Infer model - Infer(progress, filesWatched, im); - collectCalibrationStatistic(); + // Infer model + Infer(progress, filesWatched, im); + collectCalibrationStatistic(b); - // Processing the inference result - std::map> detectedObjects = processResult(files); + // Processing the inference result + std::map> detectedObjects = processResult(files); - // Calculating similarity - // - for (int b = 0; b < files.size(); b++) { - ImageDescription result(detectedObjects[files[b]]); - im.apc.consumeImage(result, scaledDesiredForFiles.at(files[b])); - } + // Calculating similarity + // + for (int b = 0; b < files.size(); b++) { + ImageDescription result(detectedObjects[files[b]]); + im.apc.consumeImage(result, scaledDesiredForFiles.at(files[b])); } } progress.finish(); diff --git a/inference-engine/samples/calibration_tool/calibrator_processors.h b/inference-engine/samples/calibration_tool/calibrator_processors.h index f533e33ad0b8d8..05e7c1ec4aee4c 100644 --- a/inference-engine/samples/calibration_tool/calibrator_processors.h +++ b/inference-engine/samples/calibration_tool/calibrator_processors.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -90,7 +89,7 @@ class Int8Calibrator { * This function should be called from final callibrator after and each Infer for each picture * It calculates by layer accuracy drop and as well it also collect activation values statistic */ - void collectCalibrationStatistic(); + void collectCalibrationStatistic(size_t pics); /** * This function should be called from calibration class after Infer of all picture @@ -127,7 +126,8 @@ class Int8Calibrator { * Since Inference Engine API mostly directed to the loading of network from IR, we need to create * such IR first, read through stream and modify network to correspond required parameters */ - InferenceEngine::CNNNetwork createICNNNetworkForLayer(InferenceEngine::CNNLayer::Ptr layerToClone); + InferenceEngine::CNNNetwork createICNNNetworkForLayer(InferenceEngine::CNNLayer::Ptr layerToClone, + bool hasReLU); std::map _layersAccuracyDrop; std::vector _singleLayerNetworks; @@ -157,7 +157,7 @@ class ClassificationCalibrator : public ClassificationProcessor, public Int8Cali InferenceEngine::InferencePlugin plugin, CsvDumper &dumper, const std::string &flags_l, PreprocessingOptions preprocessingOptions, bool zeroBackground); - shared_ptr Process()override; + shared_ptr Process(bool stream_output = false) override; }; @@ -174,5 +174,5 @@ class SSDObjectDetectionCalibrator : public SSDObjectDetectionProcessor, public InferencePlugin plugin, CsvDumper &dumper, const std::string &flags_a, const std::string &classes_list_file); - shared_ptr Process()override; + shared_ptr Process(bool stream_output = false) override; }; diff --git a/inference-engine/samples/calibration_tool/data_stats.cpp b/inference-engine/samples/calibration_tool/data_stats.cpp index 313c3f00b8871d..ba17e55ec67216 100644 --- a/inference-engine/samples/calibration_tool/data_stats.cpp +++ b/inference-engine/samples/calibration_tool/data_stats.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/calibration_tool/data_stats.h b/inference-engine/samples/calibration_tool/data_stats.h index c844b3db3fb6bf..0d8b4de5f8165c 100644 --- a/inference-engine/samples/calibration_tool/data_stats.h +++ b/inference-engine/samples/calibration_tool/data_stats.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/calibration_tool/main.cpp b/inference-engine/samples/calibration_tool/main.cpp index fd95a29ea02c29..cd010145211b5e 100644 --- a/inference-engine/samples/calibration_tool/main.cpp +++ b/inference-engine/samples/calibration_tool/main.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -30,7 +29,6 @@ #include "calibrator_processors.h" #include "SSDObjectDetectionProcessor.hpp" #include "YOLOObjectDetectionProcessor.hpp" -#include "network_serializer.h" #include "ie_icnn_network_stats.hpp" #include "details/caseless.hpp" @@ -93,12 +91,17 @@ static const char custom_cldnn_message[] = "Required for GPU custom kernels. " /// @brief Message for user library argument static const char custom_cpu_library_message[] = "Required for CPU custom layers. " "Absolute path to a shared library with the kernel implementations."; +/// @brief Message for labels file +static const char labels_file_message[] = "Labels file path. The labels file contains names of the dataset classes"; static const char zero_background_message[] = "\"Zero is a background\" flag. Some networks are trained with a modified" " dataset where the class IDs " " are enumerated from 1, but 0 is an undefined \"background\" class" " (which is never detected)"; +static const char stream_output_message[] = "Flag for printing progress as a plain text.When used, interactive progress" + " bar is replaced with multiline output"; + /// @brief Network type options and their descriptions static const char* types_descriptions[][2] = { { "C", "calibrate Classification network and write the calibrated network to IR" }, @@ -177,10 +180,15 @@ DEFINE_string(l, "", custom_cpu_library_message); /// @brief Define parameter for accuracy drop threshold DEFINE_double(threshold, 1.0f, accuracy_threshold_message); +/// @brief Define path to output calibrated model +DEFINE_bool(stream_output, false, stream_output_message); + DEFINE_int32(subset, 0, number_of_pictures_message); DEFINE_string(output, "", output_model_name); +DEFINE_string(lbl, "", labels_file_message); + /** * @brief This function shows a help message */ @@ -196,6 +204,7 @@ static void showUsage() { } std::cout << " -i " << image_message << std::endl; std::cout << " -m " << model_message << std::endl; + std::cout << " -lbl " << labels_file_message << std::endl; std::cout << " -l " << custom_cpu_library_message << std::endl; std::cout << " -c " << custom_cldnn_message << std::endl; std::cout << " -d " << target_device_message << std::endl; @@ -219,6 +228,9 @@ static void showUsage() { std::cout << " -ODa " << obj_detection_annotations_message << std::endl; std::cout << " -ODc " << obj_detection_classes_message << std::endl; std::cout << " -ODsubdir " << obj_detection_subdir_message << std::endl << std::endl; + + std::cout << std::endl; + std::cout << " -stream_output " << stream_output_message << std::endl; } enum NetworkType { @@ -270,8 +282,7 @@ void SaveCalibratedIR(const std::string &originalName, } slog::info << "Write calibrated network to " << outModelName << ".(xml|bin) IR file\n"; - CNNNetworkSerializer serializer; - serializer.Serialize(outModelName + ".xml", outModelName + ".bin", networkReader.getNetwork()); + networkReader.getNetwork().serialize(outModelName + ".xml", outModelName + ".bin"); } /** @@ -321,7 +332,6 @@ int main(int argc, char *argv[]) { // Checking required OD-specific options if (FLAGS_ODa.empty()) ee << UserException(11, "Annotations folder is not specified for object detection (missing -a option)"); if (FLAGS_ODc.empty()) ee << UserException(12, "Classes file is not specified (missing -c option)"); - if (FLAGS_b > 0) ee << UserException(13, "Batch option other than 0 is not supported for Object Detection networks"); } if (!ee.empty()) throw ee; @@ -384,7 +394,7 @@ int main(int argc, char *argv[]) { if (netType == Classification || netType == RawC) { processor = std::shared_ptr( new ClassificationCalibrator(FLAGS_subset, FLAGS_m, FLAGS_d, FLAGS_i, FLAGS_b, - plugin, dumper, FLAGS_l, preprocessingOptions, FLAGS_Czb)); + plugin, dumper, FLAGS_lbl, preprocessingOptions, FLAGS_Czb)); } else if (netType == ObjDetection || netType == RawOD) { if (FLAGS_ODkind == "SSD") { processor = std::shared_ptr( @@ -411,7 +421,7 @@ int main(int argc, char *argv[]) { slog::info << "Collecting activation statistics" << slog::endl; } calibrator->collectFP32Statistic(); - shared_ptr pIMFP32 = processor->Process(); + shared_ptr pIMFP32 = processor->Process(FLAGS_stream_output); const CalibrationMetrics* mFP32 = dynamic_cast(pIMFP32.get()); std:: cout << " FP32 Accuracy: " << OUTPUT_FLOATING(100.0 * mFP32->AccuracyResult) << "% " << std::endl; @@ -427,7 +437,7 @@ int main(int argc, char *argv[]) { std::cout << "Validate int8 accuracy, threshold for activation statistics = " << threshold << std::endl; InferenceEngine::NetworkStatsMap tmpStatMap = calibrator->getStatistic(threshold); calibrator->validateInt8Config(tmpStatMap, {}); - shared_ptr pIM_I8 = processor->Process(); + shared_ptr pIM_I8 = processor->Process(FLAGS_stream_output); const CalibrationMetrics *mI8 = dynamic_cast(pIM_I8.get()); if (maximalAccuracy < mI8->AccuracyResult) { maximalAccuracy = mI8->AccuracyResult; @@ -446,7 +456,7 @@ int main(int argc, char *argv[]) { slog::info << "Collecting intermediate per-layer accuracy drop" << slog::endl; // getting statistic on accuracy drop by layers calibrator->collectByLayerStatistic(statMap); - processor->Process(); + processor->Process(FLAGS_stream_output); // starting to reduce number of layers being converted to Int8 std::map layersAccuracyDrop = calibrator->layersAccuracyDrop(); @@ -463,7 +473,7 @@ int main(int argc, char *argv[]) { slog::info << "Returning of '" << it->second << "' to FP32 precision, start validation\n"; layersToInt8[it->second] = false; calibrator->validateInt8Config(statMap, layersToInt8); - pIM_I8 = processor->Process(); + pIM_I8 = processor->Process(FLAGS_stream_output); mI8 = dynamic_cast(pIM_I8.get()); maximalAccuracy = mI8->AccuracyResult; if ((mFP32->AccuracyResult - maximalAccuracy) > (FLAGS_threshold / 100)) { diff --git a/inference-engine/samples/calibration_tool/network_serializer.h b/inference-engine/samples/calibration_tool/network_serializer.h deleted file mode 100644 index d0b91ae58339e3..00000000000000 --- a/inference-engine/samples/calibration_tool/network_serializer.h +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (C) 2018 Intel Corporation -// -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once - -#include "inference_engine.hpp" -#include -#include - -/** Class for serialization of model been presented as ICNNNetwork to the disk - */ -class CNNNetworkSerializer { -public: - void Serialize(const std::string &xmlPath, const std::string &binPath, - InferenceEngine::ICNNNetwork& network); - -protected: - void updateStdLayerParams(InferenceEngine::CNNLayer::Ptr layer); -}; diff --git a/inference-engine/samples/classification_sample/CMakeLists.txt b/inference-engine/samples/classification_sample/CMakeLists.txt index b412fdcbd7abbd..4c80190a4b7672 100644 --- a/inference-engine/samples/classification_sample/CMakeLists.txt +++ b/inference-engine/samples/classification_sample/CMakeLists.txt @@ -1,25 +1,11 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (C) 2018 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. cmake_minimum_required(VERSION 2.8) set (TARGET_NAME "classification_sample") -if( BUILD_SAMPLE_NAME AND NOT ${BUILD_SAMPLE_NAME} STREQUAL ${TARGET_NAME} ) - message(STATUS "SAMPLE ${TARGET_NAME} SKIPPED") - return() -endif() - file (GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) diff --git a/inference-engine/samples/classification_sample/README.md b/inference-engine/samples/classification_sample/README.md index 83f00ded888216..26e943b5611677 100644 --- a/inference-engine/samples/classification_sample/README.md +++ b/inference-engine/samples/classification_sample/README.md @@ -1,7 +1,7 @@ # Image Classification Sample -This topic demonstrates how to build and run the Image Classification sample application, which does -inference using image classification networks like AlexNet and GoogLeNet. +This topic demonstrates how to run the Image Classification sample application, which performs +inference using image classification networks such as AlexNet and GoogLeNet. ## Running @@ -15,36 +15,30 @@ InferenceEngine: classification_sample [OPTION] Options: - -h - Print a usage message. - -i "" "" - Required. Path to a folder with images or path to an image files: a .ubyte file for LeNet - and a .bmp file for the other networks. - -m "" - Required. Path to an .xml file with a trained model. - -l "" - Optional. Absolute path to library with MKL-DNN (CPU) custom layers (*.so). + -h Print a usage message. + -i "" "" Required. Path to a folder with images or path to an image files: a .ubyte file for LeNet + and a .bmp file for the other networks. + -m "" Required. Path to an .xml file with a trained model. + -l "" Optional. Absolute path to library with MKL-DNN (CPU) custom layers (*.so). Or - -c "" - Optional. Absolute path to clDNN (GPU) custom layers config (*.xml). - -pp "" - Path to a plugin folder. - -d "" - Specify the target device to infer on; CPU, GPU, FPGA or MYRIAD is acceptable. Sample will look for a suitable plugin for device specified - -nt "" - Number of top results (default 10) - -ni "" - Number of iterations (default 1) - -pc - Enables per-layer performance report - -p_msg - Enables messages from a plugin + -c "" Optional. Absolute path to clDNN (GPU) custom layers config (*.xml). + -pp "" Path to a plugin folder. + -d "" Specify the target device to infer on; CPU, GPU, FPGA or MYRIAD is acceptable. Sample will look for a suitable plugin for device specified + -nt "" Number of top results (default 10) + -ni "" Number of iterations (default 1) + -pc Enables per-layer performance report + -p_msg Enables messages from a plugin ``` -Running the application with the empty list of options yields the usage message given above and an error message. +Running the application with the empty list of options yields the usage message given above. + +To run the sample you can use AlexNet and GoogLeNet models that can be downloaded with the OpenVINO [Model Downloader](https://github.com/opencv/open_model_zoo/tree/2018/model_downloader) or other image classification models. + +> **IMPORTANT**: To run the sample, the model should be first converted to the Inference Engine format (\*.xml + \*.bin) using the [Model Optimizer tool](./docs/MO_DG/Deep_Learning_Model_Optimizer_DevGuide.md). + +For example, to perform inference of an AlexNet model (previously converted to the Inference Engine format) on CPU, use the following command: -You can do inference on an image using a trained AlexNet network on Intel® Processors using the following command: ```sh ./classification_sample -i /cat.bmp -m /alexnet_fp32.xml ``` @@ -65,4 +59,6 @@ Engine plugin. When inference is done, the application creates an output image and outputs data to the standard output stream. ## See Also -* [Using Inference Engine Samples](./docs/Inference_Engine_Developer_Guide/Samples_Overview.md) +* [Using Inference Engine Samples](./docs/IE_DG/Samples_Overview.md) +* [Model Optimizer tool](./docs/MO_DG/Deep_Learning_Model_Optimizer_DevGuide.md) +* [Model Downloader](https://github.com/opencv/open_model_zoo/tree/2018/model_downloader) \ No newline at end of file diff --git a/inference-engine/samples/classification_sample/classification_sample.h b/inference-engine/samples/classification_sample/classification_sample.h index cd1abedd9fb375..9bf4a61a905506 100644 --- a/inference-engine/samples/classification_sample/classification_sample.h +++ b/inference-engine/samples/classification_sample/classification_sample.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/classification_sample/main.cpp b/inference-engine/samples/classification_sample/main.cpp index 15500bc645bd42..bf29415482d60f 100644 --- a/inference-engine/samples/classification_sample/main.cpp +++ b/inference-engine/samples/classification_sample/main.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/classification_sample_async/CMakeLists.txt b/inference-engine/samples/classification_sample_async/CMakeLists.txt index e6d70e82754ddc..96e6e41877e278 100644 --- a/inference-engine/samples/classification_sample_async/CMakeLists.txt +++ b/inference-engine/samples/classification_sample_async/CMakeLists.txt @@ -1,25 +1,11 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (C) 2018 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. cmake_minimum_required(VERSION 2.8) set (TARGET_NAME "classification_sample_async") -if( BUILD_SAMPLE_NAME AND NOT ${BUILD_SAMPLE_NAME} STREQUAL ${TARGET_NAME} ) - message(STATUS "SAMPLE ${TARGET_NAME} SKIPPED") - return() -endif() - file (GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) diff --git a/inference-engine/samples/classification_sample_async/README.md b/inference-engine/samples/classification_sample_async/README.md index 4fbea9a424b82d..995a5d61ed3fd5 100644 --- a/inference-engine/samples/classification_sample_async/README.md +++ b/inference-engine/samples/classification_sample_async/README.md @@ -64,6 +64,8 @@ You can do inference on an image using a trained AlexNet network on FPGA with fa ./classification_sample_async -i /cat.bmp -m /alexnet_fp32.xml -nt 5 -d HETERO:FPGA,CPU -nireq 2 -ni 200 ``` +> **NOTE**: Before running the sample with a trained model, make sure the model is converted to the Inference Engine format (\*.xml + \*.bin) using the [Model Optimizer tool](./docs/MO_DG/Deep_Learning_Model_Optimizer_DevGuide.md). + ### Outputs By default the application outputs top-10 inference results for each infer request. @@ -80,4 +82,4 @@ Then in the loop it starts inference for the current infer request and switch fo When inference is done, the application outputs data to the standard output stream. ## See Also -* [Using Inference Engine Samples](./docs/Inference_Engine_Developer_Guide/Samples_Overview.md) +* [Using Inference Engine Samples](./docs/IE_DG/Samples_Overview.md) diff --git a/inference-engine/samples/classification_sample_async/classification_sample_async.h b/inference-engine/samples/classification_sample_async/classification_sample_async.h index 95d2ff46c089bb..c0a202cfc305bf 100644 --- a/inference-engine/samples/classification_sample_async/classification_sample_async.h +++ b/inference-engine/samples/classification_sample_async/classification_sample_async.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -45,6 +44,9 @@ static const char iterations_count_message[] = "Number of iterations (default 1) /// @brief message for iterations count static const char ninfer_request_message[] = "Number of infer request for pipelined mode (default 1)"; +/// @brief message for #threads for CPU inference +static const char infer_num_threads_message[] = "Optional. Number of threads to use for inference on the CPU " + "(including Hetero cases)."; /// @brief message for clDNN custom kernels desc static const char custom_cldnn_message[] = "Required for clDNN (GPU)-targeted custom kernels."\ @@ -54,6 +56,10 @@ static const char custom_cldnn_message[] = "Required for clDNN (GPU)-targeted cu static const char custom_cpu_library_message[] = "Required for MKLDNN (CPU)-targeted custom layers." \ "Absolute path to a shared library with the kernels impl."; +// @brief message for CPU threads pinning option +static const char cpu_threads_pinning_message[] = "Optional. Enable (\"YES\"default) or disable (\"NO\")" \ + "CPU threads pinning for CPU-involved inference."; + /// @brief message for plugin messages static const char plugin_message[] = "Enables messages from a plugin"; @@ -98,6 +104,13 @@ DEFINE_int32(nireq, 1, ninfer_request_message); /// @brief Enable plugin messages DEFINE_bool(p_msg, false, plugin_message); +/// @brief Enable plugin messages +DEFINE_string(pin, "YES", cpu_threads_pinning_message); + +/// @brief Number of threads to use for inference on the CPU (also affects Hetero cases) +DEFINE_int32(nthreads, 0, infer_num_threads_message); + + /** * @brief This function show a help message */ @@ -119,4 +132,7 @@ static void showUsage() { std::cout << " -pc " << performance_counter_message << std::endl; std::cout << " -nireq \"\" " << ninfer_request_message << std::endl; std::cout << " -p_msg " << plugin_message << std::endl; + std::cout << " Some CPU-specific performance options" << std::endl; + std::cout << " -nthreads \"\" " << infer_num_threads_message << std::endl; + std::cout << " -pin \"YES\"/\"NO\" " << cpu_threads_pinning_message << std::endl; } diff --git a/inference-engine/samples/classification_sample_async/main.cpp b/inference-engine/samples/classification_sample_async/main.cpp index c4244842277ac9..e8428ef21ef7f2 100644 --- a/inference-engine/samples/classification_sample_async/main.cpp +++ b/inference-engine/samples/classification_sample_async/main.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -185,10 +184,18 @@ int main(int argc, char *argv[]) { slog::info << "Loading model to the plugin" << slog::endl; std::map config; - if (FLAGS_pc) { + if (FLAGS_pc) config[PluginConfigParams::KEY_PERF_COUNT] = PluginConfigParams::YES; + if (FLAGS_d.find("CPU") != std::string::npos) { // CPU supports few special performance-oriented keys + // limit threading for CPU portion of inference + config[PluginConfigParams::KEY_CPU_THREADS_NUM] = std::to_string(FLAGS_nthreads); + // pin threads for CPU portion of inference + config[PluginConfigParams::KEY_CPU_BIND_THREAD] = FLAGS_pin; + // for pure CPU execution, more throughput-oriented execution via streams + if (FLAGS_d == "CPU") + config[PluginConfigParams::KEY_CPU_THROUGHPUT_STREAMS] = std::to_string(FLAGS_nireq); } - ExecutableNetwork executable_network = plugin.LoadNetwork(network, {}); + ExecutableNetwork executable_network = plugin.LoadNetwork(network, config); // ----------------------------------------------------------------------------------------------------- // --------------------------- 5. Create infer request ------------------------------------------------- @@ -237,6 +244,9 @@ int main(int argc, char *argv[]) { typedef std::chrono::duration> ms; typedef std::chrono::duration fsec; + // warming up + inferRequests[0].StartAsync(); + inferRequests[0].Wait(InferenceEngine::IInferRequest::WaitMode::RESULT_READY); double total = 0.0; /** Start inference & calc performance **/ auto t0 = Time::now(); @@ -244,16 +254,11 @@ int main(int argc, char *argv[]) { size_t currentInfer = 0; size_t prevInfer = (FLAGS_nireq > 1) ? 1 : 0; - - // warming up - inferRequests[0].StartAsync(); - inferRequests[0].Wait(10000); - for (int iter = 0; iter < FLAGS_ni + FLAGS_nireq; ++iter) { if (iter < FLAGS_ni) { inferRequests[currentInfer].StartAsync(); } - inferRequests[prevInfer].Wait(10000); + inferRequests[prevInfer].Wait(InferenceEngine::IInferRequest::WaitMode::RESULT_READY); currentInfer++; if (currentInfer >= FLAGS_nireq) { diff --git a/inference-engine/samples/common/format_reader/CMakeLists.txt b/inference-engine/samples/common/format_reader/CMakeLists.txt index abc86b53f88aef..0498e0a529f70a 100644 --- a/inference-engine/samples/common/format_reader/CMakeLists.txt +++ b/inference-engine/samples/common/format_reader/CMakeLists.txt @@ -1,16 +1,6 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (C) 2018 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. cmake_minimum_required(VERSION 2.8) @@ -24,19 +14,20 @@ file (GLOB LIBRARY_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h ) -# Find OpenCV libray if exists -find_package(OpenCV) -if(OpenCV_FOUND) - include_directories(${OpenCV_INCLUDE_DIRS}) +# Find OpenCV components if exist +find_package(OpenCV COMPONENTS imgcodecs QUIET) +if(NOT(OpenCV_FOUND)) + message(WARNING "OPENCV is disabled or not found, " ${TARGET_NAME} " is built without OPENCV support") else() - message(STATUS "OPENCV is disabled or not found, " ${TARGET_NAME} " is built without OPENCV support") + add_definitions(-DUSE_OPENCV) endif() +add_definitions(-DIMPLEMENT_FORMAT_READER) + if(UNIX) list(REMOVE_ITEM MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/dllmain.cpp) -else() - add_definitions(-DIMPLEMENT_INFERENCE_ENGINE_API) endif() +add_definitions(-DIMPLEMENT_INFERENCE_ENGINE_API) # Create named folders for the sources within the .vcproj # Empty name lists them directly under the .vcproj diff --git a/inference-engine/samples/common/format_reader/MnistUbyte.cpp b/inference-engine/samples/common/format_reader/MnistUbyte.cpp index 2f2f828f1779b9..c1b04c0eea0c4d 100644 --- a/inference-engine/samples/common/format_reader/MnistUbyte.cpp +++ b/inference-engine/samples/common/format_reader/MnistUbyte.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/format_reader/MnistUbyte.h b/inference-engine/samples/common/format_reader/MnistUbyte.h index 20aed4a2619224..d9d51c406169e0 100644 --- a/inference-engine/samples/common/format_reader/MnistUbyte.h +++ b/inference-engine/samples/common/format_reader/MnistUbyte.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/format_reader/bmp.cpp b/inference-engine/samples/common/format_reader/bmp.cpp index d26ce507a8e4cd..56822ffd20586b 100644 --- a/inference-engine/samples/common/format_reader/bmp.cpp +++ b/inference-engine/samples/common/format_reader/bmp.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/format_reader/bmp.h b/inference-engine/samples/common/format_reader/bmp.h index f0c65916e0fa15..53ca373660d58b 100644 --- a/inference-engine/samples/common/format_reader/bmp.h +++ b/inference-engine/samples/common/format_reader/bmp.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/format_reader/format_reader.cpp b/inference-engine/samples/common/format_reader/format_reader.cpp index 1a17a5f6f83290..a698431798a23b 100644 --- a/inference-engine/samples/common/format_reader/format_reader.cpp +++ b/inference-engine/samples/common/format_reader/format_reader.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -33,6 +32,6 @@ void Registry::RegisterReader(CreatorFunction f) { _data.push_back(f); } -FORMAT_READER_API(Reader*)CreateFormatReader(const char *filename) { +FORMAT_READER_API(Reader*) CreateFormatReader(const char *filename) { return Registry::CreateReader(filename); } \ No newline at end of file diff --git a/inference-engine/samples/common/format_reader/format_reader.h b/inference-engine/samples/common/format_reader/format_reader.h index 3a3f55115db519..8a4cfcdafb40c1 100644 --- a/inference-engine/samples/common/format_reader/format_reader.h +++ b/inference-engine/samples/common/format_reader/format_reader.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -14,10 +13,20 @@ #include #include -#ifdef _WIN32 - #define FORMAT_READER_API(TYPE) extern "C" __declspec(dllexport) TYPE __cdecl -#else // Linux and Mac - #define FORMAT_READER_API(TYPE) extern "C" TYPE +#if defined(_WIN32) +# ifdef IMPLEMENT_FORMAT_READER +# define FORMAT_READER_API(type) extern "C" __declspec(dllexport) type +# else +# define FORMAT_READER_API(type) extern "C" type +# endif +#elif(__GNUC__ >= 4) +# ifdef IMPLEMENT_FORMAT_READER +# define FORMAT_READER_API(type) extern "C" __attribute__((visibility("default"))) type +# else +# define FORMAT_READER_API(type) extern "C" type +# endif +#else +# define FORMAT_READER_API(TYPE) extern "C" TYPE #endif @@ -69,4 +78,4 @@ class Reader { * \brief Function for create reader * @return FormatReader pointer */ -FORMAT_READER_API(FormatReader::Reader*)CreateFormatReader(const char *filename); \ No newline at end of file +FORMAT_READER_API(FormatReader::Reader*) CreateFormatReader(const char *filename); \ No newline at end of file diff --git a/inference-engine/samples/common/format_reader/format_reader_ptr.h b/inference-engine/samples/common/format_reader/format_reader_ptr.h index 0b9f0919797eff..faba463784b6b2 100644 --- a/inference-engine/samples/common/format_reader/format_reader_ptr.h +++ b/inference-engine/samples/common/format_reader/format_reader_ptr.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/format_reader/opencv_wraper.cpp b/inference-engine/samples/common/format_reader/opencv_wraper.cpp index dc42e60605b88c..b29b39ba166d52 100644 --- a/inference-engine/samples/common/format_reader/opencv_wraper.cpp +++ b/inference-engine/samples/common/format_reader/opencv_wraper.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -10,7 +9,7 @@ #include -#include <../samples/slog.hpp> +#include using namespace std; using namespace FormatReader; diff --git a/inference-engine/samples/common/format_reader/opencv_wraper.h b/inference-engine/samples/common/format_reader/opencv_wraper.h index 926f8b74feaa9d..e4b40b89318ab3 100644 --- a/inference-engine/samples/common/format_reader/opencv_wraper.h +++ b/inference-engine/samples/common/format_reader/opencv_wraper.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/format_reader/register.h b/inference-engine/samples/common/format_reader/register.h index c6652094b54492..764b5b4801d907 100644 --- a/inference-engine/samples/common/format_reader/register.h +++ b/inference-engine/samples/common/format_reader/register.h @@ -1,8 +1,10 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // - +/** + * \brief Register for readers + * \file register.h + */ #pragma once #include diff --git a/inference-engine/samples/common/os/windows/w_dirent.h b/inference-engine/samples/common/os/windows/w_dirent.h index bae82820993728..40bcf9ee7a7130 100644 --- a/inference-engine/samples/common/os/windows/w_dirent.h +++ b/inference-engine/samples/common/os/windows/w_dirent.h @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -45,7 +44,7 @@ struct dirent { }; class DIR { - WIN32_FIND_DATA FindFileData; + WIN32_FIND_DATAA FindFileData; HANDLE hFind; dirent *next; @@ -63,7 +62,7 @@ class DIR { ws += "*"; else ws += "\\*"; - hFind = FindFirstFile(ws.c_str(), &FindFileData); + hFind = FindFirstFileA(ws.c_str(), &FindFileData); FindFileData.dwReserved0 = hFind != INVALID_HANDLE_VALUE; } @@ -87,7 +86,7 @@ class DIR { size_t outSize; mbstowcs_s(&outSize, wbuf, 4094, FindFileData.cFileName, 4094); next = new dirent(wbuf); - FindFileData.dwReserved0 = FindNextFile(hFind, &FindFileData); + FindFileData.dwReserved0 = FindNextFileA(hFind, &FindFileData); return next; } }; @@ -108,4 +107,4 @@ static struct dirent *readdir(DIR *dp) { static void closedir(DIR *dp) { delete dp; -} \ No newline at end of file +} diff --git a/inference-engine/samples/common/samples/args_helper.hpp b/inference-engine/samples/common/samples/args_helper.hpp index 443d2b8aab9834..9edfb97b99f172 100644 --- a/inference-engine/samples/common/samples/args_helper.hpp +++ b/inference-engine/samples/common/samples/args_helper.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/samples/common.hpp b/inference-engine/samples/common/samples/common.hpp index 5917e7fdd3f1e2..88c87e3ff3487a 100644 --- a/inference-engine/samples/common/samples/common.hpp +++ b/inference-engine/samples/common/samples/common.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -27,10 +26,6 @@ #include #include -#ifdef USE_OPENCV - #include -#endif - #include #include #include @@ -88,8 +83,8 @@ static InferenceEngine::TargetDevice getDeviceFromStr(const std::string &deviceN * @param device - device to infer on * @return Plugin pointer */ -static InferenceEngine::InferenceEnginePluginPtr selectPlugin(const std::vector &pluginDirs, - const std::string &plugin, +static InferenceEngine::InferenceEnginePluginPtr selectPlugin(const std::vector &pluginDirs, + const file_name_t &plugin, InferenceEngine::TargetDevice device) { InferenceEngine::PluginDispatcher dispatcher(pluginDirs); @@ -107,8 +102,8 @@ static InferenceEngine::InferenceEnginePluginPtr selectPlugin(const std::vector< * @param device - string representation of device to infer on * @return Plugin pointer */ -static UNUSED InferenceEngine::InferenceEnginePluginPtr selectPlugin(const std::vector &pluginDirs, - const std::string &plugin, +static UNUSED InferenceEngine::InferenceEnginePluginPtr selectPlugin(const std::vector &pluginDirs, + const file_name_t &plugin, const std::string &device) { return selectPlugin(pluginDirs, plugin, getDeviceFromStr(device)); } @@ -118,7 +113,7 @@ static UNUSED InferenceEngine::InferenceEnginePluginPtr selectPlugin(const std:: * @param filepath - full file name * @return filename without extension */ -static UNUSED std::string fileNameNoExt(const std::string &filepath) { +static std::string fileNameNoExt(const std::string &filepath) { auto pos = filepath.rfind('.'); if (pos == std::string::npos) return filepath; return filepath.substr(0, pos); @@ -197,8 +192,8 @@ static UNUSED std::ostream &operator<<(std::ostream &os, const PluginVersion &ve } inline void printPluginVersion(InferenceEngine::InferenceEnginePluginPtr ptr, std::ostream& stream) { - const PluginVersion *pluginVersion = nullptr; - ptr->GetVersion((const InferenceEngine::Version*&)pluginVersion); + const InferenceEngine::Version *pluginVersion = nullptr; + ptr->GetVersion(pluginVersion); stream << pluginVersion << std::endl; } @@ -519,11 +514,11 @@ static UNUSED void addRectangles(unsigned char *data, size_t height, size_t widt if (w < 0) w = 0; if (h < 0) h = 0; - if (x >= width) { x = width - 1; w = 0; thickness = 1; } - if (y >= height) { y = height - 1; h = 0; thickness = 1; } + if (static_cast(x) >= width) { x = width - 1; w = 0; thickness = 1; } + if (static_cast(y) >= height) { y = height - 1; h = 0; thickness = 1; } - if (x + w >= width) { w = width - x - 1; } - if (y + h >= height) { h = height - y - 1; } + if (static_cast(x + w) >= width) { w = width - x - 1; } + if (static_cast(y + h) >= height) { h = height - y - 1; } thickness = std::min(std::min(thickness, w / 2 + 1), h / 2 + 1); @@ -532,26 +527,26 @@ static UNUSED void addRectangles(unsigned char *data, size_t height, size_t widt for (int t = 0; t < thickness; t++) { shift_first = (y + t) * width * 3; shift_second = (y + h - t) * width * 3; - for (int i = x; i < x + w + 1; i++) { - data[shift_first + i * 3] = colors.at(cls).red(); - data[shift_first + i * 3 + 1] = colors.at(cls).green(); - data[shift_first + i * 3 + 2] = colors.at(cls).blue(); - data[shift_second + i * 3] = colors.at(cls).red(); - data[shift_second + i * 3 + 1] = colors.at(cls).green(); - data[shift_second + i * 3 + 2] = colors.at(cls).blue(); + for (int ii = x; ii < x + w + 1; ii++) { + data[shift_first + ii * 3] = colors.at(cls).red(); + data[shift_first + ii * 3 + 1] = colors.at(cls).green(); + data[shift_first + ii * 3 + 2] = colors.at(cls).blue(); + data[shift_second + ii * 3] = colors.at(cls).red(); + data[shift_second + ii * 3 + 1] = colors.at(cls).green(); + data[shift_second + ii * 3 + 2] = colors.at(cls).blue(); } } for (int t = 0; t < thickness; t++) { shift_first = (x + t) * 3; shift_second = (x + w - t) * 3; - for (int i = y; i < y + h + 1; i++) { - data[shift_first + i * width * 3] = colors.at(cls).red(); - data[shift_first + i * width * 3 + 1] = colors.at(cls).green(); - data[shift_first + i * width * 3 + 2] = colors.at(cls).blue(); - data[shift_second + i * width * 3] = colors.at(cls).red(); - data[shift_second + i * width * 3 + 1] = colors.at(cls).green(); - data[shift_second + i * width * 3 + 2] = colors.at(cls).blue(); + for (int ii = y; ii < y + h + 1; ii++) { + data[shift_first + ii * width * 3] = colors.at(cls).red(); + data[shift_first + ii * width * 3 + 1] = colors.at(cls).green(); + data[shift_first + ii * width * 3 + 2] = colors.at(cls).blue(); + data[shift_second + ii * width * 3] = colors.at(cls).red(); + data[shift_second + ii * width * 3 + 1] = colors.at(cls).green(); + data[shift_second + ii * width * 3 + 2] = colors.at(cls).blue(); } } } @@ -710,8 +705,8 @@ class DetectedObject { float xmin, xmax, ymin, ymax, prob; bool difficult; - DetectedObject(int objectType, float xmin, float ymin, float xmax, float ymax, float prob, bool difficult = false) - : objectType(objectType), xmin(xmin), xmax(xmax), ymin(ymin), ymax(ymax), prob(prob), difficult(difficult) { + DetectedObject(int _objectType, float _xmin, float _ymin, float _xmax, float _ymax, float _prob, bool _difficult = false) + : objectType(_objectType), xmin(_xmin), xmax(_xmax), ymin(_ymin), ymax(_ymax), prob(_prob), difficult(_difficult) { } DetectedObject(const DetectedObject& other) = default; @@ -781,8 +776,8 @@ class ImageDescription { const std::list alist; const bool check_probs; - explicit ImageDescription(const std::list &alist, bool check_probs = false) - : alist(alist), check_probs(check_probs) { + explicit ImageDescription(const std::list &_alist, bool _check_probs = false) + : alist(_alist), check_probs(_check_probs) { } static float ioUMultiple(const ImageDescription &detectedObjects, const ImageDescription &desiredObjects) { @@ -815,8 +810,6 @@ class ImageDescription { float coeff = 1.0; if (check_probs) { if (bestJ != doB.end()) { - DetectedObject test = *bestJ; - DetectedObject test1 = *doS.begin(); float mn = std::min((*bestJ).prob, (*doS.begin()).prob); float mx = std::max((*bestJ).prob, (*doS.begin()).prob); @@ -867,23 +860,20 @@ struct AveragePrecisionCalculator { } public: - explicit AveragePrecisionCalculator(double threshold) : threshold(threshold) { } + explicit AveragePrecisionCalculator(double _threshold) : threshold(_threshold) { } // gt_bboxes -> des // bboxes -> det void consumeImage(const ImageDescription &detectedObjects, const ImageDescription &desiredObjects) { - // Collecting IoU values - int tp = 0, fp = 0; - + // Collecting IoU values std::vector visited(desiredObjects.alist.size(), false); std::vector bboxes{ std::begin(detectedObjects.alist), std::end(detectedObjects.alist) }; std::sort(bboxes.begin(), bboxes.end(), SortBBoxDescend); for (auto&& detObj : bboxes) { - // Searching for the best match to this detection - + // Searching for the best match to this detection // Searching for desired object float overlap_max = -1; int jmax = -1; @@ -932,8 +922,6 @@ struct AveragePrecisionCalculator { std::map res; - double AP = 0; - double q = 0; for (auto m : matches) { // Sorting std::sort(m.second.begin(), m.second.end(), SortPairDescend); @@ -1054,65 +1042,3 @@ static UNUSED void addRectangles(unsigned char *data, size_t height, size_t widt } } } - -#ifdef USE_OPENCV -/** -* @brief Sets image data stored in cv::Mat object to a given Blob object. -* @param orig_image - given cv::Mat object with an image data. -* @param blob - Blob object which to be filled by an image data. -* @param batchIndex - batch index of an image inside of the blob. -*/ -template -void matU8ToBlob(const cv::Mat& orig_image, InferenceEngine::Blob::Ptr& blob, int batchIndex = 0) { - InferenceEngine::SizeVector blobSize = blob->getTensorDesc().getDims(); - const size_t width = blobSize[3]; - const size_t height = blobSize[2]; - const size_t channels = blobSize[1]; - T* blob_data = blob->buffer().as(); - - cv::Mat resized_image(orig_image); - if (width != orig_image.size().width || height!= orig_image.size().height) { - cv::resize(orig_image, resized_image, cv::Size(width, height)); - } - - int batchOffset = batchIndex * width * height * channels; - - for (size_t c = 0; c < channels; c++) { - for (size_t h = 0; h < height; h++) { - for (size_t w = 0; w < width; w++) { - blob_data[batchOffset + c * width * height + h * width + w] = - resized_image.at(h, w)[c]; - } - } - } -} - -/** - * @brief Wraps data stored inside of a passed cv::Mat object by new Blob pointer. - * @note: No memory allocation is happened. The blob just points to already existing - * cv::Mat data. - * @param mat - given cv::Mat object with an image data. - * @return resulting Blob pointer. - */ -static InferenceEngine::Blob::Ptr wrapMat2Blob(const cv::Mat &mat) { - size_t channels = mat.channels(); - size_t height = mat.size().height; - size_t width = mat.size().width; - - size_t strideH = mat.step.buf[0]; - size_t strideW = mat.step.buf[1]; - - bool is_dense = - strideW == channels && - strideH == channels * width; - - if (!is_dense) THROW_IE_EXCEPTION - << "Doesn't support conversion from not dense cv::Mat"; - - InferenceEngine::TensorDesc tDesc(InferenceEngine::Precision::U8, - {1, channels, height, width}, - InferenceEngine::Layout::NHWC); - - return InferenceEngine::make_shared_blob(tDesc, mat.data); -} -#endif \ No newline at end of file diff --git a/inference-engine/samples/common/samples/ocv_common.hpp b/inference-engine/samples/common/samples/ocv_common.hpp new file mode 100644 index 00000000000000..c979cd309b4983 --- /dev/null +++ b/inference-engine/samples/common/samples/ocv_common.hpp @@ -0,0 +1,73 @@ +// Copyright (C) 2018 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief a header file with common samples functionality using OpenCV + * @file ocv_common.hpp + */ + +#pragma once + +#include +#include + +/** +* @brief Sets image data stored in cv::Mat object to a given Blob object. +* @param orig_image - given cv::Mat object with an image data. +* @param blob - Blob object which to be filled by an image data. +* @param batchIndex - batch index of an image inside of the blob. +*/ +template +void matU8ToBlob(const cv::Mat& orig_image, InferenceEngine::Blob::Ptr& blob, int batchIndex = 0) { + InferenceEngine::SizeVector blobSize = blob->getTensorDesc().getDims(); + const size_t width = blobSize[3]; + const size_t height = blobSize[2]; + const size_t channels = blobSize[1]; + T* blob_data = blob->buffer().as(); + + cv::Mat resized_image(orig_image); + if (width != orig_image.size().width || height!= orig_image.size().height) { + cv::resize(orig_image, resized_image, cv::Size(width, height)); + } + + int batchOffset = batchIndex * width * height * channels; + + for (size_t c = 0; c < channels; c++) { + for (size_t h = 0; h < height; h++) { + for (size_t w = 0; w < width; w++) { + blob_data[batchOffset + c * width * height + h * width + w] = + resized_image.at(h, w)[c]; + } + } + } +} + +/** + * @brief Wraps data stored inside of a passed cv::Mat object by new Blob pointer. + * @note: No memory allocation is happened. The blob just points to already existing + * cv::Mat data. + * @param mat - given cv::Mat object with an image data. + * @return resulting Blob pointer. + */ +static InferenceEngine::Blob::Ptr wrapMat2Blob(const cv::Mat &mat) { + size_t channels = mat.channels(); + size_t height = mat.size().height; + size_t width = mat.size().width; + + size_t strideH = mat.step.buf[0]; + size_t strideW = mat.step.buf[1]; + + bool is_dense = + strideW == channels && + strideH == channels * width; + + if (!is_dense) THROW_IE_EXCEPTION + << "Doesn't support conversion from not dense cv::Mat"; + + InferenceEngine::TensorDesc tDesc(InferenceEngine::Precision::U8, + {1, channels, height, width}, + InferenceEngine::Layout::NHWC); + + return InferenceEngine::make_shared_blob(tDesc, mat.data); +} \ No newline at end of file diff --git a/inference-engine/samples/common/samples/slog.hpp b/inference-engine/samples/common/samples/slog.hpp index b13cfa35749b9d..23eb8d34a581d9 100644 --- a/inference-engine/samples/common/samples/slog.hpp +++ b/inference-engine/samples/common/samples/slog.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -58,7 +57,7 @@ class LogStream { } // Specializing for LogStreamEndLine to support slog::endl - LogStream& operator<< (const LogStreamEndLine &arg) { + LogStream& operator<< (const LogStreamEndLine &/*arg*/) { _new_line = true; (*_log_stream) << std::endl; diff --git a/inference-engine/samples/hello_autoresize_classification/CMakeLists.txt b/inference-engine/samples/hello_autoresize_classification/CMakeLists.txt index f807be458fc6c4..d70a974c7045f5 100644 --- a/inference-engine/samples/hello_autoresize_classification/CMakeLists.txt +++ b/inference-engine/samples/hello_autoresize_classification/CMakeLists.txt @@ -1,40 +1,24 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (C) 2018 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. cmake_minimum_required(VERSION 2.8) set (TARGET_NAME "hello_autoresize_classification") -if( BUILD_SAMPLE_NAME AND NOT ${BUILD_SAMPLE_NAME} STREQUAL ${TARGET_NAME} ) - message(STATUS "SAMPLE ${TARGET_NAME} SKIPPED") - return() -endif() - file (GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) -# Find OpenCV libray if exists -find_package(OpenCV) +# Find OpenCV components if exist +find_package(OpenCV COMPONENTS imgcodecs QUIET) if(NOT(OpenCV_FOUND)) - message(STATUS "OPENCV is disabled or not found, " ${TARGET_NAME} " skiped") + message(WARNING "OPENCV is disabled or not found, " ${TARGET_NAME} " skipped") return() endif() source_group("src" FILES ${SRC}) -include_directories(${OpenCV_INCLUDE_DIRS}) - link_directories(${LIB_FOLDER}) # Create library file from sources. diff --git a/inference-engine/samples/hello_autoresize_classification/README.md b/inference-engine/samples/hello_autoresize_classification/README.md index e264d287ab81da..524ec227ba25f3 100644 --- a/inference-engine/samples/hello_autoresize_classification/README.md +++ b/inference-engine/samples/hello_autoresize_classification/README.md @@ -3,7 +3,7 @@ This topic describes how to run the Hello Autoresize Classification sample application. The sample is simplified version of [Image Classification Sample](./samples/classification_sample/README.md). It's intended to demonstrate using of new input autoresize API of Inference Engine in applications. Refer to -[Integrate with customer application New Request API](./docs/Inference_Engine_Developer_Guide/Integrate_with_customer_application_new_API.md) for details. +[Integrate with customer application New Request API](./docs/IE_DG/Integrate_with_customer_application_new_API.md) for details. There is also new API introduced to crop a ROI object and set it as input without additional memory re-allocation. To properly demonstrate this new API it's required to run several networks in pipeline which is out of scope of this sample. @@ -18,9 +18,11 @@ You can do inference on an image using a trained AlexNet network on Intel® P ./hello_autoresize_classification /alexnet_fp32.xml /cat.bmp CPU ``` +> **NOTE**: Before running the sample with a trained model, make sure the model is converted to the Inference Engine format (\*.xml + \*.bin) using the [Model Optimizer tool](./docs/MO_DG/Deep_Learning_Model_Optimizer_DevGuide.md). + ### Outputs The application outputs top-10 inference results. ## See Also -* [Using Inference Engine Samples](./docs/Inference_Engine_Developer_Guide/Samples_Overview.md) +* [Using Inference Engine Samples](./docs/IE_DG/Samples_Overview.md) diff --git a/inference-engine/samples/hello_autoresize_classification/main.cpp b/inference-engine/samples/hello_autoresize_classification/main.cpp index cbd0ecf0df1621..2ac933783948e0 100644 --- a/inference-engine/samples/hello_autoresize_classification/main.cpp +++ b/inference-engine/samples/hello_autoresize_classification/main.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -9,9 +8,8 @@ #include #include -#include #include -#include +#include using namespace InferenceEngine; diff --git a/inference-engine/samples/hello_classification/CMakeLists.txt b/inference-engine/samples/hello_classification/CMakeLists.txt index e32e977b8a2ec6..9531a214841345 100644 --- a/inference-engine/samples/hello_classification/CMakeLists.txt +++ b/inference-engine/samples/hello_classification/CMakeLists.txt @@ -1,33 +1,19 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (C) 2018 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. cmake_minimum_required(VERSION 2.8) set (TARGET_NAME "hello_classification") -if( BUILD_SAMPLE_NAME AND NOT ${BUILD_SAMPLE_NAME} STREQUAL ${TARGET_NAME} ) - message(STATUS "SAMPLE ${TARGET_NAME} SKIPPED") - return() -endif() - file (GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) -# Find OpenCV libray if exists -find_package(OpenCV) +# Find OpenCV components if exist +find_package(OpenCV COMPONENTS imgcodecs QUIET) if(NOT(OpenCV_FOUND)) - message(STATUS "OPENCV is disabled or not found, " ${TARGET_NAME} " skiped") + message(WARNING "OPENCV is disabled or not found, " ${TARGET_NAME} " skipped") return() endif() @@ -35,13 +21,16 @@ endif() # Empty name lists them directly under the .vcproj source_group("src" FILES ${SRC}) -include_directories(${OpenCV_INCLUDE_DIRS}) - link_directories(${LIB_FOLDER}) # Create library file from sources. add_executable(${TARGET_NAME} ${SRC}) +if(WIN32) + # This target supports UNICODE on Windows + set_target_properties(${TARGET_NAME} PROPERTIES COMPILE_FLAGS "/D_UNICODE /DUNICODE") +endif() + set_target_properties(${TARGET_NAME} PROPERTIES "CMAKE_CXX_FLAGS" "${CMAKE_CXX_FLAGS} -fPIE" COMPILE_PDB_NAME ${TARGET_NAME}) diff --git a/inference-engine/samples/hello_classification/main.cpp b/inference-engine/samples/hello_classification/main.cpp index abc01085450f51..d9482e19bc6a0e 100644 --- a/inference-engine/samples/hello_classification/main.cpp +++ b/inference-engine/samples/hello_classification/main.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -9,32 +8,47 @@ #include #include +#ifdef UNICODE +#include +#endif + #include #include using namespace InferenceEngine; +#ifndef UNICODE +#define tcout std::cout +#define _T(STR) STR +#else +#define tcout std::wcout +#endif + +#ifndef UNICODE int main(int argc, char *argv[]) { +#else +int wmain(int argc, wchar_t *argv[]) { +#endif try { // ------------------------------ Parsing and validation of input args --------------------------------- if (argc != 3) { - std::cout << "Usage : ./hello_classification " << std::endl; + tcout << _T("Usage : ./hello_classification ") << std::endl; return EXIT_FAILURE; } - const std::string input_model{argv[1]}; - const std::string input_image_path{argv[2]}; + const file_name_t input_model{argv[1]}; + const file_name_t input_image_path{argv[2]}; // ----------------------------------------------------------------------------------------------------- // --------------------------- 1. Load Plugin for inference engine ------------------------------------- - PluginDispatcher dispatcher({"../../../lib/intel64", ""}); + PluginDispatcher dispatcher({_T("../../../lib/intel64"), _T("")}); InferencePlugin plugin(dispatcher.getSuitablePlugin(TargetDevice::eCPU)); // ----------------------------------------------------------------------------------------------------- // --------------------------- 2. Read IR Generated by ModelOptimizer (.xml and .bin files) ------------ CNNNetReader network_reader; - network_reader.ReadNetwork(input_model); - network_reader.ReadWeights(input_model.substr(0, input_model.size() - 4) + ".bin"); + network_reader.ReadNetwork(fileNameToString(input_model)); + network_reader.ReadWeights(fileNameToString(input_model).substr(0, input_model.size() - 4) + ".bin"); network_reader.getNetwork().setBatchSize(1); CNNNetwork network = network_reader.getNetwork(); // ----------------------------------------------------------------------------------------------------- @@ -64,7 +78,7 @@ int main(int argc, char *argv[]) { // --------------------------- 6. Prepare input -------------------------------------------------------- - cv::Mat image = cv::imread(input_image_path); + cv::Mat image = cv::imread(fileNameToString(input_image_path)); /* Resize manually and copy data from the image to the input blob */ Blob::Ptr input = infer_request.GetBlob(input_name); diff --git a/inference-engine/samples/hello_request_classification/CMakeLists.txt b/inference-engine/samples/hello_request_classification/CMakeLists.txt index 42a2ba8a4f6695..881845395f5e5a 100644 --- a/inference-engine/samples/hello_request_classification/CMakeLists.txt +++ b/inference-engine/samples/hello_request_classification/CMakeLists.txt @@ -1,33 +1,19 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (C) 2018 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. cmake_minimum_required(VERSION 2.8) set (TARGET_NAME "hello_request_classification") -if( BUILD_SAMPLE_NAME AND NOT ${BUILD_SAMPLE_NAME} STREQUAL ${TARGET_NAME} ) - message(STATUS "SAMPLE ${TARGET_NAME} SKIPPED") - return() -endif() - file (GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) -# Find OpenCV libray if exists -find_package(OpenCV) +# Find OpenCV components if exist +find_package(OpenCV COMPONENTS imgcodecs QUIET) if(NOT(OpenCV_FOUND)) - message(STATUS "OPENCV is disabled or not found, " ${TARGET_NAME} " skiped") + message(WARNING "OPENCV is disabled or not found, " ${TARGET_NAME} " skipped") return() endif() @@ -35,8 +21,6 @@ endif() # Empty name lists them directly under the .vcproj source_group("src" FILES ${SRC}) -include_directories(${OpenCV_INCLUDE_DIRS}) - link_directories(${LIB_FOLDER}) # Create library file from sources. diff --git a/inference-engine/samples/hello_request_classification/README.md b/inference-engine/samples/hello_request_classification/README.md index dd2caebb1843dc..708fa81f55c757 100644 --- a/inference-engine/samples/hello_request_classification/README.md +++ b/inference-engine/samples/hello_request_classification/README.md @@ -3,7 +3,7 @@ This topic describes how to run the Hello Infer Classification sample application. The sample is simplified version of [Image Classification Sample](./samples/classification_sample/README.md). It's intended to demonstrate using of new Infer Request API of Inference Engine in applications. Refer to -[Integrate with customer application New Request API](./docs/Inference_Engine_Developer_Guide/Integrate_with_customer_application_new_API.md) for details. +[Integrate with customer application New Request API](./docs/IE_DG/Integrate_with_customer_application_new_API.md) for details. ## Running @@ -12,10 +12,12 @@ You can do inference on an image using a trained AlexNet network on Intel® P ./hello_autoresize_classification /alexnet_fp32.xml /cat.bmp CPU ``` +> **NOTE**: Before running the sample with a trained model, make sure the model is converted to the Inference Engine format (\*.xml + \*.bin) using the [Model Optimizer tool](./docs/MO_DG/Deep_Learning_Model_Optimizer_DevGuide.md). + ### Outputs The application outputs top-10 inference results. ## See Also -* [Using Inference Engine Samples](./docs/Inference_Engine_Developer_Guide/Samples_Overview.md) +* [Using Inference Engine Samples](./docs/IE_DG/Samples_Overview.md) diff --git a/inference-engine/samples/hello_request_classification/main.cpp b/inference-engine/samples/hello_request_classification/main.cpp index 0137851ed16af5..d5fabb27a18de6 100644 --- a/inference-engine/samples/hello_request_classification/main.cpp +++ b/inference-engine/samples/hello_request_classification/main.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/hello_shape_infer_ssd/CMakeLists.txt b/inference-engine/samples/hello_shape_infer_ssd/CMakeLists.txt index 3cad38d3d1cf86..ffc9856a28603e 100644 --- a/inference-engine/samples/hello_shape_infer_ssd/CMakeLists.txt +++ b/inference-engine/samples/hello_shape_infer_ssd/CMakeLists.txt @@ -15,11 +15,6 @@ cmake_minimum_required(VERSION 2.8) set(TARGET_NAME "hello_shape_infer_ssd") -if (BUILD_SAMPLE_NAME AND NOT ${BUILD_SAMPLE_NAME} STREQUAL ${TARGET_NAME}) - message(STATUS "SAMPLE ${TARGET_NAME} SKIPPED") - return() -endif () - file(GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) @@ -28,10 +23,10 @@ file(GLOB HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp ) -# Find OpenCV libray if exists -find_package(OpenCV) +# Find OpenCV components if exist +find_package(OpenCV COMPONENTS imgcodecs QUIET) if(NOT(OpenCV_FOUND)) - message(STATUS "OPENCV is disabled or not found, " ${TARGET_NAME} " skiped") + message(WARNING "OPENCV is disabled or not found, " ${TARGET_NAME} " skipped") return() endif() @@ -40,8 +35,6 @@ endif() source_group("src" FILES ${SRC}) source_group("headers" FILES ${HEADERS}) -include_directories(${OpenCV_INCLUDE_DIRS}) - link_directories(${LIB_FOLDER}) # Create library file from sources. diff --git a/inference-engine/samples/hello_shape_infer_ssd/README.md b/inference-engine/samples/hello_shape_infer_ssd/README.md index 3193d8d1498e4d..f275abc36bb69e 100644 --- a/inference-engine/samples/hello_shape_infer_ssd/README.md +++ b/inference-engine/samples/hello_shape_infer_ssd/README.md @@ -1,7 +1,7 @@ # Hello Shape Infer Sample This topic demonstrates how to run the Hello Shape Infer SSD application, which does inference using object detection -networks like SSD-VGG. The sample shows how to use [Shape Inference feature](./docs/Inference_Engine_Developer_Guide/ShapeInference.md). +networks like SSD-VGG. The sample shows how to use [Shape Inference feature](./docs/IE_DG/ShapeInference.md). ## Running @@ -10,6 +10,8 @@ You can use the following command to do inference on Intel® Processors on an ./hello_shape_infer_ssd /ssd_300.xml /500x500.bmp CPU 3 ``` +> **NOTE**: Before running the sample with a trained model, make sure the model is converted to the Inference Engine format (\*.xml + \*.bin) using the [Model Optimizer tool](./docs/MO_DG/Deep_Learning_Model_Optimizer_DevGuide.md). + ### Outputs The application renders an image with detected objects enclosed in rectangles. It outputs the list of classes @@ -17,4 +19,4 @@ of the detected objects along with the respective confidence values and the coor rectangles to the standard output stream. ## See Also -* [Using Inference Engine Samples](./docs/Inference_Engine_Developer_Guide/Samples_Overview.md) +* [Using Inference Engine Samples](./docs/IE_DG/Samples_Overview.md) diff --git a/inference-engine/samples/hello_shape_infer_ssd/main.cpp b/inference-engine/samples/hello_shape_infer_ssd/main.cpp index bbd143ae17354f..020b941ac64e9c 100644 --- a/inference-engine/samples/hello_shape_infer_ssd/main.cpp +++ b/inference-engine/samples/hello_shape_infer_ssd/main.cpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // @@ -7,10 +6,9 @@ #include #include -#include #include -#include #include +#include #include "shape_infer_extension.hpp" @@ -96,7 +94,7 @@ int main(int argc, char* argv[]) { throw std::logic_error("Incorrect output dimensions for SSD model"); } if (output_info == nullptr) { - THROW_IE_EXCEPTION << "[SAMPLES] shared_ptr ouput_info == nullptr"; + THROW_IE_EXCEPTION << "[SAMPLES] internal error - output information is empty"; } output_info->setPrecision(Precision::FP32); @@ -161,9 +159,9 @@ int main(int argc, char* argv[]) { << image_id << std::endl; } } + cv::imwrite("hello_shape_infer_ssd_output.jpg", image); std::cout << "The resulting image was saved in the file: hello_shape_infer_ssd_output.jpg" << std::endl; - // ----------------------------------------------------------------------------------------------------- } catch (const std::exception& ex) { std::cerr << ex.what() << std::endl; diff --git a/inference-engine/samples/hello_shape_infer_ssd/shape_infer_extension.hpp b/inference-engine/samples/hello_shape_infer_ssd/shape_infer_extension.hpp index 8a65f614274e7f..110fa65f08d43e 100644 --- a/inference-engine/samples/hello_shape_infer_ssd/shape_infer_extension.hpp +++ b/inference-engine/samples/hello_shape_infer_ssd/shape_infer_extension.hpp @@ -1,5 +1,4 @@ // Copyright (C) 2018 Intel Corporation -// // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/lenet_network_graph_builder/CMakeLists.txt b/inference-engine/samples/lenet_network_graph_builder/CMakeLists.txt new file mode 100644 index 00000000000000..aab47886628a96 --- /dev/null +++ b/inference-engine/samples/lenet_network_graph_builder/CMakeLists.txt @@ -0,0 +1,37 @@ +# Copyright (C) 2018 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +cmake_minimum_required(VERSION 2.8) + +set (TARGET_NAME "lenet_network_graph_builder") + +file (GLOB MAIN_SRC + ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp + ) + +file (GLOB MAIN_HEADERS + ${CMAKE_CURRENT_SOURCE_DIR}/*.h + ) + +# Create named folders for the sources within the .vcproj +# Empty name lists them directly under the .vcproj +source_group("src" FILES ${MAIN_SRC}) +source_group("include" FILES ${MAIN_HEADERS}) + + +link_directories(${LIB_FOLDER}) + +# Create library file from sources. +add_executable(${TARGET_NAME} ${MAIN_SRC} ${MAIN_HEADERS}) + +add_dependencies(${TARGET_NAME} gflags) + +set_target_properties(${TARGET_NAME} PROPERTIES "CMAKE_CXX_FLAGS" "${CMAKE_CXX_FLAGS} -fPIE" + COMPILE_PDB_NAME ${TARGET_NAME}) + +target_link_libraries(${TARGET_NAME} ${InferenceEngine_LIBRARIES} gflags format_reader) + +if(UNIX) + target_link_libraries( ${TARGET_NAME} ${LIB_DL} pthread) +endif() \ No newline at end of file diff --git a/inference-engine/samples/lenet_network_graph_builder/LeNet.bin b/inference-engine/samples/lenet_network_graph_builder/LeNet.bin new file mode 100644 index 0000000000000000000000000000000000000000..7ce66d0ba63b7a1bca69edfd44f58515da751e12 GIT binary patch literal 1724320 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 z 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

%PYlapbE~N!XzG6a`MDSCGFxF| zsTFbUF(OfFeH?L@7Ytlt-zSgTe0#$nr+G^Vb2oQ@%9F{MUeOKbALPL>iEt~4IwqWF zuZ01R8o4FI-EOx&-2mmAEAe3QH@FfyvNYJHh#M8edYO(2#3OwoiQE1MPAF^x+k~xD zxT?20|W|MFxz+-Y-&+PI_W&=QBl@PW`L<`Yc5 zrq3w_jiIJt)wn#`nBEl~fX4q^xsX5ATuqf19{A}<3Qqk+*Qcr=ZySU?#er}^U7o)D zI1)Q02$|k%fcnRd@Vqyd3_6Hj`D!GA-sa)E+@x4^JgMcop3vE_18b+!W-q znNB`g6zxs}-??@_8v1;J`O7-dp=>-pTcFN=+kGDvX4GS_$V*&zv;~`Soje=lui!8~g^772=_c&AKh4{-8zn6`Y#p0`o3JVaJraE^}2x zaEzNSea`ONbFGE9va9WAjgbO1&M_xWJ>58BXEBT(YDV+sHoX7Rn=9Knf{b4%M=PgT zldgGkbgr8lSRLL6veC0pp83VrUDT$nGa_(K%3m1$^E*EvU57zaS%1#D0{;9kgn|9Z zSh#2fjt%zXC$C-0y`Evjk*}-3?ZGCf%QGWeauXq1`7UR-zn9NHX9AfrDmV~pPLe+q zg7C}-h(F^DI?Qi2uAX&(UY85noL_KU$tF5?Ln_`oAWa;LPr#3;SS~-=f)rS2)3HYH zQFd}YZr(+XcOehsSS{ zq1-=#)6l$vn$M=gE|zhrMQh@{CLS;Cy^TR}h9oNK188?}-eC^&0A8V4eDCJ(u*TMc zwC`v@3I0C*u+!lCH=2VZbtms{Iur9f)uq=Oq{$wZ-RWPQ1s{cWWM0G>m%U#d$&|`{ z{Hkd+@NV8Scw!O{KYp`Wanm$Xs=7-#p1@rLB17(^r?K0n} z@r=JPvj=X?ufxX`?nE$bKx+?_;;BG4Zu(T^6=Njgs3kTg2Mb&IG|q*n;oL@HTyONM~tQh^G49QT2!%CZdNQHU#9 zz&~7UNX@5|^^U_T`jRUSTMo@iD2>#+`S&!lnQ3lq2!H-_j}?t`Ou2GISA zp3ru&nA6H*&TV_7wzh;o7Gbo` zF`>GWCnkhwQ};o8`t`IIIjAEF=Qgi{a!n;VoVSD1AO9Ou&CI!Wi(kUymFe&}%#pvi zS&I0V>IozsRbv^;T$!)C4iSs&@l{~~D-~>j8UL*#r%!+4J~W(z+{Ht}m+L2xj7w*s zY|3%Gb0+~8Mj`|*4g|6NN>qH4K6TEpfkmx{@a~Zuer#0_t{%Ubv^(t~&vkTRa?EyO zpYaQWi;`e*UO%SK(I%SP#!&6#LBYIbQ4se*6TV;gE);Gnz|&=3j5Ya?<(qzj$cWV> z!n+c_{*)t?+ph6G%Wt5hP=jQaF_%P_57kR!nOl4cFZFHch~^Wp-RKRPc^I?Z#2z~B z@Eh)Re;4FB*5KwN#b7l&o%8b1h2ziDaMr!gFjl1sTAic>SBnj)rA|9Ov&q9NUC*(6 z%y@82F~{4g54jtayT}-^WpL2k5H369U{<&+ITdJ*uKoG^Ws@TOTH1pDJe$C0|6A}J zUXG8&gZT}5MnvyeJC+5?5l#1h5bS3QV}E{vFyLgeaRBc<3qvqr!>h=DMS4g;W!m9 zaW*Zf5c;>&fR3ADX%QE$|;l zQe9&+Tpp>9SJ-{O@3K7o;UYy=*4sb=+m*gnN(5~SOLDlq1QsgS@~KW@U~gEDaRb>9 z_;fk1)9c3<$TmZP%~@DpTx^|2xZLU(G7hkn;ucNP_L*XJW zbk}!WulFBFY+1#1I(UOh#tHDAv6FlHy$C!P3aDR?2yE@W!<)aDjf&(8>uIGy{+s`R zJNFN^4a(DL`{c;84Rvh+nvD?DFr4IK+1!wkg( zl5vvtvYj^c3M{mNZ>7Ne0db_>sMxd+62Z@s#%-LB|ZLvL2KOwR>zqN(M@y{NsK8 z$7X$UJ--XDj{CvAoIb?eG1PLsp>~k3oqP)y>sZs$gboadPU8|~g)kyd7M5A3f%vqm zDDk@xm5xc11&UE0!Nb`2I0~M#vl^A;!;sLiC#>}#Z^J$g_q@S za~FTT#J4swq`%yZTsZBCvO!Te?N$cNUds0S(YI0GU@>`}*~p7MipRa9{U{wCOT@LR z_;?R+Y1$b5xCc*d^d&t%wCRo|pK)2{KCpE>Ep*sE4M6U9`4iCEN!k$ z#9bf$pxrfRfr@@7RFwR{1O&#uRJLFCmxM`%8#VJ#YM8 zjd)(I!K$4Oy=8-jA9CM@69j#jVzxqrTnBr;u%o_HAp&9*aO?ZhH* z(@zG=1F~eEt2Xh8dyX@=$I0;$mgH+9 zN6_zqI+QeyBnG<}yDsfE#~;^$nQFfw$(s2o~-sN8BIgr9*f4MmhccGXu7BE$k zc^(4Jk4vcc3-*zTJW4jlX9n-?e49yYFpYK9Rev@!x z_76;{&bW2=wH}OqAP0BGr{WBmM|_u2E1qn=4dWhPz$1Cdc=-~KXPtK79Z4-xx#~2i zO50JX5|+`Qn}AE=T6nKNs^sPK1~3R|z|t2LIB1y1d58an4GW^d?_(6q4f2O&Ya02Z zEzEsLUO?nO9SAkG0Moc{Jk`sBsQ7}?{U2pWKI6=R%|Gst`wsA4?L}P2KL_=LJMd&4 z58}U!NKINSO!#pbI&FUQ3MVSD*C7|*Dd>XLQ$pSyT@CHl4&W@L_1e>$O08VSRX;rIBS}xZy^o)dNfO_hTUh&QP%z`LH@-gd6gw0qTH++;VNk>)7)8sMvNCYjg{j~vgAN_}O3KXT0 z_3B_U{wp-Hc}Zt9>lamJ;DxYs-0-uIvE${b&+rXU(zuLfpD*ySd3L39a?D6w1#|j5 z`U5GaeuK(fGuR*0jsKQJ@r!S=)wJhFenXoWRdEW&Ei3~iu~(0;Ra^qH;kqQL^*Go> zpMjfG&G1i#0r)*$$shh9j`s^PxQv56up})7z8tKBPmcw3_VZEn%w{(ZE#%4dXXjD* zr5+^yzk|8$yRaniG!#^J!NMgLBuUzk1_oS$Jzi>bozYp)n5Rq%Ma77+{%v&LQ;S=? zz6l2+`uSZ)Snn<*95=dJkvUIqL0y^wO%?X>|DiZ1UOP(yHgOhrH}u!$&pHjo)U<5 zUWJ51Z*WY8F@3sBp6x~x@bq+VI2G6@cqciZ>ssgqHTz7d%9RQnFdc@ak15VhO@gue z4T=1&WR1Rh{JlZWLhM48P7p8X2&&Y}`#X_^qbc3AI{|3|3<_3ky&WwW5E|&eulzPV@XP?F{!-$8z-jk#^Pt0 zyffQDtaYC)e6e;bRIr_E%amT++HXP%PsM=zsz;C)u1?#1Ea1O`9QWChy$Sn>5{;Z8 zxRbgDAij^ku3yiERHwlWPd$7;z?hAhzI@*@DRexnKqlo>eMYv{X5+>E0$BPjvq@Q^sljAwilB?i4bRL3xqb4;l z6D7{CZ-CElb?SCYj)?tS1Yefb!i14oaCXHoD(=>x0cw9BT2zKQ9@iw>Bjq4B!UN01 zzoM?>4OEvI5cKSf=P$LsgHaLo5bt7zA1x+<(YVzD|5|O7_+H4j z+-XTj8zxr?VRc3%SSOyvqf_po*n}9ibw^Iy?jEj)(j$u_Wr=m85^4J0!G6YlLQlrX znG4$dkNXoLeEvZ^RecFp&hNzF1am4#`whyIf1`h}Ho4zz2H)7c9qwU3FY0!3{s#`? zV?6`<-s>tTHOAqCv)SO`VoO86*JAbl7%*HkALsiT&`HbsIISn8aR2F6sFJjxZl*FM z?Cbz$`Abm4Tq6k6Ga--TWJt$SJvt*Acm@i`+5sn*3GT>9ZdkhyC&$mJ_TSEec*8_cqjYc>m9UtNI)$+ zMWuB7M`gNjNEOd~ZiU<|MY=Ae4=lTq;Ea3=-=EwHw(B0^mF8PqWzRW$B;*Ae&e0%v z`y1;PrEqZ#qBO8Ag3kwnPxI9b=wYkn1K=B#1e2mRysfGbd}%P}6%Z>X*tHvpb#(`PR?x{-=SP_R5j# zAEn6_S50bL&-h~N&T`u3Pa(AW3fj2uL94!(n4#DK<-IBB=P-(#VBe8kZXTyl?n2dH zGhQAUNiE+ULJ`L07$vlzRZ%}V!^PUv=I;u0z4I6122%0OP#Hg7^B;x>ufw;YgAhLH z7|7Km@)qli=_GYFLwWzhjZ&Pjt|Sg@TkJ8Svyk_^x&Ufee{%na?W|++6{VHaV9R_7 z*gkeXUw3W=KC7(b=4$CN=kq(rY!5}d<*wW${yZvhQ_z=;p>nke{IiZKEN#~yTYPt- zf=U(c*;R}>=S}FeN9m|E{1UeB6h|5R{d}L@ACxQq%-w7m3t8(dU_tvG+%j+tbbf9C z>sK1IKy(Kt#jWP199YlUPW*|>&#Z#GL*AI`U_~b-??R2Ex1slfJW4%qVZN+6c$v8o zJ14(^3nNs?hebN%?zLkOMyNE-xN3F z$s6-wd6_C0k4^z+{cu|S4-VRDbg$eJ{I~2lycmBQ z62i)bd*fzs3mjW8Elgev2KHxHPBJju@ z3F>8eiuX8X&&{5y$16lm!4bQULg0c)d|Q1#a$!&LfMq%eeU9L)-;Uhps!%vLkcc_y zW_;>48M1=$`b}3H#pJo`;kL?Hd{uTDzecUcL(}_kQ|V47y zu9sHuZlWdp6yag??|zE&rmK+pq&_em(a*^x)?gT82vs*+K$R=^aIKF4>w#-iXWQ|l z&cK)!7ljH@W;ws(&VRt$&BkrvN@Si!1OydXQXTynuy?K*ebk~)w?>a5G6A}D>7$d- z^~C_5d;G&k`l4k1t_rXe$>JaNWn#1QGk96l$cc2H!#KrMsIo}m5|*?3_j(Xy?>*TZU`U#-jK$Xq^7Mq`A8<1N!wv2Zz_1h5xbdkJocQ2@U0a@j zS1#MJ$EV}vbrtYrf*VO5IfL33YSUV6LqLe;uGM?v`bX?OxZ{Z+Ny7@4_vGSm!F?`2 zHw;C^?{QUg**?`r2(pz`{PbN%L9|qnPO3Z(t(*Q~DRYU8u&Cu9#cEQw){#U1NExuA*An#jr%#8W^x?@{&r76fjM{oAX;$K-OuIOLjgQ=u zz-YmW3OkzOAw!2f<%OQd|3hc_RH&WN2!5wohxGVOxTvj59L}gsVIEgy0X^H}B zCjN%i(-i3LZZmrJcsn03YY6Qwh>`B`uTiH&l!%8M#64O6KsQ>S_Eu`+u|y4cq&9&p z_esLVk4@E`(?$1+fa_xc8~J8L1AA^HyY zkNJ$@QTm|j{Qm`gS;yK7^|C)yS`%FR;Z^h?9#?aR<&haK?+-|D(}`ynd)14G=piTry=k z|J-#92D~{A!itaJC6pv{zGd;TYHtMJT3gX=rYrT|)C|>+4XBK#2br+t3qQQalwZX!>Q&XPz#{Lk=zI;wQ%!?LNofa$$YlG>&$!$m2h(G(r3IsWAA4WeBs|+!^UPeXX!~hq)jpq8?qm{;9b2PS>@jZeC`}rW-=bc4^PDpGBvO{ zFc1rd-lEEQ1#*311mC`OB7SO8rd#G{(8yRRvQ4o7p7*f~r@cAhtzJWowFqVet5R$C zX>=$&hwGnw0oog#1VVux3E$Yrr=~{8)5(dS;#-OnJ%XO%E|DAD<1PJyLYZUIps1T!i}UX~dd3RdSH#!Gt3RAxJty5Q_Pn ze~cA9yI>9+=~SV*g1@+NSu^fo{T};iU-;@2E!?0cMn}qh6_`9^Jo6J9P(98c{vB$E zzk^zI&&Ng(Zkxmi8ny#u@p{D=-}jAG8s$hH7rri1)aM`Fz>7e zWV>*D-wh>rfZl^=jtfx2|2Zd9AX%ZtvIkNF!7xwO~$HR-i2t-O(ac`_zz)nd9 zhn~I?oF2vA;o_O2bm~<$Un%l?<4?o#$Q44uytP3I4p{Z#G2GY@Bdl8XKoIqziSz#p zL$N zbD0ps{jLxtAKmgWe8mUB7r%QjuG5r1drJ*-xP|-yIeofwiaOV5Fb9`5Gu}^a8kg$V z#(l89gW0BfWJ+p09vE!Gx$C9q;#&^nL)0HgtnY*sLUB4qCJG+wcMI*uzTmo+u0ib$ z`t;xS3;1c8B{zOuIv%Q$BwClM@ZDZl62N>d-R#fQ94UT~x`bMtkpj1`Bgm7KRNSw4 z8+;u{kz-Yw^vIFx;3OqY5(-4IOjd_HR49c}TQsTVtTn><%0^(ir4@?Zg&gn1TtACM zNc|I2`ix{lfSV54a-VU$52EnJOf}-5Jre__+prn#B&NStpe7?8riFaY;>X*Efdv1w&i~?*nJBM!uW!Jkd~vvFYbxQ2`lE}iVr&Ezs>!E)5TA5>TU@rRVflit}I2#HAPS{ zit#It9f#B6eW)aT8)m#Y1EcHi3$v5usP3`|9wv>1F;U&zkiXFNjkf{O_^d}A3Y6&B zz;RF#>OxbpYBB$-C}{3&<4=z7z<5a&7~Jeiy_pxsTGoS9MD(EgOcQ$da5DzozkvgW zZ^6K%0k*XR*ubRPqL-3|CZCuydlJl*@D z28Xxip?2hSPBq7Zzj$&Qd^n~<19F3*%N5Y@s~ol*DaD(?F)(VzPvkp|N#o!3_~J_{ z?i;57H!nHknQd<9>c4`M+OC6PI%m09^T$|ZmI=D@dEjkv0P7i}Z}fUYPOM7>wt8>G z;!sn@hEt=njPv*%HqSwF^;x*(ZA9*;yqO5|UNIh< zj|p}Bcb40KUY)+`k|l?y8kI&m+~5w!CUV=1Z$s_+bKGg=cHGv=oLGJ{pz6dDz9mS5 zIy@!d`|}p_L!J;y&;G>gH>W`9&T;hT&wtSFEyCY$6B=qUhhMqv z1>U-=OVoN}5u@YXek?R4>wVwAk)GplG-f)83c|SbSRec(Hd8ob#0S2@NtGD&KZl1& z4=^M79o!47!i||Nu&eVpnrbda-CLUIE1yU`cRa?_qwL?{kt;9PeGwA%b3XT|<1;=JSE9=jMZj{Y zD^|t+0h7beac+e(i7BtZ_ld?tZvA=WIvenvsVp~ixDd9AO~aY1fh^_JA$VdPBv{E1 zE;kx~3YJ016(g2`ibh9vUR73WQ_+XU@b6zQ_V*C_HT@d5M#`0JKVQJ_*XlyS>T%@E zRU77a*i6p-OXkwl8U^7C{keCmXM;+mDV<#=Nv#|^xx<+m$UACc%Pi&&5BdzzVarfu zdL1?`*Cy1n5;G=y(%VTJVSbhuS+Pc!Zcg8Z5>Ma3;mN_bcK`gyN143Aw9o+vJgvry zPco(teQK~~FYAQJ-sEd%x`JwWH_Uw}gjE(!wANaYgj?z0(+hJ2W&0KByX=Lq(k2F? z*WKbLv+P6ukPX>A$TEU53e@0RI%-MI!!_Rp+}Ds1WL(xIJ|OlM*N{~J7wpo}FF6oT zi7dt`4qB8m_>LnB9cb5{6wdI_IrJIx3C9QA1ox%_Snh3)DN0&YVe>rN@YS9gI?{O$+x#Bi+zOn#n%LXi>lz|E()s^K`M$xVQ7H6rBaL>)jU2YRhR z3(9Ywz_GI&aK7?h?rQLRT$vpXjYp)Rr|}|I8CY{V)d`T~?MlLA)ycQesq}=I1fRe5 z4aDw$f#-f1kONL*fUhlNp0o(aOlrq5AyVv~c@)lflyL3Y%$EwExjkFXbAqmLSmode z`@~GCUdAoB^P~dfe`)iVPSs#i7@4$X|0{}X4u44^0V`-LB5cap#XExNd64vg8ck(j-<|83k5qO(b<1F z-6twXbhQpp4Y?fn-JwOE7TxE5?q%O4=1R6XIDl?sDNNEv!EM{q;QUGvmm6Ng!Oc?y zH_bb6ka?iT-8lfGl}s^3GasaTJW29SEwXg=TC{Q<#@dj0Tx7K!^*>!MZOyf!xx5TH zJ#!UCJ5&oNjVOV`-R|^wg$wG>y^gQvv0llVYbft9o19+4?)aAf@%!%G;uB`fB)3Ff z!qW-fxWeom7a8Iiy>Cg>M4mYw-?C=zi;uue^n7FP|TX zpK?i!LneIJrJpPALc#72FucWp zL`=+t0mb)dd(V(+56r|7Si^UYv!}W5mFODLmt37p8n5rM0TcC`aOG7o`qj&bEby&^ ziTR`9i&YdZ`)LPH-+qFT@6$2V#gEp^d4P}3uiyv9Z=lblFG8fy7E-;{1xs(p!LyN7 zIO#HT7baZBKI84Mly&grUT?#7F11|NZ*TfpW*J?Pp-aUSckrpzJ=il*nl>z(Pq%Kr z&c8Z74!ot@=M#qucPKH>x($8uB7=MQ*qj(8b%3v*0oCqw;tgMy zVY!9#i^C~K4>EWO`=*UO_oHqedUYf8Z{z3l$Vsp5=l2f4FB zW%ySA3|HdKky(#iiI}|_8TE852|c)mXe@XJ7hg*ddFyfH@W!j$=ZgxU^)d}^N@rdJFJodpC@DDul#BUHYk1nXZhl!##D0NT+y`7ym+FV~R1`U+*Uy7BPob zkT3aLxEl*x^l+ujAooRETX@uSG;JPq!tAW?;OH}rDoHU1gL@5r|EEUFq9)TEtFa{P z_afqPEEGB2D7bXL97OIb6R*z)QJ^#df-g+Q=r1heh*x1y)0GroolT;H-Z6O5WEM|1 zAi7(J!Dn6utkS=LLAfb-elMYOH*bW^=2GN<)e}_FzYb!0l4QzCJ#u8$U2tF8gx225 zR4Q+zpk}!+H)QJI3q?&)9&HQ;1Z}|{xr))E@ZF#Fnn*e z5sF-rC(#n>q;X9b(0|*oK|L0f?HYK8a$7oQQaF&9LO%0v2wr&*N~g`VCwC?7NUo(6 zsY}s>H@}Z^+al!wN6JEaofKVGvJbtCjcBt%KgcF<7}8jcs^>%4K%0kS2lH^6$2e~E zEdcG~qF6uO9pBB?g)PG-ME)M*3qH%kz9K2~&hEkC!I8M-`vO$l^*@TvJ1)oXjpL=X zODXN8sX;q>?(399gzUX%$R=dd(2y1>i4>9|4Zif;*D)$-8L5m0C6$&U6%Bsp=P&;h z^?F|CzRz`iKJT|4ac)>ZZgZ}1)4LT#!a4x9 zV8QP2x1@u~)8o$6j;=+0S5*wmoQ{)&6@*1i4&Y&N4&+%*_Hj}fe65J$)|*U4pPeC) z)cY1iCP|SWdY{2+lMn@8l;C-UI!W_Ak69YBBw67!*L3Y7x>%}E&1h%1a@Uj`)t&FFFv!(ORgT-(WF7YX1I~J zKL+qW!+WetV-L?(<$>_aN5+bN>2z_WEZMrg;?c`@{+!EMeJ1=JLp?_*(v~INXm?Vc z40^wUM|Y->2`l}$i}%Fn9e;Kob7+8_ph&tO9O1XDV|&ietgqcY7kVNY6F%%J9@W!^ z?0&|OpE!bEzTJyg(^^6GnmLV{cO>`f$LYi~Gy^ha(@;XH1q!5)dmJiCD;KkUYMlg0 z40PjVTZho);|L0+;^YY53)@T_=#M(~ZVx>qe7iPhPU85-7 zUx=+~K}4U;J>NchfL9KhLTh6(-@IWxQ7~A7F}NH4o0J}?Fls0S<>$0 zLR{|QN>f(3L0Ls7_xhS1b?iROuRJD67e+`Dy=rOt={RH9O_L?Ag}0&2YCXxj<(VvoPwW9eMWFnXwe-k`||I>>c|Rk7qg4AJZR0l*u1{#^oLi-0~12y&|}8MsIn& z?b&_j^6MI?06Y6SHRfRdc~` z<0_ohXiV}?iP8VmU%?L6iQZ%T4D-ds>GC#7`j8glnwR(C61%5PnjD2AWoOfI1zmV| z(QH_!Zbs`;Q}DcuG2K&JgBPOjU`LELwwK5g@gG*?+iVG#+(KZJ%XO4v&qN)=YBaR^ zhdE`9kZl^mZ9n!Lqi5~qk2i?YX+smJ`!5A@KDZOkeVk9M+LmHx5l806i1G5r4GCF8 z!R^NyqOE6(>isT6_JJLGxXh#zMK;nR1u6Ql{SSIQcI7g9ius!d{_aWW)gEHk0$m(OLcz66h~=b_^I z2)qr9N55w+kc?iC++d0$O|PIdZ%thvo0AChb6{vY2w|3Ku&XK-61&fW(pxzJ?P!B} zkG`W#S35jet3nX?ugPqh5`e zD9t6kb$M81%keK}GImmfJgJ(O$1UBbO*b5qB;PiyCI>D{f|-&vx2jK%Y^`s>^`{5; zCmt*>>o|&9#eCzMV%KxppF&}tv3cK)7p5>&w4}O5>^C&beUITMKiIXv}#?rL~x}@^pH28h82YLsMg}at9 zj(N)mfYw+VdqRo)_tThU++dxm8}(fI z4dw{m{f_rHP$1<2E5K&%4GgTeAU-NND4tS=o`p|vVSytAt$M@%wvnd+FTe9GUW42~ zgfsc`O_Wb-*5C%0x1fYXFPil=!{Yi7yk4~y@}I3dG8pB~W5x zKzvSU(L`5IsxIM%Q+*`J!=skm>`j`aFKrQQI$H|7#V_V)jl{R79z06f>W^cD#o(_N zfg6|pKRaXnsM5e+u;!#T@BUYk)N0kjy=lAQ41}`#q7s=n(~Mmmiak%r`t;m|>LFSvJxLhe5|BVg;-L(0r`#1&M=X8PPGC$$hoEzYF z)tX55UVxy1tMIb32`+yzr~jR3gUB=IFo4~?E5uy+#Pnu9*vFhVuF-(*ydc3CTLr-a z=PvFEw*eRJiNsV>2f`a$Q?I>`dClI5up_?%syD0QQmt+UTO4(TA_gMEj-7yj3V?x9qSpdWgO9vIZziLjs<~# zF*jBRMw|OUHS1#8yjJ8s8fJk0Q)w_{=jwHb-xz9XLPRW1qTgss+~igcGn!@4E3HcC zB+gbjAJfscY6<>bGs2L6Mtg;Harf%0yZ)E;$nn7Hjf#m+Z)Qtpmb>!r!=~;0mOr zZx_Tocg0U*!Xaz(S@ij|79VOo!Z4Ufg?XBE;^a8kk)8r^PxPtRR2htsEkLDQC(!ty zP4X*>@OJDyj0p5c-*PolEh|sWl_KGv&PZOvTc2j$?F9Se``~D#Ps8>5aJ1$G`YFSP zuK6uV^QL-Y%l2$YzOPKAo`_TTgcu~=NnjU!9m85z;f$vb(7pN#AFby?rC1kcwe(j! znYswX!(58@yi}XOhwezj?-!+sr|39(nDN*aY%j%(I2$zo{tMN2 z{(!>q33%|)Va{;40#YWtMW+{O@cCmC?muQjDmY2r(C{)0ub)YbYTv-)a*7`d%t^e% zKTs&&F09#Rf;*gT>BZr4&iMEfxRG}(avcqR?m<;tmeYklU-yIGWiedq=14lr zhvA@+8Xd^Vg!D~fq}=xqUP_4O%vDNY%%)auFsKT=PAmnxb2(h{pI2bw#rUR&w$K;S z$04oWfynrW!t7RFc*+;KaL<}s+kZwCmfII-@*5D9f{`#MN;m% z6g6gQQpKP|zE#i(8^+qu2i@nHpXxiFs$ar+G&z!vRrxUYmKHbkS{9SC6{-GN#=BJ# zr?w(y^s!+M_?AZCx?MZzLe@nRyw~8u2Rk9XDHZ0e)8aEy7<)?5l+4dDqXA*!^h%yG ztnZU0)01VQS6sdsQJL?1%fITC$YgPO+3!GnFR7&vAF{&O^D9-s-7HvR&$ ziU-1m#nqUzP=zereS>S;eFnyxk0l{;O_(~-94x})AokB}lnSyS+wPsiQUek4;;|3> z+Bt&g^j_x{_|C-0EBgG-7#n`0>`Tn=*o$tRLO5QtnztFSg64rp@XpM}6&@?;x~G5e zxq1znzL1+VQw>ehTiE$%6iE{U{ZDkDEB=GgsNv3?0UL(Ed+^sH#iB zlXXfo9vyInUIuNGqqCkc_PhV1Y?8%z43jmM5$DIPXUOL!bk_ zli>sN48tM21~k^SXP#K3PnA718!CBnP-)gX-< zDxHesW*GBVc1V(4x73K!`0>zIavN?lc0|SLhj73?4kgS+!uk+dD8Fh*oq8_g)Quj>M&B=ec~@1xJ`1<*0A2{pdI=G@0mqjhX=^vQ+so)m3)-y^PMjn+Z#z)V{x z?e*vMlWoWi_C91~v5R#H@1aac7brje$;Hkw!v!Oc;f{s@{32I@oegOix??5oe;ou( zHWTUc-{<*gRTC(WV*Ru)b)3iWOgO9zBzEpBtUqxO79|xxPhc_3Y5xS7qE}FnR6?iY z0Pc{}Ak`O>c}1Hx5Hr`KesD?XJCgn1RtACn(d=9iiOrB&&inuiBXRDGMBG>21G{@B zlQg#1S^TCPh4H^(!|#b?PxBG}z|C~f+P;@GxW_}nNqg!mb{a*8_rTpv|3S!!+b~__ z9(;NCh)Yt61?;zBtZfIn+$|8f3&=lLyTF-Ci_+Eef5PaaI>b%!HvWlqCL)xPRp%2} z&vsU~IvnWfdUM!8Zb9#;6rBIY0Ss!ovF=DRH_vSheg9=7eXvCY^o}x?gry#F`>RUQ zR>p#)$Q6En)IEI1x=-2ZW^}<^S#ntVIor{*O#0vR5F26z=i}9=(tsq*{?r3cmrMlZ z!4L@h_!MWB+0da_ZQ|zsmwQ=p8?Vi9rq-?V$*UF*vLrKs8?&()xBEDe*YZISU1mj= z8VpRTZ5G8FrADOIYXW?e6(y;&8Ix+HI=U~e1|Q)Oer%Qo8Fe}t%2+R9OB``f)yWh&a^K_w8J_YfH`eTT})Cn}TF^@mH#EfV+o`%{72e2tV z3SKO!f|L#a@o#NBsrEjOke~qAAhQ*Hk0gPAnG|*3^q1@W4D?mQB@8=kL=sCLz||Zl zDDGiSMBf=0y><}pb$te5-uXw41s^bN!+mHQ(#9RpDX4bm2zcp=5D|qjv_$C+zoBU^ zWXOon=ELgz(r!1Z@|G}{ml~DsDTgaj0?HK?z@F=eP}ur`pT1U}e7qQhpKULIzlk=v zDp&yjrpZ!W2_sr=z8@kqPvSChC0KZ^7O$I5q;@U#pxa|Y->n@@$7wys@IwJ`z9x*X zTmFu}x#c+=Pp~5%_aotL-$&fHYBeoMXn~F3M#>9naMW-R={UUGfkaq&Mxb%R%HggE9?cw{g&9SdN z2X=|-!SiW$)O>UZzrM)~!p4b{Yj!eZ?84Ph5m(O@tGUzYFb~}7twKU7_2K-VK5pxU z@wCwP5(uU@K;*#`{$Ga0L3EkU zGG*6)L1VWeKQDYdmh1tdJ!T9I_}~pQcfZ4(?abp=ZbI{{wfI|o+T=@`75QR1pGqfN zL9z2RoVesV&J7F4{Hm>Fl8gnB+xUucBo(M#xj(Eu8ix~hc5r9cO{A)Kreo1hcT6x3 zMa?tLi20x4MzA`ch0D`hkF22fgBR)@|H#E_ETL5oKf^#$JKBhhqwDsR;eun# zsn*j0?aNwWKbgb_+zsPiKU5`?i_S2vk2LXOsUC|RYcRIQ5-&-ZkiQS31rEzP@aBYc zaJZC)VKwjgKVPQ^t|ofW-)rQErAs4Js7xb9X3KcR8!JiwdtRXAvKptAN<&wv75$ep z2Zn#2g&oICphZ`oe2o`EasL;nbGj?Ab54h)>6+lM*cCPAiqfi0-Q3pOY53vf32w&5 zeE!F--|)xy3OcpF=f;*OlU?$wAkC;1YL|!;*9F^%*)>f9yRvcMaRe7w^cxFLor5Wk z#`N2?5a?JliuO-oIVfk=yXm-(Mc3xBZd@AV`bg0^0xxnV=aN%tCx@?I8jurqnRxAR zF|6G33n$Ec#(B*zWD1A?&}Kd7MPqLBd#^Qt6!U?uKV68cQp9P`y&~vtH-LS+q%g`b z1{S8ap}wLdU9<8WuM$>{)?6MJU8hZsQdd$m^aDPfVSRJ;&*0RkLb^BSp~pxa%JbIT z*z$4Y)m2&2d*CgsSY$*y#(DEjYT|TM;X&lJi$H$rTe$Kdl6zQ{!iS&!1ikrBu+jZ9 zIN$yPF{0wc;%Fm8RW&ijMFf3E~@m0avgtN{GvD4BPw()vfG^qV*b_*zix_ z*(l2Pfp+Al=~!~p`x(du$HCJ{%LN*r(}fE}tcgL`3StsD1UlKraMH3EoL)VQ`-{Zz z(>YC&{+F@!I#!T>@84p_tOgXFE&?w+zd_mFJ(#gWk$>K(N`4&-0?#MKxa!^vsGpUI zn}Y81l@2CgnU{e@3C&!fz=|9Y+S4D5iD_Ro4gQsnfvq2Q^j6b>ElZ{P+Wigq(#=OA-2Gfc282V)2KKEj^R_ z2_^oMpw*Wy!(vNS@;W9Is@pyb8a%&%RTVqm|1lTBSjJhKk->QkwBnfGjaZ)W4>o_l z2SE|-u-w;?FB&aIWth9Eyljr}%X0}d9`zb+uW#Tc8K{s^?B|SsUdhd$wTh^PM8l`e z@o;`Hi@8vy5$(%K+_zd0Dz0ck=0BDtc1Pwy?N3=ENSs0TI$Gee`aDRobOql!ceGUZ zN6ml)xcxHrK8Tt^O!)jbT$zzJGwUqgwDG3t%D%;(5Jj)=aF$X@c34_^D03&YZVte&7Y^fLGvCty^`!ZiVTKJCNUp5u(SD0eD z@($*^kR-N(9Wd2uHwxa`V66I0@OY!i{jFdbj6{~P^NhpUo?|#u7kBc)^*A{D+~m_V zRe{$>>hld}dKwpuRt^I-4V(Rq3S}kh%lCk_=1mi6>Hwa_r)jTIl8hSvM zo*ViCW8NEa{dv=wA5)x6anK}Ei?xV>fiaoBT856X*~u*)_>5Z&L$T9-Ilj(tf{7ku zh*s_q$a<2ElZsVHwRa_ALo|epUIg7W#$Yw_H?+*iL4^=qIOwc^=iS(gXzCSg82yG* z%^4wBIb|);_mv`d2(Ph;MKvZ+0B54OX_ zBhT{ro=U`HcP5gntXJ8oOscwmaX(M~g?V0e=)e6r{EO^^=1HRD;o&hfj#_gV6fq%tV1~Bn73Tt0*S!rE3|56MTbxp*1#oG9`vJ=J3 z4nyAg3Vz9(r@XR+G_6nQ;a((87lcOI(0OckGER9ul$o}p%;_xnYH!WGd-VvT$1cZG z_vi3r=Oct75pLceV4ZP4BF~&pOV=jC_xqpux8HnlfA>fJ@=P7_rM;K?Ka)2^kbsj~ ze+i~Wp2PpP{f9b|i=ld!8eKY14w9$rfFr$Ev3(EoSD!TD7T;_^b-5HcK4k;^{guj9 zkDkT1%()HOZUdlxAOW9KFBsG0$o*qXIeQUTa@r^u7eB~^*|u%4HAImfdgF^1qVn)Y zcQA%7(I)>o*uDJXUN$3if>l%Q@#pC+)O0;e)$e{ng_vVFt}6o<>~luX(Dk(J?hP=z zT7VJfa|I{SoX%hAL07~$VBVW&5Z~|%=5}v`FH%-Gy7xFf**~A&WtoLQl7f}x_E@aB zi{5jQfz+5a+~~QRg$+woxQoMYP$m8ynBE!!iMdL6Df0---`gZp*Mo*a?kPpa!WjyZ9{{U zCepkW9Nf8nk(+SnJ7@IcA^LrF#Mj2%{I4t*F8mV+HyInyZ~xkv-_(}w)EmjmA6t$| zh7JT~sllAXYskKn(YRah1ou5!R`4vn8Qw=LQ8$%jjCzp9tNO^1y7%V9^T;)LQS$_E zX4~L}rXakbdWpY#SeeWZRU{AM`nU?^B^aD#;EmvGdj31=ls5dEa}kTEBYn}0AHw)k0N-IvkSef>jt zCy0cBsN>usn;QPv88&;UxCxpIN6-$pU_o`Fgz!nqIh@Ft8mHQ}q2D~lLN6VMpUaeK z?hNM0j40#>7;p5nx-rcXq`(qsEczBX2_A&rbfcycTVID8o3jBj|X}93Q!NVN;b1z5L07-=*+faP^4+ zv8P&(lFIZ*W?&f?Ql&@V6b1^LQzTL4Ml@y?uszdM7y7EapPORm!X-Zb36nK%!Qt)w zc;JaPSvWHqeJ>f{;{93d)ux|Qk=oB^yO&}2wpHBwyG?L#ni_p2!k8Mf55lWfSF+C0 z3hW+#`-)2aC- zX8N1=l6Z3o{nExpY=;?KIW3M%QZTf+QH^!6llxD8JXf1ts zyoQ?_5zlQrG>U$vgP?BA^W*26(nBtvaE0edu1jc5lLA-JF6|(gnf{Q!SY(ct{~_*+ zJ`M-h#=^C?v6wogAO9BT^G}t>k=C}aa8)#)-x|Gy{5czf9gM}(dwLMIx!e})PoGW2 z^n>u~3n^N@VI}|CZXA8Njs4CGwMp>vsd(Pm6uGZ9^u`Wddg%CW@+V4_gg!5Fa@r#g zo;O8k?lV_%_CpC2%+V$f8H@bLvd6gaLN$E6??AFNO`!eGC4TIHCAlc$LU!oR!P!#x zz;%ftC;RU?7v)*T&yCoRMcp~L`p{ThyQ%~2Z#hv{1)lf*t;*Xd*1}|2ma}+NhBN*f z;41Bx($LO0cyfes(}W3}cbqtl*y=%=U*@1}*?P!2I}>wa>$&&qr0L4NpTS@M1KzwT zP6mDE!PG)&UQ&d0&1R@kxi5;;$6vr0ON*KR{1V)kd4tpMenjc*S+HUG5H}`90zbws zrZcXX(E2uI`tr!_+>_E@V7>BNf$FIk+lX;Hy0CwfT353It^(n6>ISZ?nuq!nF(Tm8{+aJmMSF^uEQ zcTa!}Eg?SAnuQ9?JJq{68b4~TWV8RHTzhe$ATZ0EPV$^g3v@2v$^F@Ax$hU7c8M zv_kL8d4QvrbFsJ`)8yk&cIzzqRsA&cBQNG;7shfmb7OfoQA^H{@kiv|PND`sdwCJl zn|$1b7I8qd^o%bc$Di(}&e35%>!+HxB@8j&rY%Ul38K1dm@v2?#AkFzl zt`a|!>OTqRl|Qy|Q(9v1hWt`2nHdWSUm1${yEfTbY)$rivir&d<{x&oA>)Y>wcf8z zYY&v;l1YucQHeQ`2t5Z?dUCXN)_5|0VGTM+0GM5@w2B_da0YpfTxg$iM$?)H942naDM`3^;Wk_yeLhQ}HZ@VyS8k z{A_#%Zr|#0LE2;#8ND5zf-+16#wk*|jZ-Jq@^^V@N{^|Kr{AWLKQa+`CVD)rzo$mi z{A+-VbEDTw523N$dpwYrj8lR((}i*OIY*zP>}xW3QZ|pA?@7e-(k5h+L?t#36~hz8 z9UY@gA$DIJ2K~!{y+e|`$ekrP;lM>+p2221Zbic1dJn$ia<<@Y+g~_ncNdd>>XVl% zZRo|IWKd(AqvuaH^O9Kx^uNgxe5`#1WKVa-R=;jsIqNk4hvk+p%?!Yt`qvozZWB)X zeU(d@Tn10{|G_7ROUz}x7iT-j)1o;I=y%nT96$03lY1`Ws7+R&u)Y<&V%#1jxR$d! zU;vzRG$v=>C3AP%miHFjtTKxP~ja;z3&ze$YoMuG{-?cr;$)i+> zOx5?sU+=%c>dWgPx4jzH&Kn6^M~Kq+v=Xpt5aVZ0Qzp?@?tx>xE;$I9oGkl{3p00M zVu3E4DJa6}T`c3SwG8I^=ur#12g0o%f*@}VpL_R28h7iuDr#5NGv;g!cHg*#p|+2q zvM3dHGk=B1NI80IhBV2$Aw~s;&DeYV2#l?}i5a{Co#UG-xDd?xlZ!c6FXjh-N*&nW zRr$j|F2PWm2>p9;0ex&M!}@*CCbc-r(uO$!Sp4HJFF!XK9xc4YIN`B^f|)1yMp+41 zrSKhG1ID7FY&E>vCPJ9Hl8QxrXKvMO>~5E#7mrKO72_Q-*Y^r%`}VKk$9!YD?T8~f zj2}WdiTiwKpavoDZHQCdeSEFxfzw@-a6h3N3xz22yxNj0p=$^;N^lTAW7tZ8f z?W*8h`Uv@9vK+T8x8jbC6Ohe1jqv315bnLQ2aEO)a;CWo^bC*kJFBvVT9q{rGI=gc zXuZi>jdh?p7azh=*4IDhaY48@LKR{jsY60zG<1l|kP}&#ak9m1vRX7rShwgbN*gFu{>JrEWKGk4USXOvIT0j; zpu_~oTjh`EQWaphW*&%Sc5$cYTA0RHoQ%;#;lpg~>I^oI2ysxQ~!KgJKCdb%I(kW?Y|3o3vY&IQ9s zZ$a$0CE4$l#0UJ8!4>v@V8HG^KekPcepWZ(d>g!Yxn;&QU|SG>yQT%VGPgyo&UUO$ zmL$yyWdikEA7J2=3fU3I?hnxo(C{!AmoNJWwW81A^Q0=6!RF?#ABIEyn@%oiryjNc zHVknQ%GhOl1@EsHrxxtJ^zrKVu(^)$#&-Av$6Qv$+ve~tJB(n&yIk~{JVPMU@D{ZW zO~cvZ+T@VFD(RA#h_e4KK)z)(9(wc*QkNM+@YD)Ul=YIkKRku}!y>4w_6*(#9B}Co zH~KNT9=_xSOe@&34nqAL$-Kq>Y{}9<9#`g$$!EcRpBo^!Ig`!3=Dc=#D%u9m(!}7}MpNRytAJnk-jc4*UX0JvC!uc0N7S8{ z&+nfeikn`G(;>Ibs5D|F>{m-co%R9lfvFqlWfs6z?|vA%{vPZOB%&|tNhIb)qhi-i zSWY5fe(Q1c@l?b_-)1z9W_&waO{~nB2w9%R+^1z>;IY3I9BXfY>OsbGk9rG@D=XpZ zKm@Knn2NV*bb0-n8)z1h#vh8igaf{Y$7@QU%6p^*Gpn7gPT$WqahOe85>pGW%R9S7dw-it_eD&8iM~yT}y&4lB@2 zWz~3u0kBxz9 z4^`?B_l_H(cMVs2o`A$TUI0EaGL+OuD)4T+BhnyA;(wF?e!)h4G&fQrz z!rjfSiz~T72(6&pH*dKd>BFC7=#w-RDDtK<;#?_o;_B9;aCC}~rVnpj& zzF|S5I!OubgM)Xja{XIhVE4Z7m{Oa`jaFwo)oq1P-lk60?fwo~m#nDx&`wk_o=D1$ zI}nLM*7bNMNwRl#qrJ~u2>;%STDNz>(#>bU{`)()B*r?O+OhaN-ydV6bNCM37)Y#i zf@Lr7;P05_UnsI|WxvC?

g?we&$=aI=Be4loe=$$2Mpc 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 z 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

Jj_T71{NYWC5P{K3OeL>%MG+dL*c%baM$j$;L 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 z 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≪nYM?>IVf74v6e9{c2~72T-)6}#+`FneVOb9CAf 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
3I1A- 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
5XBj%jm0w|Rq*0W9IRSB3`b9}Y<2&6 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%0D$>!spxgTdRa| zoDAqb3+CKzk|I_M^5OFqj(a>TfUcYpK4YXlY0h{BkuS~3f16%`Z(t#$4J(kJIgAt5 z^_qETPV&Qo8fYo=m$63~u!c7Wl<)iWMDb_Q7&c4s$DfrWCKX;ey9ZP0?hS$s^ zblou=6ZcNR5i2XWc+qkQoKyp;Vb@SOm+j@|RiaLnBY($Moc4~?<%jbN&}fSqt+P`n zMZp$iZMM?A#EaM9iFp`qPEe&{vU0@DPM^LvH>QSr9AQFFDVi|WjoKA)I{m_F-1!M9I&2naWs$+3yf_2_GpFFw+1|M6>3PPBRf5H9Zt));UBQ{dOJUP^4nrEhLDJn= z9B7*bqyMU4sG$qK4Q1?Fr9SSDlM3DYNR?(TWWLZ`2YhLM44Rl9FZ5Xfls8uk6N8?j z&x;VaEqVm19baPp?g+l#DGv8|3FzKX=2qX$dUtyaVcgPAytJ(qVT1)Pc%@5sKbIue zt6p={MIOMDFJe@2w-tTA`5jJs`We4`4~3ssr%_E~8EQL^{k`MXB9~V$terXvz9&_} zx%zO_xuH$9J1+B&TI_(=>g0|vp5#A;i`-1z`TQ=INO+@v7Z-i~jKZ^5`Lu;^VfXD~ zd={ZbEAubIssuAA8b5*<8SLSD3q9b_k?FAYhX_?ZlqQ_C+=4XdC-E=O{$;t<9<(Ek z@Im??#wD`Oqkb>gi5W$DwdS5uT~7fdwodR=oE!Zr!iKLg)6fjAyHTKP?ptFNAnV*~r3BL4&aRY}3-5cX|9 zW=tQSPUar9OVQ;o{&5l#hUCBTk5Qth4z7IE#!s`$A*EQK9@6{5|2f(Vn)m17$A`8g zLq(guoct6YA54R&kW#)WY?II;_9H)d=pOuewVa$%{tpTX7HnG5*x(+#-H*Zy8@c;{b2qk;18sn#9}UJJ3jc zg$++W@``s0uveYEOBSi)q4pf!)1e;4->}|f-Xn0F_mtOolMMYr5jxCxQU@ZX@V;j` z%+)xA$^NN$*Ngen9mHUuI|sX#HgO4G-+}7*N^atQbGp>{x}f(+7Mz-T8`Zjez@Tjn z=;lb1qJ}jfyX*!=2P~q4`JGt%K_52n@Wg!eGC`!j6?s%X8<)7>!^>+6QRBHPt}3hL z#LNTWfQ2eK5++50-s#iKX+==EdnCDZ_Ai_B%47Skg&@NAPoW!Bi0JAycsW3n?%C19 z?{M&j<`!!lyIGD)S>!+xXBrcMPZEDIG8VS(nFLE+=RMpVBl{> zYP8UT&YvJcV^8=&^?(KizkFV?moX8T2WriWerTO&N#37fuCs>-Z~u7kUUJ_#$D(I^ z`VBLF((Y&2S}TTCZUdnC>knkOx1fDoHOlG_W5ga)F56%bM3i>o+3Y_kH*85PM=pWm zTTbzFwkHVt12f=}gbZmP%EfkF#((-bix;S63hphsiE-z{xulW`aPToljeG~DoEO59 z*@+xYQa-b=s6DG8oR)GaudpJ z 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