OpenCV  4.10.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)
 将第一层的第 #code>outNum</code> 个输出连接到第二层的第 #code>inpNum</code> 个输入。
 
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 (OutputArrayOfArrays outputBlobs, const std::vector< String > &outBlobNames)
 运行正向传递计算 outBlobNames 中列出的层的输出。
 
void forward (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< 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的输出scale和zeropoint。
 
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)
 从浮点Net返回量化后的Net
 
int registerOutput (const std::string &outputName, int layerId, int outputPort)
 使用名称注册网络输出。
 
void setHalideScheduler (const String &scheduler)
 编译Halide层。
 
void setInput (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, const Mat &blob)
 
void setParam (int layer, int numParam, 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

成员类型定义文档

◆ LayerId

用于字符串和整数的容器。

已弃用
使用getLayerId()与int结果一起使用。

构造函数和析构函数文档

◆ Net()

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

默认构造函数。

◆ ~Net()

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

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

成员函数文档

◆ addLayer() [1/2]

int cv::dnn::Net::addLayer ( const String name,
const String 类型,
const int &  dtype,
LayerParams params 
)

将新层添加到网络。

参数
name添加层的唯一名称。
类型添加层的数据类型(必须已注册在 LayerRegister 中)。
dtype输出 blob 的数据类型。
params用于初始化创建的层的参数。
返回
创建的层的唯一标识符,或者在出现错误时返回 -1。

◆ addLayer() [2/2]

int cv::dnn::Net::addLayer ( const String name,
const String 类型,
LayerParams params 
)

◆ addLayerToPrev() [1/2]

int cv::dnn::Net::addLayerToPrev ( const String name,
const String 类型,
const int &  dtype,
LayerParams params 
)

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

另请参阅
addLayer()

◆ addLayerToPrev() [2/2]

int cv::dnn::Net::addLayerToPrev ( const String name,
const String 类型,
LayerParams params 
)

这是一个为方便提供的重载成员函数,它与上述函数的不同之处仅在于它接受什么参数。

◆ connect() [1/2]

void cv::dnn::Net::connect ( int  outLayerId,
int  出度,
int  inpLayerId,
int  inpNum 
)
Python
cv.dnn.Net.connect(出插座,入插座) -> None

将第一层的第 #code>outNum</code> 个输出连接到第二层的第 #code>inpNum</code> 个输入。

参数
outLayerId第一个层标识符
出度第一个层输出的数量
inpLayerId第二个层标识符
入度第二个层输入的数量

◆ connect() [2/2]

void cv::dnn::Net::connect ( String  出插座,
String  入插座 
)
Python
cv.dnn.Net.connect(出插座,入插座) -> None

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

参数
出插座第一个层输出的描述符。
入插座第二个层输入的描述符。

描述符具有以下模板 <层名称>[.输入编号]

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

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

◆ dump()

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

将网络导出到字符串。

返回
String contains structure, hyperparameters, backend, target, and fusion. Call method after setInput(). To see correct backend, target, and fusion run after 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() 后调用方法。要查看正确的 backend, target 和 fusion,请在 forward() 后运行。

◆ empty()

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

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

◆ 启用融合函数()

cv::dnn::Net::enableFusion: void ( bool  融合)
Python
cv.dnn.Net.enableFusion(融合) -> None

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

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

◆ 启用Winograd函数()

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

启用或禁用Winograd计算分支。Winograd计算分支可以在略微牺牲精度的前提下加快3x3卷积的速度。

参数
使用Winogradtrue表示启用Winograd计算分支,默认为true。

◆ forward函数() [1/4]

cv::dnn::Net::forward: Mat ( 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。

默认情况下运行整个网络的正向传递。

示例
Mat cv::dnn::Net::forward

samples/dnn/colorization.cpp,以及 samples/dnn/openpose.cpp。

◆ forward函数() [2/4] ( cv::dnn::Net::forward: void outputBlobs,
OutputArrayOfArrays  const std::vector< 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

运行正向传递计算 outBlobNames 中列出的层的输出。

参数
outputBlobsoutBlobNames 
outBlobNames包含指定层第一个输出的blobs。

◆ forward函数() [3/4]

◆ forward函数() [2/4] ( cv::dnn::Net::forward: void 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]

◆ forward函数() [2/4] ( std::vector< std::vector< Mat > > &  outputBlobs,
OutputArrayOfArrays  const std::vector< 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

运行正向传递计算 outBlobNames 中列出的层的输出。

参数
outputBlobs包含在 outBlobNames 中指定的每个层的所有输出blobs。
outBlobNames包含指定层第一个输出的blobs。

◆ forwardAsync函数

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

运行正向传递计算带有 outputName 名称的层的输出。

参数
outputName所需获取输出层名称的层的名字。

默认情况下运行整个网络的正向传递。

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

◆ getFLOPS函数() [1/4]

cv::dnn::Net::getFLOPS: int64 ( 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]

cv::dnn::Net::getFLOPS: int64 ( 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]

cv::dnn::Net::getFLOPS: int64 ( 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]

cv::dnn::Net::getFLOPS: int64 ( 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 > &  缩放比例,
std::vector< int > &  零点 
) const
Python
cv.dnn.Net.getInputDetails() -> 缩放比例, 零点

返回量化 Net 的输入缩放比例和偏移量。

参数
缩放比例输出参数,用于返回输入缩放比例。
零点输出参数,用于返回输入零点。

◆ 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 类型) 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 > &  输出层形状 
) const

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

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

◆ getLayerShapes() [2/2]

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

这是一个为方便提供的重载成员函数,它与上述函数的不同之处仅在于它接受什么参数。

◆ getLayersShapes() [1/2]

void cv::dnn::Net::getLayersShapes ( const MatShape &  netInputShape,
std::vector< int > &  层ID列表,
std::vector< std::vector< MatShape > > &  输入层形状,
std::vector< std::vector< MatShape > > &  输出层形状 
) const
Python
cv.dnn.Net.getLayersShapes(netInputShapes) -> 层ID列表, 输入层形状, 输出层形状
cv.dnn.Net.getLayersShapes(netInputShape) -> 层ID列表, 输入层形状, 输出层形状

这是一个为方便提供的重载成员函数,它与上述函数的不同之处仅在于它接受什么参数。

◆ getLayersShapes() [2/2]

void cv::dnn::Net::getLayersShapes ( const std::vector< MatShape > &  netInputShapes,
std::vector< int > &  层ID列表,
std::vector< std::vector< MatShape > > &  输入层形状,
std::vector< std::vector< MatShape > > &  输出层形状 
) const
Python
cv.dnn.Net.getLayersShapes(netInputShapes) -> 层ID列表, 输入层形状, 输出层形状
cv.dnn.Net.getLayersShapes(netInputShape) -> 层ID列表, 输入层形状, 输出层形状

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

参数
netInputShapes输入层所有blob的形状。
层ID列表输出参数,用于返回层ID。
输入层形状输出参数,用于返回输入层形状;顺序与layersIds顺序相同。
输出层形状输出参数,用于返回输出层形状;顺序与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 &  blob 
) const
Python
cv.dnn.Net.getMemoryConsumption(netInputShape) -> 权重, blob
cv.dnn.Net.getMemoryConsumption(layerId, netInputShapes) -> 权重, blob
cv.dnn.Net.getMemoryConsumption(layerId, netInputShape) -> 权重, blob

这是一个为方便提供的重载成员函数,它与上述函数的不同之处仅在于它接受什么参数。

◆ getMemoryConsumption() [2/6]

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

这是一个为方便提供的重载成员函数,它与上述函数的不同之处仅在于它接受什么参数。

◆ getMemoryConsumption() [3/6]

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

这是一个为方便提供的重载成员函数,它与上述函数的不同之处仅在于它接受什么参数。

◆ getMemoryConsumption() [4/6]

void cv::dnn::Net::getMemoryConsumption ( const MatShape &  netInputShape,
std::vector< int > &  层ID,
std::vector< size_t &> 权重,
std::vector< size_t &> blob 
) const
Python
cv.dnn.Net.getMemoryConsumption(netInputShape) -> 权重, blob
cv.dnn.Net.getMemoryConsumption(layerId, netInputShapes) -> 权重, blob
cv.dnn.Net.getMemoryConsumption(layerId, netInputShape) -> 权重, blob

这是一个为方便提供的重载成员函数,它与上述函数的不同之处仅在于它接受什么参数。

getMemoryConsumption() [5/6]

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

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

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

getMemoryConsumption() [6/6]

void cv::dnn::Net::getMemoryConsumption ( const std::vector< MatShape > &  netInputShapes,
std::vector< int > &  层ID,
std::vector< size_t &> 权重,
std::vector< size_t &> blob 
) const
Python
cv.dnn.Net.getMemoryConsumption(netInputShape) -> 权重, blob
cv.dnn.Net.getMemoryConsumption(layerId, netInputShapes) -> 权重, blob
cv.dnn.Net.getMemoryConsumption(layerId, netInputShape) -> 权重, blob

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

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

getOutputDetails()

void cv::dnn::Net::getOutputDetails ( std::vector< float > &  缩放比例,
std::vector< int > &  零点 
) const
Python
cv.dnn.Net.getOutputDetails() -> 缩放比例, 零点

返回一个量化后的Net的输出scale和zeropoint。

参数
缩放比例输出参数以返回输出尺度。
零点输出参数以返回输出零点。

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

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

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

参数
[out]timings包含所有层tick定时信息的向量。
返回
模型推理的总ticks。

getUnconnectedOutLayers()

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

返回具有未连接输出的图层数据。

FIXIT:重工作为registerOutput方法,弃用此调用

getUnconnectedOutLayersNames()

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

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

FIXIT:重工作为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)。

