diff --git a/modules/dnn/perf/perf_net.cpp b/modules/dnn/perf/perf_net.cpp index 038a12fed9..0d6d257559 100644 --- a/modules/dnn/perf/perf_net.cpp +++ b/modules/dnn/perf/perf_net.cpp @@ -87,6 +87,7 @@ public: size_t weightsMemory = 0, blobsMemory = 0; net.getMemoryConsumption(netInputShape, weightsMemory, blobsMemory); int64 flops = net.getFLOPS(netInputShape); + CV_Assert(flops > 0); net.forward(outputLayer); // warmup diff --git a/modules/dnn/src/layers/convolution_layer.cpp b/modules/dnn/src/layers/convolution_layer.cpp index 579b8f5a5c..d34ee9856e 100644 --- a/modules/dnn/src/layers/convolution_layer.cpp +++ b/modules/dnn/src/layers/convolution_layer.cpp @@ -1022,7 +1022,7 @@ public: int64 flops = 0; for (int i = 0; i < inputs.size(); i++) { - flops += total(outputs[i])*(2*kernel.area()*inputs[i][1] + 1); + flops += total(outputs[i])*(CV_BIG_INT(2)*kernel.area()*inputs[i][1] + 1); } return flops; @@ -1440,7 +1440,7 @@ public: for (int i = 0; i < inputs.size(); i++) { - flops += 2*outChannels*kernel.area()*total(inputs[i]); + flops += CV_BIG_INT(2)*outChannels*kernel.area()*total(inputs[i]); } return flops; diff --git a/modules/dnn/src/layers/fully_connected_layer.cpp b/modules/dnn/src/layers/fully_connected_layer.cpp index 59d8ed935b..ab18c54151 100644 --- a/modules/dnn/src/layers/fully_connected_layer.cpp +++ b/modules/dnn/src/layers/fully_connected_layer.cpp @@ -397,7 +397,7 @@ public: int innerSize = blobs[0].size[1]; for(int i = 0; i < outputs.size(); i++) { - flops += 3*innerSize*total(outputs[i]); + flops += CV_BIG_INT(3)*innerSize*total(outputs[i]); } return flops;