Python 3.x getMemoryShapes中的OpenCV DNN断言失败

Python 3.x getMemoryShapes中的OpenCV DNN断言失败,python-3.x,opencv,object-detection,Python 3.x,Opencv,Object Detection,在他们的指导下,我使用Tensorflow的对象检测API训练了一个模型。我还生成了用于部署的文件,并尝试对图像进行分类。OpenCV的DNN文件可以使用readNetFromTensorflow加载图形,没有错误。但是,当我尝试设置网络输入并调用.forward()时,会出现以下错误。我已经到处寻找解决这个问题的方法,但是我一直找不到任何东西能为我指明正确的方向。任何帮助都将不胜感激 [INFO] loading model... [INFO] starting video stream...

在他们的指导下,我使用Tensorflow的对象检测API训练了一个模型。我还生成了用于部署的文件,并尝试对图像进行分类。OpenCV的DNN文件可以使用
readNetFromTensorflow
加载图形,没有错误。但是,当我尝试设置网络输入并调用
.forward()
时,会出现以下错误。我已经到处寻找解决这个问题的方法,但是我一直找不到任何东西能为我指明正确的方向。任何帮助都将不胜感激

[INFO] loading model...
[INFO] starting video stream...
[ INFO:0] Initialize OpenCL runtime...
OpenCV Error: Assertion failed (int(numPriors * _numClasses) == inputs[1][1]) in getMemoryShapes, file /home/pi/opencv/modules/dnn/src/layers/detection_output_layer.cpp, line 202
Traceback (most recent call last):
  File "real_time_object_detection.py", line 68, in <module>
    detections = net.forward()
cv2.error: /home/pi/opencv/modules/dnn/src/layers/detection_output_layer.cpp:202: error: (-215) int(numPriors * _numClasses) == inputs[1][1] in function getMemoryShapes
[INFO]正在加载模型。。。
[信息]正在启动视频流。。。
[信息:0]初始化OpenCL运行时。。。
OpenCV错误:在getMemoryShapes文件/home/pi/OpenCV/modules/dnn/src/layers/detection\u output\u layer.cpp的第202行,断言失败(int(numPriors*\u numclass)=inputs[1][1])
回溯(最近一次呼叫最后一次):
文件“real\u time\u object\u detection.py”,第68行,在
检测=net.forward()
cv2.error:/home/pi/opencv/modules/dnn/src/layers/detection\u output\u layer.cpp:202:error:(-215)int(numPriors*\u numclass)==函数getMemoryShapes中的输入[1][1]

我一直面临着完全相同的错误。诀窍是转换您在使用此脚本进行培训时使用的
pipeline.config

检查
size=(300300)
元组,此大小来自
pipeline.config
文件

model {
  ssd {
    num_classes: 90
    image_resizer {
      fixed_shape_resizer {
        height: 300
        width: 300
      }
    }
...

还可以查看更多信息。

请指定培训的模型类型以及在配置文件中进行的更改。在示例中,这是MobileNet SSD的配置:
net = cv2.dnn.readNetFromTensorflow(config=<path to generated file>, model=<path to frozen inference graph>)
image = cv2.imread('som image file')
blob = cv2.dnn.blobFromImage(image=image, scalefactor=1.0, size=(300, 300))
net.setInput(blob)
detections = net.forward()
model {
  ssd {
    num_classes: 90
    image_resizer {
      fixed_shape_resizer {
        height: 300
        width: 300
      }
    }
...