add default order to transpose
authorSmirnov Egor <s.e.a.98@yandex.ru>
Tue, 30 Nov 2021 12:34:34 +0000 (15:34 +0300)
committerSmirnov Egor <s.e.a.98@yandex.ru>
Tue, 30 Nov 2021 12:34:34 +0000 (15:34 +0300)
modules/dnn/src/onnx/onnx_importer.cpp

index d70a81b..540dac3 100644 (file)
@@ -1644,6 +1644,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<int> perm(dims);
+        for (size_t d = 0; d < dims; ++d)
+        {
+            perm[d] = static_cast<int>(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())