OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
cv::dnn::Net 类参考

此类允许创建和操作综合人工神经网络。更多...

#include <opencv2/dnn/dnn.hpp>

cv::dnn::Net 的协作图

公共类型

typedef DictValue LayerId
 字符串和整数的容器。
 

公共成员函数

 Net ()
 默认构造函数。
 
 ~Net ()
 析构函数仅在网络不再有引用时才释放网络。
 
int addLayer (const String &name, const String &type, const int &dtype, LayerParams &params)
 向网络添加新层。
 
int addLayer (const String &name, const String &type, LayerParams &params)
 
int addLayerToPrev (const String &name, const String &type, const int &dtype, LayerParams &params)
 添加新层,并将其第一个输入连接到先前添加的层的第一个输出。
 
int addLayerToPrev (const String &name, const String &type, LayerParams &params)
 
void connect (int outLayerId, int outNum, int inpLayerId, int inpNum)
 将第一个层的 #outNum 输出连接到第二个层的 #inNum 输入。
 
void connect (String outPin, String inpPin)
 将第一个层的输出连接到第二个层的输入。
 
String dump ()
 将网络转储为字符串。
 
void dumpToFile (CV_WRAP_FILE_PATH const String &path)
 将网络结构、超参数、后端、目标和融合转储到 dot 文件。
 
void dumpToPbtxt (CV_WRAP_FILE_PATH const String &path)
 将网络结构、超参数、后端、目标和融合转储到 pbtxt 文件。
 
bool empty () const
 
void enableFusion (bool fusion)
 启用或禁用网络中的层融合。
 
void enableWinograd (bool useWinograd)
 启用或禁用 Winograd 计算分支。Winograd 计算分支可以在损失少量精度的情况下,将 3x3 卷积的速度提高 3 倍。
 
Mat forward (const String &outputName=String())
 运行前向传播以计算名为 outputName 的层的输出。
 
void forward (CV_ND OutputArrayOfArrays outputBlobs, const std::vector< String > &outBlobNames)
 运行前向传播以计算 outBlobNames 中列出的层的输出。
 
void forward (CV_ND OutputArrayOfArrays outputBlobs, const String &outputName=String())
 运行前向传播以计算名为 outputName 的层的输出。
 
void forward (std::vector< std::vector< Mat > > &outputBlobs, const std::vector< String > &outBlobNames)
 运行前向传播以计算 outBlobNames 中列出的层的输出。
 
AsyncArray forwardAsync (const String &outputName=String())
 运行前向传播以计算名为 outputName 的层的输出。
 
int64 getFLOPS (const int layerId, const MatShape &netInputShape) const
 
int64 getFLOPS (const int layerId, const std::vector< MatShape > &netInputShapes) const
 
int64 getFLOPS (const MatShape &netInputShape) const
 
int64 getFLOPS (const std::vector< MatShape > &netInputShapes) const
 计算加载模型的总 FLOPs,给定指定的输入形状。
 
Impl * getImpl () const
 
Impl & getImplRef () const
 
void getInputDetails (std::vector< float > &scales, std::vector< int > &zeropoints) const
 返回量化 Net 的输入比例和零点。
 
Ptr< LayergetLayer (const LayerId &layerId) const
 
Ptr< LayergetLayer (const String &layerName) const
 
Ptr< LayergetLayer (int layerId) const
 返回网络使用的具有指定 ID 或名称的层的指针。
 
int getLayerId (const String &layer) const
 将层的字符串名称转换为整数标识符。
 
std::vector< Ptr< Layer > > getLayerInputs (int layerId) const
 返回特定层的输入层的指针。
 
std::vector< StringgetLayerNames () const
 
int getLayersCount (const String &layerType) const
 返回指定类型的层数。
 
void getLayerShapes (const MatShape &netInputShape, const int layerId, std::vector< MatShape > &inLayerShapes, std::vector< MatShape > &outLayerShapes) const
 返回加载模型中指定 ID 层的输入和输出形状;无需预先推断。
 
void getLayerShapes (const std::vector< MatShape > &netInputShapes, const int layerId, std::vector< MatShape > &inLayerShapes, std::vector< MatShape > &outLayerShapes) const
 
void getLayersShapes (const MatShape &netInputShape, std::vector< int > &layersIds, std::vector< std::vector< MatShape > > &inLayersShapes, std::vector< std::vector< MatShape > > &outLayersShapes) const
 
void getLayersShapes (const std::vector< MatShape > &netInputShapes, std::vector< int > &layersIds, std::vector< std::vector< MatShape > > &inLayersShapes, std::vector< std::vector< MatShape > > &outLayersShapes) const
 返回加载模型中所有层的输入和输出形状;无需预先推断。
 
void getLayerTypes (std::vector< String > &layersTypes) const
 返回模型中使用的层的类型列表。
 
