OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
cv::dnn::GatherElementsLayer 類參考

GatherElements 層接受兩個輸入:資料(data)和索引(indices),它們具有相同的秩 r >= 1,以及一個可選屬性軸(axis)。其工作方式如下:如果 axis = 0 且 r = 3,則 output[i][j][k] = data[index[i][j][k]][j][k];如果 axis = 1 且 r = 3,則 output[i][j][k] = data[i][index[i][j][k]][k];如果 axis = 2 且 r = 3,則 output[i][j][k] = data[i][j][index[i][j][k]]。更多...

#include <opencv2/dnn/all_layers.hpp>

cv::dnn::GatherElementsLayer 的協作圖

靜態公有成員函式

static Ptr< GatherElementsLayercreate (const LayerParams &params)
 
- 繼承自 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)
 從檔案節點讀取演算法。
 

附加繼承成員

- 繼承自 cv::dnn::Layer 的公有成員函式
 Layer ()
 
 Layer (const LayerParams &params)
 僅初始化 名稱型別blobs 欄位。
 
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)
 根據輸入、輸出和 blobs 計算並設定內部引數。
 
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)
 根據輸入、輸出和 blobs 計算並設定內部引數。
 
virtual void forward (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals)
 給定輸入blobs,計算輸出blobs。
 
virtual void forward (std::vector< Mat * > &input, std::vector< Mat > &output, std::vector< Mat > &internals)
 給定輸入blobs,計算輸出blobs。
 
void forward_fallback (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals)
 給定輸入blobs,計算輸出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)
 僅初始化 名稱型別blobs 欄位。
 
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)
 
- 繼承自 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
 
- 繼承自 cv::dnn::Layer 的公有屬性
std::vector< Matblobs
 必須在此處儲存學習到的引數列表,以便透過 Net::getParam() 讀取它們。
 
String name
 層例項的名稱,可用於日誌記錄或其他內部目的。
 
int preferableTarget
 層轉發的首選目標
 
String type
 透過層工廠建立層時使用的型別名稱。
 
- 繼承自 cv::Algorithm 的保護成員函式
void writeFormat (FileStorage &fs) const
 

詳細描述

GatherElements 層接受兩個輸入:資料(data)和索引(indices),它們具有相同的秩 r >= 1,以及一個可選屬性軸(axis)。其工作方式如下:如果 axis = 0 且 r = 3,則 output[i][j][k] = data[index[i][j][k]][j][k];如果 axis = 1 且 r = 3,則 output[i][j][k] = data[i][index[i][j][k]][k];如果 axis = 2 且 r = 3,則 output[i][j][k] = data[i][j][index[i][j][k]]。

另一方面,Gather 層接受一個秩為 r >= 1 的資料張量,以及一個秩為 q 的索引張量,其工作方式如下:它根據索引沿輸入資料的軸維度收集條目,並將它們連線到一個秩為 q + (r - 1) 的輸出張量中。例如,如果 axis = 0,令 k = indices[i_{0}, ..., i_{q-1}],則 output[i_{0}, ..., i_{q-1}, j_{0}, ..., j_{r-2}] = input[k , j_{0}, ..., j_{r-2}]

成員函式文件

◆ create()

static Ptr< GatherElementsLayer > cv::dnn::GatherElementsLayer::create ( const LayerParams & params)
static

本類的文件生成自以下檔案