OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。

このインターフェイスクラスは、ネットワークの構成要素である新しいレイヤーを構築できるようにする。続き...

#include <opencv2/dnn/dnn.hpp>

Collaboration diagram for cv::dnn::Layer:

公開メンバ関数

 Layer ()
 
 Layer (const LayerParams &params)
 nametypeblobs の各フィールドのみを初期化する。
 
virtual ~Layer ()
 
virtual void applyHalideScheduler (Ptr< BackendNode > &node, const std::vector< Mat * > &inputs, const std::vector< Mat > &outputs, int targetId) const
 レイヤーのハイパーパラメータに基づくHalideの自動スケジューリング。
 
virtual void finalize (const std::vector< Mat * > &input, std::vector< Mat > &output)
 入力・出力・blobに応じて内部パラメータを計算し設定する。
 
std::vector< Matfinalize (const std::vector< Mat > &inputs)
 これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは受け取る引数のみが異なる。
 
void finalize (const std::vector< Mat > &inputs, std::vector< Mat > &outputs)
 これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは受け取る引数のみが異なる。
 
virtual void finalize (InputArrayOfArrays inputs, OutputArrayOfArrays outputs)
 入力・出力・blobに応じて内部パラメータを計算し設定する。
 
virtual void forward (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals)
 input blobを与えて出力 blobs を計算する。
 
virtual void forward (std::vector< Mat * > &input, std::vector< Mat > &output, std::vector< Mat > &internals)
 input blobを与えて出力 blobs を計算する。
 
void forward_fallback (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals)
 input blobを与えて出力 blobs を計算する。
 
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
 チャンネルごとの乗算と加算を行うレイヤーのパラメータを返す。
 
virtual void getScaleZeropoint (float &scale, int &zeropoint) const
 レイヤーのスケールとゼロポイントを返す。
 
virtual Ptr< BackendNodeinitCann (const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendWrapper > > &outputs, const std::vector< Ptr< BackendNode > > &nodes)
 CANNバックエンドノードを返す。
 
virtual Ptr< BackendNodeinitCUDA (void *context, const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendWrapper > > &outputs)
 CUDAバックエンドノードを返す。
 
virtual Ptr< BackendNodeinitHalide (const std::vector< Ptr< BackendWrapper > > &inputs)
 Halideバックエンドノードを返す。
 
virtual Ptr< BackendNodeinitNgraph (const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendNode > > &nodes)
 
virtual Ptr< BackendNodeinitTimVX (void *timVxInfo, const std::vector< Ptr< BackendWrapper > > &inputsWrapper, const std::vector< Ptr< BackendWrapper > > &outputsWrapper, bool isLast)
 TimVXバックエンドノードを返す。
 
virtual Ptr< BackendNodeinitVkCom (const std::vector< Ptr< BackendWrapper > > &inputs, std::vector< Ptr< BackendWrapper > > &outputs)
 
virtual Ptr< BackendNodeinitWebnn (const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendNode > > &nodes)
 
virtual int inputNameToIndex (String inputName)
 入力配列における入力blobのインデックスを返す。
 
virtual int outputNameToIndex (const String &outputName)
 出力配列における出力blobのインデックスを返す。
 
void run (const std::vector< Mat > &inputs, std::vector< Mat > &outputs, std::vector< Mat > &internals)
 レイヤーを確保し出力を計算する。
 
virtual bool setActivation (const Ptr< ActivationLayer > &layer)
 後続の活性化レイヤーをこのレイヤーに結合しようとする。すなわち、部分的なケースでレイヤー融合を行う。
 
void setParamsFrom (const LayerParams &params)
 nametypeblobs の各フィールドのみを初期化する。
 
virtual bool supportBackend (int backendId)
 計算に特定のバックエンドをレイヤーがサポートしているか問い合わせる。
 
virtual Ptr< BackendNodetryAttach (const Ptr< BackendNode > &node)
 レイヤーの融合を実装する。
 
virtual bool tryFuse (Ptr< Layer > &top)
 現在のレイヤーを次のレイヤーと融合しようとする。
 
virtual bool tryQuantize (const std::vector< std::vector< float > > &scales, const std::vector< std::vector< int > > &zeropoints, LayerParams &params)
 与えられたレイヤーを量子化し、固定小数点実装に必要な量子化パラメータを計算しようとする。
 
virtual void unsetAttached ()
 特定のレイヤーに結合されているすべてのレイヤーを「切り離す」。
 