void getMemoryConsumption (const int layerId, const MatShape &netInputShape, size_t &weights, size_t &blobs) const
 
void getMemoryConsumption (const int layerId, const std::vector< MatShape > &netInputShapes, size_t &weights, size_t &blobs) const
 
void getMemoryConsumption (const MatShape &netInputShape, size_t &weights, size_t &blobs) const
 
void getMemoryConsumption (const MatShape &netInputShape, std::vector< int > &layerIds, std::vector< size_t > &weights, std::vector< size_t > &blobs) const
 
void getMemoryConsumption (const std::vector< MatShape > &netInputShapes, size_t &weights, size_t &blobs) const
 计算存储模型所有权重和中间 blob 所需的字节数。
 
void getMemoryConsumption (const std::vector< MatShape > &netInputShapes, std::vector< int > &layerIds, std::vector< size_t > &weights, std::vector< size_t > &blobs) const
 计算存储每个层的所有权重和中间 blob 所需的字节数。
 
void getOutputDetails (std::vector< float > &scales, std::vector< int > &zeropoints) const
 返回量化 Net 的输出比例和零点。
 
Mat getParam (const String &layerName, int numParam=0) const
 
Mat getParam (int layer, int numParam=0) const
 返回层的参数 blob。
 
int64 getPerfProfile (std::vector< double > &timings)
 返回推理的总时间和层的计时(以时钟周期计)。
 
std::vector< int > getUnconnectedOutLayers () const
 返回具有未连接输出的层的索引。
 
std::vector< StringgetUnconnectedOutLayersNames () const
 返回具有未连接输出的层的名称。
 
Net quantize (InputArrayOfArrays calibData, int inputsDtype, int outputsDtype, bool perChannel=true)
 从浮点 Net 返回量化 Net
 
int registerOutput (const std::string &outputName, int layerId, int outputPort)
 注册带有名称的网络输出。
 
void setHalideScheduler (const String &scheduler)
 编译 Halide 层。
 
void setInput (CV_ND InputArray blob, const String &name="", double scalefactor=1.0, const Scalar &mean=Scalar())
 设置网络的新输入值。
 
void setInputShape (const String &inputName, const MatShape &shape)
 指定网络输入的形状。
 
void setInputsNames (const std::vector< String > &inputBlobNames)
 设置网络输入伪层的输出名称。
 
void setParam (const String &layerName, int numParam, CV_ND const Mat &blob)
 
void setParam (int layer, int numParam, CV_ND const Mat &blob)
 设置层学习参数的新值。
 
void setPreferableBackend (int backendId)
 要求网络在支持的情况下使用特定的计算后端。
 
void setPreferableTarget (int targetId)
 要求网络在特定目标设备上进行计算。
 

静态公共成员函数

static Net readFromModelOptimizer (const std::vector< uchar > &bufferModelConfig, const std::vector< uchar > &bufferWeights)
 从 Intel 的 Model Optimizer 内存中的中间表示 (IR) 缓冲区创建网络。
 
static Net readFromModelOptimizer (const uchar *bufferModelConfigPtr, size_t bufferModelConfigSize, const uchar *bufferWeightsPtr, size_t bufferWeightsSize)
 从 Intel 的 Model Optimizer 内存中的中间表示 (IR) 缓冲区创建网络。
 
static Net readFromModelOptimizer (CV_WRAP_FILE_PATH const String &xml, CV_WRAP_FILE_PATH const String &bin)
 从 Intel 的 Model Optimizer 中间表示 (IR) 创建网络。
 

保护属性

Ptr< Impl > impl
 

友元

class accessor::DnnNetAccessor
 

详细描述

此类允许创建和操作综合人工神经网络。

神经网络表示为有向无环图 (DAG),其中顶点是 Layer 实例,边指定层输入和输出之间的关系。

每个网络层在其网络内都有唯一的整数 ID 和唯一的字符串名称。LayerId 可以存储层名称或层 ID。

此类别支持其实例的引用计数,即副本指向同一实例。

示例
samples/dnn/colorization.cppsamples/dnn/openpose.cpp

成员 Typedef 文档

◆ LayerId

字符串和整数的容器。

已弃用
使用结果为 int 的 getLayerId()

构造函数 & 析构函数文档

◆ Net()

cv::dnn::Net::Net ( )
Python
cv.dnn.Net() -> <dnn_Net 对象>

默认构造函数。

◆ ~Net()

cv::dnn::Net::~Net ( )

析构函数仅在网络不再有引用时才释放网络。

成员函数文档

◆ addLayer() [1/2]

int cv::dnn::Net::addLayer ( const String & name,
const String & type,
const int & dtype,
LayerParams & params )
Python
cv.dnn.Net.addLayer(name, type, dtype, params) -> retval

向网络添加新层。

