OpenCV 4.5.3(日本語機械翻訳)
公開メンバ関数 | 公開変数類 | 全メンバ一覧
cv::dnn::Layer クラス

This interface class allows to build new Layers - are building blocks of networks. [詳解]

#include <dnn.hpp>

cv::Algorithmを継承しています。

cv::dnn::AccumLayer, cv::dnn::ActivationLayer, cv::dnn::BaseConvolutionLayer, cv::dnn::BlankLayer, cv::dnn::ConcatLayer, cv::dnn::ConstLayer, cv::dnn::CorrelationLayer, cv::dnn::CropAndResizeLayer, cv::dnn::CropLayer, cv::dnn::DataAugmentationLayer, cv::dnn::DetectionOutputLayer, cv::dnn::EltwiseLayer, cv::dnn::FlattenLayer, cv::dnn::FlowWarpLayer, cv::dnn::InnerProductLayer, cv::dnn::InterpLayer, cv::dnn::LRNLayer, cv::dnn::LSTMLayer, cv::dnn::MVNLayer, cv::dnn::MaxUnpoolLayer, cv::dnn::NormalizeBBoxLayer, cv::dnn::PaddingLayer, cv::dnn::PermuteLayer, cv::dnn::PoolingLayer, cv::dnn::PriorBoxLayer, cv::dnn::ProposalLayer, cv::dnn::RNNLayer, cv::dnn::RegionLayer, cv::dnn::ReorgLayer, cv::dnn::ReshapeLayer, cv::dnn::ResizeLayer, cv::dnn::ScaleLayer, cv::dnn::ShiftLayer, cv::dnn::ShuffleChannelLayer, cv::dnn::SliceLayer, cv::dnn::SoftmaxLayer, cv::dnn::SplitLayer (計37項目)に継承されています。

公開メンバ関数

