This interface class allows to build new Layers - are building blocks of networks. More...
#include <opencv2/dnn/dnn.hpp>
Public Member Functions | |
Layer () | |
Layer (const LayerParams ¶ms) | |
Initializes only name, type and blobs fields. More... | |
virtual | ~Layer () |
virtual void | applyHalideScheduler (Ptr< BackendNode > &node, const std::vector< Mat *> &inputs, const std::vector< Mat > &outputs, int targetId) const |
Automatic Halide scheduling based on layer hyper-parameters. More... | |
virtual void | clear () |
Clears the algorithm state. More... | |
virtual bool | empty () const |
Returns true if the Algorithm is empty (e.g. More... | |
virtual void | finalize (const std::vector< Mat *> &input, std::vector< Mat > &output) |
Computes and sets internal parameters according to inputs, outputs and blobs. More... | |
virtual void | finalize (InputArrayOfArrays inputs, OutputArrayOfArrays outputs) |
Computes and sets internal parameters according to inputs, outputs and blobs. More... | |
void | finalize (const std::vector< Mat > &inputs, std::vector< Mat > &outputs) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
std::vector< Mat > | finalize (const std::vector< Mat > &inputs) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
virtual void | forward (std::vector< Mat *> &input, std::vector< Mat > &output, std::vector< Mat > &internals) |
Given the input blobs, computes the output blobs . More... | |
virtual void | forward (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals) |
Given the input blobs, computes the output blobs . More... | |
void | forward_fallback (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals) |
Given the input blobs, computes the output blobs . More... | |
virtual String | getDefaultName () const |
Returns the algorithm string identifier. More... | |
virtual int64 | getFLOPS (const std::vector< MatShape > &inputs, const std::vector< MatShape > &outputs) const |
virtual bool | getMemoryShapes (const std::vector< MatShape > &inputs, const int requiredOutputs, std::vector< MatShape > &outputs, std::vector< MatShape > &internals) const |
virtual void | getScaleShift (Mat &scale, Mat &shift) const |
Returns parameters of layers with channel-wise multiplication and addition. More... | |
virtual Ptr< BackendNode > | initHalide (const std::vector< Ptr< BackendWrapper > > &inputs) |
Returns Halide backend node. More... | |
virtual Ptr< BackendNode > | initInfEngine (const std::vector< Ptr< BackendWrapper > > &inputs) |
virtual Ptr< BackendNode > | initVkCom (const std::vector< Ptr< BackendWrapper > > &inputs) |
virtual int | inputNameToIndex (String inputName) |
Returns index of input blob into the input array. More... | |
virtual int | outputNameToIndex (const String &outputName) |
Returns index of output blob in output array. More... | |
virtual void | read (const FileNode &fn) |
Reads algorithm parameters from a file storage. More... | |
void | run (const std::vector< Mat > &inputs, std::vector< Mat > &outputs, std::vector< Mat > &internals) |
Allocates layer and computes output. More... | |
virtual void | save (const String &filename) const |
Saves the algorithm to a file. More... | |
virtual bool | setActivation (const Ptr< ActivationLayer > &layer) |
Tries to attach to the layer the subsequent activation layer, i.e. More... | |
void | setParamsFrom (const LayerParams ¶ms) |
Initializes only name, type and blobs fields. More... | |
virtual bool | supportBackend (int backendId) |
Ask layer if it support specific backend for doing computations. More... | |
virtual Ptr< BackendNode > | tryAttach (const Ptr< BackendNode > &node) |
Implement layers fusing. More... | |
virtual bool | tryFuse (Ptr< Layer > &top) |
Try to fuse current layer with a next one. More... | |
virtual void | unsetAttached () |
"Deattaches" all the layers, attached to particular layer. More... | |
virtual void | write (FileStorage &fs) const |
Stores algorithm parameters in a file storage. More... | |
void | write (const Ptr< FileStorage > &fs, const String &name=String()) const |
simplified API for language bindings This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
Static Public Member Functions | |
template<typename _Tp > | |
static Ptr< _Tp > | load (const String &filename, const String &objname=String()) |
Loads algorithm from the file. More... | |
template<typename _Tp > | |
static Ptr< _Tp > | loadFromString (const String &strModel, const String &objname=String()) |
Loads algorithm from a String. More... | |
template<typename _Tp > | |
static Ptr< _Tp > | read (const FileNode &fn) |
Reads algorithm from the file node. More... | |
Public Attributes | |
std::vector< Mat > | blobs |
List of learned parameters must be stored here to allow read them by using Net::getParam(). More... | |
String | name |
Name of the layer instance, can be used for logging or other internal purposes. More... | |
int | preferableTarget |
prefer target for layer forwarding More... | |
String | type |
Type name which was used for creating layer by layer factory. More... | |
Protected Member Functions | |
void | writeFormat (FileStorage &fs) const |
This interface class allows to build new Layers - are building blocks of networks.
Each class, derived from Layer, must implement allocate() methods to declare own outputs and forward() to compute outputs. Also before using the new layer into networks you must register your layer by using one of LayerFactory macros.
cv::dnn::Layer::Layer | ( | ) |
|
explicit |
|
virtual |
|
virtual |
Automatic Halide scheduling based on layer hyper-parameters.
[in] | node | Backend node with Halide functions. |
[in] | inputs | Blobs that will be used in forward invocations. |
[in] | outputs | Blobs that will be used in forward invocations. |
[in] | targetId | Target identifier |
Layer don't use own Halide::Func members because we can have applied layers fusing. In this way the fused function should be scheduled.
|
inlinevirtualinherited |
Clears the algorithm state.
Reimplemented in cv::FlannBasedMatcher, and cv::DescriptorMatcher.
|
inlinevirtualinherited |
Returns true if the Algorithm is empty (e.g.
in the very beginning or after unsuccessful read
Reimplemented in cv::DescriptorMatcher, cv::ml::StatModel, cv::Feature2D, and cv::BaseCascadeClassifier.
|
virtual |
Computes and sets internal parameters according to inputs, outputs and blobs.
[in] | input | vector of already allocated input blobs |
[out] | output | vector of already allocated output blobs |
If this method is called after network has allocated all memory for input and output blobs and before inferencing.
|
virtual |
Computes and sets internal parameters according to inputs, outputs and blobs.
[in] | inputs | vector of already allocated input blobs |
[out] | outputs | vector of already allocated output blobs |
If this method is called after network has allocated all memory for input and output blobs and before inferencing.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
virtual |
Given the input
blobs, computes the output blobs
.
[in] | input | the input blobs. |
[out] | output | allocated output blobs, which will store results of the computation. |
[out] | internals | allocated internal blobs |
|
virtual |
Given the input
blobs, computes the output blobs
.
[in] | inputs | the input blobs. |
[out] | outputs | allocated output blobs, which will store results of the computation. |
[out] | internals | allocated internal blobs |
void cv::dnn::Layer::forward_fallback | ( | InputArrayOfArrays | inputs, |
OutputArrayOfArrays | outputs, | ||
OutputArrayOfArrays | internals | ||
) |
Given the input
blobs, computes the output blobs
.
[in] | inputs | the input blobs. |
[out] | outputs | allocated output blobs, which will store results of the computation. |
[out] | internals | allocated internal blobs |
|
virtualinherited |
Returns the algorithm string identifier.
This string is used as top level xml/yml node tag when the object is saved to a file or string.
Reimplemented in cv::AKAZE, cv::KAZE, cv::SimpleBlobDetector, cv::GFTTDetector, cv::AgastFeatureDetector, cv::FastFeatureDetector, cv::MSER, cv::ORB, cv::BRISK, and cv::Feature2D.
|
inlinevirtual |
|
virtual |
Returns parameters of layers with channel-wise multiplication and addition.
[out] | scale | Channel-wise multipliers. Total number of values should be equal to number of channels. |
[out] | shift | Channel-wise offsets. Total number of values should be equal to number of channels. |
Some layers can fuse their transformations with further layers. In example, convolution + batch normalization. This way base layer use weights from layer after it. Fused layer is skipped. By default, scale
and shift
are empty that means layer has no element-wise multiplications or additions.
|
virtual |
Returns Halide backend node.
[in] | inputs | Input Halide buffers. |
Input buffers should be exactly the same that will be used in forward invocations. Despite we can use Halide::ImageParam based on input shape only, it helps prevent some memory management issues (if something wrong, Halide tests will be failed).
|
virtual |
|
virtual |
|
virtual |
Returns index of input blob into the input array.
inputName | label of input blob |
Each layer input and output can be labeled to easily identify them using "%<layer_name%>[.output_name]" notation. This method maps label of input blob to its index into input vector.
Reimplemented in cv::dnn::LSTMLayer.
|
inlinestaticinherited |
Loads algorithm from the file.
filename | Name of the file to read. |
objname | The optional name of the node to read (if empty, the first top-level node will be used) |
This is static template method of Algorithm. It's usage is following (in the case of SVM):
In order to make this method work, the derived class must overwrite Algorithm::read(const FileNode& fn).
References CV_Assert, cv::FileNode::empty(), cv::FileStorage::getFirstTopLevelNode(), cv::FileStorage::isOpened(), and cv::FileStorage::READ.
|
inlinestaticinherited |
Loads algorithm from a String.
strModel | The string variable containing the model you want to load. |
objname | The optional name of the node to read (if empty, the first top-level node will be used) |
This is static template method of Algorithm. It's usage is following (in the case of SVM):
References CV_WRAP, cv::FileNode::empty(), cv::FileStorage::getFirstTopLevelNode(), cv::FileStorage::MEMORY, and cv::FileStorage::READ.
|
virtual |
Returns index of output blob in output array.
Reimplemented in cv::dnn::LSTMLayer.
|
inlinevirtualinherited |
Reads algorithm parameters from a file storage.
Reimplemented in cv::FlannBasedMatcher, cv::DescriptorMatcher, and cv::Feature2D.
|
inlinestaticinherited |
Reads algorithm from the file node.
This is static template method of Algorithm. It's usage is following (in the case of SVM):
In order to make this method work, the derived class must overwrite Algorithm::read(const FileNode& fn) and also have static create() method without parameters (or with all the optional parameters)
void cv::dnn::Layer::run | ( | const std::vector< Mat > & | inputs, |
std::vector< Mat > & | outputs, | ||
std::vector< Mat > & | internals | ||
) |
Allocates layer and computes output.
|
virtualinherited |
Saves the algorithm to a file.
In order to make this method work, the derived class must implement Algorithm::write(FileStorage& fs).
|
virtual |
Tries to attach to the layer the subsequent activation layer, i.e.
do the layer fusion in a partial case.
[in] | layer | The subsequent activation layer. |
Returns true if the activation layer has been attached successfully.
void cv::dnn::Layer::setParamsFrom | ( | const LayerParams & | params | ) |
|
virtual |
Ask layer if it support specific backend for doing computations.
[in] | backendId | computation backend identifier. |
|
virtual |
Implement layers fusing.
[in] | node | Backend node of bottom layer. |
Actual for graph-based backends. If layer attached successfully, returns non-empty cv::Ptr to node of the same backend. Fuse only over the last function.
Try to fuse current layer with a next one.
[in] | top | Next layer to be fused. |
|
virtual |
"Deattaches" all the layers, attached to particular layer.
|
inlinevirtualinherited |
Stores algorithm parameters in a file storage.
Reimplemented in cv::FlannBasedMatcher, cv::DescriptorMatcher, and cv::Feature2D.
References CV_WRAP.
Referenced by cv::Feature2D::write(), and cv::DescriptorMatcher::write().
|
inherited |
simplified API for language bindings This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
protectedinherited |
std::vector<Mat> cv::dnn::Layer::blobs |
List of learned parameters must be stored here to allow read them by using Net::getParam().
String cv::dnn::Layer::name |
Name of the layer instance, can be used for logging or other internal purposes.
int cv::dnn::Layer::preferableTarget |
prefer target for layer forwarding
String cv::dnn::Layer::type |
Type name which was used for creating layer by layer factory.