参数
name添加层的唯一名称。
type添加层的类型名称(类型必须在 LayerRegister 中注册)。
dtype输出 blob 的数据类型。
params用于初始化创建层的参数。
返回
创建层的唯一标识符,如果发生故障则为 -1。

◆ addLayer() [2/2]

int cv::dnn::Net::addLayer ( const String & name,
const String & type,
LayerParams & params )
Python
cv.dnn.Net.addLayer(name, type, dtype, params) -> retval

◆ addLayerToPrev() [1/2]

int cv::dnn::Net::addLayerToPrev ( const String & name,
const String & type,
const int & dtype,
LayerParams & params )
Python
cv.dnn.Net.addLayerToPrev(name, type, dtype, params) -> retval

添加新层,并将其第一个输入连接到先前添加的层的第一个输出。

另请参见
addLayer()

◆ addLayerToPrev() [2/2]

int cv::dnn::Net::addLayerToPrev ( const String & name,
const String & type,
LayerParams & params )
Python
cv.dnn.Net.addLayerToPrev(name, type, dtype, params) -> retval

这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。

◆ connect() [1/2]

void cv::dnn::Net::connect ( int outLayerId,
int outNum,
int inpLayerId,
int inpNum )
Python
cv.dnn.Net.connect(outPin, inpPin) ->

将第一个层的 #outNum 输出连接到第二个层的 #inNum 输入。

参数
outLayerId第一个层的标识符
outNum第一个层的输出编号
inpLayerId第二个层的标识符
inpNum第二个层的输入编号

◆ connect() [2/2]

void cv::dnn::Net::connect ( String outPin,
String inpPin )
Python
cv.dnn.Net.connect(outPin, inpPin) ->

将第一个层的输出连接到第二个层的输入。

参数
outPin第一个层输出的描述符。
inpPin第二个层输入的描述符。

描述符具有以下模板 <layer_name>[.input_number]

  • 模板的第一部分 layer_name 是添加层的字符串名称。如果此部分为空,则将使用网络输入伪层;
  • 模板的第二个可选部分 input_number 是层输入的编号或标签。如果此部分省略,则将使用第一个层输入。

    另请参见
    setNetInputs(), Layer::inputNameToIndex(), Layer::outputNameToIndex()

◆ dump()

String cv::dnn::Net::dump ( )
Python
cv.dnn.Net.dump() -> retval

将网络转储为字符串。

返回
包含结构、超参数、后端、目标和融合的字符串。在 setInput() 之后调用此方法。要查看正确的后端、目标和融合,请在 forward() 之后运行。

◆ dumpToFile()

void cv::dnn::Net::dumpToFile ( CV_WRAP_FILE_PATH const String & 路径)
Python
cv.dnn.Net.dumpToFile(路径) ->

将网络结构、超参数、后端、目标和融合转储到 dot 文件。

参数
路径输出文件路径,扩展名为 .dot
另请参见
dump()

◆ dumpToPbtxt()

void cv::dnn::Net::dumpToPbtxt ( CV_WRAP_FILE_PATH const String & 路径)
Python
cv.dnn.Net.dumpToPbtxt(路径) ->

将网络结构、超参数、后端、目标和融合转储到 pbtxt 文件。

参数
路径输出文件路径,扩展名为 .pbtxt