参数
[in]bufferModelConfig包含模型配置的缓冲区。
[in]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)。

参数
[in]bufferModelConfigPtr模型配置的缓冲指针。
[in]bufferModelConfigSize模型配置的缓冲大小。
[in]bufferWeightsPtr模型训练权重的缓冲指针。
[in]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)创建网络。

参数
[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 
)

使用名称注册网络输出。

函数可能创建额外的 '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 ( InputArray  blob,
const String name = "",
double  scalefactor = 1.0,
const Scalar mean = Scalar() 
)
Python
cv.dnn.Net.setInput(blob[, name[, scalefactor[, mean]]]) -> None

设置网络的新输入值。

参数
blobA new blob. Should have CV_32F or CV_8U depth.
name输入层的名称。
scalefactor可选的正常化比例因子。
mean可选的均减值。
另请参阅
samples/dnn/colorization.cpp,和 samples/dnn/openpose.cpp

If scale or mean values are specified, a final input blob is computed as

\[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 ( OutputArrayOfArrays  inputBlobNames)
Python
cv.dnn.Net.setInputsNames(inputBlobNames) -> None

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

每个网络都始终有一个特殊的网络输入伪层,ID=0。该层仅存储用户blob,不进行任何计算。实际上,该层提供了将用户数据传递到网络的唯一方式。与任何其他层一样,该层可以标记其输出,此函数提供了方便的方式。

◆ setParam() [1/2]

void cv::dnn::Net::setParam ( const String layerName,
int  numParam,
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  layer,
int  numParam,
const Mat blob 
)
Python
cv.dnn.Net.setParam(layer, numParam, blob) -> None
cv.dnn.Net.setParam(layerName, numParam, blob) -> None

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

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

◆ 设置首选后端()

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

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

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

◆ 设置首选目标()

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
friend

成员数据文档

◆ impl

Ptr<Impl> cv::dnn::Net::impl
protected

此类的文档根据以下文件生成