diff --git a/modules/dnn/src/onnx/onnx_importer.cpp b/modules/dnn/src/onnx/onnx_importer.cpp index f382d4637e3a4f578bf531b861ea229d6c91bdff..79c7e29d1b2948dfe767bcd8a3ecd5f5b1670017 100644 --- a/modules/dnn/src/onnx/onnx_importer.cpp +++ b/modules/dnn/src/onnx/onnx_importer.cpp @@ -1645,6 +1645,16 @@ void ONNXImporter::parseTranspose(LayerParams& layerParams, const opencv_onnx::N { layerParams.type = "Permute"; replaceLayerParam(layerParams, "perm", "order"); + if (!layerParams.has("order")) { + MatShape inpShape = outShapes[node_proto.input(0)]; + size_t dims = inpShape.size(); + std::vector perm(dims); + for (size_t d = 0; d < dims; ++d) + { + perm[d] = static_cast(dims - 1 - d); + } + layerParams.set("order", DictValue::arrayInt(perm.data(), perm.size())); + } CV_Assert(node_proto.input_size() == 1); if (constBlobs.find(node_proto.input(0)) != constBlobs.end())