YOLOv3 & OpenCV dnn - Несовместимая форма для ConcatLayer в функции 'getMemoryShapes' - PullRequest
2 голосов
/ 16 марта 2020

У меня проблемы с загрузкой YOLOv3 в модуль dnn OpenCV. Я следую этому уроку , но вместо того, чтобы использовать полный YOLOv3, я использую Tiny YOLOv3, обученный на моем собственном наборе данных.

В строке 84 layerOutputs = net.forward(ln) Я получаю сообщение об ошибке openCV:

[ERROR:0] global /io/opencv/modules/dnn/src/dnn.cpp (3066) getLayerShapesRecursively OPENCV/DNN: [Concat]:(concat_20): getMemoryShapes() throws exception. inputs=2 outputs=1/1
[ERROR:0] global /io/opencv/modules/dnn/src/dnn.cpp (3069) getLayerShapesRecursively     input[0] = [ 1 128 28 28 ]
[ERROR:0] global /io/opencv/modules/dnn/src/dnn.cpp (3069) getLayerShapesRecursively     input[1] = [ 1 256 27 27 ]
[ERROR:0] global /io/opencv/modules/dnn/src/dnn.cpp (3073) getLayerShapesRecursively     output[0] = [ 1 128 28 28 ]
[ERROR:0] global /io/opencv/modules/dnn/src/dnn.cpp (3075) getLayerShapesRecursively Exception message: OpenCV(4.2.0) /io/opencv/modules/dnn/src/layers/concat_layer.cpp:102: error: (-201:Incorrect size of input array) Inconsistent shape for ConcatLayer in function 'getMemoryShapes'

Traceback (most recent call last):
  File "yolo-server.py", line 86, in <module>
    layerOutputs = net.forward(ln)
cv2.error: OpenCV(4.2.0) /io/opencv/modules/dnn/src/layers/concat_layer.cpp:102: error: (-201:Incorrect size of input array) Inconsistent shape for ConcatLayer in function '

, где ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]

Вот мой код & вот cfg Вот веса Я использовал.

Попытка @ Soln

Я пробовал использовать COCO и получил результаты, то есть я подозреваю, что это связано с файлом CFG? Но когда я пробую свои cfg & weights с использованием dar knet, это работает - так что я предполагаю, что в моей cfg есть большая ошибка, которую dar knet пропускает? Я также просмотрел inte rnet, но не смог найти ничего удобоваримого в ошибку, которую я делаю.

...