文章目录
- 1. dnn.blobFromImage
- 2. dnn.blobFromImages
- 3. dnn.Net_readFromModelOptimizer
- 4. dnn.NMSBoxes
- 5. dnn.NMSBoxesRotated
- 6. dnn.readNet
- 7. dnn.readNetFromCaffe
- 8. dnn.readNetFromDarknet
- 9. dnn.readNetFromModelOptimizer
- 10. dnn.readNetFromONNX
- 11. dnn.readNetFromTensorflow
- 12. dnn.readNetFromTorch
- 13. dnn.readTensorFromONNX
- 14. dnn.resetMyriadDevice
- 15. dnn.shrinkCaffeModel
- 16. dnn.writeTextGraph
OpenCV 4.X 版本集成了很多直接利用 DNN 模块的 Python API 接口.
安装:
1 | sudo pip install opencv-python |
使用:
1 | from cv2 import dnn |
1. dnn.blobFromImage
定义:
1 | def blobFromImage(image, |
作用:
根据输入图像,创建 NCHW 次序的 4-dim blobs.
参数:
[1] - image: cv2.imread 读取的图片数据;
[2] - scalefactor: 缩放像素值,如 [0, 255] - [0, 1].
[3] - size: 输出图像的尺寸,如 netInWidth,netInHeight.
[4] - mean: 从各通道减均值。如果输入 image 为 BGR 次序,且 swapRB=True,则通道次序为 mean−R,mean−G,mean−B.
[5] - swapRB: 交换 3 通道图片的第一个和最后一个通道,如 BGR - RGB.
[6] - crop: 图像尺寸 resize 后是否裁剪。如果 crop=True
,则,输入图片的尺寸调整 resize 后,一个边对应与 size 的一个维度,而另一个边的值大于等于 size 的另一个维度;然后从 resize 后的图片中心进行 crop. 如果 crop=False
,则无需 crop,只需保持图片的长宽比.
[7] - ddepth: 输出 blob 的 Depth. 可选: CV_32F 或 CV_8U.
示例:
1 | import cv2 |
2. dnn.blobFromImages
定义:
1 | def blobFromImages(images, |
作用:
批量处理图片,创建 4-dim blobs. 其它参数类似于 dnn.blobFromImage
.
3. dnn.Net_readFromModelOptimizer
定义:
1 | def Net_readFromModelOptimizer(xml, bin): |
作用:
从 Intel’s Model Optimizer intermediate representation 创建网络.
参数:
[1] - xml: XML 网络拓扑结果的配置文件.
[2] - bin: 训练权重值的二值文件.
4. dnn.NMSBoxes
定义:
1 | def NMSBoxes(bboxes, |
作用:
根据给定的 boxes 和对应的 scores 进行 NMS 处理.
参数:
[1] - boxes: 待处理的边界框 bounding boxes.
[2] - scores: 对于于待处理边界框的 scores.
[3] - score_threshold: 用于过滤 boxes 的 score 阈值.
[4] - nms_threshold: NMS 用到的阈值.
[5] - indices: NMS 处理后所保留的边界框的索引值.
[6] - eta: 自适应阈值公式中的相关系数:nms_thresholdi+1=eta⋅nms_thresholdi
[7] - top_k: 如果 top_k>0,则保留最多 top_k 个边界框索引值.
5. dnn.NMSBoxesRotated
定义:
1 | def NMSBoxesRotated(bboxes, |
6. dnn.readNet
定义:
1 | def readNet(model, config=None, framework=None): |
作用:
从支持的格式中加载深度学习网络和模型参数.
参数:
[1] - model: 训练的权重参数的模型二值文件,支持的格式有: *.caffemodel
Caffe、 *.pb
TensorFlow、 *.t7
或 *.net
Torch、 *.weights
Darknet、 *.bin
DLDT.
[2] - config: 包含网络配置的文本文件,支持的格式有: *.prototxt
Caffe、 *.pbtxt
TensorFlow、 *.cfg
Darknet、 *.xml
DLDT.
[3] - framework: 所支持格式的框架名.
该函数自动检测训练模型所采用的深度框架,然后调用 readNetFromCaffe
、 readNetFromTensorflow
、 readNetFromTorch
或 readNetFromDarknet
中的某个函数.
7. dnn.readNetFromCaffe
定义:
1 | def readNetFromCaffe(prototxt, caffeModel=None): |
作用:
加载采用 Caffe 的配置网络和训练的权重参数.
8. dnn.readNetFromDarknet
定义:
1 | def readNetFromDarknet(cfgFile, darknetModel=None): |
作用:
加载采用 Darknet 的配置网络和训练的权重参数.
9. dnn.readNetFromModelOptimizer
定义:
1 | def readNetFromModelOptimizer(xml, bin): |
作用:
加载采用 Intel’s Model Optimizer intermediate representation 的配置网络和训练的权重参数.
10. dnn.readNetFromONNX
定义:
1 | def readNetFromONNX(onnxFile): |
作用:
加载 .onnx 模型网络配置参数和权重参数.
11. dnn.readNetFromTensorflow
定义:
1 | def readNetFromTensorflow(model, config=None): |
作用:
加载采用 Tensorflow 的配置网络和训练的权重参数.
[1] - model: .pb 文件.
[2] - config: .pbtxt 文件.
12. dnn.readNetFromTorch
定义:
1 | def readNetFromTorch(model, isBinary=None): |
作用:
加载采用 Torch 的配置网络和训练的权重参数.
[1] - model: 采用 torch.save()
函数保存的文件.
所支持的 Torch nn.Module 网络层有:
1 | - nn.Sequential |
13. dnn.readTensorFromONNX
定义:
1 | def readTensorFromONNX(path): |
作用:
从 .pb
文件创建 blob.
[1] - path: 包含 input tensor 的 .pb
文件.
14. dnn.resetMyriadDevice
定义:
1 | def resetMyriadDevice(): |
15. dnn.shrinkCaffeModel
定义:
1 | def shrinkCaffeModel(src, dst, layersTypes=None): |
作用:
将 Caffe 网络的所有权重转换为半精度浮点数值 halfprecisionfloatingpoint.
参数:
[1] - src: Caffe 网路的原始单精度浮点数值权重模型文件 (后缀一般为 .caffemodel
).
[2] - dst: 转换后的权重文件.
[3] - layersTypes: 待转换参数的网络层类型,默认是只转换卷积层和全连接层的权重参数.
16. dnn.writeTextGraph
定义:
1 | def writeTextGraph(model, output): |
作用:
将以 protocol buffer 格式的二值网络,创建为文本表示 Createatextrepresentationforabinarynetworkstoredinprotocolbufferformat.
参数:
[1] - model: 二值网络 binarynetwork 的路径.
[2] - output: 创建的输出文件路径.
最后更新: 2021年07月15日 21:09