函数'cv :: dnn :: ConvolutionLayerImpl :: getMemoryShapes'中的OpenCV深度学习面部检测断言错误

时间:2019-02-12 23:11:12

标签: python opencv deep-learning caffe face-detection

我跟随tutorial使用OpenCV和深度学习SSD框架从image实现人脸检测。

modelFile = "./ssd/res10_300x300_ssd_iter_140000.caffemodel"
configFile = "./ssd/deploy.prototxt"
net = cv2.dnn.readNetFromCaffe(configFile, modelFile)
image = cv2.imread("face.jpg")
(h, w) = image.shape[:2]
blob = cv2.dnn.blobFromImage(cv2.resize(image, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0))
net.setInput(blob)
detections = net.forward()

但是detections = net.forward()返回错误:

error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\dnn\src\layers\convolution_layer.cpp:236: error: (-215:Assertion failed) blobs.size() != 0 in function 'cv::dnn::ConvolutionLayerImpl::getMemoryShapes'

仍在寻找更多信息,但不知道它是代码错误还是库错误...任何人都知道可能导致问题的原因吗?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

我无法同时使用OpenCV 3.4.2和OpenCV 4.0.0来重现您的问题。

这就是我得到的:

enter image description here

P.S。我从https://raw.githubusercontent.com/opencv/opencv_3rdparty/dnn_samples_face_detector_20170830/res10_300x300_ssd_iter_140000.caffemodel下载res10_300x300_ssd_iter_140000.caffemodel,并从https://github.com/opencv/opencv/raw/3.4.0/samples/dnn/face_detector/deploy.prototxt下载deploy.prototxt。

答案 1 :(得分:1)

我想我知道您的问题出在哪里,请检查ssd文件夹下的这两个文件“ deploy.prototxt”和“ res10_300x300_ssd_iter_140000.caffemodel”。如果文件大小不为零,则可能会将您的下载文件阻止/中断(由于防火墙,连接失败等原因被阻止),并将其与原始文件大小进行比较。如果大小为零,则根本没有下载。

在两种情况下, 请转到“ https://github.com/opencv/opencv/blob/master/samples/dnn/face_detector/deploy.prototxt” github存储库

https://github.com/opencv/opencv_3rdparty/raw/dnn_samples_face_detector_20170830/res10_300x300_ssd_iter_140000.caffemodel”以下载两个具有相同名称的文件并替换它们。

或者您可以使用以前使用的相同来源。

答案 2 :(得分:0)

使用灰度图像时出现相同的错误。 读取彩色图像后,错误得到解决。