Class cv::dnn::Layer#

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

Collaboration diagram for cv::dnn::Layer:

cv::dnn::Layer Node1 cv::dnn::Layer   + Layer() + Layer() + ~Layer() + alwaysSupportInplace() + dump() + dumpAttrs() + dynamicOutputShapes() + finalize() + finalize() + finalize() and 27 more... Node2 cv::Algorithm   + Algorithm() + ~Algorithm() + clear() + empty() + getDefaultName() + read() + save() + write() + write() + load() + loadFromString() + read() # writeFormat() Node2->Node1 Node3 std::vector< cv::Mat >     Node3->Node1 +blobs Node4 cv::Mat   + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() and 152 more... + diag() + eye() + eye() + getDefaultAllocator() + getStdAllocator() + ones() + ones() + ones() + ones() + setDefaultAllocator() + zeros() + zeros() + zeros() + zeros() # forEach_impl() Node4->Node3 +elements Node5 int     Node5->Node1 +preferableTarget Node5->Node4 +cols +dims +dummy +flags +rows Node14 cv::dnn::Arg   + Arg() + Arg() + empty() Node5->Node14 +idx Node6 uint8_t     Node6->Node4 +data +dataend +datalimit +datastart Node7 cv::MatAllocator   + MatAllocator() + ~MatAllocator() + allocate() + allocate() + copy() + deallocate() + download() + getBufferPoolController() + map() + unmap() + upload() Node7->Node4 +allocator Node8 UMatData *     Node8->Node4 +u Node9 MatSize     Node9->Node4 +size Node10 MatStep     Node10->Node4 +step Node11 std::vector< T >     Node11->Node3 < cv::Mat > Node13 std::vector< cv::dnn ::Arg >     Node11->Node13 < cv::dnn::Arg > Node12 T     Node12->Node11 +elements Node13->Node1 +inputs +outputs Node14->Node13 +elements Node15 void *     Node15->Node1 +netimpl Node16 std::string     Node16->Node1 +name +type Node17 std::basic_string< Char >     Node17->Node16

cv::dnn::Layer Node1 cv::dnn::Layer   + Layer() + Layer() + ~Layer() + alwaysSupportInplace() + dump() + dumpAttrs() + dynamicOutputShapes() + finalize() + finalize() + finalize() and 27 more... Node2 cv::Algorithm   + Algorithm() + ~Algorithm() + clear() + empty() + getDefaultName() + read() + save() + write() + write() + load() + loadFromString() + read() # writeFormat() Node2->Node1 Node3 std::vector< cv::Mat >     Node3->Node1 +blobs Node4 cv::Mat   + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() and 152 more... + diag() + eye() + eye() + getDefaultAllocator() + getStdAllocator() + ones() + ones() + ones() + ones() + setDefaultAllocator() + zeros() + zeros() + zeros() + zeros() # forEach_impl() Node4->Node3 +elements Node5 int     Node5->Node1 +preferableTarget Node5->Node4 +cols +dims +dummy +flags +rows Node14 cv::dnn::Arg   + Arg() + Arg() + empty() Node5->Node14 +idx Node6 uint8_t     Node6->Node4 +data +dataend +datalimit +datastart Node7 cv::MatAllocator   + MatAllocator() + ~MatAllocator() + allocate() + allocate() + copy() + deallocate() + download() + getBufferPoolController() + map() + unmap() + upload() Node7->Node4 +allocator Node8 UMatData *     Node8->Node4 +u Node9 MatSize     Node9->Node4 +size Node10 MatStep     Node10->Node4 +step Node11 std::vector< T >     Node11->Node3 < cv::Mat > Node13 std::vector< cv::dnn ::Arg >     Node11->Node13 < cv::dnn::Arg > Node12 T     Node12->Node11 +elements Node13->Node1 +inputs +outputs Node14->Node13 +elements Node15 void *     Node15->Node1 +netimpl Node16 std::string     Node16->Node1 +name +type Node17 std::basic_string< Char >     Node17->Node16

Public Member Functions#

Public Member Functions inherited from cv::Algorithm

Return

Name

Description

Algorithm()

~Algorithm()

void

clear()

Clears the algorithm state.

bool

empty()

Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read.

String

getDefaultName()

void

read(const FileNode & fn)

Reads algorithm parameters from a file storage.

void

save(const String & filename)

void

write(
    const Ptr< FileStorage > & fs,
    const String & name = String() )

void

write(FileStorage & fs)

Stores algorithm parameters in a file storage.

void

write(
    FileStorage & fs,
    const String & name )

Static Public Member Functions#

Static Public Member Functions inherited from cv::Algorithm

Return

Name

Description

static Ptr< _Tp >

load(
    const String & filename,
    const String & objname = String() )

Loads algorithm from the file.

static Ptr< _Tp >

loadFromString(
    const String & strModel,
    const String & objname = String() )

Loads algorithm from a String.

static Ptr< _Tp >

read(const FileNode & fn)

Reads algorithm from the file node.

Additional Inherited Members#

Protected Member Functions inherited from cv::Algorithm

Return

Name

Description

void

writeFormat(FileStorage & fs)

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()#

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

Layer()#

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

Initializes only name, type and blobs fields.

~Layer()#

cv::dnn::Layer::~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.

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 blobs

  • output — 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.

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.

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 blobs

  • outputs — 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.

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 scale

  • zeropoint — 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 operator

  • outputs — output tensors of CANN operator

  • nodes — 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 object

  • inputs — layer inputs

  • outputs — 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 object

  • inputsWrapper — layer inputs

  • outputsWrapper — layer outputs

  • isLast — 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.

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()#

std::vector< Ptr< Graph > > * cv::dnn::Layer::subgraphs()

supportBackend()#

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

Ask layer if it support specific backend for doing computations.

See also

Backend

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#

std::vector< Arg > cv::dnn::Layer::inputs

name#

String cv::dnn::Layer::name

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

netimpl#

void * cv::dnn::Layer::netimpl

outputs#

std::vector< Arg > cv::dnn::Layer::outputs

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.

Source file#

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