virtual bool updateMemoryShapes (const std::vector< MatShape > &inputs)
 
- Public Member Functions inherited from cv::Algorithm
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 アルゴリズムの状態をクリアする。
 
virtual bool empty () const
 Algorithm が空の場合(たとえば開始直後や読み込みに失敗した後)に true を返す。
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 ファイルストレージからアルゴリズムの引数を読み込む。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
virtual void write (FileStorage &fs) const
 アルゴリズムの引数をファイルストレージに保存する。
 
void write (FileStorage &fs, const String &name) const
 

公開変数類

std::vector< Matblobs
 学習済みの引数のリストは、Net::getParam() を使って読み出せるよう、ここに格納しなければならない。
 
String name
 レイヤーインスタンスの名前。ロギングやその他の内部目的に使用できる。
 
int preferableTarget
 レイヤーの順伝播において優先するターゲット
 
String type
 レイヤーファクトリでレイヤーを作成する際に使用された型名。
 

Additional Inherited Members

- Static Public Member Functions inherited from cv::Algorithm
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 ファイルからアルゴリズムを読み込む。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 文字列からアルゴリズムを読み込む。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 ファイルノードからアルゴリズムを読み込む。
 
- Protected Member Functions inherited from cv::Algorithm
void writeFormat (FileStorage &fs) const
 

詳細説明

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

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

構築子と解体子の詳解

◆ Layer() [1/2]

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

◆ Layer() [2/2]

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

nametypeblobs の各フィールドのみを初期化する。

◆ ~Layer()

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

メンバ関数詳解

◆ 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]nodeHalide 関数を持つバックエンドノード。
[in]inputsforward の呼び出しで使用される Blob。
[in]outputsforward の呼び出しで使用される Blob。
[in]targetIdターゲット識別子
参照
BackendNode, Target

レイヤーのフューズ(融合)を適用できるため、Layer は独自のHalide::Funcメンバーを使用しない。このようにして、フューズされた関数をスケジュールする必要がある。

◆ finalize() [1/4]

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

入力、出力、blobに従って内部パラメータを計算し設定する。

非推奨Deprecated
代わりに Layer::finalize(InputArrayOfArrays, OutputArrayOfArrays) を使用する
引数
[in]input確保済みの入力 Blob のベクトル
[out]output確保済みの出力 Blob のベクトル

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

◆ finalize() [2/4]

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

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

非推奨Deprecated
代わりに Layer::finalize(InputArrayOfArrays, OutputArrayOfArrays) を使用する

◆ finalize() [3/4]

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

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

非推奨Deprecated
代わりに Layer::finalize(InputArrayOfArrays, OutputArrayOfArrays) を使用する

◆ finalize() [4/4]

virtual void cv::dnn::Layer::finalize ( InputArrayOfArrays inputs,
OutputArrayOfArrays outputs )
virtual
Python:
cv.dnn.Layer.finalize(inputs[, outputs]) -> outputs

入力、出力、blobに従って内部パラメータを計算し設定する。

引数
[in]inputs確保済みの入力 Blob のベクトル
[out]outputs確保済みの出力 Blob のベクトル

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

◆ forward() [1/2]

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

input blobが与えられたとき、出力 blobs を計算する。

引数
[in]inputs入力 Blob。
[out]outputs確保済みの出力 Blob。計算結果を格納する。
[out]internals確保済みの内部 Blob

◆ forward() [2/2]

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

input blobが与えられたとき、出力 blobs を計算する。

非推奨Deprecated
代わりに 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 )

input blobが与えられたとき、出力 blobs を計算する。

引数
[in]inputs入力 Blob。
[out]outputs確保済みの出力 Blob。計算結果を格納する。
[out]internals確保済みの内部 Blob

◆ 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

◆ getScaleShift()

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

チャンネルごとの乗算および加算を行うレイヤーのパラメータを返す。

引数
[out]scaleチャンネルごとの乗数。値の総数はチャンネル数と等しくする必要がある。
[out]shiftチャンネルごとのオフセット。値の総数はチャンネル数と等しくする必要がある。

一部のレイヤーは、自身の変換を後続のレイヤーとフューズ(融合)できる。例えば、畳み込み + バッチ正規化など。この場合、ベースレイヤーはその後ろのレイヤーの重みを使用する。フューズされたレイヤーはスキップされる。デフォルトでは scaleshift は空であり、これはレイヤーが要素ごとの乗算や加算を持たないことを意味する。

