From: Dmitry Kurtaev Date: Mon, 22 Jun 2020 20:22:21 +0000 (+0300) Subject: Optimize Mish for CPU backend X-Git-Tag: submit/tizen/20210224.033012~2^2~142^2~10^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1491934d17e582378272dfdbdee00dc0ea5faa86;p=platform%2Fupstream%2Fopencv.git Optimize Mish for CPU backend --- diff --git a/modules/dnn/src/layers/elementwise_layers.cpp b/modules/dnn/src/layers/elementwise_layers.cpp index 776053e..1bd8abe 100644 --- a/modules/dnn/src/layers/elementwise_layers.cpp +++ b/modules/dnn/src/layers/elementwise_layers.cpp @@ -667,8 +667,11 @@ struct MishFunctor : public BaseFunctor { for( int i = 0; i < len; i++ ) { + // Use fast approximation introduced in https://github.com/opencv/opencv/pull/17200 float x = srcptr[i]; - dstptr[i] = x * tanh(log(1.0f + exp(x))); + float eX = exp(std::min(x, 20.f)); + float n = (eX + 2) * eX; + dstptr[i] = (x * n) / (n + 2); } } }