OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项
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
 计算具有指定输入形状的整个加载模型的 FLOPs。
 
Impl * getImpl () const
 
Impl & getImplRef () const
 
void getInputDetails (std::vector< float > &scales, std::vector< int > &zeropoints) const
 返回量化 网络 的输入缩放比例和零点。
 
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
 返回量化 网络 的输出缩放比例和零点。
 
Mat getParam (const String &layerName, int numParam=0) const
 
Mat getParam (int layer, int numParam=0) const
 返回层的参数 blob。
 
int64 getPerfProfile (std::vector< double > &timings)
 返回推理的总时间以及各层的计时(以 ticks 为单位)。
 
std::vector< int > getUnconnectedOutLayers () const
 返回具有未连接输出的层的索引。
 
std::vector< StringgetUnconnectedOutLayersNames () const
 返回具有未连接输出的层的名称。
 
Net quantize (InputArrayOfArrays calibData, int inputsDtype, int outputsDtype, bool perChannel=true)
 从浮点 网络 返回量化后的 网络
 
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)
 从具有中间表示 (IR) 的 Intel Model Optimizer 内存缓冲区创建网络。
 
static Net readFromModelOptimizer (const uchar *bufferModelConfigPtr, size_t bufferModelConfigSize, const uchar *bufferWeightsPtr, size_t bufferWeightsSize)
 从具有中间表示 (IR) 的 Intel Model Optimizer 内存缓冲区创建网络。
 
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.cpp 以及 samples/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.cpp 以及 samples/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所有网络输入的形状向量。
返回
计算出的 FLOP。

◆ getImpl()

Impl * cv::dnn::Net::getImpl ( ) const
内联

◆ getImplRef()

Impl & cv::dnn::Net::getImplRef ( ) const
内联

◆ getInputDetails()

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

返回量化 网络 的输入缩放比例和零点。

参数
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
内联
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

返回量化 网络 的输出缩放比例和零点。

参数
scales用于返回输出缩放比例的输出参数。
zeropoints用于返回输出零点的输出参数。

◆ getParam() [1/2]

Mat cv::dnn::Net::getParam ( const String & layerName,
int numParam = 0 ) const
内联
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。
numParamLayer::blobs 数组中层参数的索引。
另请参阅
Layer::blobs

◆ getPerfProfile()

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

返回推理的总时间以及各层的计时(以 ticks 为单位)。

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

参数
[out]timings所有层的 tick 计时向量。
返回
模型推理的总 tick 数。

◆ 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

从浮点 网络 返回量化后的 网络

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

◆ 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

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

参数
[in]bufferModelConfig模型配置的缓冲区。
[in]bufferWeights模型训练权重的缓冲区。
返回
网络 对象。

◆ 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

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

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

◆ 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) 创建网络。

参数
[in]xml网络拓扑的 XML 配置文件。
[in]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) -> None

编译 Halide 层。

参数
[in]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]]]) -> 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.cpp 以及 samples/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 )
内联
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 layer,
int numParam,
CV_ND const Mat & blob )
Python
cv.dnn.Net.setParam(layer, numParam, blob) -> None
cv.dnn.Net.setParam(layerName, numParam, blob) -> None

为层的学习参数设置新值。

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

◆ setPreferableBackend()

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

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

参数
[in]backendId后端标识符。
另请参阅
后端

◆ setPreferableTarget()

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

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

参数
[in]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
友元

成员数据文档

◆ impl

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

该类的文档由以下文件生成: