[G-API]: findContours() and boundingRect() Standard Kernels Implementation
* Add findContours() standard kernel
- API and documentation provided:
- as OpenCV provides two overloads whether to calculate hierarchy or not, but they differ by only the output in sight of G-API, two different G-API functions and kernels implemented
- G-API Imgproc documentation divided into more parts according to imgproc module parts
- some typos connected with division into parts corrected
- `GArray<GArray<U>>` overload for `get_out` function provided to coonvert correctly into `vector<vector<U>>`
- OCV backend supported
- accuracy tests provided
* Add boundingRect() standard kernel
- API and documentation provided:
- GOpaque<Rect> used as an output
- as OpenCV provides two possibilities whether to take a gray-scale image or a set of 2D points (`Point2i` or `Point2f` supported), three different overloads of a single G-API function and three kernels implemented
- for a gray-scale image the overload via `GMat`
- for a set of `Point2i` - the one via GArray<`Point2i`>
- set of `Point2f` -> GArray<`Point2f`>
- OCV backend supported
- accuracy tests provided
- comparison function for Rects provided
- some typos in `gapi_tests_common` corrected
* Fix precommit windows warnings
* - Addressing comments:
- split tests
- Fix Windows warnings
* Static_cast for warnings
* - Remove randomness
- Fix unnecessary precision losses
* - Forgot reference for RNG
* addressing comments
* equalizeHist -> no group
* `const` addedin new functions
* Address suggestions:
- Hierarchical -> H
- added cv::GMatDesc::isVectorPoins()
- added support of giving a set of points to boundingRect()
* Addressing comments
- IoU comparison function added for Rects
- isPointsVector moved from a GMatDesc method to a separate function in imgproc.hpp
- enums instead of int
- typos corrected
* Addressing comments
- findContours: Point offset -> GOpaque<Point>
- removed "straight" comparison for Rects, IoU available only
- changed vectors initialization -> fix Debug test run
- Some typos
* added comment for later upgrades
* Fix not to corrupt docs by FIXME
* Addressing commens
- overload without offset added (as a temporary workaround)
- checkMetaForFindingContours -> validateFindingContoursMeta
- added ostream overload for enums used in tests
[G-API]: morphologyEx() Standard Kernel Implementation
* cv::gapi::morphologyEx() kernel
- implemented (without separate 3x3 version)
- tests added: check only different operations, not kernels/borders
* Address comments: add `const` where needed
* Replaced fundamental tyeps -> enums where needed
- added operator<< overload for cv::MorphTypes for tests output
* G-API: Introduce ONNX backend for Inference
- Basic operations are implemented (Infer, -ROI, -List, -List2);
- Implemented automatic preprocessing for ONNX models;
- Test suite is extended with `OPENCV_GAPI_ONNX_MODEL_PATH` env for test data
(test data is an ONNX Model Zoo repo snapshot);
- Fixed kernel lookup logic in core G-API:
- Lookup NN kernels not in the default package, but in the associated
backend's aux package. Now two NN backends can work in the same graph.
- Added Infer SSD demo and a combined ONNX/IE demo;
* G-API/ONNX: Fix some of CMake issues
Co-authored-by: Pashchenkov, Maxim <maxim.pashchenkov@intel.com>
Expand ie::Params to support config
* Add config to IE params
* Add test
* Remove comments from tests
* Rename to pluginConfig
* Add one more overloads for pluginConfig
* Add more tests
- cv::gapi::serialize bypasses compile arguments which have no S11N specialization with serialize/deserialize callbacks for underlying types
- cv::gapi::deserialize can accept arbitraty number of serialized compile args in a stream but will return only those which are requested by user via template parameter pack if they are presented in the stream. If some or all of them are not presented cv::gapi::deserialize will ignore and return only those which are presented
- cv::gapi::deserialize can accept only types which can be deserialized (have S11N<T> specialization with the user callbacks)
- Added cv::gapi::s11n::detail::has_S11N_spec<T> trait to separate compile arguments which have S11N<T> specialization with the user callbacks
- desync() is a new (and for now, the only one) intrinsic
which splits the graph execution into asynchronous parts
when running in Streaming mode;
- desync() makes no effect when compiling in Traditional mode;
- Added tests on desync() working in various scenarios;
- Extended GStreamingExecutor to support desync(); also extended
GStreamingCompiled() with a new version of pull() returning a
vector of optional values;
- Fixed various issues with storing the type information & proper
construction callbacks for GArray<> and GOpaque;
- Introduced a new infer(Roi,GMat) overload with a sample;
- Introduced an internal API for Islands to control fusion
procedure (to fuse or not to fuse);
- Introduced handleStopStream() callback for island executables;
- Added GCompileArgs to metadata of the graph (required for other
features).
GAPI: Addition new Color conversion kernels to CPU backend.
* Add BGR2RGB kernel to CPU backend
* Add BGR2I420 and RGB2I420 kernels to CPU backend
* Add I4202BGR and I4202RGB kernels to CPU backend
[GAPI] RMat integration into the framework
* RMat integration
* Added initialization of input mat in GArray initialization tests
* Fixed klocwork warnings in RMat tests, changed argument order in EXPECT_EQ
[G-API] Export a part of serialization interface
* Initial stub
* Add test on serialization of a custom type
* Namespaces rework
* Fix isSupported in test struct
* Fix clang build and rework namespaces
* Remove redundant header
[G-API]: countNonZero() Standard Kernel Implementation
* Add countNonZero() standard kernel
- API and documentation provided
- OCV backend supported
- accuracy and performance tests provided
- some refactoring of related documentation done
* Fix GOpaque functionality for OCL Backend
- test for OCL Opaque usage providied
* countNonZero for GPU
- OCL Backend implementation for countNonZero() added
- tests provided
* Addressing comments
[G-API] Add support for more types serialization
* Support more types
* Add std::string support
* Fix GOpaque and gin interaction
* Fix tests on kind
* Make map serialization support templates and add tests on kind
* G-API: Make GFrame a new (distinct) G-type, not an alias to GMat
- The underlying host type is still cv::Mat, a new cv::MediaFrame
type is to be added as a separate PR
* Fix warnings and review comments
- Somewhow there was a switch() without a default: clause in Fluid
[G-API]: Add four kernels to parse NN outputs & provide information in Streaming scenarios
* Kernels from GL "blue" branch, acc and perf tests
* Code cleanup
* Output fix
* Comment fix
* Added new file for parsers, stylistic corrections
* Added end line
* Namespace fix
* Code cleanup
* nnparsers.hpp moved to gapi/infer/, nnparsers -> parsers
* Removed cv:: from parsers.hpp
[G-API]: Add GArray initialization support
* Added GArray initialization (CONST_VALUE, GScalar analog) and test for this
* Whitespaces
* And one more space
* Trailing whitespace
* Test name changed. Build with magic commands.
* GArray works with rvalue initialization
* Code cleanup
* Ternary operator in the initialization list.
[G-API]: Relocation of operators' overloads
* Relocates overloaded operators for `cv::GMat` and `cv::GScalar` to `cv::` namespace
- adds test to check usage of operators compilation
* Add tests for all the operators
* Address comments
* Implement G-API python bindings
* Fix hdr_parser
* Drop initlization with brackets using regexp
* Handle bracket initilization another way
* Add test for core operations
* Declaration and definition of View constructor now in different files
* Refactor tests
* Remove combine decorator from tests
* Fix comment to review
* Fix test
* Fix comments to review
* Remove GCompilerArgs implementation from python
Co-authored-by: Pinaev <danil.pinaev@intel.com>
* Added overload for `GArray<GMat>` ProtoParam in `gtyped.hpp`
* Tests+compile_args
- added tests for GArray<GMat> as an input and an output of GComputationT
- added possibility to give the compile_args to GComputationT.apply()
* Fix win errors
[G-API] Allow building graphs with a dynamic number of inputs and outputs
* Add dinamic graph feature and tests
* Remove unnecessary file
* Review response
* Add implementation of operator += for GRunArgs
And test for that case
* Tests refactoring
* Add doxygen
Review response
* Fix docs
* A small documentation fix
* Review response
* Add tests for more entities
* Add typed tests
* Another typed tests
* Doc fix
* Documentation fix
* Build fix
* Commit for rebuild
* The last one
* G-API: Introduce a new gapi::infer2 overload + gaze estimation sample
* G-API/infer2: Introduced static type checking for infer2
- Also added extra tests on the type check routine
* G-API/infer2: Addressed self-review comments in the sample app
- Also fix build on Linux;
* G-API/infer2: Remove incorrect SetLayout(HWC) + dead code
- Also fixed comments in the backend
* G-API/infer2: Continue with self-review
- Fix warnings/compile errors in gaze estimation
- Dropped the use of RTTI (VectorRef::holds()) from the giebackend
- Replaced it with a trait-based enums for GArray<T> and std::vector<T>
- The enums and traits are temporary and need to be unified with
the S11N when it comes
* G-API/infer2: Final self-review items
- Refactored ROIList test to cover 70% for infer<> and infer2<>;
- Fixed the model data discovery routine to be compatible with new
OpenVINO;
- Hopefully fixed the final issues (warnings) with the sample.
* G-API/infer2: address review problems
- Fixed typo in comments;
- Fixed public (Doxygen) comment on GArray<GMat> input case for infer2;
- Made model lookup more flexible to allow new & old OMZ dir layouts.
* G-API/infer2: Change the model paths again
* G-API/infer2: Change the lookup path for test data
* G-API/infer2: use randu instead of imread. CI war is over
G-API args serialization
* args serialization
* GRunArgP draft
* UMat added
* bind added
* DmitryM's review addressed. Code clean up required.
* fix android build
* bind test added
* more comments addressed
* try to fix Mac build
* clean up
* header-based generic implementation (GRunArg)
* clang again
* one more attempt for clang
* more clean up
* More Dmitry's comments addressed.
* monostate removed
* Top level functions and some other comments addressed.
* fix warnings
* disable warning
G-API Serialization routines
* Serialization backend in tests, initial version
* S11N/00: A Great Rename
- "Serialization" is too long and too error-prone to type,
so now it is renamed to "s11n" everywhere;
- Same applies to "SRLZ";
- Tests also renamed to start with 'S11N.*' (easier to run);
- Also updated copyright years in new files to 2020.
* S11N/01: Some basic interface segregation
- Moved some details (low-level functions) out of serialization.hpp;
- Introduced I::IStream and I::OStream interfaces;
- Implemented those via the existing [De]SerializationStream classes;
- Moved all operators to use interfaces instead of classes;
- Moved the htonl/ntohl handling out of operators (to the classes).
The implementation didn't change much, it is a subject to the further
refactoring
* S11N/02: Basic operator reorg, basic tests, vector support
- Reorganized operators on atomic types to follow >>/<< model
(put them closer in the code for the respective types);
- Introduce more operators for basic (scalar) types;
- Drop all vector s11n overloads -- replace with a generic
(template-based) one;
- Introduced a new test suite where low-level s11n functionality
is tested (for the basic types).
* S11N/03: Operators reorganization
- Sorted the Opaque types enum by complexity;
- Reorganized the existing operators for basic types, also ordered by
complexity;
- Organized operators in three groups (Basics, OpenCV, G-API);
- Added a generic serialization for variant<>;
- Reimplemented some of the existing operators (for OpenCV and G-API
data structures);
- Introduced new operators for cv::gimpl data types. These operators
(and so, the data structures) are not yet used in the graph
dump/reconstruction routine, it will be done as a next step.
* S11N/04: The Great Clean-up
- Drop the duplicates of GModel data structures from the
serialization, serialize the GModel data structures themselve
instead (hand-written code replaced with operators).
- Also removed usuned code for printing, etc.
* S11N/05: Internal API Clean-up
- Minimize the serialization API to just Streams and Operators;
- Refactor and fix the graph serialization (deconstruction and
reconstruction) routines, fix data addressing problems there;
- Move the serialization.[ch]pp files to the core G-API library
* S11N/06: Top-level API introduction
- !!!This is likely the most invasive commit in the series!!!
- Introduced a top-level API to serialize and deserialize a GComputation
- Extended the compiler to support both forms of a GComputation:
an expession based and a deserialized one. This has led to changes in
the cv::GComputation::Priv and in its dependent components (even the
transformation tests);
- Had to extend the kernel API (GKernel) with extra information on
operations (mainly `outMeta`) which was only available for expression
based graphs. Now the `outMeta` can be taken from kernels too (and for
the deserialized graphs it is the only way);
- Revisited the internal serialization API, had to expose previously
hidden entities (like `GSerialized`);
- Extended the serialized graph info with new details (object counter,
protocol). Added unordered_map generic serialization for that;
- Reworked the very first pipeline test to be "proper"; GREEN now, the rest
is to be reworked in the next iteration.
* S11N/07: Tests reworked
- Moved the sample pipeline tests w/serialization to
test the public API (`cv::gapi::serialize`, then
followed by `cv::gapi::deserialize<>`). All GREEN.
- As a consequence, dropped the "Serialization" test
backend as no longer necessary.
* S11N/08: Final touches
- Exposed the C++ native data types at Streams level;
- Switched the ByteMemoryIn/OutStreams to store data in `char`
internally (2x less memory for sample pipelines);
- Fixed and refactored Mat dumping to the stream;
- Renamed S11N pipeline tests to their new meaning.
* linux build fix
* fix RcDesc and int uint warnings
* more Linux build fix
* white space and virtual android error fix (attempt)
* more warnings to be fixed
* android warnings fix attempt
* one more attempt for android build fix
* android warnings one more fix
* return back override
* avoid size_t
* static deserialize
* and how do you like this, elon? anonymous namespace to fix android warning.
* static inline
* trying to fix standalone build
* mat dims fix
* fix mat r/w for standalone
Co-authored-by: Dmitry Matveev <dmitry.matveev@intel.com>