OpenCV  3.4.0-rc
Open Source Computer Vision
Public Member Functions | Public Attributes | List of all members
cv::dnn::Layer Class Referenceabstract

This interface class allows to build new Layers - are building blocks of networks. More...

#include "dnn.hpp"

Inheritance diagram for cv::dnn::Layer:
cv::Algorithm cv::dnn::ActivationLayer cv::dnn::BaseConvolutionLayer cv::dnn::BatchNormLayer cv::dnn::BlankLayer cv::dnn::ConcatLayer cv::dnn::CropLayer cv::dnn::DetectionOutputLayer cv::dnn::EltwiseLayer cv::dnn::FlattenLayer cv::dnn::InnerProductLayer cv::dnn::LRNLayer cv::dnn::LSTMLayer cv::dnn::MaxUnpoolLayer cv::dnn::MVNLayer cv::dnn::NormalizeBBoxLayer cv::dnn::PaddingLayer cv::dnn::PermuteLayer cv::dnn::PoolingLayer cv::dnn::PriorBoxLayer cv::dnn::ProposalLayer cv::dnn::RegionLayer cv::dnn::ReorgLayer cv::dnn::ReshapeLayer cv::dnn::ResizeNearestNeighborLayer cv::dnn::RNNLayer cv::dnn::ScaleLayer cv::dnn::ShiftLayer cv::dnn::SliceLayer cv::dnn::SoftmaxLayer cv::dnn::SplitLayer

Public Member Functions

 Layer ()
 
 Layer (const LayerParams &params)
 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 finalize (const std::vector< Mat *> &input, std::vector< Mat > &output)
 Computes and sets internal parameters according to inputs, outputs and blobs. More...
 
void finalize (const std::vector< Mat > &inputs, std::vector< Mat > &outputs)
 
std::vector< Matfinalize (const std::vector< Mat > &inputs)
 
virtual void forward (std::vector< Mat *> &input, std::vector< Mat > &output, std::vector< Mat > &internals)=0
 Given the input blobs, computes the output blobs. More...
 
virtual void forward (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals)=0
 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 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 Ptr< BackendNodeinitHalide (const std::vector< Ptr< BackendWrapper > > &inputs)
 Returns Halide backend node. More...
 
virtual int inputNameToIndex (String inputName)
 Returns index of input blob into the input array. More...
 
virtual int outputNameToIndex (String outputName)
 Returns index of output blob in output array. More...
 
void run (const std::vector< Mat > &inputs, std::vector< Mat > &outputs, std::vector< Mat > &internals)
 Allocates layer and computes output. More...
 
virtual bool setActivation (const Ptr< ActivationLayer > &layer)
 Tries to attach to the layer the subsequent activation layer, i.e. do the layer fusion in a partial case. More...
 
virtual bool setBatchNorm (const Ptr< BatchNormLayer > &layer)
 Tries to attach to the layer the subsequent batch normalization layer, i.e. do the layer fusion in a partial case. More...
 
void setParamsFrom (const LayerParams &params)
 Initializes only name, type and blobs fields. More...
 
virtual bool setScale (const Ptr< ScaleLayer > &layer)
 Tries to attach to the layer the subsequent scaling layer, i.e. do the layer fusion in a partial case. More...
 
virtual bool supportBackend (int backendId)
 Ask layer if it support specific backend for doing computations. More...
 
virtual Ptr< BackendNodetryAttach (const Ptr< BackendNode > &node)
 Implement layers fusing. More...
 
virtual void unsetAttached ()
 "Deattaches" all the layers, attached to particular layer. More...
 
- Public Member Functions inherited from cv::Algorithm
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 Clears the algorithm state. More...
 
virtual bool empty () const
 Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read. More...
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 Reads algorithm parameters from a file storage. More...
 
virtual void save (const String &filename) const
 
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...
 

Public Attributes

std::vector< Matblobs
 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...
 

Additional Inherited Members

- Static Public Member Functions inherited from cv::Algorithm
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...
 
- Protected Member Functions inherited from cv::Algorithm
void writeFormat (FileStorage &fs) const
 

Detailed Description

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.

Constructor & Destructor Documentation

§ Layer() [1/2]

cv::dnn::Layer::Layer ( )

§ Layer() [2/2]

cv::dnn::Layer::Layer ( const LayerParams params)
explicit

Initializes only name, type and blobs fields.

§ ~Layer()

virtual cv::dnn::Layer::~Layer ( )
virtual

Member Function Documentation

§ applyHalideScheduler()

virtual void cv::dnn::Layer::applyHalideScheduler ( Ptr< BackendNode > &  node,
const std::vector< Mat *> &  inputs,
const std::vector< Mat > &  outputs,
int  targetId 
) const
virtual

Automatic Halide scheduling based on layer hyper-parameters.

Parameters
[in]nodeBackend node with Halide functions.
[in]inputsBlobs that will be used in forward invocations.
[in]outputsBlobs that will be used in forward invocations.
[in]targetIdTarget identifier
See also
BackendNode, Target

Layer don't use own Halide::Func members because we can have applied layers fusing. In this way the fused function should be scheduled.

§ finalize() [1/3]

virtual void cv::dnn::Layer::finalize ( const std::vector< Mat *> &  input,
std::vector< Mat > &  output 
)
virtual
Python:
outputs=cv.dnn_Layer.finalize(inputs[, outputs])
retval=cv.dnn_Layer.finalize(inputs)

Computes and sets internal parameters according to inputs, outputs and blobs.

Parameters
[in]inputvector of already allocated input blobs
[out]outputvector of already allocated output blobs

If this method is called after network has allocated all memory for input and output blobs and before inferencing.