◆ getScaleZeropoint()

virtual void cv::dnn::Layer::getScaleZeropoint ( float & scale,
int & zeropoint ) const
virtual

レイヤーのスケールとゼロポイントを返す。

引数
[out]scale出力スケール
[out]zeropoint出力ゼロポイント

デフォルトでは scale は1、zeropoint は0である。

◆ initCann()

virtual Ptr< BackendNode > cv::dnn::Layer::initCann ( const std::vector< Ptr< BackendWrapper > > & inputs,
const std::vector< Ptr< BackendWrapper > > & outputs,
const std::vector< Ptr< BackendNode > > & nodes )
virtual

CANNバックエンドノードを返す。

引数
inputsCANN演算子の入力テンソル
outputsCANN演算子の出力テンソル
nodes入力テンソルのノード

◆ initCUDA()

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

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

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

◆ initHalide()

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

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

引数
[in]inputs入力Halideバッファ。
参照
BackendNode, BackendWrapper

入力バッファは、forward呼び出しで使用されるものとまったく同じである必要がある。入力形状のみに基づいてHalide::ImageParamを使用することもできるが、これにより一部のメモリ管理の問題を防ぐのに役立つ(何か問題があれば、Halideのテストが失敗する)。

◆ initNgraph()

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

◆ initTimVX()

virtual Ptr< BackendNode > cv::dnn::Layer::initTimVX ( void * timVxInfo,
const std::vector< Ptr< BackendWrapper > > & inputsWrapper,
const std::vector< Ptr< BackendWrapper > > & outputsWrapper,
bool isLast )
virtual

TimVXバックエンドノードを返す。

引数
timVxInfoCSLContextオブジェクトへのvoidポインタ
inputsWrapperレイヤーの入力
outputsWrapperレイヤーの出力
isLastこのノードがTimVX Graphの最後のノードかどうか。

◆ initVkCom()

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

◆ initWebnn()

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

◆ inputNameToIndex()

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

入力配列における入力blobのインデックスを返す。

引数
inputName入力blobのラベル

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

cv::dnn::LSTMLayer で再実装されている。

◆ outputNameToIndex()

virtual int cv::dnn::Layer::outputNameToIndex ( const String & outputName)
virtual
Python:
cv.dnn.Layer.outputNameToIndex(outputName) -> retval

出力配列における出力blobのインデックスを返す。

参照
inputNameToIndex()

cv::dnn::LSTMLayer で再実装されている。

◆ 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

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

非推奨Deprecated
このメソッドは将来のリリースで削除される。

◆ setActivation()

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

後続の活性化レイヤーをこのレイヤーにアタッチしようとする。すなわち、部分的なケースでレイヤーのフューズ(融合)を行う。

引数
[in]layer後続の活性化レイヤー。

活性化レイヤーが正常にアタッチされた場合はtrueを返す。

◆ setParamsFrom()

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

nametypeblobs の各フィールドのみを初期化する。

◆ supportBackend()

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

レイヤーが計算のために特定のバックエンドをサポートしているか問い合わせる。

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

◆ 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。

◆ tryQuantize()

virtual bool cv::dnn::Layer::tryQuantize ( const std::vector< std::vector< float > > & scales,
const std::vector< std::vector< int > > & zeropoints,
LayerParams & params )
virtual

与えられたレイヤーを量子化し、固定小数点実装に必要な量子化パラメータを計算しようとする。

引数
[in]scales入力および出力のスケール。
[in]zeropoints入力および出力のゼロポイント。
[out]paramsそのレイヤーの固定小数点実装に必要な量子化パラメータ。
戻り値
レイヤーが量子化可能な場合はtrue。

◆ unsetAttached()

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

特定のレイヤーにアタッチされたすべてのレイヤーを「デタッチ」する。

◆ updateMemoryShapes()

virtual bool cv::dnn::Layer::updateMemoryShapes ( const std::vector< MatShape > & inputs)
virtual

メンバ変数詳解

◆ blobs

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

学習済みパラメータのリストは、Net::getParam() を使って読み出せるよう、ここに格納する必要がある。

◆ name

String cv::dnn::Layer::name

レイヤーインスタンスの名前。ロギングやその他の内部的な目的に使用できる。

◆ preferableTarget

int cv::dnn::Layer::preferableTarget

レイヤーのフォワーディングに推奨されるターゲット

◆ type

String cv::dnn::Layer::type

レイヤーファクトリによってレイヤーを作成する際に使用された型名。


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