From 014e8485b56f1bf80075e0dd35358f4ad5681c74 Mon Sep 17 00:00:00 2001 From: alexlyulkov Date: Wed, 18 Oct 2023 13:21:40 +0700 Subject: [PATCH] Merge pull request #24367 from alexlyulkov:al/fixed-cumsum-inplace-flag Fixed CumSum layer inplace flag #24367 When exclusive is false: dst[i] = dst[i-1] + src[i] When exclusive is true: dst[i] = dst[i-1] + src[i-1] So CumSum layer can be inplace only when exclusive flag is false. --- modules/dnn/src/layers/cumsum_layer.cpp | 2 +- modules/dnn/test/test_onnx_importer.cpp | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/dnn/src/layers/cumsum_layer.cpp b/modules/dnn/src/layers/cumsum_layer.cpp index 0104b2d568..f94fa2750e 100644 --- a/modules/dnn/src/layers/cumsum_layer.cpp +++ b/modules/dnn/src/layers/cumsum_layer.cpp @@ -29,7 +29,7 @@ public: std::vector &internals) const CV_OVERRIDE { Layer::getMemoryShapes(inputs, requiredOutputs, outputs, internals); - return true; + return exclusive_raw == 0; } void forward(InputArrayOfArrays inputs_arr, OutputArrayOfArrays outputs_arr, OutputArrayOfArrays internals_arr) CV_OVERRIDE diff --git a/modules/dnn/test/test_onnx_importer.cpp b/modules/dnn/test/test_onnx_importer.cpp index f984d8d84f..2865a04119 100644 --- a/modules/dnn/test/test_onnx_importer.cpp +++ b/modules/dnn/test/test_onnx_importer.cpp @@ -785,6 +785,11 @@ TEST_P(Test_ONNX_layers, Concatenation) testONNXModels("concat_const_blobs"); } +TEST_P(Test_ONNX_layers, CumSumExclusiveInplace) +{ + testONNXModels("cumsum_exclusive_inplace"); +} + TEST_P(Test_ONNX_layers, Eltwise3D) { #if defined(INF_ENGINE_RELEASE) && INF_ENGINE_VER_MAJOR_LT(2021040000)