cv2.dnn_Net.forward() 函数究竟返回啥?
Posted
技术标签:
【中文标题】cv2.dnn_Net.forward() 函数究竟返回啥?【英文标题】:What does cv2.dnn_Net.forward() function return exactly?cv2.dnn_Net.forward() 函数究竟返回什么? 【发布时间】:2021-04-15 13:38:58 【问题描述】:我将cv2.dnn_Net.forward()
(前向传播)用于人脸检测预训练模型。但是,我无法理解利用 cv2.dnn_Net.forward()
函数返回的变量(下面是 detections
变量)的想法。
face_net = cv2.dnn.readNet(face_prototxt_path, face_weights_path)
image = cv2.imread(args["image_path"])
(h, w) = image.shape[:2]
blob = cv2.dnn.blobFromImage(image, 1.0, (300, 300),
(104.0, 177.0, 123.0))
face_net.setInput(blob)
detections = face_net.forward() # cv2.dnn_Net.forward() function
# Utilizing 'detections' variable
confidence = detections[0, 0, i, 2]
box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
cv2.dnn_Net.forward()
究竟返回了什么以及它们如何用作detections[0, 0, i, 2]
和detections[0, 0, i, 3:7]
?
【问题讨论】:
【参考方案1】:cv2.dnn.readNet
获取您模型的权重文件和配置文件来加载您保存的模型。
net.forward()
- 运行正向传递以计算净输出。
您的检测,即net.forward()
将给出Numpy ndarray
作为输出,您可以使用它在给定的输入图像上绘制框。
【讨论】:
请问返回的Numpy ndarray
是由什么组成的?我明白它的返回类型是什么,但我不明白它代表什么。
它返回一个代表 DNN 输入的 DNN 输出的 blob... 它应该是一个多维数组,包含 [S,H,W,C] 样本(批量大小)、高度、宽度, 频道 - 实际大小取决于您的网络架构,我不确定顺序。以上是关于cv2.dnn_Net.forward() 函数究竟返回啥?的主要内容,如果未能解决你的问题,请参考以下文章
opencv库中houghcircle函数中的dp参数究竟是如何工作的?