virtual CV_DEPRECATED_EXTERNAL void finalize (const std::vector< Mat * > &input, std::vector< Mat > &output)
入力、出力、blobに応じて内部パラメータを計算、設定します。[【詳解】(英語]
virtual CV_WRAP void finalize (InputArrayOfArrays inputs, OutputArrayOfArrays outputs)
入力、出力、blobに応じて内部パラメータを計算、設定します。[【詳解】(英語]
virtual CV_DEPRECATED_EXTERNAL void forward (std::vector< Mat * > &input, std::vector< Mat > &output, std::vector< Mat > &internals)
blobが与えられるとinputblobが与えられると、出力を計算するblobs.[【詳解】(英語]
virtual void forward (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals)
blobが与えられるとinputblobが与えられると、出力を計算するblobs.[【詳解】(英語]
void forward_fallback (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals)
blobが与えられるとinputblobが与えられると、出力を計算するblobs.[【詳解】(英語]
CV_DEPRECATED_EXTERNAL void finalize (const std::vector< Mat > &inputs, CV_OUT std::vector< Mat > &outputs)
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。[【詳解】(英語]
CV_DEPRECATED std::vector< Mat > finalize (const std::vector< Mat > &inputs)
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。[【詳解】(英語]
CV_DEPRECATED CV_WRAP void run (const std::vector< Mat > &inputs, CV_OUT std::vector< Mat > &outputs, CV_IN_OUT std::vector< Mat > &internals)
レイヤーを割り当て、出力を計算します。[【詳解】(英語]
virtual int inputNameToIndex (String inputName)
入力blobのインデックスを入力配列に返します。[【詳解】(英語]
virtual CV_WRAP int outputNameToIndex (const String &outputName)
出力配列に出力blobのインデックスを返します。[【詳解】(英語]
virtual bool supportBackend (int backendId)
計算を行うために特定のバックエンドをサポートしているかどうかをレイヤーに尋ねます。[【詳解】(英語]
virtual Ptr< BackendNode > initHalide (const std::vector< Ptr< BackendWrapper > > &inputs)
Halide バックエンドノードを返します。[【詳解】(英語]
virtual Ptr< BackendNode > initInfEngine (const std::vector< Ptr< BackendWrapper > > &inputs)
virtual Ptr< BackendNode > initNgraph (const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendNode > > &nodes)
virtual Ptr< BackendNode > initVkCom (const std::vector< Ptr< BackendWrapper > > &inputs)
virtual Ptr< BackendNode > initCUDA (void *context, const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendWrapper > > &outputs)
CUDA バックエンドノードを返します[【詳解】(英語]
virtual void applyHalideScheduler (Ptr< BackendNode > &node, const std::vector< Mat * > &inputs, const std::vector< Mat > &outputs, int targetId) const
レイヤーのハイパーパラメータに基づいたHalideの自動スケジューリング[【詳解】(英語]
virtual Ptr< BackendNode > tryAttach (const Ptr< BackendNode > &node)
レイヤーフュージングの実装[【詳解】(英語]
virtual bool setActivation (const Ptr< ActivationLayer > &layer)
活性化された後続のレイヤーをそのレイヤーに添付しようとします。つまり、部分的なケースでレイヤーフュージョンを行います。[【詳解】(英語]
virtual bool tryFuse (Ptr< Layer > &top)
現在のレイヤと次のレイヤの融合を試みる[【詳解】(英語]
virtual void getScaleShift (Mat &scale, Mat &shift) const
チャネル単位の乗算と加算でレイヤーのパラメータを返します。[【詳解】(英語]
virtual void unsetAttached ()
"Deattaches" all the layers, attached to particular layer.
virtual bool getMemoryShapes (const std::vector< MatShape > &inputs, const int requiredOutputs, std::vector< MatShape > &outputs, std::vector< MatShape > &internals) const
virtual int64 getFLOPS (const std::vector< MatShape > &inputs, const std::vector< MatShape > &outputs) const
virtual bool updateMemoryShapes (const std::vector< MatShape > &inputs)
Layer (const LayerParams &params)
フィールドのみを初期化します。name,typeおよびblobsフィールドだけを初期化します。
void setParamsFrom (const LayerParams &params)
フィールドのみを初期化します。name,typeおよびblobsフィールドだけを初期化します。
- 基底クラス cv::Algorithm に属する継承公開メンバ関数
virtual CV_WRAP void clear ()
アルゴリズムの状態をクリアする[【詳解】(英語]
virtual void write (FileStorage &fs) const
アルゴリズムのパラメーターをファイルストレージに格納[【詳解】(英語]
CV_WRAP void write (const Ptr< FileStorage > &fs, const String &name=String()) const
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
virtual CV_WRAP void read (const FileNode &fn)
アルゴリズム・パラメータをファイル・ストレージから読み込みます。[【詳解】(英語]
virtual CV_WRAP bool empty () const
が空の場合はtrueを返します。Algorithmが空の場合は真を返します。[【詳解】(英語]
virtual CV_WRAP void save (const String &filename) const
virtual CV_WRAP String getDefaultName () const

公開変数類

CV_PROP_RW std::vector< Mat > blobs
学習したパラメータのリストをここに保存しておくことで、使用者が読み込めるようになります。Net::getParam().
CV_PROP String name
レイヤーインスタンスの名前。ログ記録やその他の内部的な目的に使用できます。
CV_PROP String type
レイヤファクトリでレイヤを作成する際に使用された名前を入力してください。
CV_PROP int preferableTarget
フォワーディングの対象となるレイヤー

その他の継承メンバ

- 基底クラス cv::Algorithm に属する継承静的公開メンバ関数
template<typename _Tp >
static Ptr< _Tp > read (const FileNode &fn)
ファイル・ノードからアルゴリズムを読み込む[【詳解】(英語]
template<typename _Tp >
static Ptr< _Tp > load (const String &filename, const String &objname=String())
ファイルからアルゴリズムを読み込む[【詳解】(英語]
template<typename _Tp >
static Ptr< _Tp > loadFromString (const String &strModel, const String &objname=String())
文字列からアルゴリズムを読み込む[【詳解】(英語]
- 基底クラス cv::Algorithm に属する継承限定公開メンバ関数
void writeFormat (FileStorage &fs) const

詳解

このインターフェースクラスは、ネットワークの構成要素であるレイヤーを新たに構築することができます。

から派生した各クラスはLayerから派生した各クラスは,allocate()メソッドを実装して,自分の出力を宣言したりforward()を実装する必要があります。また、新しいレイヤーをネットワークに使用する前に、次のいずれかのマクロを使用してレイヤーを登録する必要があります。LayerFactoryマクロを使用する必要があります。

関数詳解

applyHalideScheduler()

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

レイヤーのハイパーパラメータに基づいたHalideの自動スケジューリング

引数
[in]. node Halide関数を持つバックエンドノード。
[in]. inputs フォワード起動で使用されるBlob。
[in]. outputs フォワード起動で使用されるBlob。
[in]. targetId ターゲット識別子
参照
BackendNodeターゲット

Layerのように、独自のHalide::Funcメンバーを使用しないでください。このようにして、融合された関数はスケジュールされなければなりません。

finalize() [1/4]

virtual CV_DEPRECATED_EXTERNAL void cv::dnn::Layer::finalize ( const std::vector< Mat * > & input,
std::vector< Mat > & output
)
virtual

入力、出力、blobに応じて内部パラメータを計算、設定します。

非推奨:
を使用します。Layer::finalize(InputArrayOfArrays, OutputArrayOfArrays)代わりに
引数
[in]. input 既に割り当てられた入力blobのベクトル
[out]. output 既に割り当てられている出力blobのベクトル

このメソッドが、ネットワークが入力および出力blobにすべてのメモリを割り当てた後、推論前に呼び出された場合は

finalize() [2/4]

CV_DEPRECATED std::vector< Mat > cv::dnn::Layer::finalize ( const std::vector< Mat > & inputs )

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

非推奨:
を使用します。Layer::finalize(InputArrayOfArrays, OutputArrayOfArrays)代わりに

finalize() [3/4]

CV_DEPRECATED_EXTERNAL void cv::dnn::Layer::finalize ( const std::vector< Mat > & inputs,
CV_OUT std::vector< Mat > & outputs
)

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

非推奨:
を使用します。Layer::finalize(InputArrayOfArrays, OutputArrayOfArrays)代わりに

finalize() [4/4]

virtual CV_WRAP void cv::dnn::Layer::finalize ( InputArrayOfArrays inputs,
OutputArrayOfArrays outputs
)
virtual

入力、出力、blobに応じて内部パラメータを計算、設定します。

引数
[in]. inputs 既に割り当てられた入力blobのベクトル
[out]. outputs 既に割り当てられている出力blobのベクトル

このメソッドが、ネットワークが入力および出力blobにすべてのメモリを割り当てた後、推論前に呼び出された場合は

forward() [1/2]

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

blobが与えられるとinputblobが与えられると、出力を計算するblobs.

引数
[in]. inputs 入力blobを使用します。
[out]. outputs 割り当てられた出力blobは、計算結果を格納します。
[out]. internals 割り当てられた内部blob

forward() [2/2]

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

blobが与えられるとinputblobが与えられると、出力を計算するblobs.

非推奨:
を使用します。Layer::forward(InputArrayOfArrays, OutputArrayOfArrays, OutputArrayOfArrays)代わりに
引数
[in]. input 入力blobを使用します。
[out]. output 割り当てられた出力blobは、計算結果を格納します。
[out]. internals 割り当てられた内部blob

forward_fallback()

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

blobが与えられるとinputblobが与えられると、出力を計算するblobs.

引数
[in]. inputs 入力blobを使用します。
[out]. outputs 割り当てられた出力blobは、計算結果を格納します。
[out]. internals 割り当てられた内部blob

getScaleShift()

virtual void cv::dnn::Layer::getScaleShift ( Mat & scale,
Mat & shift
) const
virtual

チャネル単位の乗算と加算でレイヤーのパラメータを返します。

引数
[out]. scale チャンネル単位の乗算器。値の総数は、チャンネル数と同じでなければなりません。
[out]. shift チャンネルごとのオフセット。値の総数は、チャンネル数と等しくなります。

いくつかのレイヤーは、その変換を他のレイヤーと融合させることができます。例えば、コンボリューション+バッチノーマライゼーション。この方法では、ベースレイヤーは後のレイヤーの重みを使用します。融合したレイヤーはスキップされます。デフォルトではscaleおよびshiftは空であり,それはレイヤーが要素単位の乗算や加算を持たないことを意味します。

initCUDA()

virtual Ptr< BackendNode > cv::dnn::Layer::initCUDA ( void * context,
const std::vector< Ptr< BackendWrapper > > & inputs,
const std::vector< Ptr< BackendWrapper > > & outputs
)
virtual

CUDA バックエンドノードを返します

引数
context void CSLContext オブジェクトへのポインタ
inputs レイヤーの入力
outputs レイヤーの出力

initHalide()

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

Halide バックエンドノードを返します。

引数
[in]. inputs 入力ハライドバッファ。
参照
BackendNode,BackendWrapper

入力バッファは、前方の呼び出しで使用されるものと全く同じでなければなりません。入力形状のみに基づいてHalide::ImageParamを使用することができるにもかかわらず、これはいくつかのメモリ管理の問題を防ぐのに役立ちます(何か間違ったことがあれば、Halideのテストは失敗します)。

inputNameToIndex()

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

入力blobのインデックスを入力配列に返します。

引数
inputName 入力blobのラベル

各レイヤーの入力と出力には、"%<レイヤー名%>[.出力名]"という表記を使って、簡単に識別できるラベルを付けることができます。このメソッドは、入力blobのラベルを入力ベクトルのインデックスにマッピングします。

cv::dnn::LSTMLayer出再実装されます。

outputNameToIndex()

virtual CV_WRAP int cv::dnn::Layer::outputNameToIndex ( const String & outputName )
virtual

出力配列に出力blobのインデックスを返します。

参照
inputNameToIndex()

cv::dnn::LSTMLayer出再実装されます。

run()

CV_DEPRECATED CV_WRAP void cv::dnn::Layer::run ( const std::vector< Mat > & inputs,
CV_OUT std::vector< Mat > & outputs,
CV_IN_OUT std::vector< Mat > & internals
)

レイヤーを割り当て、出力を計算します。

非推奨:
この方法は、将来のリリースでは削除される予定です。

setActivation()

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

活性化された後続のレイヤーをそのレイヤーに添付しようとします。つまり、部分的なケースでレイヤーフュージョンを行います。

引数
[in]. layer 後続の活性化層を指定します。

活性化層の取り付けが成功した場合、trueを返します。

supportBackend()

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

計算を行うために特定のバックエンドをサポートしているかどうかをレイヤーに尋ねます。

引数
[in]. backendId 計算バックエンドの識別子。
参照
バックエンド

tryAttach()

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

レイヤーフュージングの実装

引数
[in]. node 下位レイヤーのバックエンドノード。
参照
BackendNode

グラフベースのバックエンドでは実際に使用されます。活性化層が正常に取り付けられた場合は、空ではないcv::Ptrを同じバックエンドのノードに返します。最後の関数にのみ融合します。

tryFuse()

virtual bool cv::dnn::Layer::tryFuse ( Ptr< Layer > & top )
virtual

現在のレイヤと次のレイヤの融合を試みる

引数
[in]. top 次に融合されるレイヤー。
戻り値
融合が行われた場合はTrueを返します。

このクラス詳解は次のファイルから抽出されました: