Skip to content

Support Conv3D on OCV backend#14842

Merged
alalek merged 8 commits intoopencv:3.4from
l-bat:ocv_conv3d
Jul 11, 2019
Merged

Support Conv3D on OCV backend#14842
alalek merged 8 commits intoopencv:3.4from
l-bat:ocv_conv3d

Conversation

@l-bat
Copy link
Copy Markdown
Contributor

@l-bat l-bat commented Jun 20, 2019

Related: #13933
Merge with extra: opencv/opencv_extra#630

#force_builders=Custom,Custom Win,Custom Mac
build_image:Custom=ubuntu-openvino-2019r1:16.04
build_image:Custom Win=openvino-2019r1
build_image:Custom Mac=openvino-2019r1

test_modules:Custom=dnn,python2,python3,java
test_modules:Custom Win=dnn,python2,python3,java
test_modules:Custom Mac=dnn,python2,python3,java

buildworker:Custom=linux-1
test_opencl:Custom=ON
test_bigdata:Custom=1
test_filter:Custom=*

Copy link
Copy Markdown
Member

@alalek alalek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice to document used math and used order of dimensions for blobs with their size constraints (input/weights/output, like NCHW).

float* rowbuf = rowbuf0;
for( ofs = ofs0; ofs < ofs1; out_j = 0, ++out_i )

for( ofs = ofs0; ofs < ofs1; out_d += (out_i + 1) / outH, out_i = (out_i + 1) % outH, out_j = 0 )
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please explain this changes?

I mean I just wanted just to understand them. Previously we had at least one dimension which were incremented by 1 every iteration but now all the dimensions are computed.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for( ofs = ofs0; ofs < ofs1; out_j = 0, ++out_i ) {
     if (out_i == outH) {
        out_i = 0;
        ++out_d;
    }
    // do something
}

@l-bat
Copy link
Copy Markdown
Contributor Author

l-bat commented Jul 8, 2019

