Commit Graph

25 Commits

Author SHA1 Message Date
Mikhail Nosov 96f954c704
[Preprocessing] Crop preprocessing support (#10805)
* Crop preprocessing support

Note: instead of 'ov::Coordinate' simple std::vector<int> is used because Coordinate don't support negative dimensions

Added unit tests, template reference tests, cpu and gpu tests

* Added python bindings
Fix review comments

* Fixed python code style

* Fix thresholds

* Fix python style

Co-authored-by: Ilya Lavrenov <ilya.lavrenov@intel.com>
2022-03-14 13:32:27 +03:00
Ilya Lavrenov 8f3d030d79
Removed ov::runtime namespace (#9781)
* Removed ov::runtime namespace

* clang-format

* Fixes

* template reference

* Fixes
2022-01-20 16:17:57 +03:00
Alexey Suhov a79830cb55
Update year to 2022 in copyright notice (#9755) 2022-01-19 01:07:49 +03:00
Mikhail Nosov 26a78fcb5d
[OV2.0] Calculate model layout based on 'tensor' layout and convert steps (#9550)
* 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
2022-01-12 10:52:02 +03:00
Mikhail Nosov bd3a996239
[OV2.0] Preprocessing: support convert HWC->NCHW layout (#9540)
* Initial implementation

* Template reference tests

* cpu & gpu tests for HWC -> NCHW conversion
2022-01-11 13:13:37 +03:00
Ilya Churaev ec6f57872f
Renamed ov::Function to ov::Model (#9051)
* Renamed ov::Function to ov::Model

* Fixed all for macos

* Fixed build

* Fixed build

* Revert changes in GPU plugin

* Fixed ngraphFunctions

* Fixed all for mac

* Fixed new test

* Fixed if for Windows

* Fixed unit tests and renamed Function in python API

* Fixed code style

* Fixed import

* Fixed conflict

* Fixed merge issues
2021-12-10 13:08:38 +03:00
Mikhail Nosov 20bf5fcc4a
Rename "network" to "model" in preprocessing API (#9054) 2021-12-07 19:26:27 +03:00
Mikhail Nosov 70b5e28979
[OV20] InputTensorInfo::set_shape (#9059)
* InputTensorInfo::set_shape

* Fix clang-format
2021-12-07 19:13:38 +03:00
Mikhail Nosov 92bdddbfc9
Fix for reverse-input-channels - semi-dynamic case (#8936)
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
2021-12-07 16:39:24 +03:00
Mikhail Nosov e2172cd38a
[OV2.0] Preprocessing api cleanup (#8898)
* 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
2021-11-30 12:30:13 +03:00
Mikhail Nosov 7545af07d0
Preprocessing: convert color RGBX/BGRX -> RGB/BGR implementation (#8755) 2021-11-23 10:29:00 +03:00
Mikhail Nosov aaac5de2fa
[OV2.0] I420 preprocessing color format support (#8680)
* Add I420 preprocessing

Tests:
- Template reference
- OpenCV
- Legacy Preprocessing tests
- Functional shared tests for plugins (CPU)
- Disable i420 preprocessing tests on GPU

* clang-format fix
2021-11-18 23:30:44 +03:00
Mikhail Nosov c2d09afab9
PreProcess API change: (#8629)
- 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
2021-11-17 00:51:19 +03:00
Mikhail Nosov d65e7d4d4f
[OV20] Preprocessing: convert_layout<std::vector<uint64_t>> implementation (#8213)
* 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
2021-10-27 11:32:44 +03:00
Mikhail Nosov d39fe50470
[OV20] Preprocessing: reverse_channels and RGB<->BGR conversion (#8098)
* Initial draft

* Support of dynamic shapes
2021-10-21 11:22:43 +03:00
Mikhail Nosov e976a221f5
[OV2.0 Preprocessing] NV12 ref implementation fixes + tests with legacy CNNNetwork (#7985)
* 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)
2021-10-20 13:39:46 +03:00
Mikhail Nosov 2592856200
[OV2.0] Leftovers for Preprocessing/input/output (#7893)
* 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
2021-10-08 12:58:29 +03:00
Mikhail Nosov e20cefb620
PrePostProcessor.output() - first implementation of post-processing (#7866)
* 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
2021-10-06 21:17:10 +03:00
Mikhail Nosov f57dc05c66
[OV20] Convert NV12 to RGB operation + preprocessing (#7508)
* # 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
2021-10-06 15:22:05 +03:00
Mikhail Nosov f8ed195841
Fix 'NV12 batch case' (was sporadic failure) (#7790)
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
2021-10-01 20:21:52 +03:00
Mikhail Nosov 5b39e407d9
[OV2.0] Preprocessing - add 'convert_layout' (#7772)
* Preprocessing - add 'convert_layout'

* Fix comments, removed 'set_data_shape' for time being
2021-10-01 19:45:40 +03:00
Mikhail Nosov 414c3dc133
[OV2.0] Preprocessing - resize (#7583)
* 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
2021-09-30 11:41:25 +03:00
Mikhail Nosov 4fd59f72ea
Use 'u8' element type in tests (#7704)
Use 'float32' output for 'compare with reference' tests to avoid IE precisions undesired conversions
Added GPU preprocessing tests skeleton
2021-09-29 09:46:37 +03:00
Ilya Lavrenov 65dcffe913
Reference tests use OpenVINO 2.0 headers and namespaces (#7700)
* Reference tests via OpenVINO 2.0

* Migrated to new API acos test

* Fixed other tests compilation

* Fixed tests

* Reference tests use ov::

* Fixed compilation
2021-09-28 19:19:08 +03:00
Mikhail Nosov 531118c4b0
OV2.0 Preprocessing shared tests - initial version (#7568)
* 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
2021-09-23 23:17:59 +03:00