* Enable explicit TBlob declaration in all compilers
This fixes problems when linking gcc compiled IE with clang compiled
applications.
Previous to this change, only clang compilers would consider TBlob<T>
templated types as declared externally. When *declared* explictly (with
the `extern template` syntax), the C++ spec says
that any inline methods of the templated class (such as TBlob<T>
constructors) should be ignored in favor of the externally instantiated
version of that templated type:
"An explicit instantiation declaration (an extern template) skips
implicit instantiation step: the code that would otherwise cause an
implicit instantiation instead uses the explicit instantiation
definition provided elsewhere (resulting in link errors if no such
instantiation exists)."
However, when IE is compiled with gcc, it does not see the explicit
`extern template` declarations of TBlob<T> (due to the `#ifdef
__clang__` guards in `ie_blob.h`). As an end result, presumably due to
link-time-optimizations during IE library compilation(?), none of the
TBlob<T> implementations are actually included in the IE dynamic
libraries.
* Fix warnings for windows
* Fix typo
* Improve performance for 'ov::Model::add_output'
On first call of `add_output(tensor_name)` all available tensor names are cached.
Next calls take nodes from cache which significantly reduces complexity.
Cache is invalidated if topological cache is not valid or cache points to incorrect output (no tensor name of this node anymore)
The same caching is done for 'add_output(op_name, output_index)'
Tests:
- Verifies that adding outputs to all nodes has linear complexity O(N), not O(N^2)
- Verifies cache invalidation scenarios
* Fix python tests
* Update topological cache after add_output(Output<Node>) by adding result to the end of cached ops
* Add 'm_shared_rt_info' to 'result node just for consistency (there is actually no scenario which may fail due to absence of this info for Result
* Added test cases to verify that names cache should be cleared on refresh of 'get_ordered_ops'
Scenario:
- Node "Split" with multiple outputs (e.g. 3). All outputs are connected to "Result"s
- Add post-processing step (e.g. convert element type, can be also implicit)
Issue: after post-processing, 3 new results will be created, each will have "Split" friendly name - inconsistency with IRv10 rules
Fix:
- For nodes with multiple outputs, add '.<idx>' suffix to new output's friendly name
- If no post-processing is applied, return immediately, keeping original results as is
Tests:
- Split with 3 outputs where 2 outputs have post-processing.
- Split with 3 outputs, post-processing doesn't create any nodes
This behavior is already used by default because ONNX is enabled by default and thirdparty/onnx/onnx/CMakeLists.txt forcing CMAKE_BUILD_TYPE to Release if it is not set
It fixes the following issues:
- When ONNX frontend is disabled - source is built for Debug, which is very unexpected comparing to Release with ONNX frontend enabled
- When ONNX frontend is disabled, even libopenvino.so could not be built due to some generated makefiles issues
It is set to 'Release' (not to 'Debug') to comply with default behavior when ONNX is enabled (it is default option working for most users)
* Performance improvement for constant creation
The issue is that 'are_all_data_elements_bitwise_identical()' is called every time in Constant constructor, and it potentially checks all buffer which is O(N) complexity.
While it is needed only if client uses 'get_all_data_elements_bitwise_identical'
Solution:
- Defer calculation until first call of 'get_all_data_elements_bitwise_identical'
- Store calculated value in mutable class member to reuse it on next calls of 'get_all_data_elements_bitwise_identical'
Test verifies both cases:
a) that constant creation with shared memory data (now O(1)) is significantly faster than creation+bitwiseCheck O(N)
b) Than once calculated, value is taken from cache, which is significantly faster than re-calculation
* fix clang-format
* Stash - Linux implementation
* Windows mmap implementation + unicode
* Clang for windows
* removed debug print
* Add handling of empty bin file
* fix windows includes
* Fix python test
* Unit tests
Fix for Constant with size > 4GB
* Fix review comments
* Performance improvement for constant creation
The issue is that 'are_all_data_elements_bitwise_identical()' is called every time in Constant constructor, and it potentially checks all buffer which is O(N) complexity.
While it is needed only if client uses 'get_all_data_elements_bitwise_identical'
Solution:
- Defer calculation until first call of 'get_all_data_elements_bitwise_identical'
- Store calculated value in mutable class member to reuse it on next calls of 'get_all_data_elements_bitwise_identical'
Test verifies both cases:
a) that constant creation with shared memory data (now O(1)) is significantly faster than creation+bitwiseCheck O(N)
b) Than once calculated, value is taken from cache, which is significantly faster than re-calculation
* fix clang-format
Co-authored-by: Ilya Churaev <ilya.churaev@intel.com>
* InputTensorInfo::from implementation
If user's application already has `ov::runtime::Tensor` object created,
it will be possible to reuse basic characteristics for input (shape, precision) from tensor using InputTensorInfo::from method
* Rename 'from' to 'set_from' as in Python 'from' keyword is used for import modules
Python bindings: from ov.Tensor and from numpy array
* Style fix (quotes)
* Apply suggestions from code review
Co-authored-by: Ilya Churaev <ilyachur@gmail.com>
* Fix code style
* Use set_from in hello_classification CPP sample
Co-authored-by: Ilya Churaev <ilyachur@gmail.com>
* Fix in Preprocessing python bindings - add correct default arguments for:
- PreProcessSteps::convert_element_type
- PostProcessSteps::convert_element_type
- InputTensorInfo::set_color_format
Otherwise, python users must always specify optional params
E.g. instead of writing `tensor().set_color_format(ColorFormat.RGB)` python users will have to write `tensor().set_color_format(ColorFormat.RGB, [])`
* Corrected 'help' output
* Exposing 'openvino.runtime.Type.undefined' and use it in 'convert_element_type' documentation
* Checking compatibility between 'pyopenvino' and 'libopenvino' on 'import phase'
This fix is to prevent undefined behavior when user loads OpenVINO from python, but pyopenvino loads different version of 'libopenvino'
This may happen if user has several releases installed and played around PATH/PYTHONPATH environment variables.
In such case, user may have undefined behavior - application may crash in the middle of the usage or use incorrect release.
Fix checks build versions for pyopenvino and ov::get_openvino_version. If mismatch occurs, exception is thrown.
This logic is disabled if user has built OpenVINO locally, experienced developers probably know what they're doing, so if version has 'custom_' prefix - this logic is disabled
* Removed custom logic for CI_BUILD_NUMBER, it is reused from already included version.cmake
* Use addVersionDefines macro
Even though it is not possible to hit into this situation using existing plugins - there is theoretical possibility that some plugin may return 'nullptr' as it is allowed.
So this check shall remain in generic part which should not rely on plugin-specific behavior
* Fix ONNX's PriorBoxClustered accuracy
If step_heights == 0 and step_heights == 0, but 'step' is 16, then we should treat this as both = 16
* Removed workaround for ONNX frontend
Current SmartReshape finds matched to Param->Reshape->Proposal patterns
For FP16 models, there is additional 'Convert' is inserted after 'Parameter'.
It causes transformation is not applied and 'ov::set_batch' or CNNNetwork::set_batch will throw
Proposal1Scales and Proposal4Scales transformations were updated to handle these conditions
* Added compatibility check of layout with partial shape
E.g. layout "NC" in not compatible with PartialShape{1,3,224,224}
Check is added:
- For parameter set_layout
- For parameter set_partial_shape
- For result set_layout
- Checked also compatibility for all results after 'validate_and_infer_types'
* Fix incorrect tests
* Fix of more incorrect tests
* Removed couple of obsoleted error-handling tests - these are catched now on earlier stages
Co-authored-by: Ilya Lavrenov <ilya.lavrenov@intel.com>
* Fix LSTMSequence/GPUSequence validation behavior consistent with RNNSequence
Fixed issue with no exception if num_directions=2, but 'm_direction' is not set to BIDIRECTIONAL. Previously there was no error with this (and luckily it failed later in some CPU transformations during compile_network)
Corrected several tests which use copy-pasted num_directions=2 without m_direction set
Also for dynamic 'num_directions' - output shape still has 1 or 2 directions, because m_direction is known. Tests for GRU/LSTM are updated for this
Also several tests worked incorrectly for LSTMv0 - expectation was specific error to be thrown, but no expection was also allowed
* Fixed clang-format
* ROI tensor support for Template plugin + tests for Template and CPU plugins
GPU doesn'tsupport ROI tensors, so tests were not added for GPU
* Added asserts for unsupported mixed axis order (like 0,3,1,2), and unsupported types like int4/int2 for ROI tensors
* Further fixes of plugins.xml generation
1) Unregistration is done by name (e.g. CPU), not by file name (ov_cpu_plugin)
2) Unregistered line is searched by name="MULTI" instead of just 'MULTI' to not conflict with MULTI_WORK_MODE_AS_AUTO entry
3) Removed list of all possible plugins from ov_runtime as logic shall not rely on this (not possible to add 3rd party plugins)
* Revert ov_runtime - some CI jobs require plugins.xml even though plugins are not built
Registration - if some entry already exists in XML - don't copy it.
E.g.
- Registration of 'TEMPLATE' is performed
- Registration loops through existing plugins.xml
- If name="TEMPLATE" is found - don't take it to newContent
- If name like "myCustomPlugin" is found - take it
- As result - "myCustomPlugin" will exist after update, but old "TEMPLATE" will be removed
* Add missing change
Without fix, build of 'cpuUnitTests' will fail as 'inference_engine_s' will contain:
IE_STATIC_DEPENDENT_FILES = file_utils.cpp
$<TARGET_OBJECTS:${TARGET_NAME}_obj> - containing 'unity_cxx' which includes 'file_utils.cpp'
This causes multiple definition error of all methods inside file_utils.cpp
- Added registration (and unregistration) of ov_auto_batch_plugin. Otherwise 'BATCH' plugin will always produce new XML line without removing old one
- Added unregistration of legacy plugin names (<= 2021.4 release). Otherwise old lines like "libHeteroPlugin.so" will not be removed from plugins.xml file
* Loop/If/TensorIterator - fix dynamic input cases
Reference evaluate for body uses Model::evaluate instead of custom evaluation
Loop/TensorIterator additional fix - set result shape according to body execution result
Only op_eval test verifies issues, template tests were added just in case (these passed even without fix)
* Fix clang-format
* rename ti.cpp
* Python bindings - test for telemetry extension
This also ensures that actual 'Telemetry' object containing callbacks is still alive even there is no explicit Python objects holding it
* Fix pylint
* fix clang-format
* Use std::string for static map instead of py::str
Probable reason is that this static map is destroyed after 'pybind' module is destoryed itself, thus py::str can't be cleaned up properly
* Added test via 'subprocess' execution of separate file
* Graph comparator - take sinks into accounts
Previously graph has been traversed only from Results, so any differences in 'Sinks' were not detected
* Fix functional tests
* Update after internal discussion
* Fix low_latency_test (addition to low_latency_v2_test)
* Fix typo
* Calculate model layout based on 'tensor' layout and convert steps
Previously, 'model layout' is set to '...' by default,
thus no shape conversion happened when tensor layout is set to 'NHWC', then there was explicit convert_layout "NCHW"
Now "model layout" is calculated based on tensor layout and conversion steps:
Examples:
1) Tensor: NHWC, Convert: NCHW. Result: NCHW
2) Tensor: NHWC, Convert: 0312. Result: NCHW
* Initial move of tensor data calculation
* Moved 'impls' to new file
* Postprocessing + unit tests
* clang-format fix
* Added more details to preprocessing nodes
- Mean/Scale - will print mean/scale values
- Convert type - will print type
- Convert layout - will print destination layout
- Convert color - will print destination color
It is needed to troubleshoot the problems. If error occurs, message will not display last op's target shape/layout/type
* Add python bindings
* update tests
* Added memory type to dump if set
* Code style fix
* unity build fix
* Dump tensor if only memory type is set
* Added debug print
* Fix Param->Result case
Previously, layout was set by preprocessing set to old parameter as well
This is incorrect because in case of exception layout info will not be reverted
In this case old Result pointed to old Parameter and was able to preserve runtime info
After fixing of this, case Param->Result was broken if revalidation is not triggerred
Fix is to detect 'Result' as a consumer of some parameter and force revalidation in this case
* Revert occasionally committed line
* And one more line
* Move 'NV12toRGB/BGR' reference evaluates to template plugin
CPU doesn't need this fallback, so implementation can be moved to reduce core binary size
* Moved evaluate_nv12 to 'runtime::reference'
* Fix arm build
* Calculate model layout based on 'tensor' layout and convert steps
Previously, 'model layout' is set to '...' by default,
thus no shape conversion happened when tensor layout is set to 'NHWC', then there was explicit convert_layout "NCHW"
Now "model layout" is calculated based on tensor layout and conversion steps:
Examples:
1) Tensor: NHWC, Convert: NCHW. Result: NCHW
2) Tensor: NHWC, Convert: 0312. Result: NCHW
* Fix for set_shape + resize case
* Squashed commit of previous work
* Fix mock tests
* clang
* Fix rebase errors
* remove unnecessary changes
* One more finding
* Copy ov::Model runtime info as well
* Fix review comments
* Commit missing file
* Copy m_shared_object when cloning model
* removed copy_shared_objects and use clone_model(model, NodeMap) as a friend for ov::Model
* Added OPENVINO_API to forward declaration
* add OPENVINO_API to friend function declaration
* Fix incomprehensible error message during layout conversion when layout rank doesn't match with shape rank
* Stash
* stash
* Memcpy implementation
Added tests
* Revert "Fix incomprehensible error message during layout conversion when layout rank doesn't match with shape rank"
This reverts commit 37064741b2.
* Fix clang-format and remove redundant headers
* Covered "cached" case (+ tested on Myriad)
* Apply review comments
Introduced 'applyBatchedBlob' function which allows override 'memcpy' on inferefnce time
* clang-format fix
* Added dynamic shape case
* - Review comments
- Deep copy of parameters/results for caching from cnnNetwork. Deep copy logic is moved to Utils
- Caching Tests: return correct inputs/outputs map after ImportNetwork mock call
* Reworked according to discussion
Also introduced 'SetBlobsImpl' which throws 'Not implemented' exception by default.
Template plugin updates internal '_batched_inputs' map
* Updated according to moved tests
* don't support 'memcpy' for ROI tensors
* Fix caching tests
* Just to retrigger CI
* Correct offset padding (however there is no test update as current implementation will not hit here due to other checks)
* Fix clang-format
* Applied review comments
* Added check that 'get_tensor' throws if set_tensors/set_input_tensors is used
* Fix review comments - part 1
* Fix caching tests - mock implementation becomes more complicated
Cached mock model shall identify its inputs/outputs, otherwise core will assert on SetExeNetworkInfo stage
* More comments fix
* More comments fixes
* More cleanup
* And more style comment
* typo fix
* Try fix caching windows tests
* Blind attempt to fix Ubuntu20 CI
* Fix back propagation of layout when 'convert with dims' is specified
* Remove original 'reuse param's layout', as it is covered by back-propagation logic
* Remove debug test output
* Fix incomprehensible error message during layout conversion when layout rank doesn't match with shape rank
* clang-format fix, Removed debug print
* Updated unit test according to review comments
* Moved apply_permutation and find_permutation to src/layout_utils.hpp
* Initial version (no tests)
* Added tests
* Fix centos
* Applied review comments
* Renamed 'ov::util::get_batch_size' to 'ov::pass::get_batch'. For set_batch_size update is the same
* Changed to ov::get_batch and ov::set_batch
In case of partially-dynamic shape, e.g. {?,3,?,?} shape inference
for gathering channels and reverse operations can't infer final shape to {?,3,?,?} and it becomes {?,?,?,?}
Added 'static' version of reverse-channels to preserve output shape for such cases
It can be changed in future if operations will be able to calculate shape on 'validate' phase
* Preprocessing API - base classes
Includes API definition for trivial mean/scale operations (which don't require layout)
Mean/scale with 'layout' support will be done under separate task together
with Layout
Current test code coverage: 100%
* Python bindings for base preprocessing API
* remove pre_post_process directory from ngraph/core
* remove files from ngraph/python dir
* move pyngraph pre_post_process files from ngraph/python to runtime
* remove pre_post_process test from CMakeList
* move include to the header
* update include path for pre_post_process
* style fix
* bind InputTensorInfo::set_layout
* cleaned test_preprocess
* fix test expected output
* remove duplicate test
* update description of set_element_type
* fix style
* move preprocess from pyngraph to pyopenvino/graph
* update test_preprocess imports and remove unnecessary test
* remove duplicate import
* update custom method
* update test
* update test
* create decorator that changes Node into Output<Node>
* create function that cast Node to Output<Node>
* update test_preprocess to use decorator for custom function
* change _cast_to_output -> _from_node
* move frontend folder to pyopenvino
* rename includes and add compile options
* include frontend to pyopenvino
* move __init__.py
* move tests
* remove mock from tests_compatibility
* rename import module
* Fix code style cpp
* refactor a few lines
* style fix
* update few lines in mo
* add tests fro scale and mean with vector input
* style fix
* add docstring for custom_preprocess_function
* bind InputInfo network method
* style fix
* Add pyopenvino to dependencies
* bind OutputInfo
* fix description of preprocess submodule
* fix style
* update copyright year
* Fix mock
* update docstring
* bind OutputTensorInfo
* bind OutputNetworkInfo and InputNetworkInfo
* bind ColorFormat and ResizeAlgorithm
* clean imports
* fix typo
* add PostProcessSteps to init
* bind PreProcessSteps
* create additional tests
* Fix mo test
* remove module local
* fix code style
* update comment
* fix return type
* update docs
* fix code style
* change ngraph.Type to ov.Type
* fix typo
* move _from_node to node_output.hpp
* add read_model from buffer
* update imports
* add new line
* remove bad quotes
* update imports
* style fix
* add new line
* rename functin args
* remove Type import
* update tests
* style fix
* test clean
* remove blank line
* update PrePostProcessor init and build methods
* create test with model update tests with new PrePostProcessor init and build
* # Conflicts:
# inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api.pyx
# inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl.cpp
# inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl.hpp
# inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl_defs.pxd
# inference-engine/tests/ie_test_utils/common_test_utils/ngraph_test_utils.cpp
# inference-engine/tests/ie_test_utils/common_test_utils/ngraph_test_utils.hpp
# model-optimizer/mo/moc_frontend/serialize.py
# thirdparty/gflags/gflags
# thirdparty/gtest/gtest
* Stash
* move preprocess module from openvino.impl to openvino
* fix building
* fix code style
* try to move MO to use new api
* Intermediate commit
* try to move MO to use new api
* Test pybind11 custom holder for Preprocessing types (InputInfo and PreProcessingSteps)
* Initial code for source_target layout handling for preprocessing
Initial implementation of reverse input channels
* Use input's tensor names instead of friendly names
* Skeleton for guessing layouts and clearing it after preprocessing
* updated package_BOM.txt
* Use reference_wrapper for preprocess bindings
* Update tests
* Layout::find_permutation - support of dynamic layouts
Covered case for 'trivial convert' where no permutation is needed
It is needed for Model Optimizer for logic which will guess model's layout, like "?c??"
* Stash
* add bindings to I420_SINGLE_PLANE and I420_THREE_PLANES
* remove init from all classes except PrePostProcessor and add RGBX and BGRX to ColorFormat enum
* Guess layout so that existing mean/scale tests passed
* update test name
* Draft to guess layout for 'reverse_input_channels'
* More unit tests (error cases)
* pylint & flake8
* pylint - ignore import error
* Stash
* Moved preprocessing to 'back' folder
* More tests
* Update package_BOM
* Support layout_values with no names
Support layout set for 'outputs'
Tests
* Export more enum names from nrgaph
* Basic --layout parsing
* removed debug prints
* Further updates after rebase
* Update imports
* Removed part from 8829
* Fix imports in test code
* Minor cosmetics
* Don't guess 'C' if layout is already set by model
Expose 'Layout::empty' method
* Style fix
* Apply review comments
Restricted 'heuristics'
C++: Added 'fp16', 'fp64' support to mean/scale
* Applied review comments
* Added some dynamic test cases
* Move call of 'apply_preprocessing' to 'serialize.py'
* Unnecessary change
* Added more comments to code
Co-authored-by: pszmel <piotr.szmelczynski@intel.com>
Co-authored-by: Alexey Lebedev <alexey.lebedev@intel.com>
Co-authored-by: bszmelcz <bartosz.szmelczynski@intel.com>
Co-authored-by: Anastasia Kuporosova <anastasia.kuporosova@intel.com>
Co-authored-by: y <ilya.lavrenov@intel.com>
Co-authored-by: Vafin, Maxim <maxim.vafin@intel.com>
Covered case for 'trivial convert' where no permutation is needed
It is needed for Model Optimizer for logic which will guess model's layout, like "?c??"
* Removed 'inline' Preprocessing API
Even though this API provided a way to specify all pre/post-processing in one line - it was considered inconvinient
With 'getters' API preprocessing code looks more clear for user, so old' inline' API is removed
* Fix pyopenvino build issues
* Update after merged PR#8717
* Increase image size to avoid test failures on some platforms
There is an assert 'length >= nlanes' and 'nlanes' value depends on machine architecture
Set 320x320 test image to guarantee that image size >= nlanes
Also increased image size for 'plugin shared tests' to ensure the same (even though tests do not work with legacy preprocessing)
* Descreased to 160x160
* Renaming all frontends from "*_ngraph_frontend*" to "_ov_frontend*"
Also Debug builds on Windows release frontends without "d" suffix will not be loaded
* Fix review comments and add wheels test debug prints
* More debug prints
* Load by absolute path and remove debug prints
- PrePostProcessor takes 'function' argument in constructor
- PrePostProcessor::build() doesn't take any function anymore
- PrePostProcessor::input() method to get reference to input
- PrePostProcessor::output() method to get reference to output
- InputInfo - add getters of tensor, preprocess, network
- OutputInfo - add getters of tensor, preprocess, network
Samples:
ClassificationSampleAsync - use new getters
Inference engine:
- Use new getters in ie_network_reader.cpp
TODO: Consider removal of builder-like API in PrePostProcessor, InputInfo, OutputInfo
- Create new objects of 'mock' executabl networks on each 'LoadNetwork'
- This allows creation of moc nets with different Input/Output Info
- Lock mutex during creation of mock objects in different threads. This is due to gmock stores 'mock' objects in non-thread-safe way
- Added comments of how to reproduce sporadic problems on disabled tests
- Enabled all disabled tests as problems are not observed anymore
* Fix caching issues with auto-generated friendly names
Introduce "HashPass" to calculate hash like a serialize but without auto-generated friendly names
IE Compilation context: use HashPass to calculate hash of ov::Function
IE Compilation context tests: removed "friendly names" from tests
Layout: serialization support + tests
Parameter/Result: update set/get_layout according to layout changes
* Fix clang
* Tiny correction of CmakeLists
* Renamed VariantWrapper<Layout> to LayoutAttribute
Removed test for conversion from/to fully dynamic layout (allowed now and does nothing)
'set_layout' - remove layout runtime info if empty layout is passed. This allows hashes to be the same if set_layout(param->get_layout()) is called
* Fix build
* change size_t to uint64_t for hash value
Using size_t leads to high probability of conflict for 32-bit platforms
* Removed debug print
* Fix hash calculation for 32-bit platforms
* Fix review comment
* Interpolate reference implementation:
- Support u8 and other numeric types
- For integral types - round result to nearest integer (don't cast)
Preprocessing: enable OpenCV tests and add resize conformance tests with OpenCV
* Revert changes in interpolate.cpp, making them minimal needed (added u8 resize)
* Put JOB_POOL after comments
* Revert "Put JOB_POOL after comments"
This reverts commit a8fc4c64e5.
* Revert "Use jobs pool for PDPD model conversion as well (#7602)"
This reverts commit 1390440256.
Co-authored-by: Alexander Zhogov <alexander.zhogov@intel.com>
* Preprocessing: convert_layout<std::vector<uint64_t>> implementation
User is able to use this version without specifying layout explicitly
Same version of convert_layout is added for post-processing
Added usage of new convert_layout to ie_network_reader
* Fix review comment
* NV12 Ref impl: Align with Legacy NV12 conversion
Little-endian tricks are completely not needed finally
Basic tests of OV20 preprocessing vs Legacy preprocessing:
- Mean/Scale
- Resize (Linear vs Bilinear)
- NV12 color conversion
* Register Template plugin in legacy core before CNNNetwork compliance test
NV12: round to nearest integer for 'u8' mode
Fix preprocess-reference NV12 tests (swap U & V)
* Decreased default threshold and use random distribution for inputs generation
* Added tests RefImpl vs OpenCV - NV12 color conversion
Added CPU accuracy tests + nightly (including all RGB color combinations)
* Fix build issue after rebase
* Remove test code
* Fix comments
Disable OpenCV tests on CI (some machines can't load opencv_imgproc during test)
* Pre-process:
- Implicit conversions for element type and layout
- 'convert_element_type' with default argument to network
- Convert_element_type - don't add ops if dst and src types are same
- Convert_layout - don't add ops if dst and src layouts are same
- Custom step - use Output<Node> instead of shared_ptr<Node>
- Support of addressing input by tensor name
Post-process:
- Avoid duplication of tensor names after post-processing
* Fixed IE tests
* PrePostProcessor.output() - first implementation of post-processing
Supported convert_layout, convert_element_type and custom operations
* Fix review comments
* Added test for pre and post processing together
Fix clang-format
* Move 'validate_and_infer_types' before post-processing
* # Conflicts:
# docs/template_plugin/tests/functional/op_reference/convert_color_nv12.cpp
# inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convert_color_nv12.cpp
# inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convert_color_nv12.hpp
# inference-engine/tests/functional/shared_test_classes/src/single_layer/convert_color_nv12.cpp
# ngraph/core/include/openvino/core/preprocess/input_tensor_info.hpp
# ngraph/core/include/openvino/core/preprocess/preprocess_steps.hpp
# ngraph/core/include/openvino/op/nv12_to_bgr.hpp
# ngraph/core/include/openvino/op/nv12_to_rgb.hpp
# ngraph/core/src/op/nv12_to_bgr.cpp
# ngraph/core/src/op/nv12_to_rgb.cpp
# ngraph/core/src/preprocess/pre_post_process.cpp
# ngraph/core/src/preprocess/preprocess_steps_impl.hpp
# ngraph/test/CMakeLists.txt
* Added more test to cover 100% of code
Allow convert element type for 'multi-plane' color format
* Inherit tensor names for 'convert_color'
* Clang
* Fix tests
* Disable 'int8' preprocessing resize test
* Fix review comments
* Add more restrictions and tests for planes sub-names
* 1) Added check for uniqueness of tensor names generated for nodes
Raise error if user's plane sub-name conflicts with some node in a function
2) Added exception safety to preprocess build. Before, when input #2 fail, only one preprocess will be applied to function and it will be corrupted
Exception guard will restore function to original state if exception occurs
* Fix clang-format
Introduced 'absolute threshold' for LayerTests and BaseReferenceTests to consistently catch absolute differences
Previously, when set 'threshold=1.f' it was treated as 'allowed difference is 100%", so there was no way to allow absolute difference as 1.f
* Initial version
* Added 'network' layout to preprocessing info
Moved existing resize tests to template plugin
* Fix clang
* More tests for 'resize' reference implementation + CPU tests + error cases
Coverage is 100%
* Align with new base_reference_test implementation
* Fixed comments
* Add assert to check that desired size is not out of bounds
* CPU: skip failed test
When ENABLE_FASTER_BUILD is ON, source files are combined to batch for faster compilation.
However, when one source file uses "using namespace ngraph", and another has "using namespace ov" - then conflicts may occur depending on how sources were combined
This fix removes usage of "using namespace ov" from ngraph code to avoid such potential issues
* Shared preprocessing tests for plugins.
Comparing inference with reference implementation
* Moved evaluate tests to template plugin
* Fixed clang-style
* CPU tests: Set IE precision manually in SetUp. Also allow rounding to integer mismatch
* Added acceptable threshold depending on particular test
* Fix leftovers for ov::Layout
Added runtime info to Tensor
Add get_layout/set_layout/has_layout methods for parameter
Moved preprocess steps code to separate CPP file for readability purposes
Test code coverage = 100%
* Fixed review comments
* Try fix windows build
* Fix 1:
Correction: Dynamic channels dimension is ok on preprocessing
[?,?,?,?], Layout "NCHW" => scale({2.0, 3.0, 4.0}) is ok.
If HostTensor's channels dimension mismatches - it will fail on 'evaluate' stage (as usual)
Fix 2:
Verify that TensorInfo().set_layout(...) reuses element type from original parameter
* Removed 'using RTMap'
* Draft
* More tests
* to_string + advanced_syntax + more tests
* Coding style
* Add mean/scale - vector version with layout support
Vector version requires layout to be set
* Added comments to LayoutRank
* Removed unnecessary public API
- Removed setters
- Removed LayoutRank from public classes
* Review comments:
- Rename 'layouts' namespace to 'layout'
- 'get_index_by_name' - specify throw exception type