使用 Netron (https://netron.app) 打开目标文件以可视化模型。在 setInput() 之后调用此方法。要查看正确的后端、目标和融合,请在 forward() 之后运行。

◆ empty()

bool cv::dnn::Net::empty ( ) const
Python
cv.dnn.Net.empty() -> retval

如果网络中没有层,则返回 true。

◆ enableFusion()

void cv::dnn::Net::enableFusion ( bool fusion)
Python
cv.dnn.Net.enableFusion(fusion) ->

启用或禁用网络中的层融合。

参数
fusiontrue 启用融合,false 禁用。融合默认启用。

◆ enableWinograd()

void cv::dnn::Net::enableWinograd ( bool useWinograd(使用Winograd算法))
Python
cv.dnn.Net.enableWinograd(useWinograd(使用Winograd算法)) ->

启用或禁用 Winograd 计算分支。Winograd 计算分支可以在损失少量精度的情况下,将 3x3 卷积的速度提高 3 倍。

参数
useWinograd(使用Winograd算法)true 启用 Winograd 计算分支。默认值为 true。

◆ forward() [1/4]

Mat cv::dnn::Net::forward ( const String & outputName = String())
Python
cv.dnn.Net.forward([, outputName]) -> retval
cv.dnn.Net.forward([, outputBlobs[, outputName]]) -> outputBlobs
cv.dnn.Net.forward(outBlobNames[, outputBlobs]) -> outputBlobs
cv.dnn.Net.forwardAndRetrieve(outBlobNames) -> outputBlobs

运行前向传播以计算名为 outputName 的层的输出。

参数
outputName需要获取其输出的层的名称
返回
指定层的第一个输出的 blob。

默认情况下,对整个网络执行前向传播。

示例
samples/dnn/colorization.cppsamples/dnn/openpose.cpp

◆ forward() [2/4]

void cv::dnn::Net::forward ( CV_ND OutputArrayOfArrays outputBlobs,
const std::vector< String > & outBlobNames )
Python
cv.dnn.Net.forward([, outputName]) -> retval
cv.dnn.Net.forward([, outputBlobs[, outputName]]) -> outputBlobs
cv.dnn.Net.forward(outBlobNames[, outputBlobs]) -> outputBlobs
cv.dnn.Net.forwardAndRetrieve(outBlobNames) -> outputBlobs

运行前向传播以计算 outBlobNames 中列出的层的输出。

参数
outputBlobs包含指定层第一个输出的 blob。
outBlobNames需要获取其输出的层的名称。

◆ forward() [3/4]

void cv::dnn::Net::forward ( CV_ND OutputArrayOfArrays outputBlobs,
const String & outputName = String() )
Python
cv.dnn.Net.forward([, outputName]) -> retval
cv.dnn.Net.forward([, outputBlobs[, outputName]]) -> outputBlobs
cv.dnn.Net.forward(outBlobNames[, outputBlobs]) -> outputBlobs
cv.dnn.Net.forwardAndRetrieve(outBlobNames) -> outputBlobs

运行前向传播以计算名为 outputName 的层的输出。

参数
outputBlobs包含指定层的全部输出 blob。
outputName需要获取其输出的层的名称

如果 outputName 为空,则对整个网络执行前向传播。

◆ forward() [4/4]

void cv::dnn::Net::forward ( std::vector< std::vector< Mat > > & outputBlobs,
const std::vector< String > & outBlobNames )
Python
cv.dnn.Net.forward([, outputName]) -> retval
cv.dnn.Net.forward([, outputBlobs[, outputName]]) -> outputBlobs
cv.dnn.Net.forward(outBlobNames[, outputBlobs]) -> outputBlobs
cv.dnn.Net.forwardAndRetrieve(outBlobNames) -> outputBlobs

运行前向传播以计算 outBlobNames 中列出的层的输出。

参数
outputBlobs包含 outBlobNames 中指定的每个层的所有输出 blob。
outBlobNames需要获取其输出的层的名称。

◆ forwardAsync()

AsyncArray cv::dnn::Net::forwardAsync ( const String & outputName = String())
Python
cv.dnn.Net.forwardAsync([, outputName]) -> retval

运行前向传播以计算名为 outputName 的层的输出。

参数
outputName需要获取其输出的层的名称

默认情况下,对整个网络执行前向传播。

这是 forward(const String&) 的异步版本。需要 dnn::DNN_BACKEND_INFERENCE_ENGINE 后端。

◆ getFLOPS() [1/4]

int64 cv::dnn::Net::getFLOPS ( const int layerId,
const MatShape & netInputShape ) const
Python
cv.dnn.Net.getFLOPS(netInputShapes) -> retval
cv.dnn.Net.getFLOPS(netInputShape) -> retval
cv.dnn.Net.getFLOPS(layerId, netInputShapes) -> retval
cv.dnn.Net.getFLOPS(layerId, netInputShape) -> retval

这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。

◆ getFLOPS() [2/4]

int64 cv::dnn::Net::getFLOPS ( const int layerId,
const std::vector< MatShape > & netInputShapes ) const
Python
cv.dnn.Net.getFLOPS(netInputShapes) -> retval
cv.dnn.Net.getFLOPS(netInputShape) -> retval
cv.dnn.Net.getFLOPS(layerId, netInputShapes) -> retval
cv.dnn.Net.getFLOPS(layerId, netInputShape) -> retval

这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。

◆ getFLOPS() [3/4]

int64 cv::dnn::Net::getFLOPS ( const MatShape & netInputShape) const
Python
cv.dnn.Net.getFLOPS(netInputShapes) -> retval
cv.dnn.Net.getFLOPS(netInputShape) -> retval
cv.dnn.Net.getFLOPS(layerId, netInputShapes) -> retval
cv.dnn.Net.getFLOPS(layerId, netInputShape) -> retval

这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。

◆ getFLOPS() [4/4]

int64 cv::dnn::Net::getFLOPS ( const std::vector< MatShape > & netInputShapes) const
Python
cv.dnn.Net.getFLOPS(netInputShapes) -> retval
cv.dnn.Net.getFLOPS(netInputShape) -> retval
cv.dnn.Net.getFLOPS(layerId, netInputShapes) -> retval
cv.dnn.Net.getFLOPS(layerId, netInputShape) -> retval

计算加载模型的总 FLOPs,给定指定的输入形状。

参数
netInputShapes所有网络输入的形状向量。
返回
计算出的 FLOPs。

◆ getImpl()

Impl * cv::dnn::Net::getImpl ( ) const
inline

◆ getImplRef()

Impl & cv::dnn::Net::getImplRef ( ) const
inline

◆ getInputDetails()

void cv::dnn::Net::getInputDetails ( std::vector< float > & scales,
std::vector< int > & zeropoints ) const
Python
cv.dnn.Net.getInputDetails() -> scales, zeropoints

返回量化 Net 的输入比例和零点。

参数
scales返回输入比例的输出参数。
zeropoints返回输入零点的输出参数。

◆ getLayer() [1/3]

Ptr< Layer > cv::dnn::Net::getLayer ( const LayerId & layerId) const
Python
cv.dnn.Net.getLayer(layerId) -> retval
cv.dnn.Net.getLayer(layerName) -> retval

这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。

已弃用
待移除

◆ getLayer() [2/3]

Ptr< Layer > cv::dnn::Net::getLayer ( const String & layerName) const
inline
Python
cv.dnn.Net.getLayer(layerId) -> retval
cv.dnn.Net.getLayer(layerName) -> retval

这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。

已弃用
使用 int getLayerId(const String &layer)
此函数的调用图如下

◆ getLayer() [3/3]

Ptr< Layer > cv::dnn::Net::getLayer ( int layerId) const
Python
cv.dnn.Net.getLayer(layerId) -> retval
cv.dnn.Net.getLayer(layerName) -> retval

返回网络使用的具有指定 ID 或名称的层的指针。

示例
samples/dnn/colorization.cpp.

◆ getLayerId()

int cv::dnn::Net::getLayerId ( const String & layer) const
Python
cv.dnn.Net.getLayerId(layer) -> retval

将层的字符串名称转换为整数标识符。

返回
层的 ID,如果未找到层则为 -1。

◆ getLayerInputs()

std::vector< Ptr< Layer > > cv::dnn::Net::getLayerInputs ( int layerId) const

返回特定层的输入层的指针。

◆ getLayerNames()

std::vector< String > cv::dnn::Net::getLayerNames ( ) const
Python
cv.dnn.Net.getLayerNames() -> retval

◆ getLayersCount()

int cv::dnn::Net::getLayersCount ( const String & layerType) const
Python
cv.dnn.Net.getLayersCount(layerType) -> retval

返回指定类型的层数。

参数
layerType类型。
返回
层数

◆ getLayerShapes() [1/2]

void cv::dnn::Net::getLayerShapes ( const MatShape & netInputShape,
const int layerId,
std::vector< MatShape > & inLayerShapes,
std::vector< MatShape > & outLayerShapes ) const

返回加载模型中指定 ID 层的输入和输出形状;无需预先推断。

参数
netInputShape网络输入层中的形状输入 blob。
layerId层的 ID。
inLayerShapes输入层形状的输出参数;顺序与 layersIds 中的顺序相同
outLayerShapes输出层形状的输出参数;顺序与 layersIds 中的顺序相同

◆ getLayerShapes() [2/2]

void cv::dnn::Net::getLayerShapes ( const std::vector< MatShape > & netInputShapes,
const int layerId,
std::vector< MatShape > & inLayerShapes,
std::vector< MatShape > & outLayerShapes ) const

这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。

◆ getLayersShapes() [1/2]

void cv::dnn::Net::getLayersShapes ( const MatShape & netInputShape,
std::vector< int > & layersIds,
std::vector< std::vector< MatShape > > & inLayersShapes,
std::vector< std::vector< MatShape > > & outLayersShapes ) const
Python
cv.dnn.Net.getLayersShapes(netInputShapes) -> layersIds, inLayersShapes, outLayersShapes
cv.dnn.Net.getLayersShapes(netInputShape) -> layersIds, inLayersShapes, outLayersShapes

这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。

◆ getLayersShapes() [2/2]

void cv::dnn::Net::getLayersShapes ( const std::vector< MatShape > & netInputShapes,
std::vector< int > & layersIds,
std::vector< std::vector< MatShape > > & inLayersShapes,
std::vector< std::vector< MatShape > > & outLayersShapes ) const
Python
cv.dnn.Net.getLayersShapes(netInputShapes) -> layersIds, inLayersShapes, outLayersShapes
cv.dnn.Net.getLayersShapes(netInputShape) -> layersIds, inLayersShapes, outLayersShapes

返回加载模型中所有层的输入和输出形状;无需预先推断。

参数
netInputShapes网络输入层中所有输入 blob 的形状。
layersIds层 ID 的输出参数。
inLayersShapes输入层形状的输出参数;顺序与 layersIds 中的顺序相同
outLayersShapes输出层形状的输出参数;顺序与 layersIds 中的顺序相同

◆ getLayerTypes()

void cv::dnn::Net::getLayerTypes ( std::vector< String > & layersTypes) const
Python
cv.dnn.Net.getLayerTypes() -> layersTypes

返回模型中使用的层的类型列表。

参数
layersTypes返回类型的输出参数。

◆ getMemoryConsumption() [1/6]

void cv::dnn::Net::getMemoryConsumption ( const int layerId,
const MatShape & netInputShape,
size_t & weights,
size_t & blobs ) const
Python
cv.dnn.Net.getMemoryConsumption(netInputShape) -> weights, blobs
cv.dnn.Net.getMemoryConsumption(layerId, netInputShapes) -> weights, blobs
cv.dnn.Net.getMemoryConsumption(layerId, netInputShape) -> weights, blobs

这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。

◆ getMemoryConsumption() [2/6]

void cv::dnn::Net::getMemoryConsumption ( const int layerId,
const std::vector< MatShape > & netInputShapes,
size_t & weights,
size_t & blobs ) const
Python
cv.dnn.Net.getMemoryConsumption(netInputShape) -> weights, blobs
cv.dnn.Net.getMemoryConsumption(layerId, netInputShapes) -> weights, blobs
cv.dnn.Net.getMemoryConsumption(layerId, netInputShape) -> weights, blobs

这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。

◆ getMemoryConsumption() [3/6]

void cv::dnn::Net::getMemoryConsumption ( const MatShape & netInputShape,
size_t & weights,
size_t & blobs ) const
Python
cv.dnn.Net.getMemoryConsumption(netInputShape) -> weights, blobs
cv.dnn.Net.getMemoryConsumption(layerId, netInputShapes) -> weights, blobs
cv.dnn.Net.getMemoryConsumption(layerId, netInputShape) -> weights, blobs

这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。

◆ getMemoryConsumption() [4/6]

void cv::dnn::Net::getMemoryConsumption ( const MatShape & netInputShape,
std::vector< int > & layerIds,
std::vector< size_t > & weights,
std::vector< size_t > & blobs ) const
Python
cv.dnn.Net.getMemoryConsumption(netInputShape) -> weights, blobs
cv.dnn.Net.getMemoryConsumption(layerId, netInputShapes) -> weights, blobs
cv.dnn.Net.getMemoryConsumption(layerId, netInputShape) -> weights, blobs

这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。

◆ getMemoryConsumption() [5/6]

void cv::dnn::Net::getMemoryConsumption ( const std::vector< MatShape > & netInputShapes,
size_t & weights,
size_t & blobs ) const
Python
cv.dnn.Net.getMemoryConsumption(netInputShape) -> weights, blobs
cv.dnn.Net.getMemoryConsumption(layerId, netInputShapes) -> weights, blobs
cv.dnn.Net.getMemoryConsumption(layerId, netInputShape) -> weights, blobs

计算存储模型所有权重和中间 blob 所需的字节数。

参数
netInputShapes所有网络输入的形状向量。
weights存储结果权重字节的输出参数。
blobs存储结果中间 blob 字节的输出参数。

◆ getMemoryConsumption() [6/6]

void cv::dnn::Net::getMemoryConsumption ( const std::vector< MatShape > & netInputShapes,
std::vector< int > & layerIds,
std::vector< size_t > & weights,
std::vector< size_t > & blobs ) const
Python
cv.dnn.Net.getMemoryConsumption(netInputShape) -> weights, blobs
cv.dnn.Net.getMemoryConsumption(layerId, netInputShapes) -> weights, blobs
cv.dnn.Net.getMemoryConsumption(layerId, netInputShape) -> weights, blobs

计算存储每个层的所有权重和中间 blob 所需的字节数。

参数
netInputShapes所有网络输入的形状向量。
layerIds用于保存层 ID 的输出向量。
weights存储结果权重字节的输出参数。
blobs存储结果中间 blob 字节的输出参数。

◆ getOutputDetails()

void cv::dnn::Net::getOutputDetails ( std::vector< float > & scales,
std::vector< int > & zeropoints ) const
Python
cv.dnn.Net.getOutputDetails() -> scales, zeropoints

返回量化 Net 的输出比例和零点。

参数
scales返回输出比例的输出参数。
zeropoints返回输出零点的输出参数。

◆ getParam() [1/2]

Mat cv::dnn::Net::getParam ( const String & layerName,
int numParam = 0 ) const
inline
Python
cv.dnn.Net.getParam(layer[, numParam]) -> retval
cv.dnn.Net.getParam(layerName[, numParam]) -> retval
此函数的调用图如下

◆ getParam() [2/2]

Mat cv::dnn::Net::getParam ( int layer,
int numParam = 0 ) const
Python
cv.dnn.Net.getParam(layer[, numParam]) -> retval
cv.dnn.Net.getParam(layerName[, numParam]) -> retval

返回层的参数 blob。

参数
layer层的名称或 ID。
numParam层参数在 Layer::blobs 数组中的索引。
另请参见
Layer::blobs

◆ getPerfProfile()

int64 cv::dnn::Net::getPerfProfile ( std::vector< double > & timings)
Python
cv.dnn.Net.getPerfProfile() -> retval, timings

返回推理的总时间和层的计时(以时钟周期计)。

返回向量中的索引对应于层 ID。某些层可能与其他层融合,在这种情况下,跳过的层将返回零时钟周期。仅由 DNN_BACKEND_OPENCV 在 DNN_TARGET_CPU 上支持。

参数
[输出]timings所有层的时钟周期计时向量。
返回
模型推理的总时钟周期。

◆ getUnconnectedOutLayers()

std::vector< int > cv::dnn::Net::getUnconnectedOutLayers ( ) const
Python
cv.dnn.Net.getUnconnectedOutLayers() -> retval

返回具有未连接输出的层的索引。

FIXIT: 将 API 重构为 registerOutput() 方法,弃用此调用

◆ getUnconnectedOutLayersNames()

std::vector< String > cv::dnn::Net::getUnconnectedOutLayersNames ( ) const
Python
cv.dnn.Net.getUnconnectedOutLayersNames() -> retval

返回具有未连接输出的层的名称。

FIXIT: 将 API 重构为 registerOutput() 方法,弃用此调用

◆ quantize()

Net cv::dnn::Net::quantize ( InputArrayOfArrays calibData,
int inputsDtype,
int outputsDtype,
bool perChannel = true )
Python
cv.dnn.Net.quantize(calibData, inputsDtype, outputsDtype[, perChannel]) -> retval

从浮点 Net 返回量化 Net

参数
calibData用于计算量化参数的校准数据。
inputsDtype量化网络输入的數據類型。可以是 CV_32F 或 CV_8S。
outputsDtype量化网络输出的數據類型。可以是 CV_32F 或 CV_8S。
perChannel量化 Net 的量化粒度。默认值为 true,表示以逐通道(channel-wise)方式量化模型。设置为 false 则以逐张量(tensor-wise)方式量化模型。

◆ readFromModelOptimizer() [1/3]

static Net cv::dnn::Net::readFromModelOptimizer ( const std::vector< uchar > & bufferModelConfig,
const std::vector< uchar > & bufferWeights )
static
Python
cv.dnn.Net.readFromModelOptimizer(xml, bin) -> retval
cv.dnn.Net.readFromModelOptimizer(bufferModelConfig, bufferWeights) -> retval
cv.dnn.Net_readFromModelOptimizer(xml, bin) -> retval
cv.dnn.Net_readFromModelOptimizer(bufferModelConfig, bufferWeights) -> retval

从 Intel 的 Model Optimizer 内存中的中间表示 (IR) 缓冲区创建网络。

参数
[输入]bufferModelConfig包含模型配置的缓冲区。
[输入]bufferWeights包含模型训练权重的缓冲区。
返回
Net 对象。

◆ readFromModelOptimizer() [2/3]

static Net cv::dnn::Net::readFromModelOptimizer ( const uchar * bufferModelConfigPtr,
size_t bufferModelConfigSize,
const uchar * bufferWeightsPtr,
size_t bufferWeightsSize )
static
Python
cv.dnn.Net.readFromModelOptimizer(xml, bin) -> retval
cv.dnn.Net.readFromModelOptimizer(bufferModelConfig, bufferWeights) -> retval
cv.dnn.Net_readFromModelOptimizer(xml, bin) -> retval
cv.dnn.Net_readFromModelOptimizer(bufferModelConfig, bufferWeights) -> retval

从 Intel 的 Model Optimizer 内存中的中间表示 (IR) 缓冲区创建网络。

参数
[输入]bufferModelConfigPtr模型配置的缓冲区指针。
[输入]bufferModelConfigSize模型配置的缓冲区大小。
[输入]bufferWeightsPtr模型训练权重的缓冲区指针。
[输入]bufferWeightsSize模型训练权重的缓冲区大小。
返回
Net 对象。

◆ readFromModelOptimizer() [3/3]

static Net cv::dnn::Net::readFromModelOptimizer ( CV_WRAP_FILE_PATH const String & xml,
CV_WRAP_FILE_PATH const String & bin )
static
Python
cv.dnn.Net.readFromModelOptimizer(xml, bin) -> retval
cv.dnn.Net.readFromModelOptimizer(bufferModelConfig, bufferWeights) -> retval
cv.dnn.Net_readFromModelOptimizer(xml, bin) -> retval
cv.dnn.Net_readFromModelOptimizer(bufferModelConfig, bufferWeights) -> retval

从 Intel 的 Model Optimizer 中间表示 (IR) 创建网络。

参数
[输入]xmlXML configuration file with network's topology.
[输入]bin包含训练权重的二进制文件。从 Intel 的 Model Optimizer 导入的网络将在 Intel 的 Inference Engine 后端启动。

◆ registerOutput()

int cv::dnn::Net::registerOutput ( const std::string & outputName,
int layerId,
int outputPort )
Python
cv.dnn.Net.registerOutput(outputName, layerId, outputPort) -> retval

注册带有名称的网络输出。

函数可能会创建额外的“Identity”层。

参数
outputName输出的标识符
layerId第二个层的标识符
outputPort第二个层的输入编号
返回
绑定层的索引(与 layerId 相同或新创建的)

◆ setHalideScheduler()

void cv::dnn::Net::setHalideScheduler ( const String & scheduler)
Python
cv.dnn.Net.setHalideScheduler(scheduler) ->

编译 Halide 层。

参数
[输入]scheduler包含调度指令的 YAML 文件路径。
另请参见
setPreferableBackend

调度支持 Halide 后端的层。然后针对特定目标编译它们。对于调度文件中未表示的层或完全没有使用手动调度的层,将应用自动调度。

◆ setInput()

void cv::dnn::Net::setInput ( CV_ND InputArray blob,
const String & name = "",
double scalefactor = 1.0,
const Scalar & mean = Scalar() )
Python
cv.dnn.Net.setInput(blob[, name[, scalefactor[, mean]]]) ->

设置网络的新输入值。

参数
blob一个新的 blob。应该具有 CV_32F 或 CV_8U 深度。
name输入层的名称。
scalefactor可选的归一化比例因子。
mean可选的均值减去值。
另请参见
connect(String, String) 以了解描述符的 format

如果指定了比例因子或均值,则最终输入 blob 的计算方式如下:

\[input(n,c,h,w) = scalefactor \times (blob(n,c,h,w) - mean_c)\]

示例
samples/dnn/colorization.cppsamples/dnn/openpose.cpp

◆ setInputShape()

void cv::dnn::Net::setInputShape ( const String & inputName,
const MatShape & shape )
Python
cv.dnn.Net.setInputShape(inputName, shape) ->

指定网络输入的形状。

◆ setInputsNames()

void cv::dnn::Net::setInputsNames ( const std::vector< String > & inputBlobNames)
Python
cv.dnn.Net.setInputsNames(inputBlobNames) ->

设置网络输入伪层的输出名称。

每个网络总是有一个特殊的自身网络输入伪层,其 ID 为 0。该层仅存储用户 blob 并且不进行任何计算。事实上,该层提供了将用户数据传入网络的唯一方式。与任何其他层一样,该层可以标记其输出,此函数提供了一种简单的方法来完成此操作。

◆ setParam() [1/2]

void cv::dnn::Net::setParam ( const String & layerName,
int numParam,
CV_ND const Mat & blob )
inline
Python
cv.dnn.Net.setParam(layer, numParam, blob) ->
cv.dnn.Net.setParam(layerName, numParam, blob) ->
此函数的调用图如下

◆ setParam() [2/2]

void cv::dnn::Net::setParam ( int layer,
int numParam,
CV_ND const Mat & blob )
Python
cv.dnn.Net.setParam(layer, numParam, blob) ->
cv.dnn.Net.setParam(layerName, numParam, blob) ->

设置层学习参数的新值。

参数
layer层的名称或 ID。
numParam层参数在 Layer::blobs 数组中的索引。
blob新值。
另请参见
Layer::blobs
注意
如果新 blob 的形状与先前的形状不同,则后续前向传播可能会失败。

◆ setPreferableBackend()

void cv::dnn::Net::setPreferableBackend ( int backendId)
Python
cv.dnn.Net.setPreferableBackend(backendId) ->

要求网络在支持的情况下使用特定的计算后端。

参数
[输入]backendId后端标识符。
另请参见
Backend

◆ setPreferableTarget()

void cv::dnn::Net::setPreferableTarget ( int targetId)
Python
cv.dnn.Net.setPreferableTarget(targetId) ->

要求网络在特定目标设备上进行计算。

参数
[输入]targetId目标标识符。
另请参见
Target

支持的后端/目标组合列表

DNN_BACKEND_OPENCVDNN_BACKEND_INFERENCE_ENGINEDNN_BACKEND_HALIDEDNN_BACKEND_CUDA
DNN_TARGET_CPU+ + +
DNN_TARGET_OPENCL+ + +
DNN_TARGET_OPENCL_FP16+ +
DNN_TARGET_MYRIAD+
DNN_TARGET_FPGA+
DNN_TARGET_CUDA+
DNN_TARGET_CUDA_FP16+
DNN_TARGET_HDDL+
示例
samples/dnn/colorization.cpp.

友元和相关符号文档

◆ accessor::DnnNetAccessor

friend class accessor::DnnNetAccessor
friend

成员数据文档

◆ impl

Ptr<Impl> cv::dnn::Net::impl
保护

此类的文档是从以下文件生成的