OpenCV 4.11.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 卷积的速度。
 
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
 计算具有指定输入形状的整个加载模型的 FLOP。
 
Impl * getImpl () const
 
Impl & getImplRef () const
 
void getInputDetails (std::vector< float > &scales, std::vector< int > &zeropoints) const
 返回量化 Net 的输入比例和零点。
 
Ptr<Layer>getLayer (const LayerId &layerId) const
 
Ptr<Layer>getLayer (const String &layerName) const
 
Ptr<Layer>getLayer (int layerId) const
 返回网络使用的指定ID或名称的层指针。
 
int getLayerId (const String &layer) const
 将层的字符串名称转换为整数标识符。
 
std::vector<Ptr<Layer>>getLayerInputs (int layerId) const
 返回特定层的输入层指针。
 
std::vector<String>getLayerNames () 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<String>getUnconnectedOutLayersNames () const
 返回输出未连接的层的名称。
 
Netquantize (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
 

友元

类 accessor::DnnNetAccessor
 

详细描述

此类允许创建和操作全面的人工神经网络。

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

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

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

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

成员类型定义文档

◆ 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) -> None

将第一个层的第 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) -> None

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

参数
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 & path)
Python
cv.dnn.Net.dumpToFile(path) -> None

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

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

◆ dumpToPbtxt()

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

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

参数
path输出文件的路径,扩展名为 .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) -> None

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

参数
fusiontrue 表示启用融合,false 表示禁用。默认情况下启用融合。

◆ enableWinograd()

void cv::dnn::Net::enableWinograd ( bool useWinograd)
Python
cv.dnn.Net.enableWinograd(useWinograd) -> None

启用或禁用 Winograd 计算分支。Winograd 计算分支可以以少量精度损失的速度提高 3x3 卷积的速度。

参数
useWinogradtrue 表示启用 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包含指定层的第一个输出的 blobs。
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包含指定层的所有输出 blobs。
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中指定的每一层的所有输出 blobs。
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

计算具有指定输入形状的整个加载模型的 FLOP。

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

◆ 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 & 层名) const
Python
cv.dnn.Net.getLayerId(层名) -> 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 & 层类型) const
Python
cv.dnn.Net.getLayersCount(层类型) -> retval

返回指定类型的层数。

参数
层类型类型。
返回值
层的数量

◆ getLayerShapes() [1/2]

void cv::dnn::Net::getLayerShapes ( const MatShape & netInputShape,
const int layerId,
std::vector< MatShape > & 输入层形状,
std::vector< MatShape > & outLayerShapes ) const

返回加载模型中指定ID层的输入和输出形状;无需进行初步推理。

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

◆ getLayerShapes() [2/2]

void cv::dnn::Net::getLayerShapes ( const std::vector< MatShape > & netInputShapes,
const int layerId,
std::vector< MatShape > & 输入层形状,
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 > > & 输入层形状,
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 > > & 输入层形状,
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 的输出参数。
输入层形状输入层形状的输出参数;顺序与 layersIds 中相同
outLayersShapes输出层形状的输出参数;顺序与 layersIds 中相同

◆ getLayerTypes()

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

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

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

◆ getMemoryConsumption() [1/6]

void cv::dnn::Net::getMemoryConsumption ( const int layerId,
const MatShape & netInputShape,
size_t & 权重,
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 & 权重,
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 & 权重,
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 > & 权重,
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 & 权重,
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所有网络输入的形状向量。
权重存储权重结果字节的输出参数。
blobs存储中间 blob 结果字节的输出参数。

◆ getMemoryConsumption() [6/6]

void cv::dnn::Net::getMemoryConsumption ( const std::vector< MatShape > & netInputShapes,
std::vector< int > & layerIds,
std::vector< size_t > & 权重,
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 的输出向量。
权重存储权重结果字节的输出参数。
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(层名[, numParam]) -> retval
cv.dnn.Net.getParam(层名[, numParam]) -> retval
以下是此函数的调用图

◆ getParam() [2/2]

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

返回层的参数 Blob。

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

◆ getPerfProfile()

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

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

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

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

◆ getUnconnectedOutLayers()

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

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

待修复:将 API 重构成 registerOutput() 方法,弃用此调用

◆ getUnconnectedOutLayersNames()

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

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

待修复:将 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,这意味着以逐通道方式(逐通道)量化模型。将其设置为 false 以逐张量方式(或逐张量)量化模型。

◆ readFromModelOptimizer() [1/3]

static Net cv::dnn::Net::readFromModelOptimizer ( const std::vector< uchar > & bufferModelConfig,
const std::vector< uchar > & bufferWeights )
静态
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,
大小 bufferModelConfigSize,
const uchar * bufferWeightsPtr,
大小 bufferWeightsSize )
静态
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 )
静态
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) 创建网络。

参数
[输入]xml包含网络拓扑的 XML 配置文件。
[输入]bin包含已训练权重的二进制文件。从英特尔的模型优化器导入的网络在英特尔的推理引擎后端运行。

◆ registerOutput()

int cv::dnn::Net::registerOutput ( const std::string & outputName,
int layerId,
int outputPort )

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

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

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

◆ setHalideScheduler()

void cv::dnn::Net::setHalideScheduler ( const String & 调度器)
Python
cv.dnn.Net.setHalideScheduler(调度器) -> None

编译 Halide 层。

参数
[输入]调度器包含调度指令的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]]]) -> None

设置网络的新输入值。

参数
blob新的blob。深度应为CV_32F或CV_8U。
name输入层的名称。
scalefactor可选的归一化比例。
mean可选的平均值减法值。
另请参见
connect(String, String) 以了解格式描述符。

如果指定了比例或均值,则最终输入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) -> None

指定网络输入的形状。

◆ setInputsNames()

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

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

每个网络始终都有一个特殊的网络输入伪层,其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) -> None
cv.dnn.Net.setParam(layerName, numParam, blob) -> None
以下是此函数的调用图

◆ setParam() [2/2]

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

设置层学习参数的新值。

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

◆ setPreferableBackend()

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

要求网络使用特定计算后端(如果支持)。

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

◆ setPreferableTarget()

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

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

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

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

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
protected

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