OpenCV DNN中net.forward()返回的4维数组是什么意思?我对深度学习知之甚少

What does the 4D array returned by net.forward() in OpenCV DNN means? I have little knowledge about deep learning

我需要用到人脸检测来完成我的作业,然后我在网上搜索了一下,我认为使用预训练的深度学习人脸检测器模型和 OpenCV 的 DNN 模块既简单又好,效果很好。我在这里学到的地方: https://www.pyimagesearch.com/2018/02/26/face-detection-with-opencv-and-deep-learning/ ,但我真的很困惑 net.forward():

返回的 4D 数组
net = cv2.dnn.readNetFromCaffe("deploy.prototxt", "res10_300x300_ssd_iter_140000_fp16.caffemodel")
def detect_img(net, image):
    blob = cv2.dnn.blobFromImage(image, 1.0, (300, 300), (104.0, 177.0, 123.0), False, False)
    net.setInput(blob)
    detections = net.forward() # Here is the 4D array.
    print(detections.shape)
    return show_detections(image, detections)

我对深度学习几乎一无所知。我想我通过阅读“deploy.prototxt”猜到了一些东西,我猜这可能是预训练模型的配置文件,但我仍然感到很困惑。请问有没有一种方法可以快速理解4维数组的含义?深度学习知识匮乏的情况下,一周内能看懂预训练模型的大致工作原理吗?

第 3 个维度可帮助您迭代预测和

第4维度有实战成果

class_lable = int(inference_results[0, 0, i,1]) --> 为第 i 个框

提供一个热编码 class 标签

conf = inference_results[0, 0, i, 2] --> 给出第 i 个框预测的置信度

TopLeftX,TopLeftY, BottomRightX, BottomRightY = inference_results[0, 0, i, 3:7] -->给出 调整大小后的小图像的坐标边界框

当预测在多个阶段进行时,使用第二维,例如在 YOLO 中,预测是在 3 个不同的层进行的。 你可以使用像 [:,i,:,:]

这样的二维来迭代这些预测