OpenCV 4.10.0
开源计算机视觉
|
\( L_p \) - 归一化层。 更多...
#include <opencv2/dnn/all_layers.hpp>
静态公共成员函数 | |
static Ptr< NormalizeBBoxLayer > | create (const LayerParams ¶ms) |
从 cv::Algorithm 继承的静态公共成员函数 | |
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()) |
从字符串加载算法。 | |
template<typename _Tp > | |
static Ptr< _Tp > | read (const FileNode &fn) |
从文件节点读取算法。 | |
公共属性 | |
bool | acrossSpatial |
float | epsilon |
float | pnorm |
从 cv::dnn::Layer 继承的公共属性 | |
std::vector< Mat > | blobs |
必须在此处存储学习到的参数列表,以便通过使用 Net::getParam() 读取它们。 | |
String | name |
层实例的名称,可用于日志记录或其他内部目的。 | |
int | preferableTarget |
层转发首选目标 | |
String | type |
由层工厂用于创建层的类型名称。 | |
附加继承成员 | |
从 cv::dnn::Layer 继承的公共成员函数 | |
Layer () | |
Layer (const LayerParams ¶ms) | |
仅初始化 name、type 和 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< Mat > | finalize (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) |
给定 input blobs,计算输出 blobs 。 | |
virtual void | forward (std::vector< Mat * > &input, std::vector< Mat > &output, std::vector< Mat > &internals) |
给定 input blobs,计算输出 blobs 。 | |
void | forward_fallback (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals) |
给定 input 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< BackendNode > | initCann (const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendWrapper > > &outputs, const std::vector< Ptr< BackendNode > > &nodes) |
返回 CANN 后端节点。 | |
virtual Ptr< BackendNode > | initCUDA (void *context, const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendWrapper > > &outputs) |
返回 CUDA 后端节点。 | |
virtual Ptr< BackendNode > | initHalide (const std::vector< Ptr< BackendWrapper > > &inputs) |
返回 Halide 后端节点。 | |
virtual Ptr< BackendNode > | initNgraph (const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendNode > > &nodes) |
virtual Ptr< BackendNode > | initTimVX (void *timVxInfo, const std::vector< Ptr< BackendWrapper > > &inputsWrapper, const std::vector< Ptr< BackendWrapper > > &outputsWrapper, bool isLast) |
返回 TimVX 后端节点。 | |
virtual Ptr< BackendNode > | initVkCom (const std::vector< Ptr< BackendWrapper > > &inputs, std::vector< Ptr< BackendWrapper > > &outputs) |
virtual Ptr< BackendNode > | initWebnn (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 ¶ms) |
仅初始化 name、type 和 blobs 字段。 | |
virtual bool | supportBackend (int backendId) |
询问层是否支持特定的后端进行计算。 | |
virtual Ptr< BackendNode > | tryAttach (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 ¶ms) |
尝试量化给定的层并计算定点实现所需的量化参数。 | |
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::Algorithm 继承的受保护成员函数 | |
void | writeFormat (FileStorage &fs) const |
\( L_p \) - 归一化层。
p | 归一化因子。最常见的 p = 1 用于 \( L_1 \) - 归一化,或 p = 2 用于 \( L_2 \) - 归一化,或自定义值。 |
eps | 参数 \( \epsilon \) 用于防止除以零。 |
across_spatial | 如果为 true,则跨所有非批次维度对输入进行归一化。否则,分别对每个通道进行归一化。 |
跨空间
\[ norm = \sqrt[p]{\epsilon + \sum_{x, y, c} |src(x, y, c)|^p } \\ dst(x, y, c) = \frac{ src(x, y, c) }{norm} \]
逐通道归一化
\[ norm(c) = \sqrt[p]{\epsilon + \sum_{x, y} |src(x, y, c)|^p } \\ dst(x, y, c) = \frac{ src(x, y, c) }{norm(c)} \]
其中 x, y
- 空间坐标,c
- 通道。
批次中的每个样本都分别进行归一化。可选地,输出将按训练的参数进行缩放。
|
static |
bool cv::dnn::NormalizeBBoxLayer::acrossSpatial |
float cv::dnn::NormalizeBBoxLayer::epsilon |
float cv::dnn::NormalizeBBoxLayer::pnorm |