Class cv::dnn::Layer#
This interface class allows to build new Layers - are building blocks of networks. View details
#include <opencv2/dnn/dnn.hpp>Collaboration diagram for cv::dnn::Layer:
Public Member Functions#
Public Member Functions inherited from cv::Algorithm
Return |
Name |
Description |
|---|---|---|
|
Clears the algorithm state. |
|
|
Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read. |
|
|
Reads algorithm parameters from a file storage. |
|
|
||
|
|
|
|
Stores algorithm parameters in a file storage. |
|
|
Static Public Member Functions#
Static Public Member Functions inherited from cv::Algorithm
Return |
Name |
Description |
|---|---|---|
|
|
Loads algorithm from the file. |
|
|
Loads algorithm from a String. |
|
Reads algorithm from the file node. |
Additional Inherited Members#
Protected Member Functions inherited from cv::Algorithm
Return |
Name |
Description |
|---|---|---|
|
Detailed Description#
This interface class allows to build new Layers - are building blocks of networks.
Each class, derived from Layer, must implement forward() method 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()#
Layer()#
cv::dnn::Layer::Layer(const LayerParams & params)
Initializes only name, type and blobs fields.
~Layer()#
Member Function Documentation#
alwaysSupportInplace()#
bool cv::dnn::Layer::alwaysSupportInplace()
dump()#
std::ostream & cv::dnn::Layer::dump(
std::ostream & strm,
int indent,
bool comma )
dumpAttrs()#
std::ostream & cv::dnn::Layer::dumpAttrs(
std::ostream & strm,
int indent )
dynamicOutputShapes()#
bool cv::dnn::Layer::dynamicOutputShapes()
finalize()#
void cv::dnn::Layer::finalize(
const std::vector< Mat * > & input,
std::vector< Mat > & output )
Python:
cv.dnn.Layer.finalize(inputs[, outputs]) -> outputs
Computes and sets internal parameters according to inputs, outputs and blobs.
Deprecated
Use Layer::finalize(InputArrayOfArrays, OutputArrayOfArrays) instead
This method is called after network has allocated all memory for input and output blobs and before inferencing.
Parameters
input— vector of already allocated input blobsoutput— vector of already allocated output blobs
finalize()#
std::vector< Mat > cv::dnn::Layer::finalize(const std::vector< Mat > & inputs)
Python:
cv.dnn.Layer.finalize(inputs[, outputs]) -> outputs
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Deprecated
Use Layer::finalize(InputArrayOfArrays, OutputArrayOfArrays) instead
finalize()#
void cv::dnn::Layer::finalize(
const std::vector< Mat > & inputs,
std::vector< Mat > & outputs )
Python:
cv.dnn.Layer.finalize(inputs[, outputs]) -> outputs
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Deprecated
Use Layer::finalize(InputArrayOfArrays, OutputArrayOfArrays) instead
finalize()#
void cv::dnn::Layer::finalize(
InputArrayOfArrays inputs,
OutputArrayOfArrays outputs )
Python:
cv.dnn.Layer.finalize(inputs[, outputs]) -> outputs
Computes and sets internal parameters according to inputs, outputs and blobs.
This method is called after network has allocated all memory for input and output blobs and before inferencing.
Parameters
inputs— vector of already allocated input blobsoutputs— vector of already allocated output blobs
forward()#
void cv::dnn::Layer::forward(
InputArrayOfArrays inputs,
OutputArrayOfArrays outputs,
OutputArrayOfArrays internals )
Given the input blobs, computes the output blobs.
Parameters
inputs— the input blobs.outputs— allocated output blobs, which will store results of the computation.internals— allocated internal blobs
forward()#
void cv::dnn::Layer::forward(
std::vector< Mat * > & input,
std::vector< Mat > & output,
std::vector< Mat > & internals )
Given the input blobs, computes the output blobs.
Deprecated
Use Layer::forward(InputArrayOfArrays, OutputArrayOfArrays, OutputArrayOfArrays) instead
Parameters
input— the input blobs.output— allocated output blobs, which will store results of the computation.internals— allocated 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
inputs— the input blobs.outputs— allocated output blobs, which will store results of the computation.internals— allocated internal blobs
getFLOPS()#
int64 cv::dnn::Layer::getFLOPS(
const std::vector< MatShape > & inputs,
const std::vector< MatShape > & outputs )
getLayouts()#
int cv::dnn::Layer::getLayouts(
const std::vector< DataLayout > & actualInputs,
std::vector< DataLayout > & desiredInputs,
const int requiredOutputs,
std::vector< DataLayout > & outputs )
getMemoryShapes()#
bool cv::dnn::Layer::getMemoryShapes(
const std::vector< MatShape > & inputs,
const int requiredOutputs,
std::vector< MatShape > & outputs,
std::vector< MatShape > & internals )
getScaleShift()#
void cv::dnn::Layer::getScaleShift(
Mat & scale,
Mat & shift )
Returns parameters of layers with channel-wise multiplication and addition.
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.
Parameters
scale— Channel-wise multipliers. Total number of values should be equal to number of channels.shift— Channel-wise offsets. Total number of values should be equal to number of channels.
getScaleZeropoint()#
void cv::dnn::Layer::getScaleZeropoint(
float & scale,
int & zeropoint )
Returns scale and zeropoint of layers.
By default, scale is 1 and zeropoint is 0.
Parameters
scale— Output scalezeropoint— Output zeropoint
getTypes()#
void cv::dnn::Layer::getTypes(
const std::vector< MatType > & inputs,
const int requiredOutputs,
const int requiredInternals,
std::vector< MatType > & outputs,
std::vector< MatType > & internals )
initCann()#
Ptr< BackendNode > cv::dnn::Layer::initCann(
const std::vector< Ptr< BackendWrapper > > & inputs,
const std::vector< Ptr< BackendWrapper > > & outputs,
const std::vector< Ptr< BackendNode > > & nodes )
Returns a CANN backend node.
Parameters
inputs— input tensors of CANN operatoroutputs— output tensors of CANN operatornodes— nodes of input tensors
initCUDA()#
Ptr< BackendNode > cv::dnn::Layer::initCUDA(
void * context,
const std::vector< Ptr< BackendWrapper > > & inputs,
const std::vector< Ptr< BackendWrapper > > & outputs )
Returns a CUDA backend node.
Parameters
context— void pointer to CSLContext objectinputs— layer inputsoutputs— layer outputs
initNgraph()#
Ptr< BackendNode > cv::dnn::Layer::initNgraph(
const std::vector< Ptr< BackendWrapper > > & inputs,
const std::vector< Ptr< BackendNode > > & nodes )
initTimVX()#
Ptr< BackendNode > cv::dnn::Layer::initTimVX(
void * timVxInfo,
const std::vector< Ptr< BackendWrapper > > & inputsWrapper,
const std::vector< Ptr< BackendWrapper > > & outputsWrapper,
bool isLast )
Returns a TimVX backend node.
Parameters
timVxInfo— void pointer to CSLContext objectinputsWrapper— layer inputsoutputsWrapper— layer outputsisLast— if the node is the last one of the TimVX Graph.
initVkCom()#
Ptr< BackendNode > cv::dnn::Layer::initVkCom(
const std::vector< Ptr< BackendWrapper > > & inputs,
std::vector< Ptr< BackendWrapper > > & outputs )
initWebnn()#
Ptr< BackendNode > cv::dnn::Layer::initWebnn(
const std::vector< Ptr< BackendWrapper > > & inputs,
const std::vector< Ptr< BackendNode > > & nodes )
inputNameToIndex()#
int cv::dnn::Layer::inputNameToIndex(String inputName)
Returns index of input blob into the input array.
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.
Parameters
inputName— label of input blob
isDataShuffling()#
bool cv::dnn::Layer::isDataShuffling()
outputNameToIndex()#
int cv::dnn::Layer::outputNameToIndex(const String & outputName)
Python:
cv.dnn.Layer.outputNameToIndex(outputName) -> retval
Returns index of output blob in output array.
See also
run()#
void cv::dnn::Layer::run(
const std::vector< Mat > & inputs,
std::vector< Mat > & outputs,
std::vector< Mat > & internals )
Python:
cv.dnn.Layer.run(inputs, internals[, outputs]) -> outputs, internals
Allocates layer and computes output.
Deprecated
This method will be removed in the future release.
setActivation()#
bool cv::dnn::Layer::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.
Returns true if the activation layer has been attached successfully.
Parameters
layer— The subsequent activation layer.
setParamsFrom()#
void cv::dnn::Layer::setParamsFrom(const LayerParams & params)
Initializes only name, type and blobs fields.
subgraphs()#
supportBackend()#
bool cv::dnn::Layer::supportBackend(int backendId)
Ask layer if it support specific backend for doing computations.
See also
Parameters
backendId— computation backend identifier.
tryFuse()#
bool cv::dnn::Layer::tryFuse(Ptr< Layer > & top)
Try to fuse current layer with a next one.
Parameters
top— Next layer to be fused.
Returns
True if fusion was performed.
unsetAttached()#
void cv::dnn::Layer::unsetAttached()
“Detaches” all the layers, attached to particular layer.
updateMemoryShapes()#
bool cv::dnn::Layer::updateMemoryShapes(const std::vector< MatShape > & inputs)
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().
inputs#
name#
Name of the layer instance, can be used for logging or other internal purposes.
netimpl#
void * cv::dnn::Layer::netimpl
outputs#
preferableTarget#
int cv::dnn::Layer::preferableTarget
prefer target for layer forwarding
type#
Type name which was used for creating layer by layer factory.
Source file#
The documentation for this class was generated from the following file:
opencv2/dnn/dnn.hpp