Name of Test 3.4 % if % vs 3.4 if vs 3.4
AlexNet::DNNTestNetwork::OCV/CPU 23.477 23.746 23.664 0.99 0.99
DenseNet_121::DNNTestNetwork::OCV/CPU 45.525 46.124 46.384 0.99 0.98
EAST_text_detection::DNNTestNetwork::OCV/CPU 97.83 98.671 98.827 0.99 0.99
ENet::DNNTestNetwork::OCV/CPU 79.945 80.848 80.962 0.99 0.99
FastNeuralStyle_eccv16::DNNTestNetwork::OCV/CPU 147.448 146.624 146.99 1.01 1
GoogLeNet::DNNTestNetwork::OCV/CPU 19.124 19.669 19.689 0.97 0.97
Inception_5h::DNNTestNetwork::OCV/CPU 21.343 22.038 22.145 0.97 0.96
Inception_v2_Faster_RCNN::DNNTestNetwork::OCV/CPU 365.213 374.737 375.333 0.97 0.97
Inception_v2_SSD_TensorFlow::DNNTestNetwork::OCV/CPU 55.939 57.679 57.097 0.97 0.98
MobileNet_SSD_Caffe::DNNTestNetwork::OCV/CPU 27.233 28.345 28.544 0.96 0.95
MobileNet_SSD_v1_TensorFlow::DNNTestNetwork::OCV/CPU 30.847 32.293 31.967 0.96 0.96
MobileNet_SSD_v2_TensorFlow::DNNTestNetwork::OCV/CPU 41.711 44.178 43.834 0.94 0.95
OpenFace::DNNTestNetwork::OCV/CPU 4.441 4.561 4.503 0.97 0.99
OpenPose_pose_mpi_faster_4_stages::DNNTestNetwork::OCV/CPU 739.179 739.959 735.955 1 1
ResNet_50::DNNTestNetwork::OCV/CPU 49.048 50.268 50.925 0.98 0.96
SSD::DNNTestNetwork::OCV/CPU 342.928 340.421 341.55 1.01 1
SqueezeNet_v1_1::DNNTestNetwork::OCV/CPU 5.214 5.332 5.288 0.98 0.99
YOLOv3::DNNTestNetwork::OCV/CPU 282.178 284.772 283.953 0.99 0.99
conv::Conv::(GFLOPS=0.014, K=[3 x 3], IN={1, 128, 14, 14}, OCN=32, P=[1 x 1], OCV/CPU) 0.098 0.107 0.107 0.91 0.92
conv::Conv::(GFLOPS=0.017, K=[1 x 1], IN={1, 32, 32, 64}, OCN=128, OCV/CPU) 0.096 0.099 0.099 0.96 0.97
conv::Conv::(GFLOPS=0.017, K=[1 x 1], IN={1, 128, 32, 64}, OCN=32, OCV/CPU) 0.209 0.202 0.197 1.03 1.06
conv::Conv::(GFLOPS=0.038, K=[3 x 3], IN={1, 16, 64, 128}, OCN=16, P=[1 x 1], BIAS, OCV/CPU) 0.341 0.354 0.364 0.96 0.94
conv::Conv::(GFLOPS=0.040, K=[1 x 1], IN={1, 576, 19, 19}, OCN=96, PM=SAME, BIAS, OCV/CPU) 0.218 0.222 0.223 0.98 0.98
conv::Conv::(GFLOPS=0.053, K=[1 x 1], IN={1, 576, 19, 19}, OCN=128, PM=SAME, BIAS, OCV/CPU) 0.283 0.287 0.285 0.99 0.99
conv::Conv::(GFLOPS=0.058, K=[3 x 3], IN={1, 128, 28, 28}, OCN=32, P=[1 x 1], OCV/CPU) 0.329 0.354 0.351 0.93 0.94
conv::Conv::(GFLOPS=0.080, K=[3 x 3], IN={1, 96, 19, 19}, OCN=128, PM=SAME, BIAS, OCV/CPU) 0.305 0.311 0.312 0.98 0.98
conv::Conv::(GFLOPS=0.103, K=[1 x 1], IN={1, 128, 28, 28}, OCN=512, OCV/CPU) 0.439 0.436 0.443 1.01 0.99
conv::Conv::(GFLOPS=0.103, K=[1 x 1], IN={1, 256, 14, 14}, OCN=1024, OCV/CPU) 0.574 0.578 0.563 0.99 1.02
conv::Conv::(GFLOPS=0.103, K=[1 x 1], IN={1, 512, 7, 7}, OCN=2048, OCV/CPU) 0.92 0.931 0.929 0.99 0.99
conv::Conv::(GFLOPS=0.103, K=[1 x 1], IN={1, 512, 28, 28}, OCN=128, OCV/CPU) 0.48 0.486 0.483 0.99 1
conv::Conv::(GFLOPS=0.103, K=[1 x 1], IN={1, 1024, 14, 14}, OCN=256, OCV/CPU) 0.612 0.63 0.626 0.97 0.98
conv::Conv::(GFLOPS=0.104, K=[1 x 1], IN={1, 64, 56, 56}, OCN=256, OCV/CPU) 0.401 0.397 0.401 1.01 1
conv::Conv::(GFLOPS=0.111, K=[3 x 3], IN={1, 192, 10, 10}, OCN=320, PM=SAME, BIAS, OCV/CPU) 0.445 0.447 0.442 0.99 1.01
conv::Conv::(GFLOPS=0.126, K=[3 x 3], IN={1, 512, 5, 5}, OCN=546, PM=SAME, BIAS, OCV/CPU) 1.16 1.147 1.17 1.01 0.99
conv::Conv::(GFLOPS=0.133, K=[3 x 3], IN={1, 128, 19, 19}, OCN=160, PM=SAME, BIAS, OCV/CPU) 0.482 0.484 0.495 1 0.97
conv::Conv::(GFLOPS=0.160, K=[3 x 3], IN={1, 64, 38, 38}, OCN=96, PM=SAME, BIAS, OCV/CPU) 0.588 0.606 0.605 0.97 0.97
conv::Conv::(GFLOPS=0.185, K=[1 x 1], IN={1, 192, 75, 100}, OCN=64, PM=SAME, BIAS, OCV/CPU) 1.055 1.088 1.113 0.97 0.95
conv::Conv::(GFLOPS=0.189, K=[1 x 1], IN={1, 512, 19, 19}, OCN=512, BIAS, OCV/CPU) 0.967 0.984 0.963 0.98 1
conv::Conv::(GFLOPS=0.189, K=[1 x 1], IN={1, 512, 19, 19}, OCN=512, PM=SAME, OCV/CPU) 0.962 0.967 0.964 0.99 1
conv::Conv::(GFLOPS=0.210, K=[1 x 1], IN={1, 576, 38, 50}, OCN=96, PM=SAME, BIAS, OCV/CPU) 1.012 1.019 1.015 0.99 1
conv::Conv::(GFLOPS=0.213, K=[3 x 3], IN={1, 128, 19, 19}, OCN=256, D=[2 x 2], P=[2 x 2], OCV/CPU) 0.719 0.728 0.738 0.99 0.97
conv::Conv::(GFLOPS=0.213, K=[3 x 3], IN={1, 128, 38, 38}, OCN=256, S=[2 x 2], P=[1 x 1], OCV/CPU) 0.714 0.729 0.719 0.98 0.99
conv::Conv::(GFLOPS=0.231, K=[3 x 3], IN={1, 64, 56, 56}, OCN=64, P=[1 x 1], OCV/CPU) 0.961 0.985 0.974 0.98 0.99
conv::Conv::(GFLOPS=0.231, K=[3 x 3], IN={1, 128, 28, 28}, OCN=128, P=[1 x 1], OCV/CPU) 0.81 0.829 0.834 0.98 0.97
conv::Conv::(GFLOPS=0.231, K=[3 x 3], IN={1, 128, 56, 56}, OCN=32, P=[1 x 1], OCV/CPU) 1.28 1.317 1.305 0.97 0.98
conv::Conv::(GFLOPS=0.231, K=[3 x 3], IN={1, 256, 14, 14}, OCN=256, P=[1 x 1], OCV/CPU) 0.836 0.853 0.85 0.98 0.98
conv::Conv::(GFLOPS=0.231, K=[3 x 3], IN={1, 512, 7, 7}, OCN=512, P=[1 x 1], OCV/CPU) 1.202 1.242 1.242 0.97 0.97
conv::Conv::(GFLOPS=0.237, K=[7 x 7], IN={1, 3, 224, 224}, OCN=64, S=[2 x 2], P=[3 x 3], BIAS, OCV/CPU) 1.027 1.037 1.036 0.99 0.99
conv::Conv::(GFLOPS=0.237, K=[7 x 7], IN={1, 3, 224, 224}, OCN=64, S=[2 x 2], P=[3 x 3], OCV/CPU) 1.037 1.037 1.037 1 1
conv::Conv::(GFLOPS=0.237, K=[7 x 7], IN={1, 3, 224, 224}, OCN=64, S=[2 x 2], PM=SAME, BIAS, OCV/CPU) 1.039 1.037 1.039 1 1
conv::Conv::(GFLOPS=0.240, K=[3 x 3], IN={1, 96, 38, 38}, OCN=96, PM=SAME, BIAS, OCV/CPU) 0.898 0.926 0.925 0.97 0.97
conv::Conv::(GFLOPS=0.240, K=[3 x 3], IN={1, 192, 19, 19}, OCN=192, PM=SAME, BIAS, OCV/CPU) 0.825 0.839 0.91 0.98 0.91
conv::Conv::(GFLOPS=0.240, K=[3 x 3], IN={1, 192, 38, 38}, OCN=192, S=[2 x 2], PM=SAME, OCV/CPU) 0.821 0.826 0.822 0.99 1
conv::Conv::(GFLOPS=0.246, K=[1 x 1], IN={1, 256, 75, 100}, OCN=64, PM=SAME, BIAS, OCV/CPU) 1.462 1.529 1.518 0.96 0.96
conv::Conv::(GFLOPS=0.248, K=[1 x 1], IN={1, 64, 150, 200}, OCN=64, PM=SAME, BIAS, OCV/CPU) 1.591 1.635 1.649 0.97 0.96
conv::Conv::(GFLOPS=0.280, K=[1 x 1], IN={1, 576, 38, 50}, OCN=128, PM=SAME, BIAS, OCV/CPU) 1.285 1.31 1.333 0.98 0.96
conv::Conv::(GFLOPS=0.299, K=[3 x 3], IN={1, 256, 13, 13}, OCN=384, P=[1 x 1], BIAS, OCV/CPU) 1.064 1.083 1.07 0.98 0.99
conv::Conv::(GFLOPS=0.299, K=[3 x 3], IN={1, 384, 13, 13}, OCN=256, G=2, P=[1 x 1], BIAS, OCV/CPU) 0.595 0.613 0.61 0.97 0.98
conv::Conv::(GFLOPS=0.308, K=[1 x 1], IN={1, 320, 75, 100}, OCN=64, PM=SAME, BIAS, OCV/CPU) 1.873 1.969 1.948 0.95 0.96
conv::Conv::(GFLOPS=0.315, K=[3 x 3], IN={1, 96, 75, 100}, OCN=96, S=[2 x 2], PM=SAME, BIAS, OCV/CPU) 1.18 1.183 1.192 1 0.99
conv::Conv::(GFLOPS=0.319, K=[3 x 3], IN={1, 192, 19, 19}, OCN=256, PM=SAME, BIAS, OCV/CPU) 1.063 1.079 1.075 0.98 0.99
conv::Conv::(GFLOPS=0.347, K=[3 x 3], IN={1, 128, 28, 28}, OCN=192, P=[1 x 1], BIAS, OCV/CPU) 1.131 1.23 1.169 0.92 0.97
conv::Conv::(GFLOPS=0.347, K=[3 x 3], IN={1, 128, 28, 28}, OCN=192, PM=SAME, BIAS, OCV/CPU) 1.128 1.231 1.164 0.92 0.97
conv::Conv::(GFLOPS=0.351, K=[1 x 1], IN={1, 576, 38, 50}, OCN=160, PM=SAME, BIAS, OCV/CPU) 1.606 1.648 1.625 0.97 0.99
conv::Conv::(GFLOPS=0.376, K=[1 x 1], IN={1, 24, 300, 400}, OCN=64, PM=VALID, BIAS, OCV/CPU) 5.888 6.089 6.167 0.97 0.95
conv::Conv::(GFLOPS=0.415, K=[3 x 3], IN={1, 32, 150, 150}, OCN=32, G=32, P=[1 x 1], BIAS, OCV/CPU) 1.892 2.039 2.027 0.93 0.93
conv::Conv::(GFLOPS=0.415, K=[3 x 3], IN={1, 32, 150, 150}, OCN=32, PM=SAME, OCV/CPU) 2.19 2.217 2.221 0.99 0.99
conv::Conv::(GFLOPS=0.415, K=[3 x 3], IN={1, 64, 150, 150}, OCN=64, G=64, S=[2 x 2], P=[1 x 1], BIAS, OCV/CPU) 1.025 1.101 1.103 0.93 0.93
conv::Conv::(GFLOPS=0.415, K=[3 x 3], IN={1, 64, 150, 150}, OCN=64, S=[2 x 2], PM=SAME, OCV/CPU) 1.762 1.839 1.792 0.96 0.98
conv::Conv::(GFLOPS=0.420, K=[3 x 3], IN={1, 96, 38, 50}, OCN=128, PM=SAME, BIAS, OCV/CPU) 1.477 1.549 1.576 0.95 0.94
conv::Conv::(GFLOPS=0.421, K=[1 x 1], IN={1, 576, 38, 50}, OCN=192, PM=SAME, BIAS, OCV/CPU) 1.871 1.915 1.935 0.98 0.97
conv::Conv::(GFLOPS=0.426, K=[3 x 3], IN={1, 128, 38, 38}, OCN=128, P=[1 x 1], OCV/CPU) 1.504 1.533 1.517 0.98 0.99
conv::Conv::(GFLOPS=0.426, K=[3 x 3], IN={1, 128, 75, 75}, OCN=128, G=128, S=[2 x 2], P=[1 x 1], BIAS, OCV/CPU) 0.596 0.638 0.641 0.94 0.93
conv::Conv::(GFLOPS=0.426, K=[3 x 3], IN={1, 128, 75, 75}, OCN=128, S=[2 x 2], PM=SAME, OCV/CPU) 1.511 1.605 1.545 0.94 0.98
conv::Conv::(GFLOPS=0.426, K=[3 x 3], IN={1, 256, 19, 19}, OCN=256, P=[1 x 1], OCV/CPU) 1.417 1.442 1.448 0.98 0.98
conv::Conv::(GFLOPS=0.426, K=[3 x 3], IN={1, 256, 38, 38}, OCN=256, G=256, S=[2 x 2], P=[1 x 1], BIAS, OCV/CPU) 0.319 0.36 0.359 0.89 0.89
conv::Conv::(GFLOPS=0.426, K=[3 x 3], IN={1, 256, 38, 38}, OCN=256, S=[2 x 2], PM=SAME, OCV/CPU) 1.557 1.441 1.57 1.08 0.99
conv::Conv::(GFLOPS=0.449, K=[3 x 3], IN={1, 384, 13, 13}, OCN=384, G=2, P=[1 x 1], BIAS, OCV/CPU) 0.838 0.86 0.845 0.97 0.99
conv::Conv::(GFLOPS=0.472, K=[3 x 3], IN={1, 512, 19, 19}, OCN=512, G=512, S=[2 x 2], P=[1 x 1], BIAS, OCV/CPU) 0.215 0.251 0.244 0.86 0.88
conv::Conv::(GFLOPS=0.472, K=[3 x 3], IN={1, 512, 19, 19}, OCN=512, S=[2 x 2], PM=SAME, OCV/CPU) 2.525 2.542 2.53 0.99 1
conv::Conv::(GFLOPS=0.491, K=[1 x 1], IN={1, 576, 38, 50}, OCN=224, PM=SAME, BIAS, OCV/CPU) 2.251 2.285 2.281 0.99 0.99
conv::Conv::(GFLOPS=0.539, K=[3 x 3], IN={1, 144, 75, 75}, OCN=144, S=[2 x 2], PM=SAME, OCV/CPU) 1.91 1.919 1.911 1 1
conv::Conv::(GFLOPS=0.553, K=[3 x 3], IN={1, 64, 75, 100}, OCN=64, PM=SAME, BIAS, OCV/CPU) 2.247 2.266 2.261 0.99 0.99
conv::Conv::(GFLOPS=0.561, K=[3 x 3], IN={1, 128, 38, 50}, OCN=128, PM=SAME, BIAS, OCV/CPU) 1.948 1.943 1.96 1 0.99
conv::Conv::(GFLOPS=0.597, K=[3 x 3], IN={1, 576, 19, 19}, OCN=576, S=[2 x 2], PM=SAME, OCV/CPU) 3.301 3.322 3.341 0.99 0.99
conv::Conv::(GFLOPS=0.615, K=[1 x 1], IN={1, 320, 75, 100}, OCN=128, PM=SAME, BIAS, OCV/CPU) 3.216 3.291 3.223 0.98 1
conv::Conv::(GFLOPS=0.694, K=[3 x 3], IN={1, 64, 56, 56}, OCN=192, P=[1 x 1], BIAS, OCV/CPU) 2.203 2.222 2.201 0.99 1
conv::Conv::(GFLOPS=0.694, K=[3 x 3], IN={1, 64, 56, 56}, OCN=192, PM=SAME, BIAS, OCV/CPU) 2.194 2.219 2.203 0.99 1
conv::Conv::(GFLOPS=0.701, K=[3 x 3], IN={1, 128, 38, 50}, OCN=160, PM=SAME, BIAS, OCV/CPU) 2.341 2.357 2.339 0.99 1
conv::Conv::(GFLOPS=0.701, K=[3 x 3], IN={1, 128, 75, 100}, OCN=160, S=[2 x 2], PM=SAME, BIAS, OCV/CPU) 2.409 2.386 2.419 1.01 1
conv::Conv::(GFLOPS=0.830, K=[3 x 3], IN={1, 64, 75, 100}, OCN=96, PM=SAME, BIAS, OCV/CPU) 2.972 2.972 2.987 1 0.99
conv::Conv::(GFLOPS=0.841, K=[3 x 3], IN={1, 128, 38, 50}, OCN=192, PM=SAME, BIAS, OCV/CPU) 2.69 2.715 2.7 0.99 1
conv::Conv::(GFLOPS=0.850, K=[7 x 7], IN={1, 3, 600, 800}, OCN=24, S=[2 x 2], PM=SAME, OCV/CPU) 5.371 5.386 5.377 1 1
conv::Conv::(GFLOPS=0.876, K=[3 x 3], IN={1, 160, 38, 50}, OCN=160, PM=SAME, BIAS, OCV/CPU) 2.955 2.966 2.957 1 1
conv::Conv::(GFLOPS=0.896, K=[5 x 5], IN={1, 96, 27, 27}, OCN=256, G=2, P=[2 x 2], BIAS, OCV/CPU) 1.683 1.697 1.682 0.99 1
conv::Conv::(GFLOPS=0.934, K=[3 x 3], IN={1, 96, 150, 150}, OCN=96, S=[2 x 2], PM=SAME, OCV/CPU) 3.639 3.625 3.663 1 0.99
conv::Conv::(GFLOPS=0.958, K=[3 x 3], IN={1, 192, 38, 38}, OCN=192, PM=SAME, OCV/CPU) 3.122 3.125 3.138 1 0.99
conv::Conv::(GFLOPS=0.958, K=[3 x 3], IN={1, 384, 19, 19}, OCN=384, PM=SAME, OCV/CPU) 3.121 3.193 3.175 0.98 0.98
conv::Conv::(GFLOPS=1.006, K=[3 x 3], IN={1, 1024, 10, 10}, OCN=546, PM=SAME, BIAS, OCV/CPU) 5.563 5.543 5.525 1 1.01
conv::Conv::(GFLOPS=1.022, K=[3 x 3], IN={1, 576, 19, 19}, OCN=273, PM=SAME, BIAS, OCV/CPU) 3.466 3.528 3.491 0.98 0.99
conv::Conv::(GFLOPS=1.051, K=[3 x 3], IN={1, 160, 38, 50}, OCN=192, PM=SAME, BIAS, OCV/CPU) 3.401 3.445 3.448 0.99 0.99
conv::Conv::(GFLOPS=1.245, K=[3 x 3], IN={1, 64, 75, 75}, OCN=192, PM=SAME, BIAS, OCV/CPU) 3.937 4.012 3.957 0.98 1
conv::Conv::(GFLOPS=1.245, K=[3 x 3], IN={1, 96, 75, 100}, OCN=96, PM=SAME, BIAS, OCV/CPU) 4.52 4.716 4.634 0.96 0.98
conv::Conv::(GFLOPS=1.258, K=[3 x 3], IN={1, 1280, 10, 10}, OCN=546, PM=SAME, BIAS, OCV/CPU) 7.019 7.045 6.999 1 1
conv::Conv::(GFLOPS=1.261, K=[3 x 3], IN={1, 192, 38, 50}, OCN=192, PM=SAME, BIAS, OCV/CPU) 4.086 4.069 4.165 1 0.98
conv::Conv::(GFLOPS=1.659, K=[3 x 3], IN={1, 960, 10, 10}, OCN=960, PM=SAME, OCV/CPU) 9.644 9.649 9.754 1 0.99
conv::Conv::(GFLOPS=1.660, K=[3 x 3], IN={1, 128, 75, 75}, OCN=128, G=128, P=[1 x 1], BIAS, OCV/CPU) 1.987 2.162 2.136 0.92 0.93
conv::Conv::(GFLOPS=1.660, K=[3 x 3], IN={1, 128, 75, 75}, OCN=128, PM=SAME, OCV/CPU) 5.748 6.01 5.831 0.96 0.99
conv::Conv::(GFLOPS=1.704, K=[3 x 3], IN={1, 256, 38, 38}, OCN=256, G=256, P=[1 x 1], BIAS, OCV/CPU) 1.168 1.266 1.286 0.92 0.91
conv::Conv::(GFLOPS=1.704, K=[3 x 3], IN={1, 256, 38, 38}, OCN=256, PM=SAME, OCV/CPU) 5.522 5.53 5.486 1 1.01
conv::Conv::(GFLOPS=1.704, K=[3 x 3], IN={1, 512, 19, 19}, OCN=512, G=512, P=[1 x 1], BIAS, OCV/CPU) 0.652 0.736 0.729 0.88 0.89
conv::Conv::(GFLOPS=1.704, K=[3 x 3], IN={1, 512, 19, 19}, OCN=512, PM=SAME, OCV/CPU) 5.702 5.84 5.786 0.98 0.99
conv::Conv::(GFLOPS=1.888, K=[3 x 3], IN={1, 1024, 10, 10}, OCN=1024, G=1024, P=[1 x 1], BIAS, OCV/CPU) 0.424 0.493 0.483 0.86 0.88
conv::Conv::(GFLOPS=1.888, K=[3 x 3], IN={1, 1024, 10, 10}, OCN=1024, PM=SAME, OCV/CPU) 10.934 11.024 10.986 0.99 1
conv::Conv::(GFLOPS=2.100, K=[3 x 3], IN={1, 144, 75, 75}, OCN=144, PM=SAME, OCV/CPU) 7.177 7.208 7.232 1 0.99
conv::Conv::(GFLOPS=2.156, K=[3 x 3], IN={1, 576, 19, 19}, OCN=576, PM=SAME, OCV/CPU) 7.334 7.244 7.329 1.01 1
conv::Conv::(GFLOPS=6.641, K=[3 x 3], IN={1, 64, 150, 200}, OCN=192, PM=SAME, BIAS, OCV/CPU) 21.389 20.912 21.096 1.02 1.01
conv::Conv::(GFLOPS=10.087, K=[3 x 3], IN={1, 576, 38, 50}, OCN=512, PM=SAME, BIAS, OCV/CPU) 32.938 36.658 33.613 0.9 0.98
opencv_face_detector::DNNTestNetwork::OCV/CPU 16.205 16.538 16.577 0.98 0.98

