【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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章