【OpenCV】最全的OpenCV4.2.0 DNN模块darknet YOLOv3 C++接口python接口性能测试

环境:Win10 家庭版

           OpenCV 4.1.2

           OpenVINO R3

           CUDA 10.1

           CUDNN 7.6.5

           Python3.6.4

           VTK 7.1

           VulkanSDK-1.1.121.2

           Halide commit 9bbcb6b4f2d49a4a112e370993709d95c544547f

           OpenCL 1.2

           CPU:Intel i5-8300 2.3GHz

           GPU:Intel UHD Graphics 630

                       NVIDIA GeForce GTX 1050 Ti

           边缘设备:Intel计算棒2代


OpenCV 4.2.0已经release了,最大的改变就是OpenCV DNN模块支持CUDA了。

前一篇博客【OpenCV】Win10 Cmake源码编译OpenCV4.2.0 + contrib + CUDA10.1 + OpenVINO R3 + Vulkan + Halide并编译python3接口已经将OpenCV 4.2.0成功编译,这里就来测试一下DNN模块的性能。

  DNN_BACKEND_HALIDE DNN_BACKEND_INFERENCE_ENGINE DNN_BACKEND_OPENCV DNN_BACKEND_VKCOM DNN_BACKEND_CUDA
  C++ Python C++ Python C++ Python C++ Python C++ Python
DNN_TARGET_CPU 744.61
822.227
745.088
838.629
205.57
240.103
201.354
253.531
274.918
324.736
280.105
331.224
NS NS NS NS
DNN_TARGET_OPENCL NS NS 261.341(Intel GPU)
367.843(Intel GPU)
263.439(Intel GPU)
385.385(Intel GPU)
852.463(NVIDIA GPU)
896.781(NVIDIA GPU)
852.758(NVIDIA GPU)
901.395(NVIDIA GPU)
NS NS NS NS
DNN_TARGET_OPENCL_FP16 NS NS 262.172(Intel GPU)
367.895(Intel GPU)
263.176(Intel GPU)
386.948(Intel GPU)
852.799(NVIDIA GPU)
897.422(NVIDIA GPU)
856.228(NVIDIA GPU)
905.916(NVIDIA GPU)
NS NS NS NS
DNN_TARGET_MYRIAD NS NS 392.649
424.472

389.34
464.974
NS NS NS NS NS NS
DNN_TARGET_VULKAN NS NS NS NS NS NS 2755.32(Intel GPU)
2794.85(Intel GPU)
2723.809(Intel GPU)
2777.27(Intel GPU)
NS NS
DNN_TARGET_FPGA NA NA NA NA NA NA NA NA NA NA
DNN_TARGET_CUDA NS NS NS NS NS NS NS NS 47.036(NVIDIA GPU)
91.323(NVIDIA GPU)
47.435(NVIDIA GPU)
97.386(NVIDIA GPU)
DNN_TARGET_CUDA_FP16 NS NS NS NS NS NS NS NS 2218.55(NVIDIA GPU)
2264.74(NVIDIA GPU)
2194.48(NVIDIA GPU)
2243.033(NVIDIA GPU)

注1:NS表示不支持的组合。

注2: NA表示没有硬件没有测试。

注3: OpenCV官方代码里的注释

* List of supported combinations backend / target:
         * |                        | DNN_BACKEND_OPENCV | DNN_BACKEND_INFERENCE_ENGINE | DNN_BACKEND_HALIDE |  DNN_BACKEND_CUDA |
         * |------------------------|--------------------|------------------------------|--------------------|-------------------|
         * | DNN_TARGET_CPU         |                  + |                            + |                  + |                   |
         * | DNN_TARGET_OPENCL      |                  + |                            + |                  + |                   |
         * | DNN_TARGET_OPENCL_FP16 |                  + |                            + |                    |                   |
         * | DNN_TARGET_MYRIAD      |                    |                            + |                    |                   |
         * | DNN_TARGET_FPGA        |                    |                            + |                    |                   |
         * | DNN_TARGET_CUDA        |                    |                              |                    |                 + |
         * | DNN_TARGET_CUDA_FP16   |                    |                              |                    |                 + |
         */

 可以看到DNN_BACKEND_HALIDE和DNN_TRGET_OPENCL这种组合官方是支持的,但是我这里会报错。

不知道是不是OpenCL版本的问题 ,我这里用的OpenCV是安装CUDA里面带的OpenCL,版本是1.2。

注四:DNN_TARGET_CUDA和DNN_TARGET_CUDA_FP16性能差别很大,猜想应该是我的显卡对半精度FP16支持的不好造成的。

注五:DNN_BACKEND_VKCOM和DNN_TARGET_VULKAN的组合对比【OpenCV】最全的OpenCV4.1.2 DNN模块darknet YOLOv3 C++接口python接口性能测试时间增加。4.1.2用的是NVIDIA GPU,而4.2.0用的是Intel GPU。

发布了437 篇原创文章 · 获赞 590 · 访问量 61万+

猜你喜欢

转载自blog.csdn.net/heiheiya/article/details/103858707