@l-bat
Copy link
Copy Markdown
Contributor Author

l-bat commented Jul 9, 2019

Name of Test 3.4 Conv2D Conv3D Check Conv (2D or 3D) Conv2D vs 3.4 Conv3D vs 3.4 Check Conv (2D or 3D) vs 3.4
AlexNet::DNNTestNetwork::OCV/CPU 18.55 19.335 19.649 18.854 0.96 0.94 0.98
DenseNet_121::DNNTestNetwork::OCV/CPU 44.981 45.785 46.646 46.22 0.98 0.96 0.97
EAST_text_detection::DNNTestNetwork::OCV/CPU 95.58 94.165 94.958 95.346 1.02 1.01 1
ENet::DNNTestNetwork::OCV/CPU 80.043 80.821 80.616 81.064 0.99 0.99 0.99
FastNeuralStyle_eccv16::DNNTestNetwork::OCV/CPU 146.395 146.909 147.929 146.463 1 0.99 1
GoogLeNet::DNNTestNetwork::OCV/CPU 19.053 19.545 19.852 19.544 0.97 0.96 0.97
Inception_5h::DNNTestNetwork::OCV/CPU 20.994 21.719 21.911 21.573 0.97 0.96 0.97
Inception_v2_Faster_RCNN::DNNTestNetwork::OCV/CPU 363.46 371.843 376.51 371.803 0.98 0.97 0.98
Inception_v2_SSD_TensorFlow::DNNTestNetwork::OCV/CPU 55.728 57.014 57.03 56.688 0.98 0.98 0.98
MobileNet_SSD_Caffe::DNNTestNetwork::OCV/CPU 27.377 28.724 29.143 28.847 0.95 0.94 0.95
MobileNet_SSD_v1_TensorFlow::DNNTestNetwork::OCV/CPU 31.067 32.154 32.369 32.168 0.97 0.96 0.97
MobileNet_SSD_v2_TensorFlow::DNNTestNetwork::OCV/CPU 41.319 42.967 43.033 43.078 0.96 0.96 0.96
OpenFace::DNNTestNetwork::OCV/CPU 4.366 4.566 4.567 4.537 0.96 0.96 0.96
OpenPose_pose_mpi_faster_4_stages::DNNTestNetwork::OCV/CPU 753.438 737.207 737.239 742.586 1.02 1.02 1.01
ResNet_50::DNNTestNetwork::OCV/CPU 47.218 47.452 48.557 47.991 1 0.97 0.98
SSD::DNNTestNetwork::OCV/CPU 337.249 338.666 340.69 340.476 1 0.99 0.99
SqueezeNet_v1_1::DNNTestNetwork::OCV/CPU 5.149 5.289 5.36 5.186 0.97 0.96 0.99
YOLOv3::DNNTestNetwork::OCV/CPU 274.13 274.486 277.011 275.161 1 0.99 1
opencv_face_detector::DNNTestNetwork::OCV/CPU 16.22 16.754 16.737 16.578 0.97 0.97 0.98

@dkurt
Copy link
Copy Markdown
Member

dkurt commented Jul 11, 2019

@l-bat, please test this patch: dkurt@fdb1530. Make sure that hyperthreading and Intel Boost Technology are disabled in BIOS (not auto but explicitly disabled).

Please also provide the details about CPU and it's frequency.

@l-bat
Copy link
Copy Markdown
Contributor Author

l-bat commented Jul 11, 2019

Intel(R) Core(TM) i5-6500 CPU
CPU frequency: 3.47 GHz
Median (ms)

Name of Test branch 3.4 Conv3D (commit 829d1a8) separated Conv3D and Conv2D (fe12daa) Conv3D vs 3.4 separated vs 3.4
AlexNet::DNNTestNetwork::OCV/CPU 39.586 39.937 39.195 0.99 1.01
DenseNet_121::DNNTestNetwork::OCV/CPU 118.477 119.609 117.714 0.99 1.01
EAST_text_detection::DNNTestNetwork::OCV/CPU 254.38 254.771 256.612 1 0.99
ENet::DNNTestNetwork::OCV/CPU 266.347 269.515 268.409 0.99 0.99
FastNeuralStyle_eccv16::DNNTestNetwork::OCV/CPU 497.09 495.611 493.468 1 1.01
GoogLeNet::DNNTestNetwork::OCV/CPU 62.466 61.384 61.358 1.02 1.02
Inception_5h::DNNTestNetwork::OCV/CPU 62.335 64.434 63.426 0.97 0.98
Inception_v2_Faster_RCNN::DNNTestNetwork::OCV/CPU 1087.336 1133.279 1133.431 0.96 0.96
Inception_v2_SSD_TensorFlow::DNNTestNetwork::OCV/CPU 158.838 161.829 161.554 0.98 0.98
MobileNet_SSD_Caffe::DNNTestNetwork::OCV/CPU 84.311 88.562 83.426 0.95 1.01
MobileNet_SSD_v1_TensorFlow::DNNTestNetwork::OCV/CPU 88.328 92.667 86.884 0.95 1.02
MobileNet_SSD_v2_TensorFlow::DNNTestNetwork::OCV/CPU 112.716 119.308 113.087 0.94 1
OpenFace::DNNTestNetwork::OCV/CPU 10.218 10.37 10.321 0.99 0.99
OpenPose_pose_mpi_faster_4_stages::DNNTestNetwork::OCV/CPU 2601.454 2638.313 2648.403 0.99 0.98
ResNet_50::DNNTestNetwork::OCV/CPU 130.724 134.11 132.257 0.97 0.99
SSD::DNNTestNetwork::OCV/CPU 1050.814 1059.186 1064.857 0.99 0.99
SqueezeNet_v1_1::DNNTestNetwork::OCV/CPU 15.379 15.584 15.4 0.99 1
YOLOv3::DNNTestNetwork::OCV/CPU 890.042 890.172 890.6 1 1
opencv_face_detector::DNNTestNetwork::OCV/CPU 42.487 43.317 42.736 0.98 0.99

@dkurt
Copy link
Copy Markdown
Member

dkurt commented Jul 11, 2019

This PR looks good as for me.

@alalek, What do you think, can we merge it now?

@alalek alalek merged commit 8bcd7e1 into opencv:3.4 Jul 11, 2019
@alalek alalek mentioned this pull request Jul 12, 2019
dvd42 pushed a commit to dvd42/opencv that referenced this pull request Aug 6, 2019
* Support Conv3D on OCV backend

* Add header

* Add perf tests

* Support pool3d

* Enable Resnet34_kinetics on OCV backend

* Add test

* Fix conv

* Optimize Conv2D
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants