* init version, need revise: opset7
* add convert testcase
* multiclass_nms support spec
* init version
* matrixnms support spec
* init support for matrix_nms
* impl matirx_nms
* implemented multiclass_nms reference.
TODO: more test cases.
* support dynamic shape in test
* update to spec 0611
* update to spec 0611
* fixes.
* fix: now sort by class_id and score work.
* fix clang check error
* more test cases verified.
* fixes in ref impl.
* attribute nms_eta works
* test cross_batch and output_type i32.
* enable multiclass-nms cpu plugin fallback ngraph
* keep topk typo
* enable matrix-nms cpu plugin fallback ngraph
* support sort_result_across_batch
* Add matrix_nms unit test
* Add cross batch test cases
* fix typo
* move multiclass to opset8
* move matrixnms to opset8
* Reference implementations for MulticlassNms and MatrixNms ops
* fix name conflict
* remove unused var
sort_result_across_batch default set to false
* avoid float overflow
* fix clang check error
* info for mac fail
* change testcase due to unstable sort
* nms add 'normalized' attribute
* multiclass cpu test support 'normalized'
* nms add 'normalized' attribute
* fixes: 1. normalized support. 2. sort by score before keep_top_k inside a batch.
* fixes: 1. normalized support. 2. sort by score before keep_top_k inside a batch.
* fix sort order in matrix_nms
* fix review comments
* add matrix_nms MKLDNN extension layer
* parallel in matirx nms
* separate filtered_box
* separate class_nms result
* parallel in class
* parallel in batch
* partial new nms
* partial remove useless function
* debug & fix
* debug in indexing
* fix test cases
* remove logging
* fix code-style
* fix typo
* add matrix_nms extension
* nms python api
* remove unused testcases
* refactor transformation
* transform dynamic shape to static shape
* Update inference-engine/src/transformations/include/ngraph_ops/nms_static_shape_ie.hpp
Co-authored-by: Ilya Churaev <ilyachur@gmail.com>
* remove register_pass call
* [MKLDNN]migrate matrix_nms to MKLDNNNode
* bug fix in matrix_nms
* padding on matrix_nms
* remove logging
* test case refine
* merged transform_matrix_nms branch
* refine matrixnms testcase
* multiclass nms cpu plugin implement for static shape, rebased on Reference implementations PR
* rebase to new multi-classs transform provided by lc
* Name style algin with matrix-nms
* static shape padding style to batch inside,new unit test method, real classnum shape
* fix format
* fix ci error
* multi-class NMS modification based on PR reviewer opinion: code format, copyright, delete unused include and funciton way
* explicit template instantiation due to mac ci fail
* Yi3/fix review (#16)
* fix coding style
* use parallel_for2d
* fix ci fail
* unify 'copyright 2021'
* mkldnn_multiclass_nms node update based on PR review (#17)
* [MKLDNN] apply suggestion for matrix_nms (#18)
* fix bug
* apply review comments
* apply review comments
* apply review comments
* apply review comments
* skip only Nms test, not MatrixNms MulticlassNms test
Co-authored-by: Zhang Yi3 <yi3.zhang@intel.com>
Co-authored-by: jialipen <cecilia.peng@intel.com>
Co-authored-by: mangguo <mang.guo@intel.com>
Co-authored-by: Ilya Churaev <ilyachur@gmail.com>
Co-authored-by: liubo-intel <bo4.liu@intel.com>
* Add visitor and backend tests.
* Add reduction_axes to SLTs, serialization and backend tests.
* Update backend tests.
* Move backend tests to template plugin, remove old ones.
* Apply correct format.
* Add BF16 to SLT, add comment regarding deprecated class.
* Remove BF16 precision as it is not supported in windows, no default values for attributes.
* Reuse Tensor from base_reference_test.hpp
* fixed crash related with loading model with fq and sigmoid
* renamed multiple_input.* to multiple_input_fq.*; removed two unnecessary FQ layers from smoke_fq_fusion_with_sigmoid test; moved FQ params to test params
* new implementation of FakeQuantize
* move FakeQuantize backend test to fake_quantize.in.cpp
* enable some test for FakeQuantize
* Add support for PDPD broadcasting and some backend tests
* arm plugin expect less attributes in function call
* try to fix arm plugin build
* try to build arm plugin
* start changing backend test
* add check for attributes number in visitor test
* fix backend test after refactoring
* add default parameter value to runtime::reference::fake_quantize
* Revert "add default parameter value to runtime::reference::fake_quantize"
This reverts commit 9d2c00d967.
* add SLT for FakeQuantize
* remove fesetround
* change `v1` namesapce to `v0` in ref impl
* add FakeQuantize-1 to VERIFIED_OP_REFERENCES
* pass immutable reference to test functions
* Use ngraph rtti macros
* Check attribute count in visitor test case
* Add priorBox class for SLT
* Add priorBox SSLT
* Add CPU SLT
* moved type_prop tests to type_prop directory
* Add backend tests
* Add PriorBox to trusted ops list
* infer first dimension of size 2
* Added pugixml as submodule
* CVS-34900: updated pugixml to v1.11.4
* Fixed link with pugixml
* USe pugixml::static
* Try to fix bug
* Removed GITHUB_PULL_REQUEST
* Replaced OpenVINO_MAIN_SOURCE_DIR -> OpenVINO_SOURCE_DIR
* Removed some usages of IE_MAIN_SOURCE_DIR
* Use ngraph target directly
* fixed multi setConfig to throw on unsupported config keys
* fixed hetero setConfig to throw on unsupported config keys. simplified the test on the incorrect keys
* aligning MULTI tests to the new (fixed) behaviour - also aligned with AUTO and HETERO
* fixed multi setConfig to throw on unsupported config keys- updating the MYX tests
* Add output_padding and output_shape into GroupConvolutionBackprop SLTs.
* Add legacy API for arm-plugin dependency.
* Replaced templated input, output and filter with one template.
* Apply correct format.
* Change to use INSTANTIATE_TEST_SUITE_P macro.
* Correct output nodes naming in scope of NMS transformation
Details:
NMS transformation changes name of NMS node output (adds '/convert' suffix)
In case NMS transformation is the last node before Output, it leads to
the situation when InferRequest's network Outputs do not match any
graph's Output nodes.
Tickets:
- 57695
* Add test
* [IE]: Enables Abstract class -> Parameter conversion support
Parameter has templated constructor allowing to write code
```
Parameter p = i; // i of type int for example
```
This constructor uses SFINAE to resolve ambiguity with
move-constructor, so checks that argument is not of the same type.
In case it's not the same type it calls std::tuple constructors that
constructs an instance of argument type. In the following case:
```
Parameter p = static_cast<Parameter>(abstractRef);
// abstractRef is a reference to abstract class
```
We have a reference to some abstract class that defines explicit
cast operator to Parameter. In contrast with expectations,
instead of cast operator, Parameter constructor is instantiated,
since template type deduction for Parameter constructor didn't fail
(abstract class has not the same type as Parameter). Instantiation
of tuple constructor used inside failed: it's impossible to create an
instance of abstract class what lead to compile-time error. To resolve
the issue additional condition introduced to check if argument type is
abstract.
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE]: Enables PrintTo method for Parameter and tests on it
Inference Engine API for configuration options uses Parameter
type as a return type of GetConfig method. Parameter is intended
to store object associated with configuration option.
To support objects of different types its constructor is templated.
Parameter overloads cast operators which are templated
as well. Both constructor and cast operators are implicit, which
makes it possible to implicitly convert any type to Parameter
and vice versa.
Since Parameter is a part of Inference Engine configuration API it's
essential google tests on API contain Parameter as tests parameter.
For each test parameter Google Test framework tries to print it to
an output stream. For that purpose, Google Test checks if test
parameter has output stream operator or PrintTo method. If not, it
checks if it could be implicitly converted to integral type and,
in this case, prints it as a long integer.
InferenceEngine::Parameter does not define output stream operator,
but could be implicitly converted to an integer, according cast
operators mentioned above, so Google Test tries to convert to
integer. Since Parameter not necessarily contains integer, this
conversion throws an exception of type mismatch, which makes it
impossible to use Parameter in Google Test framework as is.
In order to resolve that issue Parameter should define either
output stream operator or PrintTo method. If Parameter will
define output stream operator it will make it possible to compile
streaming almost any object to an output stream. The reason for it
is C++ checks if object could be implicitly converted to other type
which defines output stream operator, if objects itself doesn't do it
(e.g. `stream << "text";` calls std::string::operator<<, since
char const* is implicitly convertible to std::string).
Taking this into consideration the only way to support Parameter in
Google Test without breaking backward compatibility is define PrintTo
method.
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE]: Fixes ill-formed extending std names
According to the standard:
The behavior of a C++ program is undefined if
it adds declarations or definitions to namespace
std or to a namespace within namespace std unless
otherwise specified. A program may add a template
specialization for any standard library template
to namespace std only if the declaration depends
on a user-defined type and the specialization meets
the standard library requirements for the original
template and is not explicitly prohibited.
As as an unexpected result, InferenceEngine::Parameter
that contains std::vector<std::string> can be printed
via PrintTo. In that case operator<< version from
Inference Engine is picked up.
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Moves CompilationConfig out of GT header
Keeping config in a separate header simplifies migration
to new interface.
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Removes Platform enum
Since there is enum from MVNC for the same purpose
there is no need in Platform anyway
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Introduces containers utility header
Contains some helpers to work with C++ maps
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Introduces new configuration API
The main ideas are separate option-specific logic
from common container, automate logic processing
public vs private, deprecated, compile-time vs
runtime-time options and remove code duplication.
Since IE defines configuration API using std::string
and Parameter, options have to provide ways to be
represented as Parameter (ex.: GetConfig is called)
and be defined using std::string (ex.: SetConfig is
called). Keeping information about actual key value
is useful for error reporting.
New API fallbacks to previous version in case of
unsupported options are requested. This way migration
becomes iterative and looks simpler.
Options containers are related to corresponding components:
CompilationConfig (name to be changed) - GraphTransformer,
PluginConfiguration - base class for plugins configurations,
MyriadConfiguration - Myriad plugin configuration,
HDDLConfiguration - HDDL plugin configuration (to be
introduced in a separate request)
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Replaces CompilationConfig with PluginConfiguration
Some of options to be refactored are stored inside CompilationConfig.
CompilationConfig is passed to graph transformer as a compiler to be
processed. Since it's separate data structure and migration process
is iterative we need a mechanism to provide some of compilation
options from new interface and some from old. It cannot be done via
plugin specific class (MyriadConfiguration), since there are others
plugins as graph transformer users. Plugin specific class
(MyriadConfiguration) already inherits from old version (MyriadConfig),
which in turn inherits from ParsedConfig containing CompilationConfig.
To resolve the issue MyriadConfig inheritance from ParsedConfig is made
virtual to make it possible for PluginConfiguration to virtually inherit
from ParsedConfig as well an so make PluginConfiguration data structure
for configuration options for graph transformer. Since
PluginConfiguration is base class of MyriadConfiguration as well as
MyriadConfig and inheritance is virtual plugin just casts its specific
configuration to base one passing to graph transformer.
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Enables new tests on configuration API
* Enables following new shared tests on configuration API
* Can load network with empty configuration
* Check default value for configuration option
* Can load network with correct configuration
* Check custom value for configuration option (set and compare)
* Check public configuration options are visible through API
* Check private configuration options are invisible through API
* Check GetConfig throws an exception on incorrect key
* Refactors myriad plugin instantiations for shared tests
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Extracts LogLevel enum to a separate header
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Refactors LOG_LEVEL configuration option
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Refactors COPY_OPTIMIZATION configuration option
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Fixes behavior tests build
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Updates tests on new exception class
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Removes unused variable from mvnc test
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU]: Removes SizeVector streaming call
New assertion macro IE_ASSERT implementation uses
output streaming operator with r-value reference
argument as a stream. This prevents the compiler
from picking up overload from InferenceEngine::details,
since our version takes stream by non-const l-value
reference.
Since there is no simple solution to provide output
streaming operator overload for r-value references as
well and this call is just a message for assert in
test utilities, it was decided just to remove call
for now.
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* Create output shape for Convoution Backprop SLTs.
* Add output_padding attribute to SLT scope.
* Introduce SLT for Serializaton.
* Introduce new test layer class ConvolutionBackpropLayerTest which contains output_padding attribute and output_shape input. Old one is deprecated, but cannot be removed due to kmb plugin dependency.
* Add ConvolutionBackpropDataLayerTest into TEST_P.
* ConvolutionBackpropDataLayerTest left as legacy class used by kmb_plugin.
* Remove redundant variables.
* Switch to new API for gpu SLTs.
* Remove legacy API.
* Introduce legacy API to match dependency for KMB and ARM plugins.
* Create test cases for output_padding attribute.
* Fixing smoke_Deconv tests.
* AUTO plugin will ignore other plugins' configuration
Signed-off-by: Shoujiang Ma <shoujiang.ma@intel.com>
* Update tests
Signed-off-by: Shoujiang Ma <shoujiang.ma@intel.com>
* Support PER_COUNT config which is needed in benchmark_app
Signed-off-by: Shoujiang Ma <shoujiang.ma@intel.com>
* Address reviewer comments: check config and throw exception for unsupported, but that begin with "AUTO_" will be ignored
Signed-off-by: Shoujiang Ma <shoujiang.ma@intel.com>
* Fix CI tests issue
Signed-off-by: Shoujiang Ma <shoujiang.ma@intel.com>
* Hiding the problem, but not solving it, Validate() changes the value of a variable function
* [IE TESTS] Convert issue
* [IE TESTS] Solving the problem of adding an extra layer
* Fix FakeQuantize weights fusion when multiple operations were using the same const
* [GNA] Fix scale factor calculation for Relu if it has source and doesn't have destination statistics
Co-authored-by: Dmitrii Khurtin <dmitrii.khurtin@intel.com>
* [LPT] Test: concat with convolution neighbor and convolution after
* [LPT] elementwise fuse to FakeQuantize
* [LPT] plugin test build fix
Co-authored-by: Edward Shogulin <edward.shogulin@intel.com>
* Corrected tests to match CVS-53713
* Fixed tests configs
* Skip tests on GPU
* Commented condition inside main SetBlob because of MYRIAD
* Adopted tests
* Deprecated ICNNNetwork
* ICNNNetwork deprecation
* Fixed comments
* More suppressions for ICNNNetwork
* Fixed C API compilation
* Deprecated ICNNNetwork methods only
* [IE CLDNN] Fixed cpplint for clDNN with Ninja generator
* Fixed compilation for ApiVersion with clang
Co-authored-by: Vladimir Paramuzov <vladimir.paramuzov@intel.com>
* Add type prop tests for shape and type propagation
* Add visitor test
* Add SLT test class for result op
* Add SSLT for result op
* Add CPU SLT
* Add backend test
* Applying review comments - fix typo in slt, replace type info with NGRAPH_RTTI_DEFINITION
* Applying changes after review comments
* Add result to trusted ops list
* fix adding redundant nodes in slt