§ finalize() [2/3]

void cv::dnn::Layer::finalize ( const std::vector< Mat > &  inputs,
std::vector< Mat > &  outputs 
)
Python:
outputs=cv.dnn_Layer.finalize(inputs[, outputs])
retval=cv.dnn_Layer.finalize(inputs)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

§ finalize() [3/3]

std::vector<Mat> cv::dnn::Layer::finalize ( const std::vector< Mat > &  inputs)
Python:
outputs=cv.dnn_Layer.finalize(inputs[, outputs])
retval=cv.dnn_Layer.finalize(inputs)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

§ forward() [1/2]

virtual void cv::dnn::Layer::forward ( std::vector< Mat *> &  input,
std::vector< Mat > &  output,
std::vector< Mat > &  internals 
)
pure virtual

Given the input blobs, computes the output blobs.

Parameters
[in]inputthe input blobs.
[out]outputallocated output blobs, which will store results of the computation.
[out]internalsallocated internal blobs

§ forward() [2/2]

virtual void cv::dnn::Layer::forward ( InputArrayOfArrays  inputs,
OutputArrayOfArrays  outputs,
OutputArrayOfArrays  internals 
)
pure virtual

Given the input blobs, computes the output blobs.

Parameters
[in]inputsthe input blobs.
[out]outputsallocated output blobs, which will store results of the computation.
[out]internalsallocated internal blobs

§ forward_fallback()

void cv::dnn::Layer::forward_fallback ( InputArrayOfArrays  inputs,
OutputArrayOfArrays  outputs,
OutputArrayOfArrays  internals 
)

Given the input blobs, computes the output blobs.

Parameters
[in]inputsthe input blobs.
[out]outputsallocated output blobs, which will store results of the computation.
[out]internalsallocated internal blobs

§ getFLOPS()

virtual int64 cv::dnn::Layer::getFLOPS ( const std::vector< MatShape > &  inputs,
const std::vector< MatShape > &  outputs 
) const
inlinevirtual

§ getMemoryShapes()

virtual bool cv::dnn::Layer::getMemoryShapes ( const std::vector< MatShape > &  inputs,
const int  requiredOutputs,
std::vector< MatShape > &  outputs,
std::vector< MatShape > &  internals 
) const
virtual

§ initHalide()

virtual Ptr<BackendNode> cv::dnn::Layer::initHalide ( const std::vector< Ptr< BackendWrapper > > &  inputs)
virtual

Returns Halide backend node.

Parameters
[in]inputsInput Halide buffers.
See also
BackendNode, BackendWrapper

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).

§ inputNameToIndex()

virtual int cv::dnn::Layer::inputNameToIndex ( String  inputName)
virtual

Returns index of input blob into the input array.

Parameters
inputNamelabel 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.

§ outputNameToIndex()

virtual int cv::dnn::Layer::outputNameToIndex ( String  outputName)
virtual

Returns index of output blob in output array.

See also
inputNameToIndex()

Reimplemented in cv::dnn::LSTMLayer.

§ run()

void cv::dnn::Layer::run ( const std::vector< Mat > &  inputs,
std::vector< Mat > &  outputs,
std::vector< Mat > &  internals 
)
Python:
outputs, internals=cv.dnn_Layer.run(inputs, internals[, outputs])

Allocates layer and computes output.

§ setActivation()

virtual bool cv::dnn::Layer::setActivation ( const Ptr< ActivationLayer > &  layer)
virtual

Tries to attach to the layer the subsequent activation layer, i.e. do the layer fusion in a partial case.

Parameters
[in]layerThe subsequent activation layer.

Returns true if the activation layer has been attached successfully.

§ setBatchNorm()

virtual bool cv::dnn::Layer::setBatchNorm ( const Ptr< BatchNormLayer > &  layer)
virtual

Tries to attach to the layer the subsequent batch normalization layer, i.e. do the layer fusion in a partial case.

Parameters
[in]layerThe subsequent batch normalization layer.

Returns true if the batch normalization layer has been attached successfully.

§ setParamsFrom()

void cv::dnn::Layer::setParamsFrom ( const LayerParams params)

Initializes only name, type and blobs fields.

§ setScale()

virtual bool cv::dnn::Layer::setScale ( const Ptr< ScaleLayer > &  layer)
virtual

Tries to attach to the layer the subsequent scaling layer, i.e. do the layer fusion in a partial case.

Parameters
[in]layerThe subsequent scaling layer.

Returns true if the scaling layer has been attached successfully.

§ supportBackend()

virtual bool cv::dnn::Layer::supportBackend ( int  backendId)
virtual

Ask layer if it support specific backend for doing computations.

Parameters
[in]backendIdcomputation backend identifier.
See also
Backend

§ tryAttach()

virtual Ptr<BackendNode> cv::dnn::Layer::tryAttach ( const Ptr< BackendNode > &  node)
virtual

Implement layers fusing.

Parameters
[in]nodeBackend node of bottom layer.
See also
BackendNode

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.

§ unsetAttached()

virtual void cv::dnn::Layer::unsetAttached ( )
virtual

"Deattaches" all the layers, attached to particular layer.

Member Data Documentation

§ blobs

std::vector<Mat> cv::dnn::Layer::blobs

List of learned parameters must be stored here to allow read them by using Net::getParam().

§ name

String cv::dnn::Layer::name

Name of the layer instance, can be used for logging or other internal purposes.

§ preferableTarget

int cv::dnn::Layer::preferableTarget

prefer target for layer forwarding

§ type

String cv::dnn::Layer::type

Type name which was used for creating layer by layer factory.


The documentation for this class was generated from the following file: