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参数究竟是如何工作的?

带有 3 个参数的 Java.reduce 函数究竟是如何工作的?

js中函数传递参数,究竟是值传递还是引用传递?

函数被const修饰,const修饰的究竟是谁?

!function()() 究竟是如何工作的? [复制]

React Hooks究竟是什么呢?